Merge "Fixed major sonar warnings in Binding Aware Broker"
authorEd Warnicke <eaw@cisco.com>
Sun, 1 Dec 2013 14:34:41 +0000 (14:34 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Sun, 1 Dec 2013 14:34:41 +0000 (14:34 +0000)
45 files changed:
opendaylight/config/config-api/pom.xml
opendaylight/config/config-api/src/main/yang/config.yang [moved from opendaylight/config/config-api/src/main/resources/META-INF/yang/config.yang with 100% similarity]
opendaylight/config/config-api/src/main/yang/rpc-context.yang [moved from opendaylight/config/config-api/src/main/resources/META-INF/yang/rpc-context.yang with 100% similarity]
opendaylight/config/config-manager/pom.xml
opendaylight/config/config-persister-api/pom.xml
opendaylight/config/config-persister-file-adapter/pom.xml
opendaylight/config/config-plugin-parent/pom.xml [new file with mode: 0644]
opendaylight/config/logback-config/pom.xml
opendaylight/config/netty-config-api/pom.xml
opendaylight/config/netty-event-executor-config/pom.xml
opendaylight/config/netty-threadgroup-config/pom.xml
opendaylight/config/netty-timer-config/pom.xml
opendaylight/config/pom.xml
opendaylight/config/threadpool-config-api/pom.xml
opendaylight/config/threadpool-config-impl/pom.xml
opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Field.java
opendaylight/config/yang-jmx-generator-plugin/src/main/resources/freeMarker/module_abs_template_new.ftl
opendaylight/config/yang-jmx-generator-plugin/src/main/resources/freeMarker/module_stub_template.ftl
opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java
opendaylight/config/yang-jmx-generator/pom.xml
opendaylight/config/yang-store-api/pom.xml
opendaylight/config/yang-store-impl/pom.xml
opendaylight/config/yang-test/pom.xml
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/DepTestImplModule.java
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/DepTestImplModuleFactory.java
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/DepTestImplModuleStub.txt [new file with mode: 0644]
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModule.java
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleFactory.java
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleStub.txt [new file with mode: 0644]
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleUtil.java [new file with mode: 0644]
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/TestImplModule.java
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/TestImplModuleFactory.java
opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/TestImplModuleStub.txt [new file with mode: 0644]
opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/FlowConsumerImpl.java
opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/GroupConsumerImpl.java
opendaylight/md-sal/model/model-flow-base/src/main/yang/group-types.yang
opendaylight/md-sal/model/model-flow-base/src/main/yang/meter-types.yang
opendaylight/netconf/config-persister-impl/pom.xml
opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPersisterNotificationHandler.java
opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/PersisterAggregator.java
opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/DummyAdapter.java [new file with mode: 0644]
opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/PersisterAggregatorTest.java
opendaylight/netconf/config-persister-impl/src/test/resources/test1.properties [new file with mode: 0644]
opendaylight/netconf/config-persister-impl/src/test/resources/test2.properties [new file with mode: 0644]
opendaylight/netconf/config-persister-impl/src/test/resources/test3.properties [new file with mode: 0644]

index d733834b438aee738b234d93b7814999c5817d8c..38fb8ed66be0424afe14ecd57f1e3f0693e683c4 100644 (file)
@@ -1,4 +1,5 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>concepts</artifactId>
-            <version>${opendaylight.yangtools.version}</version>
+            <artifactId>yang-binding</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
         </dependency>
     </dependencies>
 
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Import-Package>
-                            javax.management,
-                            org.opendaylight.yangtools.concepts,
-                            org.osgi.framework,
-                        </Import-Package>
                         <Export-Package>
                             org.opendaylight.controller.config.api,
                             org.opendaylight.controller.config.api.annotations,
                             org.opendaylight.controller.config.api.jmx,
                             org.opendaylight.controller.config.api.jmx.constants,
                             org.opendaylight.controller.config.api.runtime,
+                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.*,
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.*,
                         </Export-Package>
                     </instructions>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>yang-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+            </plugin>
         </plugins>
     </build>
 </project>
index b55b5da8a20735364c0d647aa0955ec52775a6b4..32f14daaede35d534d758958767bcd47e05f8bc8 100644 (file)
                             org.opendaylight.controller.config.manager.*,
                             javax.annotation.*,
                         </Private-Package>
-                        <Import-Package>
-                            org.opendaylight.controller.config.api.*,
-                            org.opendaylight.controller.config.spi.*,
-                            org.slf4j,
-                            javax.management,
-                            org.osgi.framework,
-                            org.opendaylight.yangtools.concepts.*,
-                            org.apache.commons.io,
-                            org.osgi.util.tracker,
-                        </Import-Package>
                         <Export-Package>
                         </Export-Package>
                     </instructions>
index 51f8c0b8257255d73b5e6d73643a99588a90fdce..80016a804beca18cff5f3e1f9aabd45234a67d50 100644 (file)
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Import-Package>
-                            com.google.common.base,
-                            org.w3c.dom,
-                            org.osgi.framework,
-                        </Import-Package>
                         <Export-Package>
                             org.opendaylight.controller.config.persist.api,
                             org.opendaylight.controller.config.persist.api.storage,
index d34dc3770714d1141e315fdb49d8eacff04ee9d8..b16cb2b6f366070b95a12ec7b61af3e36e343714 100644 (file)
                         </Fragment-Host>
                         <Provide-Capability>org.opendaylight.controller.config.persister.storage.adapter
                         </Provide-Capability>
-                        <Import-Package>
-                            org.osgi.framework,
-                            com.google.common.base,
-                            com.google.common.collect,
-                            com.google.common.io,
-                            javax.xml.parsers,
-                            javax.xml.transform,
-                            javax.xml.transform.dom,
-                            javax.xml.transform.stream,
-                            org.apache.commons.lang3,
-                            org.opendaylight.controller.config.persist.api,
-                            org.slf4j,
-                            org.w3c.dom,
-                            org.xml.sax,
-                        </Import-Package>
                     </instructions>
                 </configuration>
             </plugin>
diff --git a/opendaylight/config/config-plugin-parent/pom.xml b/opendaylight/config/config-plugin-parent/pom.xml
new file mode 100644 (file)
index 0000000..7696ae5
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.opendaylight.controller</groupId>
+        <artifactId>config-subsystem</artifactId>
+        <version>0.2.3-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>config-plugin-parent</artifactId>
+    <name>${project.artifactId}</name>
+    <packaging>pom</packaging>
+    <prerequisites>
+        <maven>3.0.4</maven>
+    </prerequisites>
+
+    <properties>
+        <jmxGeneratorPath>${project.build.directory}/generated-sources/config</jmxGeneratorPath>
+    </properties>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.opendaylight.yangtools</groupId>
+                    <artifactId>yang-maven-plugin</artifactId>
+                    <executions>
+                        <execution>
+                            <id>config</id>
+                            <goals>
+                                <goal>generate-sources</goal>
+                            </goals>
+                            <configuration>
+                                <codeGenerators>
+                                    <generator>
+                                        <codeGeneratorClass>
+                                            org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+                                        </codeGeneratorClass>
+                                        <outputBaseDir>${jmxGeneratorPath}</outputBaseDir>
+                                        <additionalConfiguration>
+                                            <namespaceToPackage1>
+                                                urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang
+                                            </namespaceToPackage1>
+                                        </additionalConfiguration>
+                                    </generator>
+                                </codeGenerators>
+                                <inspectDependencies>true</inspectDependencies>
+                            </configuration>
+                        </execution>
+                    </executions>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.opendaylight.controller</groupId>
+                            <artifactId>yang-jmx-generator-plugin</artifactId>
+                            <version>${config.version}</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
+
+                <!-- tell eclipse about generated source folders -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>1.8</version>
+                    <executions>
+                        <execution>
+                            <id>add-source</id>
+                            <phase>generate-sources</phase>
+                            <goals>
+                                <goal>add-source</goal>
+                            </goals>
+                            <configuration>
+                                <sources>
+                                    <source>${jmxGeneratorPath}</source>
+                                </sources>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
index b63f3298c1af9602674894915664499bcb9d038f..7d01d288ed6a58b6bd1f18b31320a4ff0046ed74 100644 (file)
@@ -1,12 +1,14 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.opendaylight.controller</groupId>
-        <artifactId>config-subsystem</artifactId>
+        <artifactId>config-plugin-parent</artifactId>
         <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
     </parent>
     <artifactId>logback-config</artifactId>
     <name>${project.artifactId}</name>
                     <instructions>
                         <Private-Package>
                         </Private-Package>
-                        <Import-Package>
-                            ch.qos.logback.classic,
-                            ch.qos.logback.classic.encoder,
-                            ch.qos.logback.classic.filter,
-                            ch.qos.logback.classic.spi,
-                            ch.qos.logback.core,
-                            ch.qos.logback.core.status,
-                            ch.qos.logback.core.encoder,
-                            ch.qos.logback.core.rolling,
-                            org.opendaylight.controller.config.api,
-                            org.opendaylight.controller.config.api.runtime,
-                            org.opendaylight.controller.config.api.annotations,
-                            org.opendaylight.controller.config.spi,
-                            com.google.common.base,
-                            com.google.common.collect,
-                            org.apache.commons.lang3,
-                            org.slf4j,
-                            org.osgi.framework
-                        </Import-Package>
                         <Export-Package>
                             org.opendaylight.controller.config.yang.logback.config,
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.logback.config.rev130716.*,
                         </Export-Package>
                     </instructions>
                 </configuration>
index 9a2fe372581647169a360cc2c157b2bdfe4ad5ea..19c926a2fbc36e25c0d407144745ce8a5f22a82a 100644 (file)
@@ -1,8 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <groupId>org.opendaylight.controller</groupId>
-    <artifactId>config-subsystem</artifactId>
-    <version>0.2.3-SNAPSHOT</version>
+        <artifactId>config-plugin-parent</artifactId>
+        <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>netty-config-api</artifactId>
             <artifactId>maven-bundle-plugin</artifactId>
             <configuration>
                <instructions>
-                  <Import-Package>
-                     org.opendaylight.controller.config.api.*,
-                     io.netty.channel,
-                     io.netty.util,
-                     io.netty.util.concurrent
-                  </Import-Package>
                   <Export-Package>
-                     org.opendaylight.controller.config.yang.netty
+                      org.opendaylight.controller.config.yang.netty,
+                      org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.*,
                   </Export-Package>
                </instructions>
             </configuration>
@@ -51,4 +49,4 @@
          </plugin>
       </plugins>
    </build>
-</project>
\ No newline at end of file
+</project>
index 3d5384d171774d053ca01ee39ca1a9e3c784401f..2fce3596d4ad6d082b94d2a04c7f6960339da23c 100644 (file)
@@ -1,9 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
       <groupId>org.opendaylight.controller</groupId>
-      <artifactId>config-subsystem</artifactId>
-      <version>0.2.3-SNAPSHOT</version>
+        <artifactId>config-plugin-parent</artifactId>
+        <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>netty-event-executor-config</artifactId>
                <instructions>
                   <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
                   <Export-Package>
+                      org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.eventexecutor.rev131112.*,
                   </Export-Package>
-                  <Import-Package>
-                     com.google.common.base,
-                     org.opendaylight.controller.config.yang.netty,
-                     io.netty.util.concurrent,
-                     org.opendaylight.controller.config.api,
-                     org.opendaylight.controller.config.api.annotations,
-                     org.opendaylight.controller.config.api.runtime,
-                     org.opendaylight.controller.config.spi,
-                     org.slf4j,
-                     org.osgi.framework
-                  </Import-Package>
                </instructions>
             </configuration>
          </plugin>
@@ -99,4 +92,4 @@
       </site>
    </distributionManagement>
 
-</project>
\ No newline at end of file
+</project>
index 8dc989e7283751c1a91b4e57d789046724b1f5b3..d35067af093fcba04d22ef13c831bc63e4cb300d 100644 (file)
@@ -5,8 +5,9 @@
 
     <parent>
         <groupId>org.opendaylight.controller</groupId>
-        <artifactId>config-subsystem</artifactId>
+        <artifactId>config-plugin-parent</artifactId>
         <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
                     <instructions>
                         <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
                         <Export-Package>
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.threadgroup.rev131107.*,
                         </Export-Package>
-                        <Import-Package>
-                            com.google.common.base,
-                            io.netty.channel.nio,
-                            org.opendaylight.controller.config.yang.netty,
-                            io.netty.util.concurrent,
-                            org.opendaylight.controller.config.api,
-                            org.opendaylight.controller.config.api.annotations,
-                            org.opendaylight.controller.config.api.runtime,
-                            org.opendaylight.controller.config.spi,
-                            org.slf4j,
-                            org.osgi.framework
-                        </Import-Package>
                     </instructions>
                 </configuration>
             </plugin>
index 095e71fcf50dcd4770081ddd6feeb55a1ed8ebe8..161d39278aef9e1a112b3227499fd8b5d431424a 100644 (file)
@@ -1,9 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
       <groupId>org.opendaylight.controller</groupId>
-      <artifactId>config-subsystem</artifactId>
-      <version>0.2.3-SNAPSHOT</version>
+        <artifactId>config-plugin-parent</artifactId>
+        <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>netty-timer-config</artifactId>
                <instructions>
                   <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
                   <Export-Package>
+                      org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.timer.rev131119.*,
                   </Export-Package>
-                  <Import-Package>
-                     javax.management,
-                     com.google.common.base,
-                     org.opendaylight.controller.config.yang.netty,
-                     org.opendaylight.controller.config.yang.threadpool,
-                     io.netty.util,
-                     org.opendaylight.controller.config.api,
-                     org.opendaylight.controller.config.api.annotations,
-                     org.opendaylight.controller.config.api.runtime,
-                     org.opendaylight.controller.config.spi,
-                     org.slf4j,
-                     org.osgi.framework
-                  </Import-Package>
                </instructions>
             </configuration>
          </plugin>
          <url>${basedir}/target/site/${project.artifactId}</url>
       </site>
    </distributionManagement>
-</project>
\ No newline at end of file
+</project>
index c1eef701da271014a5777f098926562a54a45074..c9ed19dacb2c0256f811025e2be01409b09e5bbc 100644 (file)
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
@@ -20,6 +22,7 @@
     <modules>
         <module>config-api</module>
         <module>config-manager</module>
+        <module>config-plugin-parent</module>
         <module>config-util</module>
         <module>config-persister-api</module>
         <module>config-persister-file-adapter</module>
@@ -63,7 +66,6 @@
         <opendaylight.yang.version>0.5.9-SNAPSHOT</opendaylight.yang.version>
         <opendaylight.binding.version>0.6.0-SNAPSHOT</opendaylight.binding.version>
         <opendaylight.yangtools.version>0.1.1-SNAPSHOT</opendaylight.yangtools.version>
-        <jmxGeneratorPath>${project.build.directory}/generated-sources/config</jmxGeneratorPath>
     </properties>
 
     <dependencies>
                 <artifactId>yang-store-api</artifactId>
                 <version>${config.version}</version>
             </dependency>
+
+            <!-- MD-SAL -->
+            <dependency>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>yang-binding</artifactId>
+                <version>${opendaylight.binding.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>yang-common</artifactId>
+                <version>${opendaylight.yang.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>concepts</artifactId>
+                <version>${opendaylight.yangtools.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
             </plugin>
         </plugins>
 
-
-
         <pluginManagement>
             <plugins>
                 <plugin>
                     <version>${opendaylight.yang.version}</version>
                     <executions>
                         <execution>
+                            <id>sal</id>
                             <goals>
                                 <goal>generate-sources</goal>
                             </goals>
                             <configuration>
+                                <yangFilesRootDir>src/main/yang</yangFilesRootDir>
                                 <codeGenerators>
                                     <generator>
                                         <codeGeneratorClass>
-                                            org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+                                            org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
                                         </codeGeneratorClass>
-                                        <outputBaseDir>${jmxGeneratorPath}</outputBaseDir>
-                                        <additionalConfiguration>
-                                            <namespaceToPackage1>
-                                                urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang
-                                            </namespaceToPackage1>
-                                        </additionalConfiguration>
+                                        <outputBaseDir>
+                                            target/generated-sources/sal
+                                        </outputBaseDir>
+                                    </generator>
+                                    <generator>
+                                        <codeGeneratorClass>org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl</codeGeneratorClass>
+                                        <outputBaseDir>target/site</outputBaseDir>
                                     </generator>
                                 </codeGenerators>
                                 <inspectDependencies>true</inspectDependencies>
                     </executions>
                     <dependencies>
                         <dependency>
-                            <groupId>org.opendaylight.controller</groupId>
-                            <artifactId>yang-jmx-generator-plugin</artifactId>
-                            <version>${config.version}</version>
+                            <groupId>org.opendaylight.yangtools</groupId>
+                            <artifactId>maven-sal-api-gen-plugin</artifactId>
+                            <version>${opendaylight.binding.version}</version>
+                            <type>jar</type>
                         </dependency>
                     </dependencies>
                 </plugin>
-                <!-- tell eclipse about generated source folders -->
-                <plugin>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>build-helper-maven-plugin</artifactId>
-                    <version>1.8</version>
-                    <executions>
-                        <execution>
-                            <id>add-source</id>
-                            <phase>generate-sources</phase>
-                            <goals>
-                                <goal>add-source</goal>
-                            </goals>
-                            <configuration>
-                                <sources>
-                                    <source>${jmxGeneratorPath}</source>
-                                </sources>
-                            </configuration>
-                        </execution>
-                    </executions>
-                </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
index 5c70ac7958fdd4a9af2803879bb598c2d2bee11f..49e9f0da9ac4f2c4e3981f80a45360172b995dd3 100644 (file)
@@ -1,9 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
       <groupId>org.opendaylight.controller</groupId>
-      <artifactId>config-subsystem</artifactId>
-      <version>0.2.3-SNAPSHOT</version>
+        <artifactId>config-plugin-parent</artifactId>
+        <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>threadpool-config-api</artifactId>
             <artifactId>maven-bundle-plugin</artifactId>
             <configuration>
                <instructions>
-                  <Import-Package>
-                     org.opendaylight.controller.config.api.*,
-                     com.google.common.eventbus,
-                  </Import-Package>
                   <Export-Package>
                      org.opendaylight.controller.config.threadpool,
-                     org.opendaylight.controller.config.yang.threadpool
+                     org.opendaylight.controller.config.yang.threadpool,
+                     org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.*,
                   </Export-Package>
                </instructions>
             </configuration>
@@ -48,4 +48,4 @@
          </plugin>
       </plugins>
    </build>
-</project>
\ No newline at end of file
+</project>
index cde64363cfe4454c1ca6184ff6e3c81efef520e4..4cbe3976933afc070b3b0d81578bfe3f68e7033b 100644 (file)
@@ -1,9 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
       <groupId>org.opendaylight.controller</groupId>
-      <artifactId>config-subsystem</artifactId>
-      <version>0.2.3-SNAPSHOT</version>
+        <artifactId>config-plugin-parent</artifactId>
+        <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>threadpool-config-impl</artifactId>
                      javax.annotation.*,
                      org.opendaylight.controller.config.yang.threadpool.impl,
                   </Private-Package>
-                  <Import-Package>
-                     org.opendaylight.controller.config.api.*,
-                     org.opendaylight.controller.config.spi.*,
-                     org.opendaylight.controller.config.threadpool,
-                     org.opendaylight.controller.config.yang.threadpool,
-                     javax.management,
-                     org.osgi.framework,
-                     org.slf4j,
-                     com.google.common.*
-                  </Import-Package>
                   <Export-Package>
-                     org.opendaylight.controller.config.threadpool.util
+                      org.opendaylight.controller.config.threadpool.util,
+                      org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.impl.rev130405.*,
                   </Export-Package>
                </instructions>
             </configuration>
index 7351822db9d8096f46dbce588872c34a6c744448..d0646f467a50416a71bb7d5f5c0c42cdfd343abf 100644 (file)
@@ -55,6 +55,11 @@ package ${packageName};
         dependencyResolver.validateDependency(${field.dependency.sie.fullyQualifiedName}.class, ${field.name}, ${field.name}JmxAttribute);
         </#if>
     </#list>
+        customValidation();
+    }
+
+    protected void customValidation(){
+
     }
 
     // caches of resolved dependencies
@@ -110,7 +115,7 @@ package ${packageName};
 
     public boolean canReuseInstance(${typeDeclaration.name} oldModule){
         // allow reusing of old instance if no parameters was changed
-        return equals(oldModule);
+        return isSame(oldModule);
     }
 
     public ${instanceType} reuseInstance(${instanceType} oldInstance){
@@ -120,34 +125,50 @@ package ${packageName};
 
     public abstract ${instanceType} createInstance();
 
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        ${typeDeclaration.name} other = (${typeDeclaration.name}) obj;
-
-
+    public boolean isSame(${typeDeclaration.name} other) {
+        if (other == null) {
+            throw new IllegalArgumentException("Parameter 'other' is null");
+        }
         <#list moduleFields as field>
         <#if field.dependent==true>
         if (${field.name}Dependency == null) {
             if (other.${field.name}Dependency != null)
                 return false;
-        } else if (!${field.name}Dependency.equals(other.${field.name}Dependency))
+        } else if (!${field.name}Dependency.equals(other.${field.name}Dependency)) {
             return false;
+        }
         <#else>
         if (${field.name} == null) {
-            if (other.${field.name} != null)
+            if (other.${field.name} != null) {
                 return false;
-        } else if (!${field.name}.equals(other.${field.name}))
+            }
+        } else if
+            <#if field.array == false>
+                (${field.name}.equals(other.${field.name}) == false)
+            <#else>
+                (java.util.Arrays.equals(${field.name},other.${field.name}) == false)
+            </#if>
+                 {
             return false;
+        }
         </#if>
         </#list>
 
         return true;
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ${typeDeclaration.name} that = (${typeDeclaration.name}) o;
+
+        return identifier.equals(that.identifier);
+    }
+
+    @Override
+    public int hashCode() {
+        return identifier.hashCode();
+    }
 }
index 23dce9321e3e10ca8d3ba4015e0c3fc2244233b2..2db505e54effb00cc9df5381e2ad95bf5e155312 100644 (file)
@@ -2,20 +2,20 @@
 package ${packageName};
 
 <@javadocD object=javadoc/>
-<@typeDeclarationD object=typeDeclaration/>
-{
+<@typeDeclarationD object=typeDeclaration/> {
 
     public ${typeDeclaration.name}(${moduleNameType} identifier, ${dependencyResolverType} dependencyResolver) {
         super(identifier, dependencyResolver);
     }
 
-    public ${typeDeclaration.name}(${moduleNameType} identifier, ${dependencyResolverType} dependencyResolver, ${typeDeclaration.name} oldModule, ${instanceType} oldInstance) {
+    public ${typeDeclaration.name}(${moduleNameType} identifier, ${dependencyResolverType} dependencyResolver,
+            ${typeDeclaration.name} oldModule, ${instanceType} oldInstance) {
+
         super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
     @Override
-    public void validate(){
-        super.validate();
+    protected void customValidation(){
         // Add custom validation for module attributes here.
     }
 
index 556abad7af2b9b80f4623cca42c4411f7191e974..0d6ec3cccbeedf872bbd61c8649f6c66cf743a63 100644 (file)
@@ -584,7 +584,7 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
         assertContains(reqIfc, PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX
                 + ".threads.ThreadFactoryServiceInterface");
 
-        assertEquals("Incorrenct number of generated methods", 24,
+        assertEquals("Incorrenct number of generated methods", 27,
                 visitor.methods.size());
         assertEquals("Incorrenct number of generated method descriptions", 3,
                 visitor.methodDescriptions.size());
index cd985714d46804ecf84d713a0882811d9177aa38..c312cc849351587096c871c5edefe9bd25954efd 100644 (file)
                         <Private-Package>
                             org.opendaylight.controller.config.yangjmxgenerator.plugin.util,
                         </Private-Package>
-                        <Import-Package>
-                            org.slf4j,
-                            com.google.common.base,
-                            com.google.common.collect,
-                            javax.management.*,
-                            <!-- YANGTOOLS -->
-                            org.opendaylight.yangtools.binding.generator.util,
-                            org.opendaylight.yangtools.sal.binding.generator.spi,
-                            org.opendaylight.yangtools.sal.binding.model.api,
-                            org.opendaylight.yangtools.yang.common,
-                            org.opendaylight.yangtools.yang.model.api
-                        </Import-Package>
                         <Export-Package>
                             org.opendaylight.controller.config.yangjmxgenerator,
                             org.opendaylight.controller.config.yangjmxgenerator.attribute,
index 382dced3e754b08e8f4c593b3fca2ae9bcb11eaf..c97eade26ca5d9dad3087b71252dc85cacfa213d 100644 (file)
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Import-Package>
-                            org.opendaylight.controller.config.yangjmxgenerator,
-                            org.opendaylight.yangtools.yang.model.api
-                        </Import-Package>
                         <Export-Package>
                             org.opendaylight.controller.config.yang.store.api,
                         </Export-Package>
index 7b79c831f84477253bdcf647303631ebdc8e2f13..3b0d58a32f28cb329b35e4ea33816d7624076082 100644 (file)
                 <configuration>
                     <instructions>
                         <Bundle-Activator>org.opendaylight.controller.config.yang.store.impl.YangStoreActivator</Bundle-Activator>
-                        <Import-Package>
-                            org.opendaylight.controller.config.yang.store.api,
-                            org.opendaylight.controller.config.yangjmxgenerator,
-                            com.google.common.base,
-                            com.google.common.collect,
-                            com.google.common.primitives,
-                            org.apache.commons.io,
-                            org.osgi.framework,
-                            org.osgi.util.tracker,
-                            org.slf4j,
-                            <!-- YANGTOOLS -->
-                            org.opendaylight.yangtools.sal.binding.yang.types,
-                            org.opendaylight.yangtools.yang.common,
-                            org.opendaylight.yangtools.yang.model.api,
-                            org.opendaylight.yangtools.sal.binding.generator.spi,
-                            org.opendaylight.yangtools.yang.parser.impl,
-                        </Import-Package>
                         <Export-Package>
                         </Export-Package>
                     </instructions>
index f8d86b28bb2033f25874754acbfff2fdde4080b5..e3737c78f34d584e4771dc8df99b466d1897a828 100644 (file)
@@ -1,11 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
 <project
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.opendaylight.controller</groupId>
-        <artifactId>config-subsystem</artifactId>
+        <artifactId>config-plugin-parent</artifactId>
         <version>0.2.3-SNAPSHOT</version>
+        <relativePath>../config-plugin-parent</relativePath>
     </parent>
 
     <artifactId>yang-test</artifactId>
index 76df839665558ebc7a937d8d59f456f7c509d138..1122c1ffa46a16078623850314bb4cee3fd4aef0 100644 (file)
@@ -1,38 +1,23 @@
-/**
- * Generated file
-
- * Generated from: yang module name: config-test-impl  yang module local name: impl-dep
- * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
- * Generated at: Fri Sep 27 13:02:28 CEST 2013
- *
- * Do not modify this file unless it is present under src/main directory
- */
 package org.opendaylight.controller.config.yang.test.impl;
 
-
 /**
 *
 */
-public final class DepTestImplModule
-        extends
-        org.opendaylight.controller.config.yang.test.impl.AbstractDepTestImplModule {
+public final class DepTestImplModule extends org.opendaylight.controller.config.yang.test.impl.AbstractDepTestImplModule
+ {
 
-    public DepTestImplModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier name,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(name, dependencyResolver);
+    public DepTestImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
     }
 
-    public DepTestImplModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier name,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
+    public DepTestImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
             DepTestImplModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(name, dependencyResolver, oldModule, oldInstance);
+
+        super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
     @Override
-    public void validate() {
-        super.validate();
+    protected void customValidation(){
         // Add custom validation for module attributes here.
     }
 
@@ -44,5 +29,4 @@ public final class DepTestImplModule
             }
         };
     }
-
 }
index b07cf40f821a5131a6f2a70bcdbddce6f93c2451..4152736768ca9ce12d089cb1fb039a536b712c47 100644 (file)
@@ -1,19 +1,10 @@
-/**
- * Generated file
-
- * Generated from: yang module name: config-test-impl  yang module local name: impl-dep
- * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
- * Generated at: Fri Sep 27 13:02:28 CEST 2013
- *
- * Do not modify this file unless it is present under src/main directory
- */
 package org.opendaylight.controller.config.yang.test.impl;
 
 /**
 *
 */
-public class DepTestImplModuleFactory
-        extends
-        org.opendaylight.controller.config.yang.test.impl.AbstractDepTestImplModuleFactory {
+public class DepTestImplModuleFactory extends org.opendaylight.controller.config.yang.test.impl.AbstractDepTestImplModuleFactory
+{
+
 
 }
diff --git a/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/DepTestImplModuleStub.txt b/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/DepTestImplModuleStub.txt
new file mode 100644 (file)
index 0000000..80c1e54
--- /dev/null
@@ -0,0 +1,5 @@
+        return new AutoCloseable() {
+            @Override
+            public void close() throws Exception {
+            }
+        };
index ae86d42d8ebd18458aa69f80d47024bbbdd4c131..7e1848dd6a7f20f6692d5dc5f5cfefd49b587190 100644 (file)
-/**
- * Generated file
-
- * Generated from: yang module name: config-test-impl  yang module local name: impl-netconf
- * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
- * Generated at: Fri Sep 27 13:02:28 CEST 2013
- *
- * Do not modify this file unless it is present under src/main directory
- */
 package org.opendaylight.controller.config.yang.test.impl;
 
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
 /**
 *
 */
-public final class NetconfTestImplModule
-        extends
-        org.opendaylight.controller.config.yang.test.impl.AbstractNetconfTestImplModule {
+public final class NetconfTestImplModule extends org.opendaylight.controller.config.yang.test.impl.AbstractNetconfTestImplModule
+ {
 
-    public NetconfTestImplModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier name,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(name, dependencyResolver);
+    public NetconfTestImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
     }
 
-    public NetconfTestImplModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier name,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
+    public NetconfTestImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
             NetconfTestImplModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(name, dependencyResolver, oldModule, oldInstance);
+
+        super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
     @Override
-    public void validate() {
-        super.validate();
+    protected void customValidation(){
         // Add custom validation for module attributes here.
     }
 
     @Override
     public java.lang.AutoCloseable createInstance() {
-        return registerRuntimeBeans();
+        return NetconfTestImplModuleUtil.registerRuntimeBeans(this);
     }
-
-    private NetconfTestImplRuntimeRegistration registerRuntimeBeans() {
-        NetconfTestImplRuntimeRegistration reg = getRootRuntimeBeanRegistratorWrapper().register(new NetconfTestImplRuntimeMXBean() {
-
-            @Override
-            public Long getCreatedSessions() {
-                return getSimpleLong();
-            }
-
-            @Override
-            public Asdf getAsdf() {
-                final Asdf asdf = new Asdf();
-                asdf.setSimpleString("asdf");
-                return asdf;
-            }
-
-            @Override
-            public String noArg(final String arg1) {
-                return arg1.toUpperCase();
-            }
-
-        });
-
-        for (int i = 0; i < getSimpleShort(); i++) {
-            final int finalI = i;
-
-            reg.register(new InnerRunningDataAdditionalRuntimeMXBean() {
-                @Override
-                public Integer getSimpleInt3() {
-                    return getSimpleTest();
-                }
-
-                @Override
-                public Deep4 getDeep4() {
-                    final Deep4 d = new Deep4();
-                    d.setBoool(false);
-                    return d;
-                }
-
-                @Override
-                public String getSimpleString() {
-                    return Integer.toString(finalI);
-                }
-
-                @Override
-                public void noArgInner() {
-                }
-            });
-
-            InnerRunningDataRuntimeRegistration innerReg = reg.register(new InnerRunningDataRuntimeMXBean() {
-                @Override
-                public Integer getSimpleInt3() {
-                    return finalI;
-                }
-
-                @Override
-                public Deep2 getDeep2() {
-                    return new Deep2();
-                }
-            });
-
-            for (int j = 0; j < getSimpleShort(); j++) {
-                final int finalJ = j;
-                innerReg.register(new InnerInnerRunningDataRuntimeMXBean() {
-                    @Override
-                    public List<NotStateBean> getNotStateBean() {
-                        NotStateBean b1 = new NotStateBean();
-                        b1.setElement("not state");
-                        return Lists.newArrayList(b1);
-                    }
-
-                    @Override
-                    public Integer getSimpleInt3() {
-                        return finalJ;
-                    }
-
-                    @Override
-                    public Deep3 getDeep3() {
-                        return new Deep3();
-                    }
-
-                    @Override
-                    public List<String> getListOfStrings() {
-                        return Lists.newArrayList("l1", "l2");
-                    }
-
-                    @Override
-                    public List<RetValList> listOutput() {
-                        return Lists.newArrayList(new RetValList());
-                    }
-
-                    @Override
-                    public Boolean noArgInnerInner(Integer integer, Boolean aBoolean) {
-                        return aBoolean;
-                    }
-
-                    @Override
-                    public RetValContainer containerOutput() {
-                        return new RetValContainer();
-                    }
-
-                    @Override
-                    public List<String> leafListOutput() {
-                        return Lists.newArrayList("1", "2");
-                    }
-                });
-            }
-        }
-
-        return reg;
-    }
-
 }
index e99c64dd3b473674b62e619eaba59d704cf80ffa..7cab5288680b9f2cfe454d3630c1e92f3b29d3bc 100644 (file)
@@ -1,19 +1,10 @@
-/**
- * Generated file
-
- * Generated from: yang module name: config-test-impl  yang module local name: impl-netconf
- * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
- * Generated at: Fri Sep 27 13:02:28 CEST 2013
- *
- * Do not modify this file unless it is present under src/main directory
- */
 package org.opendaylight.controller.config.yang.test.impl;
 
 /**
 *
 */
-public class NetconfTestImplModuleFactory
-        extends
-        org.opendaylight.controller.config.yang.test.impl.AbstractNetconfTestImplModuleFactory {
+public class NetconfTestImplModuleFactory extends org.opendaylight.controller.config.yang.test.impl.AbstractNetconfTestImplModuleFactory
+{
+
 
 }
diff --git a/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleStub.txt b/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleStub.txt
new file mode 100644 (file)
index 0000000..6515412
--- /dev/null
@@ -0,0 +1 @@
+return NetconfTestImplModuleUtil.registerRuntimeBeans(this);
diff --git a/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleUtil.java b/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleUtil.java
new file mode 100644 (file)
index 0000000..58943c9
--- /dev/null
@@ -0,0 +1,126 @@
+/**
+ * @author Tomas Olvecky
+ *
+ * 11 2013
+ *
+ * Copyright (c) 2013 by Cisco Systems, Inc.
+ * All rights reserved.
+ */
+package org.opendaylight.controller.config.yang.test.impl;
+
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+public class NetconfTestImplModuleUtil {
+    static NetconfTestImplRuntimeRegistration registerRuntimeBeans(final NetconfTestImplModule module) {
+        NetconfTestImplRuntimeRegistration reg = module.getRootRuntimeBeanRegistratorWrapper().register(new NetconfTestImplRuntimeMXBean() {
+
+            @Override
+            public Long getCreatedSessions() {
+                return module.getSimpleLong();
+            }
+
+            @Override
+            public Asdf getAsdf() {
+                final Asdf asdf = new Asdf();
+                asdf.setSimpleString("asdf");
+                return asdf;
+            }
+
+            @Override
+            public String noArg(final String arg1) {
+                return arg1.toUpperCase();
+            }
+
+        });
+
+        for (int i = 0; i < module.getSimpleShort(); i++) {
+            final int finalI = i;
+
+            reg.register(new InnerRunningDataAdditionalRuntimeMXBean() {
+                @Override
+                public Integer getSimpleInt3() {
+                    return module.getSimpleTest();
+                }
+
+                @Override
+                public Deep4 getDeep4() {
+                    final Deep4 d = new Deep4();
+                    d.setBoool(false);
+                    return d;
+                }
+
+                @Override
+                public String getSimpleString() {
+                    return Integer.toString(finalI);
+                }
+
+                @Override
+                public void noArgInner() {
+                }
+            });
+
+            InnerRunningDataRuntimeRegistration innerReg = reg.register(new InnerRunningDataRuntimeMXBean() {
+                @Override
+                public Integer getSimpleInt3() {
+                    return finalI;
+                }
+
+                @Override
+                public Deep2 getDeep2() {
+                    return new Deep2();
+                }
+            });
+
+            for (int j = 0; j < module.getSimpleShort(); j++) {
+                final int finalJ = j;
+                innerReg.register(new InnerInnerRunningDataRuntimeMXBean() {
+                    @Override
+                    public List<NotStateBean> getNotStateBean() {
+                        NotStateBean b1 = new NotStateBean();
+                        b1.setElement("not state");
+                        return Lists.newArrayList(b1);
+                    }
+
+                    @Override
+                    public Integer getSimpleInt3() {
+                        return finalJ;
+                    }
+
+                    @Override
+                    public Deep3 getDeep3() {
+                        return new Deep3();
+                    }
+
+                    @Override
+                    public List<String> getListOfStrings() {
+                        return Lists.newArrayList("l1", "l2");
+                    }
+
+                    @Override
+                    public List<RetValList> listOutput() {
+                        return Lists.newArrayList(new RetValList());
+                    }
+
+                    @Override
+                    public Boolean noArgInnerInner(Integer integer, Boolean aBoolean) {
+                        return aBoolean;
+                    }
+
+                    @Override
+                    public RetValContainer containerOutput() {
+                        return new RetValContainer();
+                    }
+
+                    @Override
+                    public List<String> leafListOutput() {
+                        return Lists.newArrayList("1", "2");
+                    }
+                });
+            }
+        }
+
+        return reg;
+    }
+}
index dfd9ebc021bfa62fef45dc4fb28e5dfc5678b2b3..52a71620bf0062f929e2496dac32d094f66d7157 100644 (file)
@@ -1,38 +1,23 @@
-/**
- * Generated file
-
- * Generated from: yang module name: config-test-impl  yang module local name: impl
- * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
- * Generated at: Fri Sep 27 13:02:28 CEST 2013
- *
- * Do not modify this file unless it is present under src/main directory
- */
 package org.opendaylight.controller.config.yang.test.impl;
 
-
 /**
 *
 */
-public final class TestImplModule
-        extends
-        org.opendaylight.controller.config.yang.test.impl.AbstractTestImplModule {
+public final class TestImplModule extends org.opendaylight.controller.config.yang.test.impl.AbstractTestImplModule
+ {
 
-    public TestImplModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier name,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(name, dependencyResolver);
+    public TestImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
     }
 
-    public TestImplModule(
-            org.opendaylight.controller.config.api.ModuleIdentifier name,
-            org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
+    public TestImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
             TestImplModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(name, dependencyResolver, oldModule, oldInstance);
+
+        super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
     @Override
-    public void validate() {
-        super.validate();
+    protected void customValidation(){
         // Add custom validation for module attributes here.
     }
 
@@ -44,5 +29,4 @@ public final class TestImplModule
             }
         };
     }
-
 }
index 1e86c83655eda9ab864b8892f512fdf66030bb69..ce9aa92b64ea0f4c61911b0f969c71ed048bac21 100644 (file)
@@ -1,19 +1,10 @@
-/**
- * Generated file
-
- * Generated from: yang module name: config-test-impl  yang module local name: impl
- * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
- * Generated at: Fri Sep 27 13:02:28 CEST 2013
- *
- * Do not modify this file unless it is present under src/main directory
- */
 package org.opendaylight.controller.config.yang.test.impl;
 
 /**
 *
 */
-public class TestImplModuleFactory
-        extends
-        org.opendaylight.controller.config.yang.test.impl.AbstractTestImplModuleFactory {
+public class TestImplModuleFactory extends org.opendaylight.controller.config.yang.test.impl.AbstractTestImplModuleFactory
+{
+
 
 }
diff --git a/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/TestImplModuleStub.txt b/opendaylight/config/yang-test/src/main/java/org/opendaylight/controller/config/yang/test/impl/TestImplModuleStub.txt
new file mode 100644 (file)
index 0000000..80c1e54
--- /dev/null
@@ -0,0 +1,5 @@
+        return new AutoCloseable() {
+            @Override
+            public void close() throws Exception {
+            }
+        };
index 9d2a6a0b110f333be53b6640cb02c83653982e99..6aa0d5fc909508a930dfd8c1d6182964b8ba744a 100644 (file)
@@ -185,6 +185,7 @@ public class FlowConsumerImpl implements IForwardingRulesManager {
     private void addFlow(InstanceIdentifier<?> path, Flow dataObject) {
 
         AddFlowInputBuilder input = new AddFlowInputBuilder();
+        
         List<Instruction> inst = (dataObject).getInstructions().getInstruction();
         input.setNode((dataObject).getNode());
         input.setPriority((dataObject).getPriority());
index b8dac19bf37956262e9b88a35f24b95b719edc5c..381faa41b082ea069df75ca8b5a82736d94fd642 100644 (file)
@@ -35,15 +35,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.Gro
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupRemoved;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupUpdated;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInputBuilder;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.group.update.UpdatedGroupBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.config.rev131024.meters.Meter;
 import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -239,8 +237,8 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
                 return new Status(StatusCode.BADREQUEST, "Group record does not exist");
             }*/
 
-            if (!(group.getGroupType().getIntValue() >= GroupType.GroupAll.getIntValue() && group.getGroupType()
-                    .getIntValue() <= GroupType.GroupFf.getIntValue())) {
+            if (!(group.getGroupType().getIntValue() >= GroupTypes.GroupAll.getIntValue() && group.getGroupType()
+                    .getIntValue() <= GroupTypes.GroupFf.getIntValue())) {
                 logger.error("Invalid Group type %d" + group.getGroupType().getIntValue());
                 return new Status(StatusCode.BADREQUEST, "Invalid Group type");
             }
index 25e8e7aa577968ffc20fccaac459c1e958f4d586..244fedb3e7e0dc0baf4dc59455749156babe0e8a 100644 (file)
@@ -14,30 +14,30 @@ module opendaylight-group-types {
         type uint32;
     }
     
-    grouping group-types {
-        leaf group-type {
-            type enumeration {
-                enum group-all;
-                enum group-select;
-                enum group-indirect;
-                enum group-ff;
-            }
-        }
+    typedef group-types {        
+        type enumeration {
+            enum group-all;
+            enum group-select;
+            enum group-indirect;
+            enum group-ff;
+        }        
     }
     
     typedef group-capabilities { 
-               type enumeration {
-                enum select-weight;
-                enum select-liveness;
-                enum chaining;
-                enum chaining-checks;
-            }   
-        }
+        type enumeration {
+            enum select-weight;
+            enum select-liveness;
+            enum chaining;
+            enum chaining-checks;
+        }   
+    }
     
     
     grouping group {
         
-        uses group-types;
+        leaf group-type {
+            type group-types;
+        }
         
         leaf group-id {
             type group-id;
index d26ca667996f164f9ca7f8b57c6df25a7c381563..fc9be63ec89f0ec986fa386e6af0df3d1b36b607 100644 (file)
@@ -14,24 +14,25 @@ module opendaylight-meter-types {
             type uint32;
     }
     
-    grouping meter-flags {
-        leaf flags {
-            type bits {
-                bit meter-kbps;
-                bit meter-pktps;
-                bit meter-burst;
-                bit meter-stats;
-            }
-        }
+    // field types
+    identity meter-flags {
+        description "Base identity for match Fields";
     }
     
-    grouping meter-band-type {
-        leaf flags {
-            type bits {
-                bit ofpmbt-drop;
-                bit ofpmbt-dscp-remark;
-                bit ofpmbt-experimenter;               
-            }
+    typedef meter-flags {        
+        type bits {
+            bit meter-kbps;
+            bit meter-pktps;
+            bit meter-burst;
+            bit meter-stats;
+        }        
+    }
+    
+    typedef meter-band-type {
+        type bits {
+            bit ofpmbt-drop;
+            bit ofpmbt-dscp-remark;
+            bit ofpmbt-experimenter;               
         }
     }
     
@@ -79,7 +80,9 @@ module opendaylight-meter-types {
     
     grouping meter {
         
-        uses meter-flags;        
+        leaf flags {
+           type meter-flags;        
+        }
         
         leaf meter-id {
             type meter-id;
@@ -104,7 +107,9 @@ module opendaylight-meter-types {
                 }
                 
                 container meter-band-types {
-                    uses meter-band-type;
+                    leaf flags {
+                        type meter-band-type;
+                    }
                 }
             
                 leaf rate {
index dce858fce63dbad06159d7109f77fb40005c301e..c6caf417a17484aca119f7c2e5e655ce08102440 100644 (file)
             <artifactId>commons-io</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.controller</groupId>
+            <artifactId>config-persister-directory-adapter</artifactId>
+            <version>${parent.version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
index ac6b5b28fd697fdf1290f3e5d8df2a6717834429..d83b1eaaf341931571ce723378f41145a3342154 100644 (file)
@@ -101,25 +101,7 @@ public class ConfigPersisterNotificationHandler implements NotificationListener,
         if (maybeConfig.isPresent()) {
             logger.debug("Last config found {}", persister);
             ConflictingVersionException lastException = null;
-            int maxAttempts = 30;
-            for(int i = 0 ; i < maxAttempts; i++) {
-                registerToNetconf(maybeConfig.get().getCapabilities());
-
-                final String configSnapshot = maybeConfig.get().getConfigSnapshot();
-                logger.trace("Pushing following xml to netconf {}", configSnapshot);
-                try {
-                    pushLastConfig(XmlUtil.readXmlToElement(configSnapshot));
-                    return;
-                } catch(ConflictingVersionException e) {
-                    closeClientAndDispatcher(netconfClient, netconfClientDispatcher);
-                    lastException = e;
-                    Thread.sleep(1000);
-                } catch (SAXException | IOException e) {
-                    throw new IllegalStateException("Unable to load last config", e);
-                }
-            }
-            throw new IllegalStateException("Failed to push configuration, maximum attempt count has been reached: "
-                    + maxAttempts, lastException);
+            pushLastConfigWithRetries(maybeConfig, lastException);
 
         } else {
             // this ensures that netconf is initialized, this is first
@@ -132,6 +114,28 @@ public class ConfigPersisterNotificationHandler implements NotificationListener,
         registerAsJMXListener();
     }
 
+    private void pushLastConfigWithRetries(Optional<ConfigSnapshotHolder> maybeConfig, ConflictingVersionException lastException) throws InterruptedException {
+        int maxAttempts = 30;
+        for(int i = 0 ; i < maxAttempts; i++) {
+            registerToNetconf(maybeConfig.get().getCapabilities());
+
+            final String configSnapshot = maybeConfig.get().getConfigSnapshot();
+            logger.trace("Pushing following xml to netconf {}", configSnapshot);
+            try {
+                pushLastConfig(XmlUtil.readXmlToElement(configSnapshot));
+                return;
+            } catch(ConflictingVersionException e) {
+                closeClientAndDispatcher(netconfClient, netconfClientDispatcher);
+                lastException = e;
+                Thread.sleep(1000);
+            } catch (SAXException | IOException e) {
+                throw new IllegalStateException("Unable to load last config", e);
+            }
+        }
+        throw new IllegalStateException("Failed to push configuration, maximum attempt count has been reached: "
+                + maxAttempts, lastException);
+    }
+
     private synchronized long registerToNetconf(Set<String> expectedCaps) throws InterruptedException {
 
         Set<String> currentCapabilities = Sets.newHashSet();
@@ -209,6 +213,7 @@ public class ConfigPersisterNotificationHandler implements NotificationListener,
     }
 
     private void registerAsJMXListener() {
+        logger.trace("Called registerAsJMXListener");
         try {
             mbeanServer.addNotificationListener(on, this, null, null);
         } catch (InstanceNotFoundException | IOException e) {
index 7add448025b51794ef6ed0cc261e6dbd4cb50479..e109ebec887b8e3c2a1579e5e2292fc970b25f1e 100644 (file)
@@ -61,7 +61,7 @@ public final class PersisterAggregator implements Persister {
 
     public static class PersisterWithConfiguration {
 
-        public final Persister storage;
+        private final Persister storage;
         private final boolean readOnly;
 
         public PersisterWithConfiguration(Persister storage, boolean readOnly) {
@@ -69,6 +69,16 @@ public final class PersisterAggregator implements Persister {
             this.readOnly = readOnly;
         }
 
+        @VisibleForTesting
+        public Persister getStorage() {
+            return storage;
+        }
+
+        @VisibleForTesting
+        public boolean isReadOnly() {
+            return readOnly;
+        }
+
         @Override
         public String toString() {
             return "PersisterWithConfiguration{" +
diff --git a/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/DummyAdapter.java b/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/DummyAdapter.java
new file mode 100644 (file)
index 0000000..7a11b9c
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.netconf.persist.impl;
+
+import com.google.common.base.Optional;
+import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
+import org.opendaylight.controller.config.persist.api.Persister;
+import org.opendaylight.controller.config.persist.api.PropertiesProvider;
+import org.opendaylight.controller.config.persist.api.StorageAdapter;
+
+import java.io.IOException;
+
+public class DummyAdapter implements StorageAdapter, Persister {
+
+    static int persist = 0;
+
+    @Override
+    public void persistConfig(ConfigSnapshotHolder holder) throws IOException {
+        persist++;
+    }
+
+    static int load = 0;
+
+    @Override
+    public Optional<ConfigSnapshotHolder> loadLastConfig() throws IOException {
+        load++;
+        return Optional.absent();
+    }
+
+    static int props = 0;
+
+    @Override
+    public Persister instantiate(PropertiesProvider propertiesProvider) {
+        props++;
+        return this;
+    }
+
+    @Override
+    public void close() {
+    }
+
+}
index 1b4031ac57d3e3d4c2dd4331f012850a47f5962f..7141bc27d3b0fbe847b043dd55afa8d3d4efce18 100644 (file)
 package org.opendaylight.controller.netconf.persist.impl;
 
 import com.google.common.base.Optional;
-import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
 import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
 import org.opendaylight.controller.config.persist.api.Persister;
-import org.opendaylight.controller.config.persist.api.PropertiesProvider;
-import org.opendaylight.controller.config.persist.api.StorageAdapter;
 import org.opendaylight.controller.config.persist.storage.file.FileStorageAdapter;
 import org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator;
 import org.opendaylight.controller.netconf.persist.impl.osgi.PropertiesProviderBaseImpl;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.fail;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertEquals;
 import static org.junit.matchers.JUnitMatchers.containsString;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doCallRealMethod;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.opendaylight.controller.netconf.persist.impl.PersisterAggregator.PersisterWithConfiguration;
+import static org.opendaylight.controller.netconf.persist.impl.PersisterAggregatorTest.TestingPropertiesProvider.loadFile;
 
 public class PersisterAggregatorTest {
-    @Mock
-    TestingPropertiesProvider propertiesProvider;
 
-    class TestingPropertiesProvider extends PropertiesProviderBaseImpl {
-        TestingPropertiesProvider() {
+    static class TestingPropertiesProvider extends PropertiesProviderBaseImpl {
+
+        private static Properties prop = new Properties();
+
+        public TestingPropertiesProvider() {
             super(null);
         }
 
+        public static TestingPropertiesProvider loadFile(String fileName) {
+            try {
+                prop.load(TestingPropertiesProvider.class.getClassLoader().getResourceAsStream(fileName));
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+            return new TestingPropertiesProvider();
+        }
+
         @Override
         public String getFullKeyForReporting(String key) {
-            return "prefix." + key;
+            return ConfigPersisterActivator.NETCONF_CONFIG_PERSISTER + "." + key;
         }
 
         @Override
         public String getProperty(String key) {
-            throw new UnsupportedOperationException("should be mocked");
+            return prop.getProperty(getFullKeyForReporting(key));
         }
-    }
 
-    @Before
-    public void setUpMocks() {
-        MockitoAnnotations.initMocks(this);
-        doCallRealMethod().when(propertiesProvider).getFullKeyForReporting(anyString());
+        @Override
+        public String getPropertyWithoutPrefix(String fullKey){
+            return prop.getProperty(fullKey);
+        }
     }
 
-    @Ignore
     @Test
-    public void testFromProperties() throws Exception {
-        doReturn("").when(propertiesProvider).getProperty(ConfigPersisterActivator.NETCONF_CONFIG_PERSISTER);
-        doReturn(MockAdapter.class.getName()).when(propertiesProvider).getProperty(
-                ConfigPersisterActivator.STORAGE_ADAPTER_CLASS_PROP_SUFFIX);
-        doReturn("false").when(propertiesProvider).getProperty("readOnly");
+    public void testDummyAdapter() throws Exception {
+        PersisterAggregator persisterAggregator = PersisterAggregator.createFromProperties(loadFile("test1.properties"));
+        List<PersisterWithConfiguration> persisters = persisterAggregator.getPersisterWithConfigurations();
+        assertEquals(1, persisters.size());
+        PersisterWithConfiguration persister = persisters.get(0);
+        assertEquals(DummyAdapter.class.getName() ,persister.getStorage().getClass().getName());
+        assertFalse(persister.isReadOnly());
 
-        PersisterAggregator persisterAggregator = PersisterAggregator.createFromProperties(propertiesProvider);
         persisterAggregator.persistConfig(null);
         persisterAggregator.loadLastConfig();
         persisterAggregator.persistConfig(null);
         persisterAggregator.loadLastConfig();
 
-        assertEquals(2, MockAdapter.persist);
-        assertEquals(2, MockAdapter.load);
-        assertEquals(1, MockAdapter.props);
+        assertEquals(2, DummyAdapter.persist);
+        assertEquals(2, DummyAdapter.load);
+        assertEquals(1, DummyAdapter.props);
     }
 
-
-    @Ignore
     @Test
-    public void testFromProperties2() throws Exception {
-        String prefix = "";
-        doReturn(prefix).when(propertiesProvider).getProperty(ConfigPersisterActivator.NETCONF_CONFIG_PERSISTER);
-        doReturn(FileStorageAdapter.class.getName()).when(propertiesProvider).getProperty(
-                ConfigPersisterActivator.STORAGE_ADAPTER_CLASS_PROP_SUFFIX);
-
-        doReturn("target" + File.separator + "generated-test-sources" + File.separator + "testFile").when(
-                propertiesProvider).getProperty("prefix.properties.fileStorage");
-        doReturn("propertiesProvider").when(propertiesProvider).toString();
-        doReturn(null).when(propertiesProvider).getProperty("prefix.properties.numberOfBackups");
-
-        PersisterAggregator persisterAggregator = PersisterAggregator.createFromProperties(propertiesProvider);
+    public void testLoadFromPropertyFile() throws Exception {
+        PersisterAggregator persisterAggregator = PersisterAggregator.createFromProperties(loadFile("test2.properties"));
+        List<PersisterWithConfiguration> persisters = persisterAggregator.getPersisterWithConfigurations();
+        assertEquals(1, persisters.size());
+        PersisterWithConfiguration persister = persisters.get(0);
+        assertEquals(FileStorageAdapter.class.getName() ,persister.getStorage().getClass().getName());
+        assertFalse(persister.isReadOnly());
     }
 
-    @Ignore
     @Test
-    public void testFromProperties3() throws Exception {
-        doReturn("").when(propertiesProvider).getProperty(ConfigPersisterActivator.NETCONF_CONFIG_PERSISTER);
-        doReturn(FileStorageAdapter.class.getName()).when(propertiesProvider).getProperty(
-                ConfigPersisterActivator.STORAGE_ADAPTER_CLASS_PROP_SUFFIX);
-        doReturn("target" + File.separator + "generated-test-sources" + File.separator + "testFile").when(
-                propertiesProvider).getProperty("prefix.properties.fileStorage");
-        doReturn("false").when(propertiesProvider).getProperty("readOnly");
-        doReturn("propertiesProvider").when(propertiesProvider).toString();
-        doReturn("0").when(propertiesProvider).getProperty("prefix.properties.numberOfBackups");
+    public void testFileStorageNumberOfBackups() throws Exception {
         try {
-            PersisterAggregator.createFromProperties(propertiesProvider);
+            PersisterAggregator.createFromProperties(loadFile("test3.properties"));
             fail();
         } catch (RuntimeException e) {
             assertThat(
@@ -122,18 +110,18 @@ public class PersisterAggregatorTest {
 
     @Test
     public void loadLastConfig() throws Exception {
-        List<PersisterAggregator.PersisterWithConfiguration> persisterWithConfigurations = new ArrayList<>();
-        PersisterAggregator.PersisterWithConfiguration first = new PersisterAggregator.PersisterWithConfiguration(mock(Persister.class), false);
+        List<PersisterWithConfiguration> persisterWithConfigurations = new ArrayList<>();
+        PersisterWithConfiguration first = new PersisterWithConfiguration(mock(Persister.class), false);
 
         ConfigSnapshotHolder ignored = mock(ConfigSnapshotHolder.class);
-        doReturn(Optional.of(ignored)).when(first.storage).loadLastConfig(); // should be ignored
+        doReturn(Optional.of(ignored)).when(first.getStorage()).loadLastConfig(); // should be ignored
 
         ConfigSnapshotHolder used = mock(ConfigSnapshotHolder.class);
-        PersisterAggregator.PersisterWithConfiguration second = new PersisterAggregator.PersisterWithConfiguration(mock(Persister.class), false);
-        doReturn(Optional.of(used)).when(second.storage).loadLastConfig(); // should be used
+        PersisterWithConfiguration second = new PersisterWithConfiguration(mock(Persister.class), false);
+        doReturn(Optional.of(used)).when(second.getStorage()).loadLastConfig(); // should be used
 
-        PersisterAggregator.PersisterWithConfiguration third = new PersisterAggregator.PersisterWithConfiguration(mock(Persister.class), false);
-        doReturn(Optional.absent()).when(third.storage).loadLastConfig();
+        PersisterWithConfiguration third = new PersisterWithConfiguration(mock(Persister.class), false);
+        doReturn(Optional.absent()).when(third.getStorage()).loadLastConfig();
 
         persisterWithConfigurations.add(first);
         persisterWithConfigurations.add(second);
@@ -145,50 +133,4 @@ public class PersisterAggregatorTest {
         assertEquals(used, configSnapshotHolderOptional.get());
     }
 
-    @Ignore
-    @Test
-    public void test() throws Exception {
-//        Persister storage = mock(Persister.class);
-//        doReturn(null).when(storage).loadLastConfig();
-//        doNothing().when(storage).persistConfig(any(ConfigSnapshotHolder.class));
-//
-//        PersisterAggregator persister = new PersisterAggregator(storage);
-//        persister.loadLastConfig();
-//        persister.persistConfig(null);
-//
-//        verify(storage).loadLastConfig();
-//        verify(storage).persistConfig(any(ConfigSnapshotHolder.class));
-    }
-
-    public static class MockAdapter implements StorageAdapter, Persister {
-
-        static int persist = 0;
-
-        @Override
-        public void persistConfig(ConfigSnapshotHolder holder) throws IOException {
-            persist++;
-        }
-
-        static int load = 0;
-
-        @Override
-        public Optional<ConfigSnapshotHolder> loadLastConfig() throws IOException {
-            load++;
-            return Optional.absent();
-        }
-
-        static int props = 0;
-
-        @Override
-        public Persister instantiate(PropertiesProvider propertiesProvider) {
-            props++;
-            return this;
-        }
-
-        @Override
-        public void close() {
-        }
-
-    }
-
 }
diff --git a/opendaylight/netconf/config-persister-impl/src/test/resources/test1.properties b/opendaylight/netconf/config-persister-impl/src/test/resources/test1.properties
new file mode 100644 (file)
index 0000000..9380040
--- /dev/null
@@ -0,0 +1,3 @@
+netconf.config.persister.active=1
+netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.netconf.persist.impl.DummyAdapter
+netconf.config.persister.1.properties.fileStorage=configuration/initial/
\ No newline at end of file
diff --git a/opendaylight/netconf/config-persister-impl/src/test/resources/test2.properties b/opendaylight/netconf/config-persister-impl/src/test/resources/test2.properties
new file mode 100644 (file)
index 0000000..bdf2caa
--- /dev/null
@@ -0,0 +1,9 @@
+netconf.config.persister.active=2
+# read startup configuration
+netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.config.persist.storage.directory.DirectoryStorageAdapter
+netconf.config.persister.1.properties.directoryStorage=configuration/initial/
+netconf.config.persister.1.readonly=true
+
+netconf.config.persister.2.storageAdapterClass=org.opendaylight.controller.config.persist.storage.file.FileStorageAdapter
+netconf.config.persister.2.properties.fileStorage=configuration/current/controller.config.2.txt
+netconf.config.persister.2.properties.numberOfBackups=3
\ No newline at end of file
diff --git a/opendaylight/netconf/config-persister-impl/src/test/resources/test3.properties b/opendaylight/netconf/config-persister-impl/src/test/resources/test3.properties
new file mode 100644 (file)
index 0000000..c6716ce
--- /dev/null
@@ -0,0 +1,4 @@
+netconf.config.persister.active=3
+netconf.config.persister.3.storageAdapterClass=org.opendaylight.controller.config.persist.storage.file.FileStorageAdapter
+netconf.config.persister.3.properties.fileStorage=configuration/current/controller.config.2.txt
+netconf.config.persister.3.properties.numberOfBackups=0
\ No newline at end of file