From: Tony Tkacik Date: Wed, 12 Nov 2014 16:11:43 +0000 (+0000) Subject: Merge "Bug 1029: Remove dead code: p2site" X-Git-Tag: release/lithium~887 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=5448d6812e386bd56aec7209c4852c586a6163b3;hp=f621b2c37a69ef3533f1b1bee8857d141f88abca Merge "Bug 1029: Remove dead code: p2site" --- diff --git a/features/mdsal/src/main/resources/features.xml b/features/mdsal/src/main/resources/features.xml index fb524081e7..540cea1bbc 100644 --- a/features/mdsal/src/main/resources/features.xml +++ b/features/mdsal/src/main/resources/features.xml @@ -76,4 +76,13 @@ mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/moduleshardconf mvn:org.opendaylight.controller/sal-clustering-config/${project.version}/xml/moduleconf + + + odl-yangtools-models + odl-mdsal-broker + mvn:org.opendaylight.controller.samples/clustering-it-model/${project.version} + mvn:org.opendaylight.controller.samples/clustering-it-provider/${project.version} + mvn:org.opendaylight.controller.samples/clustering-it-config/${project.version}/xml/config + + diff --git a/features/netconf-connector/src/main/resources/features.xml b/features/netconf-connector/src/main/resources/features.xml index 6ae308eb0c..614c9d013a 100644 --- a/features/netconf-connector/src/main/resources/features.xml +++ b/features/netconf-connector/src/main/resources/features.xml @@ -25,6 +25,9 @@ mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features mvn:org.opendaylight.controller/features-netconf/${netconf.version}/xml/features + mvn:org.opendaylight.aaa/features-aaa/${aaa.version}/xml/features + odl-aaa-netconf-plugin mvn:org.opendaylight.controller/netconf-ssh/${netconf.version} mvn:org.bouncycastle/bcpkix-jdk15on/${bouncycastle.version} mvn:org.bouncycastle/bcprov-jdk15on/${bouncycastle.version} diff --git a/features/pom.xml b/features/pom.xml index 5270e3f5cd..ba938c6a6f 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -13,11 +13,6 @@ 3.0 - base - controller - adsal - nsf - extras config config-persister config-netty @@ -25,7 +20,6 @@ flow netconf protocol-framework - adsal-compatibility akka netconf-connector restconf diff --git a/features/restconf/src/main/resources/features.xml b/features/restconf/src/main/resources/features.xml index ab42330eac..123b00767e 100644 --- a/features/restconf/src/main/resources/features.xml +++ b/features/restconf/src/main/resources/features.xml @@ -38,7 +38,6 @@ --> odl-restconf odl-mdsal-apidocs - odl-clustering-test-app - ../implementation/target/jacoco.exec + ../../implementation/target/jacoco.exec @@ -92,7 +92,7 @@ org.jacoco jacoco-maven-plugin - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec org.opendaylight.controller.* diff --git a/opendaylight/clustering/integrationtest/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusteringServicesIT.java b/opendaylight/adsal/clustering/integrationtest/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusteringServicesIT.java similarity index 100% rename from opendaylight/clustering/integrationtest/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusteringServicesIT.java rename to opendaylight/adsal/clustering/integrationtest/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusteringServicesIT.java diff --git a/opendaylight/clustering/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/clustering/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/clustering/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/clustering/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/clustering/services/pom.xml b/opendaylight/adsal/clustering/services/pom.xml similarity index 96% rename from opendaylight/clustering/services/pom.xml rename to opendaylight/adsal/clustering/services/pom.xml index 8c66e70cbe..550f580ebd 100644 --- a/opendaylight/clustering/services/pom.xml +++ b/opendaylight/adsal/clustering/services/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight clustering.services diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICacheUpdateAware.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICacheUpdateAware.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICacheUpdateAware.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICacheUpdateAware.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterContainerServices.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterContainerServices.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterContainerServices.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterContainerServices.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterGlobalServices.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterGlobalServices.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterGlobalServices.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterGlobalServices.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServices.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServices.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServices.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServices.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServicesCommon.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServicesCommon.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServicesCommon.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IClusterServicesCommon.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICoordinatorChangeAware.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICoordinatorChangeAware.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICoordinatorChangeAware.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ICoordinatorChangeAware.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IGetUpdates.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IGetUpdates.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IGetUpdates.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IGetUpdates.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IListenRoleChange.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IListenRoleChange.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IListenRoleChange.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/IListenRoleChange.java diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java b/opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java similarity index 100% rename from opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java rename to opendaylight/adsal/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java diff --git a/opendaylight/clustering/services_implementation/pom.xml b/opendaylight/adsal/clustering/services_implementation/pom.xml similarity index 98% rename from opendaylight/clustering/services_implementation/pom.xml rename to opendaylight/adsal/clustering/services_implementation/pom.xml index f11f7a14c0..36cd35d891 100644 --- a/opendaylight/clustering/services_implementation/pom.xml +++ b/opendaylight/adsal/clustering/services_implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight clustering.services-implementation diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/Activator.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/Activator.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/Activator.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/Activator.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/CacheListenerContainer.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/CacheListenerContainer.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/CacheListenerContainer.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/CacheListenerContainer.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterContainerManager.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterContainerManager.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterContainerManager.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterContainerManager.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterGlobalManager.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterGlobalManager.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterGlobalManager.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterGlobalManager.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCLI.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCLI.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCLI.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCLI.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/GetUpdatesContainer.java b/opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/GetUpdatesContainer.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/GetUpdatesContainer.java rename to opendaylight/adsal/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/GetUpdatesContainer.java diff --git a/opendaylight/clustering/services_implementation/src/main/resources/config/infinispan-config.xml b/opendaylight/adsal/clustering/services_implementation/src/main/resources/config/infinispan-config.xml similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/resources/config/infinispan-config.xml rename to opendaylight/adsal/clustering/services_implementation/src/main/resources/config/infinispan-config.xml diff --git a/opendaylight/clustering/services_implementation/src/main/resources/config/jgroups.xml b/opendaylight/adsal/clustering/services_implementation/src/main/resources/config/jgroups.xml similarity index 100% rename from opendaylight/clustering/services_implementation/src/main/resources/config/jgroups.xml rename to opendaylight/adsal/clustering/services_implementation/src/main/resources/config/jgroups.xml diff --git a/opendaylight/clustering/services_implementation/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerTest.java b/opendaylight/adsal/clustering/services_implementation/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerTest.java similarity index 100% rename from opendaylight/clustering/services_implementation/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerTest.java rename to opendaylight/adsal/clustering/services_implementation/src/test/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerTest.java diff --git a/opendaylight/clustering/stub/pom.xml b/opendaylight/adsal/clustering/stub/pom.xml similarity index 96% rename from opendaylight/clustering/stub/pom.xml rename to opendaylight/adsal/clustering/stub/pom.xml index 211dcc29d0..7ab30110f3 100644 --- a/opendaylight/clustering/stub/pom.xml +++ b/opendaylight/adsal/clustering/stub/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight clustering.stub diff --git a/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/Activator.java b/opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/Activator.java similarity index 100% rename from opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/Activator.java rename to opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/Activator.java diff --git a/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterContainerManager.java b/opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterContainerManager.java similarity index 100% rename from opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterContainerManager.java rename to opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterContainerManager.java diff --git a/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterGlobalManager.java b/opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterGlobalManager.java similarity index 100% rename from opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterGlobalManager.java rename to opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterGlobalManager.java diff --git a/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java b/opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java similarity index 100% rename from opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java rename to opendaylight/adsal/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java diff --git a/opendaylight/clustering/stub/src/test/java/org/opendaylight/controller/clustering/stub/internal/TestClusteringStub.java b/opendaylight/adsal/clustering/stub/src/test/java/org/opendaylight/controller/clustering/stub/internal/TestClusteringStub.java similarity index 100% rename from opendaylight/clustering/stub/src/test/java/org/opendaylight/controller/clustering/stub/internal/TestClusteringStub.java rename to opendaylight/adsal/clustering/stub/src/test/java/org/opendaylight/controller/clustering/stub/internal/TestClusteringStub.java diff --git a/opendaylight/clustering/test/pom.xml b/opendaylight/adsal/clustering/test/pom.xml similarity index 98% rename from opendaylight/clustering/test/pom.xml rename to opendaylight/adsal/clustering/test/pom.xml index 93294f2290..93407ea3d7 100644 --- a/opendaylight/clustering/test/pom.xml +++ b/opendaylight/adsal/clustering/test/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight clustering.test diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/Activator.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/Activator.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/Activator.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/Activator.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/IComplex.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/IComplex.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/IComplex.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/IComplex.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/LoggingListener.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/LoggingListener.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/LoggingListener.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/LoggingListener.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/SimpleClient.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/SimpleClient.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/SimpleClient.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/SimpleClient.java diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java b/opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java similarity index 100% rename from opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java rename to opendaylight/adsal/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java diff --git a/opendaylight/clustering/test/src/test/java/org/opendaylight/controller/clustering/test/internal/TestClusteringTest.java b/opendaylight/adsal/clustering/test/src/test/java/org/opendaylight/controller/clustering/test/internal/TestClusteringTest.java similarity index 100% rename from opendaylight/clustering/test/src/test/java/org/opendaylight/controller/clustering/test/internal/TestClusteringTest.java rename to opendaylight/adsal/clustering/test/src/test/java/org/opendaylight/controller/clustering/test/internal/TestClusteringTest.java diff --git a/opendaylight/commons/httpclient/pom.xml b/opendaylight/adsal/commons/httpclient/pom.xml similarity index 96% rename from opendaylight/commons/httpclient/pom.xml rename to opendaylight/adsal/commons/httpclient/pom.xml index 39364cbcba..93a537c00c 100644 --- a/opendaylight/commons/httpclient/pom.xml +++ b/opendaylight/adsal/commons/httpclient/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight commons.httpclient @@ -62,7 +62,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - ${checkstyle.version} true controller/checkstyle.xml diff --git a/opendaylight/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPClient.java b/opendaylight/adsal/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPClient.java similarity index 100% rename from opendaylight/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPClient.java rename to opendaylight/adsal/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPClient.java diff --git a/opendaylight/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPRequest.java b/opendaylight/adsal/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPRequest.java similarity index 100% rename from opendaylight/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPRequest.java rename to opendaylight/adsal/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPRequest.java diff --git a/opendaylight/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPResponse.java b/opendaylight/adsal/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPResponse.java similarity index 100% rename from opendaylight/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPResponse.java rename to opendaylight/adsal/commons/httpclient/src/main/java/org/opendaylight/controller/commons/httpclient/HTTPResponse.java diff --git a/opendaylight/commons/integrationtest/pom.xml b/opendaylight/adsal/commons/integrationtest/pom.xml similarity index 96% rename from opendaylight/commons/integrationtest/pom.xml rename to opendaylight/adsal/commons/integrationtest/pom.xml index ad4e166cbd..1701964bf1 100644 --- a/opendaylight/commons/integrationtest/pom.xml +++ b/opendaylight/adsal/commons/integrationtest/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight commons.integrationtest @@ -80,7 +80,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - ${checkstyle.version} true controller/checkstyle.xml @@ -96,7 +95,6 @@ org.apache.maven.plugins maven-surefire-plugin - ${surefire.version} true diff --git a/opendaylight/configuration/api/pom.xml b/opendaylight/adsal/configuration/api/pom.xml similarity index 96% rename from opendaylight/configuration/api/pom.xml rename to opendaylight/adsal/configuration/api/pom.xml index 50f19278c6..dec934bf6e 100644 --- a/opendaylight/configuration/api/pom.xml +++ b/opendaylight/adsal/configuration/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight configuration diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationEvent.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationEvent.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationEvent.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationEvent.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationObject.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationObject.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationObject.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/ConfigurationObject.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAware.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAware.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAware.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAware.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAwareCommon.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAwareCommon.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAwareCommon.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationAwareCommon.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerAware.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerAware.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerAware.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerAware.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerService.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerService.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerService.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationContainerService.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationService.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationService.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationService.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationService.java diff --git a/opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationServiceCommon.java b/opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationServiceCommon.java similarity index 100% rename from opendaylight/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationServiceCommon.java rename to opendaylight/adsal/configuration/api/src/main/java/org/opendaylight/controller/configuration/IConfigurationServiceCommon.java diff --git a/opendaylight/configuration/implementation/pom.xml b/opendaylight/adsal/configuration/implementation/pom.xml similarity index 97% rename from opendaylight/configuration/implementation/pom.xml rename to opendaylight/adsal/configuration/implementation/pom.xml index 4387de70ea..a35d2e9406 100644 --- a/opendaylight/configuration/implementation/pom.xml +++ b/opendaylight/adsal/configuration/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight configuration.implementation diff --git a/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/Activator.java b/opendaylight/adsal/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/Activator.java similarity index 100% rename from opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/Activator.java rename to opendaylight/adsal/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/Activator.java diff --git a/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java b/opendaylight/adsal/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java similarity index 100% rename from opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java rename to opendaylight/adsal/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ConfigurationService.java diff --git a/opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ContainerConfigurationService.java b/opendaylight/adsal/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ContainerConfigurationService.java similarity index 100% rename from opendaylight/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ContainerConfigurationService.java rename to opendaylight/adsal/configuration/implementation/src/main/java/org/opendaylight/controller/configuration/internal/ContainerConfigurationService.java diff --git a/opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationAwareTest.java b/opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationAwareTest.java similarity index 100% rename from opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationAwareTest.java rename to opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationAwareTest.java diff --git a/opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerAwareTest.java b/opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerAwareTest.java similarity index 100% rename from opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerAwareTest.java rename to opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerAwareTest.java diff --git a/opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerImplTest.java b/opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerImplTest.java similarity index 100% rename from opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerImplTest.java rename to opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationContainerImplTest.java diff --git a/opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationImplTest.java b/opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationImplTest.java similarity index 100% rename from opendaylight/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationImplTest.java rename to opendaylight/adsal/configuration/implementation/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationImplTest.java diff --git a/opendaylight/configuration/integrationtest/.gitignore b/opendaylight/adsal/configuration/integrationtest/.gitignore similarity index 100% rename from opendaylight/configuration/integrationtest/.gitignore rename to opendaylight/adsal/configuration/integrationtest/.gitignore diff --git a/opendaylight/configuration/integrationtest/pom.xml b/opendaylight/adsal/configuration/integrationtest/pom.xml similarity index 100% rename from opendaylight/configuration/integrationtest/pom.xml rename to opendaylight/adsal/configuration/integrationtest/pom.xml diff --git a/opendaylight/configuration/integrationtest/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationIT.java b/opendaylight/adsal/configuration/integrationtest/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationIT.java similarity index 100% rename from opendaylight/configuration/integrationtest/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationIT.java rename to opendaylight/adsal/configuration/integrationtest/src/test/java/org/opendaylight/controller/configuration/internal/ConfigurationIT.java diff --git a/opendaylight/configuration/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/configuration/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/configuration/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/configuration/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/connectionmanager/api/pom.xml b/opendaylight/adsal/connectionmanager/api/pom.xml similarity index 96% rename from opendaylight/connectionmanager/api/pom.xml rename to opendaylight/adsal/connectionmanager/api/pom.xml index 2718ed1afe..aee485419c 100644 --- a/opendaylight/connectionmanager/api/pom.xml +++ b/opendaylight/adsal/connectionmanager/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight connectionmanager diff --git a/opendaylight/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/ConnectionMgmtScheme.java b/opendaylight/adsal/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/ConnectionMgmtScheme.java similarity index 100% rename from opendaylight/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/ConnectionMgmtScheme.java rename to opendaylight/adsal/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/ConnectionMgmtScheme.java diff --git a/opendaylight/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/IConnectionManager.java b/opendaylight/adsal/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/IConnectionManager.java similarity index 100% rename from opendaylight/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/IConnectionManager.java rename to opendaylight/adsal/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/IConnectionManager.java diff --git a/opendaylight/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/NodeAccessPermission.java b/opendaylight/adsal/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/NodeAccessPermission.java similarity index 100% rename from opendaylight/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/NodeAccessPermission.java rename to opendaylight/adsal/connectionmanager/api/src/main/java/org/opendaylight/controller/connectionmanager/NodeAccessPermission.java diff --git a/opendaylight/connectionmanager/implementation/pom.xml b/opendaylight/adsal/connectionmanager/implementation/pom.xml similarity index 97% rename from opendaylight/connectionmanager/implementation/pom.xml rename to opendaylight/adsal/connectionmanager/implementation/pom.xml index fe2514e58a..b8293609a2 100644 --- a/opendaylight/connectionmanager/implementation/pom.xml +++ b/opendaylight/adsal/connectionmanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight connectionmanager.implementation diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/Activator.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/Activator.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/Activator.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/Activator.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionManager.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionManager.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionManager.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionManager.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEvent.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEvent.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEvent.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEvent.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEventType.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEventType.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEventType.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/internal/ConnectionMgmtEventType.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AbstractScheme.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AbstractScheme.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AbstractScheme.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AbstractScheme.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AnyControllerScheme.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AnyControllerScheme.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AnyControllerScheme.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/AnyControllerScheme.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/ControllerConfig.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/ControllerConfig.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/ControllerConfig.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/ControllerConfig.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/LoadBalancedScheme.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/LoadBalancedScheme.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/LoadBalancedScheme.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/LoadBalancedScheme.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/RoundRobinScheme.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/RoundRobinScheme.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/RoundRobinScheme.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/RoundRobinScheme.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SchemeFactory.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SchemeFactory.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SchemeFactory.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SchemeFactory.java diff --git a/opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SingleControllerScheme.java b/opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SingleControllerScheme.java similarity index 100% rename from opendaylight/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SingleControllerScheme.java rename to opendaylight/adsal/connectionmanager/implementation/src/main/java/org/opendaylight/controller/connectionmanager/scheme/SingleControllerScheme.java diff --git a/opendaylight/containermanager/api/pom.xml b/opendaylight/adsal/containermanager/api/pom.xml similarity index 97% rename from opendaylight/containermanager/api/pom.xml rename to opendaylight/adsal/containermanager/api/pom.xml index c9b54a1b6c..31b209410d 100644 --- a/opendaylight/containermanager/api/pom.xml +++ b/opendaylight/adsal/containermanager/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight containermanager diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerChangeEvent.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerChangeEvent.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerChangeEvent.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerChangeEvent.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerConfig.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerConfig.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerConfig.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerConfig.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerData.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerData.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerData.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerData.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowChangeEvent.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowChangeEvent.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowChangeEvent.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowChangeEvent.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowConfig.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowConfig.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowConfig.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/ContainerFlowConfig.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerAuthorization.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerAuthorization.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerAuthorization.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerAuthorization.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManager.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManagerShell.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManagerShell.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManagerShell.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/IContainerManagerShell.java diff --git a/opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/NodeConnectorsChangeEvent.java b/opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/NodeConnectorsChangeEvent.java similarity index 100% rename from opendaylight/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/NodeConnectorsChangeEvent.java rename to opendaylight/adsal/containermanager/api/src/main/java/org/opendaylight/controller/containermanager/NodeConnectorsChangeEvent.java diff --git a/opendaylight/containermanager/implementation/pom.xml b/opendaylight/adsal/containermanager/implementation/pom.xml similarity index 98% rename from opendaylight/containermanager/implementation/pom.xml rename to opendaylight/adsal/containermanager/implementation/pom.xml index 013cd62576..b096ba6c01 100644 --- a/opendaylight/containermanager/implementation/pom.xml +++ b/opendaylight/adsal/containermanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight containermanager.implementation diff --git a/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java b/opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java similarity index 100% rename from opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java rename to opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java diff --git a/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java b/opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java similarity index 100% rename from opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java rename to opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java diff --git a/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java b/opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java similarity index 100% rename from opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java rename to opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java diff --git a/opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/IContainerInternal.java b/opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/IContainerInternal.java similarity index 100% rename from opendaylight/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/IContainerInternal.java rename to opendaylight/adsal/containermanager/implementation/src/main/java/org/opendaylight/controller/containermanager/internal/IContainerInternal.java diff --git a/opendaylight/containermanager/it.implementation/pom.xml b/opendaylight/adsal/containermanager/it.implementation/pom.xml similarity index 97% rename from opendaylight/containermanager/it.implementation/pom.xml rename to opendaylight/adsal/containermanager/it.implementation/pom.xml index 8e0475d4a3..e5ad7a7508 100644 --- a/opendaylight/containermanager/it.implementation/pom.xml +++ b/opendaylight/adsal/containermanager/it.implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight containermanager.it.implementation diff --git a/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java b/opendaylight/adsal/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java similarity index 100% rename from opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java rename to opendaylight/adsal/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/Activator.java diff --git a/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java b/opendaylight/adsal/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java similarity index 100% rename from opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java rename to opendaylight/adsal/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerImpl.java diff --git a/opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java b/opendaylight/adsal/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java similarity index 100% rename from opendaylight/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java rename to opendaylight/adsal/containermanager/it.implementation/src/main/java/org/opendaylight/controller/containermanager/internal/ContainerManager.java diff --git a/opendaylight/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerImplTest.java b/opendaylight/adsal/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerImplTest.java similarity index 100% rename from opendaylight/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerImplTest.java rename to opendaylight/adsal/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerImplTest.java diff --git a/opendaylight/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerManagerTest.java b/opendaylight/adsal/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerManagerTest.java similarity index 100% rename from opendaylight/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerManagerTest.java rename to opendaylight/adsal/containermanager/it.implementation/src/test/java/org/opendaylight/controller/containermanager/internal/ContainerManagerTest.java diff --git a/opendaylight/containermanager/shell/pom.xml b/opendaylight/adsal/containermanager/shell/pom.xml similarity index 96% rename from opendaylight/containermanager/shell/pom.xml rename to opendaylight/adsal/containermanager/shell/pom.xml index c1c2d2055b..065df2c829 100644 --- a/opendaylight/containermanager/shell/pom.xml +++ b/opendaylight/adsal/containermanager/shell/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight containermanager.shell ${containermanager.shell.version} diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainer.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainer.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainer.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainer.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerEntry.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerEntry.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerEntry.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerEntry.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerFlow.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerFlow.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerFlow.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/AddContainerFlow.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedGroups.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedGroups.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedGroups.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedGroups.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedResources.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedResources.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedResources.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetAuthorizedResources.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetResourcesForGroup.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetResourcesForGroup.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetResourcesForGroup.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetResourcesForGroup.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetRoles.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetRoles.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetRoles.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetRoles.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserLevel.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserLevel.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserLevel.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserLevel.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserResources.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserResources.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserResources.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/ContainermgrGetUserResources.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/CreateContainer.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/CreateContainer.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/CreateContainer.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/CreateContainer.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Pfc.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Pfc.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Pfc.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Pfc.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psc.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psc.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psc.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psc.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psd.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psd.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psd.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psd.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psm.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psm.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psm.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psm.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psp.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psp.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psp.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/Psp.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainer.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainer.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainer.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainer.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerEntry.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerEntry.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerEntry.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerEntry.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerFlow.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerFlow.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerFlow.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/RemoveContainerFlow.java diff --git a/opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/SaveConfig.java b/opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/SaveConfig.java similarity index 100% rename from opendaylight/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/SaveConfig.java rename to opendaylight/adsal/containermanager/shell/src/main/java/org/opendaylight/controller/containermanager/shell/SaveConfig.java diff --git a/opendaylight/containermanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/opendaylight/adsal/containermanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml similarity index 100% rename from opendaylight/containermanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml rename to opendaylight/adsal/containermanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml diff --git a/opendaylight/containermanager/shell/src/test/java/org/opendaylight/controller/containermanager/shell/ContainerManagerShellTest.java b/opendaylight/adsal/containermanager/shell/src/test/java/org/opendaylight/controller/containermanager/shell/ContainerManagerShellTest.java similarity index 100% rename from opendaylight/containermanager/shell/src/test/java/org/opendaylight/controller/containermanager/shell/ContainerManagerShellTest.java rename to opendaylight/adsal/containermanager/shell/src/test/java/org/opendaylight/controller/containermanager/shell/ContainerManagerShellTest.java diff --git a/opendaylight/dummy-console/README b/opendaylight/adsal/dummy-console/README similarity index 100% rename from opendaylight/dummy-console/README rename to opendaylight/adsal/dummy-console/README diff --git a/opendaylight/dummy-console/pom.xml b/opendaylight/adsal/dummy-console/pom.xml similarity index 95% rename from opendaylight/dummy-console/pom.xml rename to opendaylight/adsal/dummy-console/pom.xml index 4195e53310..c8a1a22ae7 100644 --- a/opendaylight/dummy-console/pom.xml +++ b/opendaylight/adsal/dummy-console/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../commons/opendaylight + ../../commons/opendaylight dummy-console 1.2.0-SNAPSHOT diff --git a/opendaylight/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandInterpreter.java b/opendaylight/adsal/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandInterpreter.java similarity index 100% rename from opendaylight/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandInterpreter.java rename to opendaylight/adsal/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandInterpreter.java diff --git a/opendaylight/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandProvider.java b/opendaylight/adsal/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandProvider.java similarity index 100% rename from opendaylight/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandProvider.java rename to opendaylight/adsal/dummy-console/src/main/java/org/eclipse/osgi/framework/console/CommandProvider.java diff --git a/features/adsal-compatibility/pom.xml b/opendaylight/adsal/features/adsal-compatibility/pom.xml similarity index 96% rename from features/adsal-compatibility/pom.xml rename to opendaylight/adsal/features/adsal-compatibility/pom.xml index 7b8af64445..d8d1888ba3 100644 --- a/features/adsal-compatibility/pom.xml +++ b/opendaylight/adsal/features/adsal-compatibility/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight features-adsal-compatibility jar diff --git a/features/adsal-compatibility/src/main/resources/features.xml b/opendaylight/adsal/features/adsal-compatibility/src/main/resources/features.xml similarity index 100% rename from features/adsal-compatibility/src/main/resources/features.xml rename to opendaylight/adsal/features/adsal-compatibility/src/main/resources/features.xml diff --git a/features/adsal/pom.xml b/opendaylight/adsal/features/adsal/pom.xml similarity index 98% rename from features/adsal/pom.xml rename to opendaylight/adsal/features/adsal/pom.xml index 429edf828f..57fa1e2c3f 100644 --- a/features/adsal/pom.xml +++ b/opendaylight/adsal/features/adsal/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight features-adsal ${sal.version} diff --git a/features/adsal/src/main/resources/features.xml b/opendaylight/adsal/features/adsal/src/main/resources/features.xml similarity index 100% rename from features/adsal/src/main/resources/features.xml rename to opendaylight/adsal/features/adsal/src/main/resources/features.xml diff --git a/features/base/pom.xml b/opendaylight/adsal/features/base/pom.xml similarity index 99% rename from features/base/pom.xml rename to opendaylight/adsal/features/base/pom.xml index cd84eeaf33..795a323cc1 100644 --- a/features/base/pom.xml +++ b/opendaylight/adsal/features/base/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight features-base jar @@ -443,7 +443,6 @@ org.opendaylight.yangtools features-test - 0.7.0-SNAPSHOT diff --git a/features/base/src/main/resources/features.xml b/opendaylight/adsal/features/base/src/main/resources/features.xml similarity index 100% rename from features/base/src/main/resources/features.xml rename to opendaylight/adsal/features/base/src/main/resources/features.xml diff --git a/features/controller/pom.xml b/opendaylight/adsal/features/controller/pom.xml similarity index 95% rename from features/controller/pom.xml rename to opendaylight/adsal/features/controller/pom.xml index 5dd2bd4a2a..34be32ff7f 100644 --- a/features/controller/pom.xml +++ b/opendaylight/adsal/features/controller/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight controller-features pom diff --git a/features/controller/src/main/resources/features.xml b/opendaylight/adsal/features/controller/src/main/resources/features.xml similarity index 100% rename from features/controller/src/main/resources/features.xml rename to opendaylight/adsal/features/controller/src/main/resources/features.xml diff --git a/features/extras/pom.xml b/opendaylight/adsal/features/extras/pom.xml similarity index 97% rename from features/extras/pom.xml rename to opendaylight/adsal/features/extras/pom.xml index e4356e6b49..103fbefad4 100644 --- a/features/extras/pom.xml +++ b/opendaylight/adsal/features/extras/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight extras-features kar diff --git a/features/extras/src/main/resources/features.xml b/opendaylight/adsal/features/extras/src/main/resources/features.xml similarity index 100% rename from features/extras/src/main/resources/features.xml rename to opendaylight/adsal/features/extras/src/main/resources/features.xml diff --git a/features/nsf/pom.xml b/opendaylight/adsal/features/nsf/pom.xml similarity index 99% rename from features/nsf/pom.xml rename to opendaylight/adsal/features/nsf/pom.xml index 00dc219b39..0c8e838009 100644 --- a/features/nsf/pom.xml +++ b/opendaylight/adsal/features/nsf/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight features-nsf ${nsf.version} diff --git a/features/nsf/src/main/resources/features.xml b/opendaylight/adsal/features/nsf/src/main/resources/features.xml similarity index 100% rename from features/nsf/src/main/resources/features.xml rename to opendaylight/adsal/features/nsf/src/main/resources/features.xml diff --git a/opendaylight/forwarding/staticrouting/pom.xml b/opendaylight/adsal/forwarding/staticrouting/pom.xml similarity index 97% rename from opendaylight/forwarding/staticrouting/pom.xml rename to opendaylight/adsal/forwarding/staticrouting/pom.xml index b006cece40..526c384750 100644 --- a/opendaylight/forwarding/staticrouting/pom.xml +++ b/opendaylight/adsal/forwarding/staticrouting/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight forwarding.staticrouting diff --git a/opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IForwardingStaticRouting.java b/opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IForwardingStaticRouting.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IForwardingStaticRouting.java rename to opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IForwardingStaticRouting.java diff --git a/opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IStaticRoutingAware.java b/opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IStaticRoutingAware.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IStaticRoutingAware.java rename to opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/IStaticRoutingAware.java diff --git a/opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRoute.java b/opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRoute.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRoute.java rename to opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRoute.java diff --git a/opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfig.java b/opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfig.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfig.java rename to opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfig.java diff --git a/opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/Activator.java b/opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/Activator.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/Activator.java rename to opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/Activator.java diff --git a/opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementation.java b/opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementation.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementation.java rename to opendaylight/adsal/forwarding/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementation.java diff --git a/opendaylight/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfigTest.java b/opendaylight/adsal/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfigTest.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfigTest.java rename to opendaylight/adsal/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteConfigTest.java diff --git a/opendaylight/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteTest.java b/opendaylight/adsal/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteTest.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteTest.java rename to opendaylight/adsal/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/StaticRouteTest.java diff --git a/opendaylight/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementationTest.java b/opendaylight/adsal/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementationTest.java similarity index 100% rename from opendaylight/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementationTest.java rename to opendaylight/adsal/forwarding/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/internal/StaticRoutingImplementationTest.java diff --git a/opendaylight/forwardingrulesmanager/api/pom.xml b/opendaylight/adsal/forwardingrulesmanager/api/pom.xml similarity index 97% rename from opendaylight/forwardingrulesmanager/api/pom.xml rename to opendaylight/adsal/forwardingrulesmanager/api/pom.xml index 3f667e16f0..fc3549a597 100644 --- a/opendaylight/forwardingrulesmanager/api/pom.xml +++ b/opendaylight/adsal/forwardingrulesmanager/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight forwardingrulesmanager diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowConfig.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowConfig.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowConfig.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowConfig.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntry.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManager.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManager.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManager.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManager.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManagerAware.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManagerAware.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManagerAware.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/IForwardingRulesManagerAware.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroup.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroup.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroup.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroup.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupChangeListener.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupChangeListener.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupChangeListener.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupChangeListener.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupConfig.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupConfig.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupConfig.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupConfig.java diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupProvider.java b/opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupProvider.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupProvider.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/PortGroupProvider.java diff --git a/opendaylight/forwardingrulesmanager/api/src/test/java/org/opendaylight/controller/forwardingrulesmanager/frmTest.java b/opendaylight/adsal/forwardingrulesmanager/api/src/test/java/org/opendaylight/controller/forwardingrulesmanager/frmTest.java similarity index 100% rename from opendaylight/forwardingrulesmanager/api/src/test/java/org/opendaylight/controller/forwardingrulesmanager/frmTest.java rename to opendaylight/adsal/forwardingrulesmanager/api/src/test/java/org/opendaylight/controller/forwardingrulesmanager/frmTest.java diff --git a/opendaylight/forwardingrulesmanager/implementation/pom.xml b/opendaylight/adsal/forwardingrulesmanager/implementation/pom.xml similarity index 98% rename from opendaylight/forwardingrulesmanager/implementation/pom.xml rename to opendaylight/adsal/forwardingrulesmanager/implementation/pom.xml index 959b71f855..80a275c03c 100644 --- a/opendaylight/forwardingrulesmanager/implementation/pom.xml +++ b/opendaylight/adsal/forwardingrulesmanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight forwardingrulesmanager.implementation diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java b/opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java similarity index 100% rename from opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java rename to opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java b/opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java similarity index 100% rename from opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java rename to opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/Activator.java diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/FlowEntryDistributionOrderFutureTask.java b/opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/FlowEntryDistributionOrderFutureTask.java similarity index 100% rename from opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/FlowEntryDistributionOrderFutureTask.java rename to opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/FlowEntryDistributionOrderFutureTask.java diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java b/opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java similarity index 100% rename from opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java rename to opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManager.java diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerCLI.java b/opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerCLI.java similarity index 100% rename from opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerCLI.java rename to opendaylight/adsal/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerCLI.java diff --git a/opendaylight/forwardingrulesmanager/integrationtest/pom.xml b/opendaylight/adsal/forwardingrulesmanager/integrationtest/pom.xml similarity index 95% rename from opendaylight/forwardingrulesmanager/integrationtest/pom.xml rename to opendaylight/adsal/forwardingrulesmanager/integrationtest/pom.xml index 60b934a492..0f9b3caea9 100644 --- a/opendaylight/forwardingrulesmanager/integrationtest/pom.xml +++ b/opendaylight/adsal/forwardingrulesmanager/integrationtest/pom.xml @@ -11,9 +11,9 @@ forwardingrulesmanager.integrationtest 0.5.0-SNAPSHOT - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec - ../implementation/target/jacoco.exec + ../../implementation/target/jacoco.exec @@ -141,7 +141,7 @@ org.jacoco jacoco-maven-plugin - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec org.opendaylight.controller.* diff --git a/opendaylight/forwardingrulesmanager/integrationtest/src/test/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerIT.java b/opendaylight/adsal/forwardingrulesmanager/integrationtest/src/test/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerIT.java similarity index 100% rename from opendaylight/forwardingrulesmanager/integrationtest/src/test/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerIT.java rename to opendaylight/adsal/forwardingrulesmanager/integrationtest/src/test/java/org/opendaylight/controller/forwardingrulesmanager/internal/ForwardingRulesManagerIT.java diff --git a/opendaylight/forwardingrulesmanager/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/forwardingrulesmanager/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/forwardingrulesmanager/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/forwardingrulesmanager/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/hosttracker/api/pom.xml b/opendaylight/adsal/hosttracker/api/pom.xml similarity index 97% rename from opendaylight/hosttracker/api/pom.xml rename to opendaylight/adsal/hosttracker/api/pom.xml index 10532baa6e..6bc28f03c3 100644 --- a/opendaylight/hosttracker/api/pom.xml +++ b/opendaylight/adsal/hosttracker/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight hosttracker 0.6.0-SNAPSHOT diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/HostIdFactory.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/HostIdFactory.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/HostIdFactory.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/HostIdFactory.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostId.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostId.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostId.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostId.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostTrackerShell.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostTrackerShell.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostTrackerShell.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IHostTrackerShell.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPHostId.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPHostId.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPHostId.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPHostId.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPMacHostId.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPMacHostId.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPMacHostId.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IPMacHostId.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java diff --git a/opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java b/opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java similarity index 100% rename from opendaylight/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java rename to opendaylight/adsal/hosttracker/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java diff --git a/opendaylight/hosttracker/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java b/opendaylight/adsal/hosttracker/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java similarity index 100% rename from opendaylight/hosttracker/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java rename to opendaylight/adsal/hosttracker/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java diff --git a/opendaylight/hosttracker/implementation/pom.xml b/opendaylight/adsal/hosttracker/implementation/pom.xml similarity index 98% rename from opendaylight/hosttracker/implementation/pom.xml rename to opendaylight/adsal/hosttracker/implementation/pom.xml index 370f88defa..64254e8b92 100644 --- a/opendaylight/hosttracker/implementation/pom.xml +++ b/opendaylight/adsal/hosttracker/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight hosttracker.implementation 0.6.0-SNAPSHOT diff --git a/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java b/opendaylight/adsal/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java similarity index 100% rename from opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java rename to opendaylight/adsal/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java diff --git a/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java b/opendaylight/adsal/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java similarity index 100% rename from opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java rename to opendaylight/adsal/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTracker.java diff --git a/opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTrackerCallable.java b/opendaylight/adsal/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTrackerCallable.java similarity index 100% rename from opendaylight/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTrackerCallable.java rename to opendaylight/adsal/hosttracker/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/HostTrackerCallable.java diff --git a/opendaylight/hosttracker/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerTest.java b/opendaylight/adsal/hosttracker/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerTest.java similarity index 100% rename from opendaylight/hosttracker/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerTest.java rename to opendaylight/adsal/hosttracker/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerTest.java diff --git a/opendaylight/hosttracker/integrationtest/pom.xml b/opendaylight/adsal/hosttracker/integrationtest/pom.xml similarity index 95% rename from opendaylight/hosttracker/integrationtest/pom.xml rename to opendaylight/adsal/hosttracker/integrationtest/pom.xml index dabccf3f71..63610cc3e3 100644 --- a/opendaylight/hosttracker/integrationtest/pom.xml +++ b/opendaylight/adsal/hosttracker/integrationtest/pom.xml @@ -11,9 +11,9 @@ hosttracker.integrationtest 0.6.0-SNAPSHOT - ../implementaiton/target/jacoco-it.exec + ../../implementaiton/target/jacoco-it.exec - ../implementation/target/jacoco.exec + ../../implementation/target/jacoco.exec @@ -134,7 +134,7 @@ org.jacoco jacoco-maven-plugin - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec org.opendaylight.controller.* diff --git a/opendaylight/hosttracker/integrationtest/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerIT.java b/opendaylight/adsal/hosttracker/integrationtest/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerIT.java similarity index 100% rename from opendaylight/hosttracker/integrationtest/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerIT.java rename to opendaylight/adsal/hosttracker/integrationtest/src/test/java/org/opendaylight/controller/hosttracker/internal/HostTrackerIT.java diff --git a/opendaylight/hosttracker/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/hosttracker/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/hosttracker/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/hosttracker/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/hosttracker/shell/pom.xml b/opendaylight/adsal/hosttracker/shell/pom.xml similarity index 96% rename from opendaylight/hosttracker/shell/pom.xml rename to opendaylight/adsal/hosttracker/shell/pom.xml index 9088ae359b..0292e113ee 100644 --- a/opendaylight/hosttracker/shell/pom.xml +++ b/opendaylight/adsal/hosttracker/shell/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight hosttracker.shell ${hosttracker.shell.version} diff --git a/opendaylight/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpFailedARPReqList.java b/opendaylight/adsal/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpFailedARPReqList.java similarity index 100% rename from opendaylight/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpFailedARPReqList.java rename to opendaylight/adsal/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpFailedARPReqList.java diff --git a/opendaylight/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpPendingARPReqList.java b/opendaylight/adsal/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpPendingARPReqList.java similarity index 100% rename from opendaylight/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpPendingARPReqList.java rename to opendaylight/adsal/hosttracker/shell/src/main/java/org/opendaylight/controller/hosttracker/shell/DumpPendingARPReqList.java diff --git a/opendaylight/hosttracker/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/opendaylight/adsal/hosttracker/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml similarity index 100% rename from opendaylight/hosttracker/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml rename to opendaylight/adsal/hosttracker/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml diff --git a/opendaylight/hosttracker/shell/src/test/java/org/opendaylight/controller/hosttracker/shell/HostTrackerShellTest.java b/opendaylight/adsal/hosttracker/shell/src/test/java/org/opendaylight/controller/hosttracker/shell/HostTrackerShellTest.java similarity index 100% rename from opendaylight/hosttracker/shell/src/test/java/org/opendaylight/controller/hosttracker/shell/HostTrackerShellTest.java rename to opendaylight/adsal/hosttracker/shell/src/test/java/org/opendaylight/controller/hosttracker/shell/HostTrackerShellTest.java diff --git a/opendaylight/hosttracker_new/api/pom.xml b/opendaylight/adsal/hosttracker_new/api/pom.xml similarity index 97% rename from opendaylight/hosttracker_new/api/pom.xml rename to opendaylight/adsal/hosttracker_new/api/pom.xml index db27345d18..cdb3fd95b6 100644 --- a/opendaylight/hosttracker_new/api/pom.xml +++ b/opendaylight/adsal/hosttracker_new/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight hosttracker_new 0.5.0-SNAPSHOT diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/Entity.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/Entity.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/Entity.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/Entity.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDevice.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDevice.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDevice.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDevice.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceListener.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceListener.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceListener.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceListener.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceService.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceService.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceService.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IDeviceService.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClass.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClass.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClass.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClass.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassListener.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassListener.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassListener.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassListener.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassifierService.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassifierService.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassifierService.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IEntityClassifierService.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfHostListener.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfIptoHost.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/IfNewHostNotify.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/SwitchPort.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/SwitchPort.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/SwitchPort.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/SwitchPort.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnector.java diff --git a/opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java b/opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java rename to opendaylight/adsal/hosttracker_new/api/src/main/java/org/opendaylight/controller/hosttracker/hostAware/IHostFinder.java diff --git a/opendaylight/hosttracker_new/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java b/opendaylight/adsal/hosttracker_new/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java similarity index 100% rename from opendaylight/hosttracker_new/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java rename to opendaylight/adsal/hosttracker_new/api/src/test/java/org/opendaylight/controller/hosttracker/hostAware/HostNodeConnectorTest.java diff --git a/opendaylight/hosttracker_new/implementation/pom.xml b/opendaylight/adsal/hosttracker_new/implementation/pom.xml similarity index 98% rename from opendaylight/hosttracker_new/implementation/pom.xml rename to opendaylight/adsal/hosttracker_new/implementation/pom.xml index d3661a12c8..268465eed3 100644 --- a/opendaylight/hosttracker_new/implementation/pom.xml +++ b/opendaylight/adsal/hosttracker_new/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight hosttracker_new.implementation 0.5.0-SNAPSHOT diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Activator.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/AttachmentPoint.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/AttachmentPoint.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/AttachmentPoint.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/AttachmentPoint.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DefaultEntityClassifier.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DefaultEntityClassifier.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DefaultEntityClassifier.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DefaultEntityClassifier.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Device.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Device.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Device.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/Device.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndex.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndex.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndex.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndex.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndexInterator.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndexInterator.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndexInterator.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIndexInterator.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIterator.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIterator.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIterator.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceIterator.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImpl.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImpl.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImpl.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImpl.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceMultiIndex.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceMultiIndex.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceMultiIndex.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceMultiIndex.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndex.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndex.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndex.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndex.java diff --git a/opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/IndexedEntity.java b/opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/IndexedEntity.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/IndexedEntity.java rename to opendaylight/adsal/hosttracker_new/implementation/src/main/java/org/opendaylight/controller/hosttracker/internal/IndexedEntity.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImplTest.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImplTest.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImplTest.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceManagerImplTest.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndexTest.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndexTest.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndexTest.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/internal/DeviceUniqueIndexTest.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDevice.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDevice.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDevice.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDevice.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDeviceManager.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDeviceManager.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDeviceManager.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockDeviceManager.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifier.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifier.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifier.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifier.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifierMac.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifierMac.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifierMac.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockEntityClassifierMac.java diff --git a/opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockFlexEntityClassifier.java b/opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockFlexEntityClassifier.java similarity index 100% rename from opendaylight/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockFlexEntityClassifier.java rename to opendaylight/adsal/hosttracker_new/implementation/src/test/java/org/opendaylight/controller/hosttracker/test/MockFlexEntityClassifier.java diff --git a/opendaylight/karaf-tomcat-security/pom.xml b/opendaylight/adsal/karaf-tomcat-security/pom.xml similarity index 96% rename from opendaylight/karaf-tomcat-security/pom.xml rename to opendaylight/adsal/karaf-tomcat-security/pom.xml index 30d57d048a..d2dc040bba 100644 --- a/opendaylight/karaf-tomcat-security/pom.xml +++ b/opendaylight/adsal/karaf-tomcat-security/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../commons/opendaylight + ../../commons/opendaylight karaf-tomcat-security diff --git a/opendaylight/karaf-tomcat-security/src/main/java/org/opendaylight/controller/karafsecurity/ControllerCustomRealm.java b/opendaylight/adsal/karaf-tomcat-security/src/main/java/org/opendaylight/controller/karafsecurity/ControllerCustomRealm.java similarity index 100% rename from opendaylight/karaf-tomcat-security/src/main/java/org/opendaylight/controller/karafsecurity/ControllerCustomRealm.java rename to opendaylight/adsal/karaf-tomcat-security/src/main/java/org/opendaylight/controller/karafsecurity/ControllerCustomRealm.java diff --git a/opendaylight/logging/bridge/pom.xml b/opendaylight/adsal/logging/bridge/pom.xml similarity index 97% rename from opendaylight/logging/bridge/pom.xml rename to opendaylight/adsal/logging/bridge/pom.xml index dc37e30179..5ebbe4564b 100644 --- a/opendaylight/logging/bridge/pom.xml +++ b/opendaylight/adsal/logging/bridge/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight logging.bridge diff --git a/opendaylight/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/Activator.java b/opendaylight/adsal/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/Activator.java similarity index 100% rename from opendaylight/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/Activator.java rename to opendaylight/adsal/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/Activator.java diff --git a/opendaylight/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImpl.java b/opendaylight/adsal/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImpl.java similarity index 100% rename from opendaylight/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImpl.java rename to opendaylight/adsal/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImpl.java diff --git a/opendaylight/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/UncaughtExceptionPolicy.java b/opendaylight/adsal/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/UncaughtExceptionPolicy.java similarity index 100% rename from opendaylight/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/UncaughtExceptionPolicy.java rename to opendaylight/adsal/logging/bridge/src/main/java/org/opendaylight/controller/logging/bridge/internal/UncaughtExceptionPolicy.java diff --git a/opendaylight/logging/bridge/src/test/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImplTest.java b/opendaylight/adsal/logging/bridge/src/test/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImplTest.java similarity index 100% rename from opendaylight/logging/bridge/src/test/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImplTest.java rename to opendaylight/adsal/logging/bridge/src/test/java/org/opendaylight/controller/logging/bridge/internal/LogListenerImplTest.java diff --git a/opendaylight/northbound/archetype-app-northbound/pom.xml b/opendaylight/adsal/northbound/archetype-app-northbound/pom.xml similarity index 100% rename from opendaylight/northbound/archetype-app-northbound/pom.xml rename to opendaylight/adsal/northbound/archetype-app-northbound/pom.xml diff --git a/opendaylight/northbound/archetype-app-northbound/src/main/resources/META-INF/maven/archetype-metadata.xml b/opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/META-INF/maven/archetype-metadata.xml similarity index 100% rename from opendaylight/northbound/archetype-app-northbound/src/main/resources/META-INF/maven/archetype-metadata.xml rename to opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/META-INF/maven/archetype-metadata.xml diff --git a/opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml b/opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml similarity index 97% rename from opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml rename to opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml index adb0c98705..73bdf0921b 100644 --- a/opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml +++ b/opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml @@ -6,7 +6,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight ${artifactId} diff --git a/opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/java/Northbound.java b/opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/java/Northbound.java similarity index 100% rename from opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/java/Northbound.java rename to opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/java/Northbound.java diff --git a/opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/archetype-app-northbound/src/main/resources/archetype-resources/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/archetype-app-northbound/src/test/resources/projects/basic/archetype.properties b/opendaylight/adsal/northbound/archetype-app-northbound/src/test/resources/projects/basic/archetype.properties similarity index 100% rename from opendaylight/northbound/archetype-app-northbound/src/test/resources/projects/basic/archetype.properties rename to opendaylight/adsal/northbound/archetype-app-northbound/src/test/resources/projects/basic/archetype.properties diff --git a/opendaylight/northbound/archetype-app-northbound/src/test/resources/projects/basic/goal.txt b/opendaylight/adsal/northbound/archetype-app-northbound/src/test/resources/projects/basic/goal.txt similarity index 100% rename from opendaylight/northbound/archetype-app-northbound/src/test/resources/projects/basic/goal.txt rename to opendaylight/adsal/northbound/archetype-app-northbound/src/test/resources/projects/basic/goal.txt diff --git a/opendaylight/northbound/bundlescanner/api/pom.xml b/opendaylight/adsal/northbound/bundlescanner/api/pom.xml similarity index 96% rename from opendaylight/northbound/bundlescanner/api/pom.xml rename to opendaylight/adsal/northbound/bundlescanner/api/pom.xml index 78bfd38579..d94272b342 100644 --- a/opendaylight/northbound/bundlescanner/api/pom.xml +++ b/opendaylight/adsal/northbound/bundlescanner/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight bundlescanner diff --git a/opendaylight/northbound/bundlescanner/api/src/main/java/org/opendaylight/controller/northbound/bundlescanner/IBundleScanService.java b/opendaylight/adsal/northbound/bundlescanner/api/src/main/java/org/opendaylight/controller/northbound/bundlescanner/IBundleScanService.java similarity index 100% rename from opendaylight/northbound/bundlescanner/api/src/main/java/org/opendaylight/controller/northbound/bundlescanner/IBundleScanService.java rename to opendaylight/adsal/northbound/bundlescanner/api/src/main/java/org/opendaylight/controller/northbound/bundlescanner/IBundleScanService.java diff --git a/opendaylight/northbound/bundlescanner/implementation/pom.xml b/opendaylight/adsal/northbound/bundlescanner/implementation/pom.xml similarity index 97% rename from opendaylight/northbound/bundlescanner/implementation/pom.xml rename to opendaylight/adsal/northbound/bundlescanner/implementation/pom.xml index 5694b2adcf..d4d57a1be9 100644 --- a/opendaylight/northbound/bundlescanner/implementation/pom.xml +++ b/opendaylight/adsal/northbound/bundlescanner/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight bundlescanner.implementation diff --git a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/Activator.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/Activator.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/Activator.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/Activator.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanServiceImpl.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanServiceImpl.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanServiceImpl.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanServiceImpl.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java similarity index 98% rename from opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java index c590da4dbc..2fee2720c2 100644 --- a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java +++ b/opendaylight/adsal/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java @@ -294,8 +294,8 @@ import org.slf4j.LoggerFactory; if (classes == null || classes.size() == 0) return; Map names = new HashMap(); StringBuilder conflictsMsg = new StringBuilder(); - for (Class c : classes) { - XmlRootElement root = (XmlRootElement) c.getAnnotation(XmlRootElement.class); + for (Class c : classes) { + XmlRootElement root = c.getAnnotation(XmlRootElement.class); if (root == null) continue; String rootName = root.name(); if ("##default".equals(rootName)) { diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/Animal.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/Animal.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/Animal.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/Animal.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/BasePerson.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/BasePerson.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/BasePerson.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/BasePerson.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/Mammal.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/Mammal.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/Mammal.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/Mammal.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/NoAnnotation.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/NoAnnotation.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/NoAnnotation.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/NoAnnotation.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/NonRelevantAnnotation.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/NonRelevantAnnotation.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/NonRelevantAnnotation.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/NonRelevantAnnotation.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/Person.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/Person.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_base/Person.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_base/Person.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_misc/Misc.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_misc/Misc.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_misc/Misc.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_misc/Misc.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/NoAnnotation.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/NoAnnotation.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/NoAnnotation.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/NoAnnotation.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/Zoo.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/Zoo.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/Zoo.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub1/Zoo.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Agent.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Agent.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Agent.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Agent.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Customer.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Customer.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Customer.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/Customer.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/NoAnnotation.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/NoAnnotation.java similarity index 100% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/NoAnnotation.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/bundle_sub2/NoAnnotation.java diff --git a/opendaylight/northbound/bundlescanner/implementation/src/test/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScannerTest.java b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScannerTest.java similarity index 98% rename from opendaylight/northbound/bundlescanner/implementation/src/test/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScannerTest.java rename to opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScannerTest.java index 1c35404c80..c2efbe67a9 100644 --- a/opendaylight/northbound/bundlescanner/implementation/src/test/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScannerTest.java +++ b/opendaylight/adsal/northbound/bundlescanner/implementation/src/test/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScannerTest.java @@ -7,8 +7,6 @@ */ package org.opendaylight.controller.northbound.bundlescanner.internal; - - import java.io.File; import java.io.FileFilter; import java.net.MalformedURLException; @@ -37,8 +35,8 @@ import org.osgi.framework.Constants; import org.springframework.osgi.mock.MockBundle; import org.springframework.osgi.mock.MockBundleContext; -import static junit.framework.Assert.assertNotNull; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class BundleScannerTest { @@ -218,7 +216,7 @@ public class BundleScannerTest { } @Override - public Enumeration findEntries(String path, String filePattern, boolean recurse) { + public Enumeration findEntries(String path, String filePattern, boolean recurse) { return Collections.enumeration(classes); } diff --git a/opendaylight/northbound/commons/pom.xml b/opendaylight/adsal/northbound/commons/pom.xml similarity index 98% rename from opendaylight/northbound/commons/pom.xml rename to opendaylight/adsal/northbound/commons/pom.xml index 9d229e4e70..8290bcdf38 100644 --- a/opendaylight/northbound/commons/pom.xml +++ b/opendaylight/adsal/northbound/commons/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight commons.northbound diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/NorthboundApplication.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/NorthboundApplication.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/NorthboundApplication.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/NorthboundApplication.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/RestMessages.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/RestMessages.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/RestMessages.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/RestMessages.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/BadRequestException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/BadRequestException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/BadRequestException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/BadRequestException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/GenericExceptionMapper.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/GenericExceptionMapper.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/GenericExceptionMapper.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/GenericExceptionMapper.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/InternalServerErrorException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/InternalServerErrorException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/InternalServerErrorException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/InternalServerErrorException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowed.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowed.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowed.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowed.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowedException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowedException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowedException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/MethodNotAllowedException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotAcceptableException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotAcceptableException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotAcceptableException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotAcceptableException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplemented.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplemented.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplemented.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplemented.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplementedException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplementedException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplementedException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/NotImplementedException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceConflictException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceConflictException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceConflictException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceConflictException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceForbiddenException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceForbiddenException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceForbiddenException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceForbiddenException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceGoneException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceGoneException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceGoneException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceGoneException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceNotFoundException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceNotFoundException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceNotFoundException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ResourceNotFoundException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ServiceUnavailableException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ServiceUnavailableException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ServiceUnavailableException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/ServiceUnavailableException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnauthorizedException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnauthorizedException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnauthorizedException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnauthorizedException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnsupportedMediaTypeException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnsupportedMediaTypeException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnsupportedMediaTypeException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/UnsupportedMediaTypeException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/package-info.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/package-info.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/package-info.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/exception/package-info.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Accessor.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Accessor.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Accessor.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Accessor.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/CompareExpression.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/CompareExpression.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/CompareExpression.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/CompareExpression.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Expression.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Expression.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Expression.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Expression.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/ExpressionBuilder.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/ExpressionBuilder.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/ExpressionBuilder.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/ExpressionBuilder.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/IteratableTypeInfo.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/IteratableTypeInfo.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/IteratableTypeInfo.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/IteratableTypeInfo.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/LogicalExpression.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/LogicalExpression.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/LogicalExpression.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/LogicalExpression.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Query.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Query.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Query.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Query.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContext.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContext.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContext.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContext.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextImpl.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextImpl.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextImpl.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextImpl.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextProvider.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextProvider.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextProvider.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryContextProvider.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryException.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryException.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryException.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryException.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryImpl.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryImpl.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryImpl.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/QueryImpl.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/TypeInfo.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/TypeInfo.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/TypeInfo.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/TypeInfo.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Visitor.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Visitor.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Visitor.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/Visitor.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/WrapperTypeInfo.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/WrapperTypeInfo.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/WrapperTypeInfo.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/query/WrapperTypeInfo.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/types/StringList.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/types/StringList.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/types/StringList.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/types/StringList.java diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java b/opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java similarity index 100% rename from opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java rename to opendaylight/adsal/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java diff --git a/opendaylight/northbound/commons/src/main/javacc/fiql.jj b/opendaylight/adsal/northbound/commons/src/main/javacc/fiql.jj similarity index 100% rename from opendaylight/northbound/commons/src/main/javacc/fiql.jj rename to opendaylight/adsal/northbound/commons/src/main/javacc/fiql.jj diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/CommonsNorthboundTest.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/CommonsNorthboundTest.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/CommonsNorthboundTest.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/CommonsNorthboundTest.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/exception/CommonsNorthboundExceptionTest.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/exception/CommonsNorthboundExceptionTest.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/exception/CommonsNorthboundExceptionTest.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/exception/CommonsNorthboundExceptionTest.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/BookBean.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/BookBean.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/BookBean.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/BookBean.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ExpresssionTest.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ExpresssionTest.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ExpresssionTest.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ExpresssionTest.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/Library.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/Library.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/Library.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/Library.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/PersonBean.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/PersonBean.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/PersonBean.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/PersonBean.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/QueryContextTest.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/QueryContextTest.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/QueryContextTest.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/QueryContextTest.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ReviewBean.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ReviewBean.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ReviewBean.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/ReviewBean.java diff --git a/opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/XMLAccessorTypeTest.java b/opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/XMLAccessorTypeTest.java similarity index 100% rename from opendaylight/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/XMLAccessorTypeTest.java rename to opendaylight/adsal/northbound/commons/src/test/java/org/opendaylight/controller/northbound/commons/query/XMLAccessorTypeTest.java diff --git a/opendaylight/northbound/commons/src/test/resources/logback.xml b/opendaylight/adsal/northbound/commons/src/test/resources/logback.xml similarity index 100% rename from opendaylight/northbound/commons/src/test/resources/logback.xml rename to opendaylight/adsal/northbound/commons/src/test/resources/logback.xml diff --git a/opendaylight/northbound/connectionmanager/enunciate.xml b/opendaylight/adsal/northbound/connectionmanager/enunciate.xml similarity index 100% rename from opendaylight/northbound/connectionmanager/enunciate.xml rename to opendaylight/adsal/northbound/connectionmanager/enunciate.xml diff --git a/opendaylight/northbound/connectionmanager/pom.xml b/opendaylight/adsal/northbound/connectionmanager/pom.xml similarity index 98% rename from opendaylight/northbound/connectionmanager/pom.xml rename to opendaylight/adsal/northbound/connectionmanager/pom.xml index 893dcd14f3..b68bc25545 100644 --- a/opendaylight/northbound/connectionmanager/pom.xml +++ b/opendaylight/adsal/northbound/connectionmanager/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight connectionmanager.northbound diff --git a/opendaylight/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/ConnectionManagerNorthbound.java b/opendaylight/adsal/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/ConnectionManagerNorthbound.java similarity index 100% rename from opendaylight/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/ConnectionManagerNorthbound.java rename to opendaylight/adsal/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/ConnectionManagerNorthbound.java diff --git a/opendaylight/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/Nodes.java b/opendaylight/adsal/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/Nodes.java similarity index 100% rename from opendaylight/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/Nodes.java rename to opendaylight/adsal/northbound/connectionmanager/src/main/java/org/opendaylight/controller/connectionmanager/northbound/Nodes.java diff --git a/opendaylight/northbound/connectionmanager/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/connectionmanager/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/connectionmanager/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/connectionmanager/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/containermanager/enunciate.xml b/opendaylight/adsal/northbound/containermanager/enunciate.xml similarity index 100% rename from opendaylight/northbound/containermanager/enunciate.xml rename to opendaylight/adsal/northbound/containermanager/enunciate.xml diff --git a/opendaylight/northbound/containermanager/pom.xml b/opendaylight/adsal/northbound/containermanager/pom.xml similarity index 98% rename from opendaylight/northbound/containermanager/pom.xml rename to opendaylight/adsal/northbound/containermanager/pom.xml index 74fd115dee..8898a06f64 100644 --- a/opendaylight/northbound/containermanager/pom.xml +++ b/opendaylight/adsal/northbound/containermanager/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight containermanager.northbound diff --git a/opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerConfigs.java b/opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerConfigs.java similarity index 100% rename from opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerConfigs.java rename to opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerConfigs.java diff --git a/opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthbound.java b/opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthbound.java similarity index 100% rename from opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthbound.java rename to opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthbound.java diff --git a/opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthboundRSApplication.java b/opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthboundRSApplication.java similarity index 100% rename from opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthboundRSApplication.java rename to opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/ContainerManagerNorthboundRSApplication.java diff --git a/opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/FlowSpecConfigs.java b/opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/FlowSpecConfigs.java similarity index 100% rename from opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/FlowSpecConfigs.java rename to opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/FlowSpecConfigs.java diff --git a/opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/StringList.java b/opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/StringList.java similarity index 100% rename from opendaylight/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/StringList.java rename to opendaylight/adsal/northbound/containermanager/src/main/java/org/opendaylight/controller/containermanager/northbound/StringList.java diff --git a/opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/containermanager/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/containermanager/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/containermanager/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/containermanager/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/containermanager/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/containermanager/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/controllermanager/enunciate.xml b/opendaylight/adsal/northbound/controllermanager/enunciate.xml similarity index 100% rename from opendaylight/northbound/controllermanager/enunciate.xml rename to opendaylight/adsal/northbound/controllermanager/enunciate.xml diff --git a/opendaylight/northbound/controllermanager/pom.xml b/opendaylight/adsal/northbound/controllermanager/pom.xml similarity index 98% rename from opendaylight/northbound/controllermanager/pom.xml rename to opendaylight/adsal/northbound/controllermanager/pom.xml index 33f9a06246..395dd2dc29 100644 --- a/opendaylight/northbound/controllermanager/pom.xml +++ b/opendaylight/adsal/northbound/controllermanager/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight controllermanager.northbound 0.1.0-SNAPSHOT diff --git a/opendaylight/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthbound.java b/opendaylight/adsal/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthbound.java similarity index 100% rename from opendaylight/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthbound.java rename to opendaylight/adsal/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthbound.java diff --git a/opendaylight/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerProperties.java b/opendaylight/adsal/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerProperties.java similarity index 100% rename from opendaylight/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerProperties.java rename to opendaylight/adsal/northbound/controllermanager/src/main/java/org/opendaylight/controller/controllermanager/northbound/ControllerProperties.java diff --git a/opendaylight/northbound/controllermanager/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/controllermanager/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/controllermanager/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/controllermanager/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/controllermanager/src/test/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthboundTest.java b/opendaylight/adsal/northbound/controllermanager/src/test/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthboundTest.java similarity index 100% rename from opendaylight/northbound/controllermanager/src/test/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthboundTest.java rename to opendaylight/adsal/northbound/controllermanager/src/test/java/org/opendaylight/controller/controllermanager/northbound/ControllerManagerNorthboundTest.java diff --git a/opendaylight/northbound/flowprogrammer/enunciate.xml b/opendaylight/adsal/northbound/flowprogrammer/enunciate.xml similarity index 100% rename from opendaylight/northbound/flowprogrammer/enunciate.xml rename to opendaylight/adsal/northbound/flowprogrammer/enunciate.xml diff --git a/opendaylight/northbound/flowprogrammer/pom.xml b/opendaylight/adsal/northbound/flowprogrammer/pom.xml similarity index 98% rename from opendaylight/northbound/flowprogrammer/pom.xml rename to opendaylight/adsal/northbound/flowprogrammer/pom.xml index 083a7a2cb8..fdc7340a35 100644 --- a/opendaylight/northbound/flowprogrammer/pom.xml +++ b/opendaylight/adsal/northbound/flowprogrammer/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight flowprogrammer.northbound diff --git a/opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowConfigs.java b/opendaylight/adsal/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowConfigs.java similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowConfigs.java rename to opendaylight/adsal/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowConfigs.java diff --git a/opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java b/opendaylight/adsal/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java rename to opendaylight/adsal/northbound/flowprogrammer/src/main/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthbound.java diff --git a/opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/flowprogrammer/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/flowprogrammer/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/flowprogrammer/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/flowprogrammer/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/flowprogrammer/src/test/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthboundTest.java b/opendaylight/adsal/northbound/flowprogrammer/src/test/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthboundTest.java similarity index 100% rename from opendaylight/northbound/flowprogrammer/src/test/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthboundTest.java rename to opendaylight/adsal/northbound/flowprogrammer/src/test/java/org/opendaylight/controller/flowprogrammer/northbound/FlowProgrammerNorthboundTest.java diff --git a/opendaylight/northbound/hosttracker/enunciate.xml b/opendaylight/adsal/northbound/hosttracker/enunciate.xml similarity index 100% rename from opendaylight/northbound/hosttracker/enunciate.xml rename to opendaylight/adsal/northbound/hosttracker/enunciate.xml diff --git a/opendaylight/northbound/hosttracker/pom.xml b/opendaylight/adsal/northbound/hosttracker/pom.xml similarity index 98% rename from opendaylight/northbound/hosttracker/pom.xml rename to opendaylight/adsal/northbound/hosttracker/pom.xml index 3cd3f36be0..778125af28 100644 --- a/opendaylight/northbound/hosttracker/pom.xml +++ b/opendaylight/adsal/northbound/hosttracker/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight hosttracker.northbound 0.5.0-SNAPSHOT diff --git a/opendaylight/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostConfig.java b/opendaylight/adsal/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostConfig.java similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostConfig.java rename to opendaylight/adsal/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostConfig.java diff --git a/opendaylight/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthbound.java b/opendaylight/adsal/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthbound.java similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthbound.java rename to opendaylight/adsal/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthbound.java diff --git a/opendaylight/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/Hosts.java b/opendaylight/adsal/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/Hosts.java similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/Hosts.java rename to opendaylight/adsal/northbound/hosttracker/src/main/java/org/opendaylight/controller/hosttracker/northbound/Hosts.java diff --git a/opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/hosttracker/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/hosttracker/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/hosttracker/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/hosttracker/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/hosttracker/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/hosttracker/src/test/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthboundTest.java b/opendaylight/adsal/northbound/hosttracker/src/test/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthboundTest.java similarity index 100% rename from opendaylight/northbound/hosttracker/src/test/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthboundTest.java rename to opendaylight/adsal/northbound/hosttracker/src/test/java/org/opendaylight/controller/hosttracker/northbound/HostTrackerNorthboundTest.java diff --git a/opendaylight/northbound/httpservice-bridge/pom.xml b/opendaylight/adsal/northbound/httpservice-bridge/pom.xml similarity index 95% rename from opendaylight/northbound/httpservice-bridge/pom.xml rename to opendaylight/adsal/northbound/httpservice-bridge/pom.xml index deeabd9d00..12ee95c983 100644 --- a/opendaylight/northbound/httpservice-bridge/pom.xml +++ b/opendaylight/adsal/northbound/httpservice-bridge/pom.xml @@ -6,7 +6,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight httpservice-bridge diff --git a/opendaylight/northbound/httpservice-bridge/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/httpservice-bridge/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/httpservice-bridge/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/httpservice-bridge/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/integrationtest/pom.xml b/opendaylight/adsal/northbound/integrationtest/pom.xml similarity index 100% rename from opendaylight/northbound/integrationtest/pom.xml rename to opendaylight/adsal/northbound/integrationtest/pom.xml diff --git a/opendaylight/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java b/opendaylight/adsal/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java similarity index 100% rename from opendaylight/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java rename to opendaylight/adsal/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java diff --git a/opendaylight/northbound/integrationtest/src/test/resources/exam.properties b/opendaylight/adsal/northbound/integrationtest/src/test/resources/exam.properties similarity index 100% rename from opendaylight/northbound/integrationtest/src/test/resources/exam.properties rename to opendaylight/adsal/northbound/integrationtest/src/test/resources/exam.properties diff --git a/opendaylight/northbound/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/northbound/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/northbound/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/northbound/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/northbound/integrationtest/src/test/resources/tomcat-server.xml b/opendaylight/adsal/northbound/integrationtest/src/test/resources/tomcat-server.xml similarity index 100% rename from opendaylight/northbound/integrationtest/src/test/resources/tomcat-server.xml rename to opendaylight/adsal/northbound/integrationtest/src/test/resources/tomcat-server.xml diff --git a/opendaylight/northbound/java-client/enunciate.xml b/opendaylight/adsal/northbound/java-client/enunciate.xml similarity index 100% rename from opendaylight/northbound/java-client/enunciate.xml rename to opendaylight/adsal/northbound/java-client/enunciate.xml diff --git a/opendaylight/northbound/java-client/pom.xml b/opendaylight/adsal/northbound/java-client/pom.xml similarity index 99% rename from opendaylight/northbound/java-client/pom.xml rename to opendaylight/adsal/northbound/java-client/pom.xml index a4bcde461e..5a4c18e88c 100644 --- a/opendaylight/northbound/java-client/pom.xml +++ b/opendaylight/adsal/northbound/java-client/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight northbound.client diff --git a/opendaylight/northbound/jolokia/pom.xml b/opendaylight/adsal/northbound/jolokia/pom.xml similarity index 95% rename from opendaylight/northbound/jolokia/pom.xml rename to opendaylight/adsal/northbound/jolokia/pom.xml index 07e3a7d36b..b078e486a8 100644 --- a/opendaylight/northbound/jolokia/pom.xml +++ b/opendaylight/adsal/northbound/jolokia/pom.xml @@ -6,7 +6,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight jolokia-bridge diff --git a/opendaylight/northbound/jolokia/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/jolokia/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/jolokia/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/jolokia/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/enunciate.xml b/opendaylight/adsal/northbound/networkconfiguration/bridgedomain/enunciate.xml similarity index 100% rename from opendaylight/northbound/networkconfiguration/bridgedomain/enunciate.xml rename to opendaylight/adsal/northbound/networkconfiguration/bridgedomain/enunciate.xml diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml b/opendaylight/adsal/northbound/networkconfiguration/bridgedomain/pom.xml similarity index 98% rename from opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml rename to opendaylight/adsal/northbound/networkconfiguration/bridgedomain/pom.xml index 8b552ba25a..f78ff96608 100644 --- a/opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml +++ b/opendaylight/adsal/northbound/networkconfiguration/bridgedomain/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight networkconfig.bridgedomain.northbound diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java b/opendaylight/adsal/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java rename to opendaylight/adsal/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/networkconfiguration/bridgedomain/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/networkconfiguration/bridgedomain/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/networkconfiguration/bridgedomain/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/staticrouting/enunciate.xml b/opendaylight/adsal/northbound/staticrouting/enunciate.xml similarity index 100% rename from opendaylight/northbound/staticrouting/enunciate.xml rename to opendaylight/adsal/northbound/staticrouting/enunciate.xml diff --git a/opendaylight/northbound/staticrouting/pom.xml b/opendaylight/adsal/northbound/staticrouting/pom.xml similarity index 98% rename from opendaylight/northbound/staticrouting/pom.xml rename to opendaylight/adsal/northbound/staticrouting/pom.xml index 761f1f08e9..3a89369b18 100644 --- a/opendaylight/northbound/staticrouting/pom.xml +++ b/opendaylight/adsal/northbound/staticrouting/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight forwarding.staticrouting.northbound diff --git a/opendaylight/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoute.java b/opendaylight/adsal/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoute.java similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoute.java rename to opendaylight/adsal/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoute.java diff --git a/opendaylight/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutes.java b/opendaylight/adsal/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutes.java similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutes.java rename to opendaylight/adsal/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutes.java diff --git a/opendaylight/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthbound.java b/opendaylight/adsal/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthbound.java similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthbound.java rename to opendaylight/adsal/northbound/staticrouting/src/main/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthbound.java diff --git a/opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/staticrouting/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/staticrouting/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/staticrouting/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/staticrouting/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/staticrouting/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthboundTest.java b/opendaylight/adsal/northbound/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthboundTest.java similarity index 100% rename from opendaylight/northbound/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthboundTest.java rename to opendaylight/adsal/northbound/staticrouting/src/test/java/org/opendaylight/controller/forwarding/staticrouting/northbound/StaticRoutingNorthboundTest.java diff --git a/opendaylight/northbound/statistics/enunciate.xml b/opendaylight/adsal/northbound/statistics/enunciate.xml similarity index 100% rename from opendaylight/northbound/statistics/enunciate.xml rename to opendaylight/adsal/northbound/statistics/enunciate.xml diff --git a/opendaylight/northbound/statistics/pom.xml b/opendaylight/adsal/northbound/statistics/pom.xml similarity index 98% rename from opendaylight/northbound/statistics/pom.xml rename to opendaylight/adsal/northbound/statistics/pom.xml index 4ae3d8746c..0d42ffbb80 100644 --- a/opendaylight/northbound/statistics/pom.xml +++ b/opendaylight/adsal/northbound/statistics/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight statistics.northbound diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllFlowStatistics.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllFlowStatistics.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllFlowStatistics.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllFlowStatistics.java diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllPortStatistics.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllPortStatistics.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllPortStatistics.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllPortStatistics.java diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllTableStatistics.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllTableStatistics.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllTableStatistics.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/AllTableStatistics.java diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/FlowStatistics.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/FlowStatistics.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/FlowStatistics.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/FlowStatistics.java diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/PortStatistics.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/PortStatistics.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/PortStatistics.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/PortStatistics.java diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/TableStatistics.java b/opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/TableStatistics.java similarity index 100% rename from opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/TableStatistics.java rename to opendaylight/adsal/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/TableStatistics.java diff --git a/opendaylight/northbound/statistics/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/statistics/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/statistics/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/statistics/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/statistics/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/statistics/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/statistics/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/statistics/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/statistics/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/statistics/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/statistics/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/statistics/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/statistics/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/statistics/src/test/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthboundTest.java b/opendaylight/adsal/northbound/statistics/src/test/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthboundTest.java similarity index 100% rename from opendaylight/northbound/statistics/src/test/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthboundTest.java rename to opendaylight/adsal/northbound/statistics/src/test/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthboundTest.java diff --git a/opendaylight/northbound/subnets/enunciate.xml b/opendaylight/adsal/northbound/subnets/enunciate.xml similarity index 100% rename from opendaylight/northbound/subnets/enunciate.xml rename to opendaylight/adsal/northbound/subnets/enunciate.xml diff --git a/opendaylight/northbound/subnets/pom.xml b/opendaylight/adsal/northbound/subnets/pom.xml similarity index 98% rename from opendaylight/northbound/subnets/pom.xml rename to opendaylight/adsal/northbound/subnets/pom.xml index 1efb974b51..1eaa45dddd 100644 --- a/opendaylight/northbound/subnets/pom.xml +++ b/opendaylight/adsal/northbound/subnets/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight subnets.northbound diff --git a/opendaylight/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetConfigs.java b/opendaylight/adsal/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetConfigs.java similarity index 100% rename from opendaylight/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetConfigs.java rename to opendaylight/adsal/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetConfigs.java diff --git a/opendaylight/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthbound.java b/opendaylight/adsal/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthbound.java similarity index 100% rename from opendaylight/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthbound.java rename to opendaylight/adsal/northbound/subnets/src/main/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthbound.java diff --git a/opendaylight/northbound/subnets/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/subnets/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/subnets/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/subnets/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/subnets/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/subnets/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/subnets/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/subnets/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/subnets/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/subnets/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/subnets/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/subnets/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/subnets/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/subnets/src/test/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthboundTest.java b/opendaylight/adsal/northbound/subnets/src/test/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthboundTest.java similarity index 100% rename from opendaylight/northbound/subnets/src/test/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthboundTest.java rename to opendaylight/adsal/northbound/subnets/src/test/java/org/opendaylight/controller/subnets/northbound/SubnetsNorthboundTest.java diff --git a/opendaylight/northbound/swagger-ui/pom.xml b/opendaylight/adsal/northbound/swagger-ui/pom.xml similarity index 96% rename from opendaylight/northbound/swagger-ui/pom.xml rename to opendaylight/adsal/northbound/swagger-ui/pom.xml index bbb80a7811..ba1e5c0bc4 100644 --- a/opendaylight/northbound/swagger-ui/pom.xml +++ b/opendaylight/adsal/northbound/swagger-ui/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight swagger-ui @@ -71,6 +71,10 @@ org.opendaylight.controller usermanager.northbound + + org.opendaylight.controller + networkconfig.neutron.northbound + org.slf4j slf4j-api @@ -157,6 +161,7 @@ + diff --git a/opendaylight/northbound/swagger-ui/src/main/java/org/opendaylight/controller/swaggerui/BasePathModifierServlet.java b/opendaylight/adsal/northbound/swagger-ui/src/main/java/org/opendaylight/controller/swaggerui/BasePathModifierServlet.java similarity index 100% rename from opendaylight/northbound/swagger-ui/src/main/java/org/opendaylight/controller/swaggerui/BasePathModifierServlet.java rename to opendaylight/adsal/northbound/swagger-ui/src/main/java/org/opendaylight/controller/swaggerui/BasePathModifierServlet.java diff --git a/opendaylight/northbound/swagger-ui/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/swagger-ui/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/swagger-ui/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/swagger-ui/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/swagger-ui/src/main/resources/css/custom.css b/opendaylight/adsal/northbound/swagger-ui/src/main/resources/css/custom.css similarity index 100% rename from opendaylight/northbound/swagger-ui/src/main/resources/css/custom.css rename to opendaylight/adsal/northbound/swagger-ui/src/main/resources/css/custom.css diff --git a/opendaylight/northbound/swagger-ui/src/main/resources/images/logo.png b/opendaylight/adsal/northbound/swagger-ui/src/main/resources/images/logo.png similarity index 100% rename from opendaylight/northbound/swagger-ui/src/main/resources/images/logo.png rename to opendaylight/adsal/northbound/swagger-ui/src/main/resources/images/logo.png diff --git a/opendaylight/northbound/swagger-ui/src/main/resources/index.html b/opendaylight/adsal/northbound/swagger-ui/src/main/resources/index.html similarity index 100% rename from opendaylight/northbound/swagger-ui/src/main/resources/index.html rename to opendaylight/adsal/northbound/swagger-ui/src/main/resources/index.html diff --git a/opendaylight/northbound/switchmanager/enunciate.xml b/opendaylight/adsal/northbound/switchmanager/enunciate.xml similarity index 100% rename from opendaylight/northbound/switchmanager/enunciate.xml rename to opendaylight/adsal/northbound/switchmanager/enunciate.xml diff --git a/opendaylight/northbound/switchmanager/pom.xml b/opendaylight/adsal/northbound/switchmanager/pom.xml similarity index 98% rename from opendaylight/northbound/switchmanager/pom.xml rename to opendaylight/adsal/northbound/switchmanager/pom.xml index 1b876f4420..b7aaae58d0 100644 --- a/opendaylight/northbound/switchmanager/pom.xml +++ b/opendaylight/adsal/northbound/switchmanager/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight switchmanager.northbound 0.5.0-SNAPSHOT diff --git a/opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectorProperties.java b/opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectorProperties.java similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectorProperties.java rename to opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectorProperties.java diff --git a/opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectors.java b/opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectors.java similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectors.java rename to opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeConnectors.java diff --git a/opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeProperties.java b/opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeProperties.java similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeProperties.java rename to opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/NodeProperties.java diff --git a/opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/Nodes.java b/opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/Nodes.java similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/Nodes.java rename to opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/Nodes.java diff --git a/opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/SwitchNorthbound.java b/opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/SwitchNorthbound.java similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/SwitchNorthbound.java rename to opendaylight/adsal/northbound/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/northbound/SwitchNorthbound.java diff --git a/opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/switchmanager/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/switchmanager/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/switchmanager/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/switchmanager/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/switchmanager/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/switchmanager/src/test/java/org/opendaylight/controller/switchmanager/northbound/SwitchManagerNorthboundTest.java b/opendaylight/adsal/northbound/switchmanager/src/test/java/org/opendaylight/controller/switchmanager/northbound/SwitchManagerNorthboundTest.java similarity index 100% rename from opendaylight/northbound/switchmanager/src/test/java/org/opendaylight/controller/switchmanager/northbound/SwitchManagerNorthboundTest.java rename to opendaylight/adsal/northbound/switchmanager/src/test/java/org/opendaylight/controller/switchmanager/northbound/SwitchManagerNorthboundTest.java diff --git a/opendaylight/northbound/topology/enunciate.xml b/opendaylight/adsal/northbound/topology/enunciate.xml similarity index 100% rename from opendaylight/northbound/topology/enunciate.xml rename to opendaylight/adsal/northbound/topology/enunciate.xml diff --git a/opendaylight/northbound/topology/pom.xml b/opendaylight/adsal/northbound/topology/pom.xml similarity index 98% rename from opendaylight/northbound/topology/pom.xml rename to opendaylight/adsal/northbound/topology/pom.xml index 270148420c..60a12700aa 100644 --- a/opendaylight/northbound/topology/pom.xml +++ b/opendaylight/adsal/northbound/topology/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight topology.northbound diff --git a/opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/EdgeProperties.java b/opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/EdgeProperties.java similarity index 100% rename from opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/EdgeProperties.java rename to opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/EdgeProperties.java diff --git a/opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/Topology.java b/opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/Topology.java similarity index 100% rename from opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/Topology.java rename to opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/Topology.java diff --git a/opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyNorthboundJAXRS.java b/opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyNorthboundJAXRS.java similarity index 100% rename from opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyNorthboundJAXRS.java rename to opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyNorthboundJAXRS.java diff --git a/opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyUserLinks.java b/opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyUserLinks.java similarity index 100% rename from opendaylight/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyUserLinks.java rename to opendaylight/adsal/northbound/topology/src/main/java/org/opendaylight/controller/topology/northbound/TopologyUserLinks.java diff --git a/opendaylight/northbound/topology/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/northbound/topology/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/northbound/topology/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/northbound/topology/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/northbound/topology/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/northbound/topology/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/northbound/topology/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/northbound/topology/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/northbound/topology/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/northbound/topology/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/topology/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/topology/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/topology/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/topology/src/test/java/org/opendaylight/controller/topology/northbound/TopologyTest.java b/opendaylight/adsal/northbound/topology/src/test/java/org/opendaylight/controller/topology/northbound/TopologyTest.java similarity index 98% rename from opendaylight/northbound/topology/src/test/java/org/opendaylight/controller/topology/northbound/TopologyTest.java rename to opendaylight/adsal/northbound/topology/src/test/java/org/opendaylight/controller/topology/northbound/TopologyTest.java index 298f32877a..bcfa2a9ee9 100644 --- a/opendaylight/northbound/topology/src/test/java/org/opendaylight/controller/topology/northbound/TopologyTest.java +++ b/opendaylight/adsal/northbound/topology/src/test/java/org/opendaylight/controller/topology/northbound/TopologyTest.java @@ -7,8 +7,6 @@ */ package org.opendaylight.controller.topology.northbound; - - import org.junit.Test; import org.opendaylight.controller.sal.core.Bandwidth; import org.opendaylight.controller.sal.core.ConstructionException; @@ -28,7 +26,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class TopologyTest { diff --git a/opendaylight/northbound/usermanager/enunciate.xml b/opendaylight/adsal/northbound/usermanager/enunciate.xml similarity index 100% rename from opendaylight/northbound/usermanager/enunciate.xml rename to opendaylight/adsal/northbound/usermanager/enunciate.xml diff --git a/opendaylight/northbound/usermanager/pom.xml b/opendaylight/adsal/northbound/usermanager/pom.xml similarity index 98% rename from opendaylight/northbound/usermanager/pom.xml rename to opendaylight/adsal/northbound/usermanager/pom.xml index fe32bcf5d3..e51ef2faa9 100644 --- a/opendaylight/northbound/usermanager/pom.xml +++ b/opendaylight/adsal/northbound/usermanager/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight usermanager.northbound diff --git a/opendaylight/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java b/opendaylight/adsal/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java similarity index 100% rename from opendaylight/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java rename to opendaylight/adsal/northbound/usermanager/src/main/java/org/opendaylight/controller/usermanager/northbound/UserManagerNorthbound.java diff --git a/opendaylight/northbound/usermanager/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/northbound/usermanager/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/usermanager/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/northbound/usermanager/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/usermanager/src/test/java/org/opendaylight/controller/subnets/northbound/UserManagerNorthboundTest.java b/opendaylight/adsal/northbound/usermanager/src/test/java/org/opendaylight/controller/subnets/northbound/UserManagerNorthboundTest.java similarity index 100% rename from opendaylight/northbound/usermanager/src/test/java/org/opendaylight/controller/subnets/northbound/UserManagerNorthboundTest.java rename to opendaylight/adsal/northbound/usermanager/src/test/java/org/opendaylight/controller/subnets/northbound/UserManagerNorthboundTest.java diff --git a/opendaylight/northboundtest/unit_test_suite/pom.xml b/opendaylight/adsal/northboundtest/unit_test_suite/pom.xml similarity index 97% rename from opendaylight/northboundtest/unit_test_suite/pom.xml rename to opendaylight/adsal/northboundtest/unit_test_suite/pom.xml index 11c885db30..9f33a4db5d 100644 --- a/opendaylight/northboundtest/unit_test_suite/pom.xml +++ b/opendaylight/adsal/northboundtest/unit_test_suite/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../opendaylight/commons/opendaylight + ../../../../opendaylight/commons/opendaylight scm:git:ssh://git.opendaylight.org:29418/controller.git diff --git a/opendaylight/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/API3UnitTest.java b/opendaylight/adsal/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/API3UnitTest.java similarity index 100% rename from opendaylight/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/API3UnitTest.java rename to opendaylight/adsal/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/API3UnitTest.java diff --git a/opendaylight/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/Activator.java b/opendaylight/adsal/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/Activator.java similarity index 100% rename from opendaylight/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/Activator.java rename to opendaylight/adsal/northboundtest/unit_test_suite/src/main/java/org/opendaylight/controller/northboundtest/unittestsuite/internal/Activator.java diff --git a/opendaylight/adsal/pom.xml b/opendaylight/adsal/pom.xml new file mode 100644 index 0000000000..23db4d56a6 --- /dev/null +++ b/opendaylight/adsal/pom.xml @@ -0,0 +1,140 @@ + + + 4.0.0 + + + org.opendaylight.controller + commons.parent + 1.1.0-SNAPSHOT + ../commons/parent + + + adsal-parent + pom + + forwarding/staticrouting + clustering/services + clustering/services_implementation + clustering/stub + clustering/test + configuration/api + configuration/implementation + routing/dijkstra_implementation + arphandler + forwardingrulesmanager/api + forwardingrulesmanager/implementation + hosttracker/api + hosttracker/implementation + hosttracker/shell + hosttracker_new/api + hosttracker_new/implementation + containermanager/api + containermanager/implementation + containermanager/shell + appauth + switchmanager/api + switchmanager/implementation + statisticsmanager/api + statisticsmanager/implementation + topologymanager/implementation + topologymanager/shell + usermanager/api + usermanager/implementation + connectionmanager/api + connectionmanager/implementation + security + karaf-tomcat-security + + + sal/api + sal/implementation + + + sal/connection/api + sal/connection/implementation + sal/networkconfiguration/api + sal/networkconfiguration/implementation + + + web/root + web/flows + web/devices + web/troubleshoot + web/topology + web/osgi-brandfragment + + + northbound/commons + northbound/bundlescanner/api + northbound/bundlescanner/implementation + northbound/topology + northbound/staticrouting + northbound/statistics + northbound/flowprogrammer + northbound/hosttracker + northbound/subnets + northbound/switchmanager + northbound/containermanager + northbound/networkconfiguration/bridgedomain + northbound/httpservice-bridge + northbound/jolokia + northbound/connectionmanager + northbound/usermanager + northbound/controllermanager + + + logging/bridge + + + protocol_plugins/openflow + protocol_plugins/stub + + + samples/simpleforwarding + samples/loadbalancer + samples/northbound/loadbalancer + + dummy-console + + + features/base + features/controller + features/adsal + features/nsf + features/extras + features/adsal-compatibility + + + + integrationtests + + false + + + clustering/integrationtest + configuration/integrationtest + forwardingrulesmanager/integrationtest + hosttracker/integrationtest + switchmanager/integrationtest + topologymanager/integrationtest + + northbound/integrationtest + statisticsmanager/integrationtest + containermanager/it.implementation + commons/integrationtest + + commons/httpclient + + + + docs + + false + + + northbound/java-client + northbound/swagger-ui + + + + diff --git a/opendaylight/protocol_plugins/openflow/pom.xml b/opendaylight/adsal/protocol_plugins/openflow/pom.xml similarity index 98% rename from opendaylight/protocol_plugins/openflow/pom.xml rename to opendaylight/adsal/protocol_plugins/openflow/pom.xml index 16fadee1cc..7cb7602d4f 100644 --- a/opendaylight/protocol_plugins/openflow/pom.xml +++ b/opendaylight/adsal/protocol_plugins/openflow/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight protocol_plugins.openflow diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketListen.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketListen.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketListen.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketListen.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketMux.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketMux.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketMux.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDataPacketMux.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDiscoveryListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDiscoveryListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDiscoveryListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IDiscoveryListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IFlowProgrammerNotifier.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IFlowProgrammerNotifier.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IFlowProgrammerNotifier.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IFlowProgrammerNotifier.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryProvider.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryProvider.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryProvider.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryProvider.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimExternalListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimExternalListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimExternalListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimExternalListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimInternalListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimInternalListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimInternalListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IInventoryShimInternalListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsManager.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsManager.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsManager.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IOFStatisticsManager.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadFilterInternalListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadFilterInternalListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadFilterInternalListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadFilterInternalListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadServiceFilter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadServiceFilter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadServiceFilter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IReadServiceFilter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IRefreshInternalProvider.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IRefreshInternalProvider.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IRefreshInternalProvider.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/IRefreshInternalProvider.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/ITopologyServiceShimListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/ITopologyServiceShimListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/ITopologyServiceShimListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/ITopologyServiceShimListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IController.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IController.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IController.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IController.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageReadWrite.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageReadWrite.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageReadWrite.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/IMessageReadWrite.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitch.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitch.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitch.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitch.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitchStateListener.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitchStateListener.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitchStateListener.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/ISwitchStateListener.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/Controller.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/Controller.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/Controller.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/Controller.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/ControllerIO.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/ControllerIO.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/ControllerIO.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/ControllerIO.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/MessageReadWriteService.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/MessageReadWriteService.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/MessageReadWriteService.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/MessageReadWriteService.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/PriorityMessage.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/PriorityMessage.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/PriorityMessage.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/PriorityMessage.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SecureMessageReadWriteService.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SecureMessageReadWriteService.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SecureMessageReadWriteService.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SecureMessageReadWriteService.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/StatisticsCollector.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/StatisticsCollector.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/StatisticsCollector.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/StatisticsCollector.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchEvent.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchEvent.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchEvent.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchEvent.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SwitchHandler.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SynchronousMessage.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SynchronousMessage.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SynchronousMessage.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/core/internal/SynchronousMessage.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Activator.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketMuxDemux.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketMuxDemux.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketMuxDemux.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketMuxDemux.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketServices.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketServices.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketServices.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DataPacketServices.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DescStatisticsConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DescStatisticsConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DescStatisticsConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DescStatisticsConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerNotifier.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerNotifier.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerNotifier.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerNotifier.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerService.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerService.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerService.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerService.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowStatisticsConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowStatisticsConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowStatisticsConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowStatisticsConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryService.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceHelper.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceHelper.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceHelper.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceHelper.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceShim.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceShim.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceShim.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/InventoryServiceShim.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/OFStatisticsManager.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/OFStatisticsManager.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/OFStatisticsManager.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/OFStatisticsManager.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortStatisticsConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortStatisticsConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortStatisticsConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/PortStatisticsConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadService.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/ReadServiceFilter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableStatisticsConverter.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableStatisticsConverter.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableStatisticsConverter.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TableStatisticsConverter.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServices.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServices.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServices.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServices.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Utils.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Utils.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Utils.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/Utils.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Error.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Error.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Error.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Error.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6FlowMod.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6FlowMod.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6FlowMod.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6FlowMod.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Match.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Match.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Match.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6Match.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsReply.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsReply.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsReply.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsReply.java diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsRequest.java b/opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsRequest.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsRequest.java rename to opendaylight/adsal/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6StatsRequest.java diff --git a/opendaylight/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerServiceTest.java b/opendaylight/adsal/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerServiceTest.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerServiceTest.java rename to opendaylight/adsal/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/internal/FlowProgrammerServiceTest.java diff --git a/opendaylight/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6ExtensionTest.java b/opendaylight/adsal/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6ExtensionTest.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6ExtensionTest.java rename to opendaylight/adsal/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6ExtensionTest.java diff --git a/opendaylight/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6MatchTest.java b/opendaylight/adsal/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6MatchTest.java similarity index 100% rename from opendaylight/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6MatchTest.java rename to opendaylight/adsal/protocol_plugins/openflow/src/test/java/org/opendaylight/controller/protocol_plugin/openflow/vendorextension/v6extension/V6MatchTest.java diff --git a/opendaylight/protocol_plugins/stub/pom.xml b/opendaylight/adsal/protocol_plugins/stub/pom.xml similarity index 97% rename from opendaylight/protocol_plugins/stub/pom.xml rename to opendaylight/adsal/protocol_plugins/stub/pom.xml index 4c7b8965fb..1fb84a51ed 100644 --- a/opendaylight/protocol_plugins/stub/pom.xml +++ b/opendaylight/adsal/protocol_plugins/stub/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight protocol_plugins.stub diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/Activator.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/Activator.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/Activator.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/Activator.java diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/FlowProgrammerService.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/FlowProgrammerService.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/FlowProgrammerService.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/FlowProgrammerService.java diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/InventoryService.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/InventoryService.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/InventoryService.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/InventoryService.java diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/ReadService.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/ReadService.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/ReadService.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/ReadService.java diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeConnectorFactory.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeConnectorFactory.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeConnectorFactory.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeConnectorFactory.java diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeFactory.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeFactory.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeFactory.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/StubNodeFactory.java diff --git a/opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/TopologyServices.java b/opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/TopologyServices.java similarity index 100% rename from opendaylight/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/TopologyServices.java rename to opendaylight/adsal/protocol_plugins/stub/src/main/java/org/opendaylight/controller/protocol_plugins/stub/internal/TopologyServices.java diff --git a/opendaylight/routing/dijkstra_implementation/pom.xml b/opendaylight/adsal/routing/dijkstra_implementation/pom.xml similarity index 98% rename from opendaylight/routing/dijkstra_implementation/pom.xml rename to opendaylight/adsal/routing/dijkstra_implementation/pom.xml index b1b68b8cb7..7f429ff967 100644 --- a/opendaylight/routing/dijkstra_implementation/pom.xml +++ b/opendaylight/adsal/routing/dijkstra_implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight routing.dijkstra_implementation diff --git a/opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/Activator.java b/opendaylight/adsal/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/Activator.java similarity index 100% rename from opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/Activator.java rename to opendaylight/adsal/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/Activator.java diff --git a/opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementation.java b/opendaylight/adsal/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementation.java similarity index 100% rename from opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementation.java rename to opendaylight/adsal/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementation.java diff --git a/opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementationCLI.java b/opendaylight/adsal/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementationCLI.java similarity index 100% rename from opendaylight/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementationCLI.java rename to opendaylight/adsal/routing/dijkstra_implementation/src/main/java/org/opendaylight/controller/routing/dijkstra_implementation/internal/DijkstraImplementationCLI.java diff --git a/opendaylight/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/DijkstraTest.java b/opendaylight/adsal/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/DijkstraTest.java similarity index 100% rename from opendaylight/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/DijkstraTest.java rename to opendaylight/adsal/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/DijkstraTest.java diff --git a/opendaylight/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/MaxThruputTest.java b/opendaylight/adsal/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/MaxThruputTest.java similarity index 100% rename from opendaylight/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/MaxThruputTest.java rename to opendaylight/adsal/routing/dijkstra_implementation/src/test/java/org/opendaylight/controller/routing/dijkstra_implementation/MaxThruputTest.java diff --git a/opendaylight/sal/api/pom.xml b/opendaylight/adsal/sal/api/pom.xml similarity index 97% rename from opendaylight/sal/api/pom.xml rename to opendaylight/adsal/sal/api/pom.xml index 50ac61fccb..d5d6256bc9 100644 --- a/opendaylight/sal/api/pom.xml +++ b/opendaylight/adsal/sal/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight sal diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/ActionType.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/ActionType.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/ActionType.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/ActionType.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Controller.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Controller.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Controller.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Controller.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Drop.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Drop.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Drop.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Drop.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Enqueue.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Enqueue.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Enqueue.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Enqueue.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Flood.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Flood.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Flood.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Flood.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/FloodAll.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/FloodAll.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/FloodAll.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/FloodAll.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/HwPath.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/HwPath.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/HwPath.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/HwPath.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Loopback.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Loopback.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Loopback.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Loopback.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Output.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Output.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Output.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/Output.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PopVlan.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/PopVlan.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PopVlan.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/PopVlan.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/PushVlan.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlDst.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlDst.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlDst.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlDst.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlSrc.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlSrc.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlSrc.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlSrc.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlType.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlType.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlType.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetDlType.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNextHop.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNextHop.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNextHop.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNextHop.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwDst.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwDst.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwDst.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwDst.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwSrc.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwSrc.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwSrc.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwSrc.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwTos.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwTos.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwTos.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetNwTos.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpDst.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpDst.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpDst.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpDst.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpSrc.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpSrc.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpSrc.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetTpSrc.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanCfi.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanCfi.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanCfi.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanCfi.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanId.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanId.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanId.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanId.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanPcp.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanPcp.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanPcp.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SetVlanPcp.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SupportedFlowActions.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SupportedFlowActions.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SupportedFlowActions.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SupportedFlowActions.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SwPath.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SwPath.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/SwPath.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/action/SwPath.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRole.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRole.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRole.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRole.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRoleLevel.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRoleLevel.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRoleLevel.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AppRoleLevel.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AuthResultEnum.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AuthResultEnum.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AuthResultEnum.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/AuthResultEnum.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/IResourceAuthorization.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/IResourceAuthorization.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/IResourceAuthorization.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/IResourceAuthorization.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Privilege.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Privilege.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Privilege.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Privilege.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Resource.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Resource.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Resource.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/Resource.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/ResourceGroup.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/ResourceGroup.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/ResourceGroup.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/ResourceGroup.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/UserLevel.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/UserLevel.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/UserLevel.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/authorization/UserLevel.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Actions.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Actions.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Actions.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Actions.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/AdvertisedBandwidth.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/AdvertisedBandwidth.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/AdvertisedBandwidth.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/AdvertisedBandwidth.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Bandwidth.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Bandwidth.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Bandwidth.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Bandwidth.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Buffers.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Buffers.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Buffers.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Buffers.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Capabilities.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Capabilities.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Capabilities.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Capabilities.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ComponentActivatorAbstractBase.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ComponentActivatorAbstractBase.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ComponentActivatorAbstractBase.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ComponentActivatorAbstractBase.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Config.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Config.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Config.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Config.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ConstructionException.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ConstructionException.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ConstructionException.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ConstructionException.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerFlow.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerFlow.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerFlow.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerFlow.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerServiceDependency.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerServiceDependency.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerServiceDependency.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ContainerServiceDependency.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Description.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Description.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Description.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Description.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Edge.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Edge.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Edge.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Edge.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ForwardingMode.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ForwardingMode.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/ForwardingMode.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/ForwardingMode.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Host.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Host.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Host.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Host.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainer.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainer.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainer.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainer.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerAware.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerAware.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerAware.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerAware.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerListener.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerListener.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerListener.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerListener.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerLocalListener.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerLocalListener.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerLocalListener.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/IContainerLocalListener.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Latency.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Latency.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Latency.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Latency.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/MacAddress.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/MacAddress.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/MacAddress.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/MacAddress.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Name.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Name.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Name.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Name.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Node.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Node.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Node.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Node.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeConnector.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeConnector.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeConnector.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeConnector.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeTable.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeTable.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeTable.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/NodeTable.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Path.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Path.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Path.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Path.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/PeerBandwidth.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/PeerBandwidth.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/PeerBandwidth.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/PeerBandwidth.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/State.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/State.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/State.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/State.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/SupportedBandwidth.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/SupportedBandwidth.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/SupportedBandwidth.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/SupportedBandwidth.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tables.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tables.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tables.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tables.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tier.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tier.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tier.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/Tier.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/TimeStamp.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/TimeStamp.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/TimeStamp.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/TimeStamp.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/UpdateType.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/UpdateType.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/UpdateType.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/core/UpdateType.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/discovery/IDiscoveryService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/discovery/IDiscoveryService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/discovery/IDiscoveryService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/discovery/IDiscoveryService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/Flow.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/Flow.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/Flow.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/Flow.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerListener.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerListener.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerListener.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerListener.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IFlowProgrammerService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginInFlowProgrammerService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginInFlowProgrammerService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginInFlowProgrammerService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginInFlowProgrammerService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginOutFlowProgrammerService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginOutFlowProgrammerService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginOutFlowProgrammerService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/flowprogrammer/IPluginOutFlowProgrammerService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IInventoryService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IInventoryService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IInventoryService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IInventoryService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IListenInventoryUpdates.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IListenInventoryUpdates.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IListenInventoryUpdates.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IListenInventoryUpdates.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginInInventoryService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginInInventoryService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginInInventoryService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginInInventoryService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginOutInventoryService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginOutInventoryService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginOutInventoryService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/inventory/IPluginOutInventoryService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchField.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchField.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchField.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchField.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchType.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchType.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchType.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/MatchType.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlDst.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlDst.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlDst.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlDst.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlSrc.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlSrc.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlSrc.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlSrc.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlType.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlType.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlType.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlType.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlan.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlan.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlan.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlan.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlanPriority.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlanPriority.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlanPriority.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/DlVlanPriority.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/InPort.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/InPort.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/InPort.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/InPort.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/Match.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/Match.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/Match.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/Match.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/MatchField.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/MatchField.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/MatchField.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/MatchField.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwDst.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwDst.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwDst.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwDst.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwProtocol.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwProtocol.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwProtocol.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwProtocol.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwSrc.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwSrc.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwSrc.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwSrc.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwTos.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwTos.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwTos.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/NwTos.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpDst.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpDst.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpDst.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpDst.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpSrc.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpSrc.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpSrc.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/match/extensible/TpSrc.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ARP.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ARP.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ARP.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ARP.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BitBufferHelper.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BitBufferHelper.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BitBufferHelper.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BitBufferHelper.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BufferException.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BufferException.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BufferException.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/BufferException.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Ethernet.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Ethernet.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Ethernet.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Ethernet.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ICMP.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ICMP.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ICMP.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/ICMP.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IDataPacketService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IDataPacketService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IDataPacketService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IDataPacketService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IEEE8021Q.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IListenDataPacket.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IListenDataPacket.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IListenDataPacket.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IListenDataPacket.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginInDataPacketService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginInDataPacketService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginInDataPacketService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginInDataPacketService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginOutDataPacketService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginOutDataPacketService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginOutDataPacketService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPluginOutDataPacketService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/IPv4.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDP.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDP.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDP.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDP.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LinkEncap.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LinkEncap.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LinkEncap.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LinkEncap.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Packet.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Packet.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Packet.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/Packet.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketException.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketException.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketException.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketException.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketResult.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketResult.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketResult.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/PacketResult.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/RawPacket.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/RawPacket.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/RawPacket.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/RawPacket.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/TCP.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/TCP.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/TCP.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/TCP.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/UDP.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/UDP.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/UDP.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/UDP.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/EthernetAddress.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/EthernetAddress.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/EthernetAddress.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/EthernetAddress.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/FlowOnNode.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/FlowOnNode.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/FlowOnNode.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/FlowOnNode.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginInReadService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginInReadService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginInReadService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginInReadService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginOutReadService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginOutReadService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginOutReadService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IPluginOutReadService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadServiceListener.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadServiceListener.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadServiceListener.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/IReadServiceListener.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeConnectorStatistics.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeConnectorStatistics.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeConnectorStatistics.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeConnectorStatistics.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeDescription.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeDescription.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeDescription.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeDescription.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeTableStatistics.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeTableStatistics.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeTableStatistics.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/reader/NodeTableStatistics.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IListenRoutingUpdates.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IListenRoutingUpdates.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IListenRoutingUpdates.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IListenRoutingUpdates.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IRouting.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IRouting.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IRouting.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/routing/IRouting.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IListenTopoUpdates.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IListenTopoUpdates.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IListenTopoUpdates.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IListenTopoUpdates.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginInTopologyService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginInTopologyService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginInTopologyService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginInTopologyService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginOutTopologyService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginOutTopologyService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginOutTopologyService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/IPluginOutTopologyService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/ITopologyService.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/ITopologyService.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/ITopologyService.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/ITopologyService.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/TopoEdgeUpdate.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/TopoEdgeUpdate.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/topology/TopoEdgeUpdate.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/topology/TopoEdgeUpdate.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ConfigurationObject.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ConfigurationObject.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ConfigurationObject.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ConfigurationObject.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Direction.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Direction.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Direction.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Direction.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/EtherTypes.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/EtherTypes.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/EtherTypes.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/EtherTypes.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/FilterIterator.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/FilterIterator.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/FilterIterator.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/FilterIterator.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GUIField.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GUIField.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GUIField.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GUIField.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GlobalConstants.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GlobalConstants.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GlobalConstants.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/GlobalConstants.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/HexEncode.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/HexEncode.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/HexEncode.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/HexEncode.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IListener.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IListener.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IListener.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IListener.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeConnectorFactory.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeConnectorFactory.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeConnectorFactory.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeConnectorFactory.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeFactory.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeFactory.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeFactory.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/INodeFactory.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IObjectReader.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IObjectReader.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IObjectReader.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IObjectReader.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IPProtocols.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IPProtocols.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IPProtocols.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IPProtocols.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IterableIterator.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IterableIterator.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IterableIterator.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/IterableIterator.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ListenerDispatcher.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ListenerDispatcher.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ListenerDispatcher.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ListenerDispatcher.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/MultiIterator.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/MultiIterator.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/MultiIterator.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/MultiIterator.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeConnectorCreator.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeConnectorCreator.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeConnectorCreator.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeConnectorCreator.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeCreator.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeCreator.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeCreator.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeCreator.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeTableCreator.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeTableCreator.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeTableCreator.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NodeTableCreator.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectReader.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectReader.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectReader.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectReader.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectWriter.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectWriter.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectWriter.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ObjectWriter.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ReadFromFile.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ReadFromFile.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ReadFromFile.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ReadFromFile.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ServiceHelper.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ServiceHelper.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ServiceHelper.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/ServiceHelper.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/SingletonTask.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/SingletonTask.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/SingletonTask.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/SingletonTask.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Status.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Status.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Status.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/Status.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/StatusCode.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/StatusCode.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/StatusCode.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/StatusCode.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/TierHelper.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/TierHelper.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/TierHelper.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/TierHelper.java diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/WriteToFile.java b/opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/WriteToFile.java similarity index 100% rename from opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/WriteToFile.java rename to opendaylight/adsal/sal/api/src/main/java/org/opendaylight/controller/sal/utils/WriteToFile.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/action/ActionTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/action/ActionTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/action/ActionTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/action/ActionTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/authorization/AuthorizationTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/authorization/AuthorizationTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/authorization/AuthorizationTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/authorization/AuthorizationTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/EdgeTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/EdgeTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/EdgeTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/EdgeTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeConnectorTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeConnectorTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeConnectorTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeConnectorTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTableTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTableTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTableTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTableTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/NodeTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/PathTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/PathTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/PathTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/PathTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/PropertyTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/PropertyTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/core/PropertyTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/core/PropertyTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/flowprogrammer/FlowTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/flowprogrammer/FlowTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/flowprogrammer/FlowTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/flowprogrammer/FlowTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchExtensibleTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchExtensibleTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchExtensibleTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchExtensibleTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/match/MatchTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ARPTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ARPTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ARPTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ARPTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/EthernetTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/EthernetTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/EthernetTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/EthernetTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ICMPTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ICMPTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ICMPTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/ICMPTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IEEE8021QTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IEEE8021QTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IEEE8021QTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IEEE8021QTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IPv4Test.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IPv4Test.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IPv4Test.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/IPv4Test.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/PacketTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/PacketTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/PacketTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/PacketTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/TCPTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/TCPTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/TCPTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/TCPTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/UDPTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/UDPTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/UDPTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/UDPTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/address/EthernetAddressTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/address/EthernetAddressTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/packet/address/EthernetAddressTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/packet/address/EthernetAddressTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/FlowOnNodeTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/FlowOnNodeTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/FlowOnNodeTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/FlowOnNodeTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeConnectorStatisticsTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeConnectorStatisticsTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeConnectorStatisticsTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeConnectorStatisticsTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeDescriptionTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeDescriptionTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeDescriptionTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeDescriptionTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeTableStatisticsTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeTableStatisticsTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeTableStatisticsTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/reader/NodeTableStatisticsTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/EtherTypesTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/EtherTypesTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/EtherTypesTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/EtherTypesTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/HexEncodeTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/HexEncodeTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/HexEncodeTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/HexEncodeTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/IPProtocolsTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/IPProtocolsTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/IPProtocolsTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/IPProtocolsTest.java diff --git a/opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/NetUtilsTest.java b/opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/NetUtilsTest.java similarity index 100% rename from opendaylight/sal/api/src/test/java/org/opendaylight/controller/sal/utils/NetUtilsTest.java rename to opendaylight/adsal/sal/api/src/test/java/org/opendaylight/controller/sal/utils/NetUtilsTest.java diff --git a/opendaylight/sal/connection/api/pom.xml b/opendaylight/adsal/sal/connection/api/pom.xml similarity index 96% rename from opendaylight/sal/connection/api/pom.xml rename to opendaylight/adsal/sal/connection/api/pom.xml index 780631791d..fe07526960 100644 --- a/opendaylight/sal/connection/api/pom.xml +++ b/opendaylight/adsal/sal/connection/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight sal.connection diff --git a/opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionConstants.java b/opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionConstants.java similarity index 100% rename from opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionConstants.java rename to opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionConstants.java diff --git a/opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionLocality.java b/opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionLocality.java similarity index 100% rename from opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionLocality.java rename to opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/ConnectionLocality.java diff --git a/opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionListener.java b/opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionListener.java similarity index 100% rename from opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionListener.java rename to opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionListener.java diff --git a/opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionService.java b/opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionService.java similarity index 100% rename from opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionService.java rename to opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IConnectionService.java diff --git a/opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginInConnectionService.java b/opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginInConnectionService.java similarity index 100% rename from opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginInConnectionService.java rename to opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginInConnectionService.java diff --git a/opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginOutConnectionService.java b/opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginOutConnectionService.java similarity index 100% rename from opendaylight/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginOutConnectionService.java rename to opendaylight/adsal/sal/connection/api/src/main/java/org/opendaylight/controller/sal/connection/IPluginOutConnectionService.java diff --git a/opendaylight/sal/connection/implementation/pom.xml b/opendaylight/adsal/sal/connection/implementation/pom.xml similarity index 97% rename from opendaylight/sal/connection/implementation/pom.xml rename to opendaylight/adsal/sal/connection/implementation/pom.xml index a7d5dfafb9..b3c99daee3 100644 --- a/opendaylight/sal/connection/implementation/pom.xml +++ b/opendaylight/adsal/sal/connection/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight sal.connection.implementation diff --git a/opendaylight/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/Activator.java b/opendaylight/adsal/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/Activator.java similarity index 100% rename from opendaylight/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/Activator.java rename to opendaylight/adsal/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/Activator.java diff --git a/opendaylight/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/ConnectionService.java b/opendaylight/adsal/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/ConnectionService.java similarity index 97% rename from opendaylight/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/ConnectionService.java rename to opendaylight/adsal/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/ConnectionService.java index 7bd15ff7f4..5a637b7999 100644 --- a/opendaylight/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/ConnectionService.java +++ b/opendaylight/adsal/sal/connection/implementation/src/main/java/org/opendaylight/controller/sal/connection/implementation/internal/ConnectionService.java @@ -11,7 +11,6 @@ package org.opendaylight.controller.sal.connection.implementation.internal; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; - import org.opendaylight.controller.sal.connection.ConnectionConstants; import org.opendaylight.controller.sal.connection.ConnectionLocality; import org.opendaylight.controller.sal.connection.IConnectionListener; @@ -32,7 +31,7 @@ public class ConnectionService implements IPluginOutConnectionService, IConnecti private ConcurrentMap pluginService = new ConcurrentHashMap(); - void setPluginService (Map props, IPluginInConnectionService s) { + void setPluginService (Map props, IPluginInConnectionService s) { String type = null; Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString()); if (value instanceof String) { @@ -46,7 +45,7 @@ public class ConnectionService implements IPluginOutConnectionService, IConnecti } } - void unsetPluginService(Map props, IPluginInConnectionService s) { + void unsetPluginService(Map props, IPluginInConnectionService s) { String type = null; Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString()); diff --git a/opendaylight/sal/implementation/pom.xml b/opendaylight/adsal/sal/implementation/pom.xml similarity index 97% rename from opendaylight/sal/implementation/pom.xml rename to opendaylight/adsal/sal/implementation/pom.xml index 3f1aa86be8..bce6e3b547 100644 --- a/opendaylight/sal/implementation/pom.xml +++ b/opendaylight/adsal/sal/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight sal.implementation diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Activator.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Activator.java similarity index 100% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Activator.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Activator.java diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/DataPacketService.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/DataPacketService.java similarity index 96% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/DataPacketService.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/DataPacketService.java index 0c9ebab8c3..6f23cc735a 100644 --- a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/DataPacketService.java +++ b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/DataPacketService.java @@ -204,23 +204,22 @@ public class DataPacketService implements IPluginOutDataPacketService, } } - void setPluginInDataService(Map props, IPluginInDataPacketService s) { + void setPluginInDataService(Map props, IPluginInDataPacketService s) { ProtocolService.set(this.pluginInDataService, props, s, logger); } - void unsetPluginInDataService(Map props, IPluginInDataPacketService s) { + void unsetPluginInDataService(Map props, IPluginInDataPacketService s) { ProtocolService.unset(this.pluginInDataService, props, s, logger); } - void setListenDataPacket(Map props, IListenDataPacket s) { + void setListenDataPacket(Map props, IListenDataPacket s) { if (this.listenDataPacket == null || this.indexDataPacket == null) { logger.error("data structure to store data is NULL"); return; } logger.trace("Received setListenDataPacket request"); - for (Object e : props.entrySet()) { - Map.Entry entry = (Map.Entry) e; - logger.trace("Prop key:({}) value:({})",entry.getKey(), entry.getValue()); + for (Map.Entry e : props.entrySet()) { + logger.trace("Prop key:({}) value:({})",e.getKey(), e.getValue()); } String listenerName = null; @@ -295,15 +294,14 @@ public class DataPacketService implements IPluginOutDataPacketService, } } - void unsetListenDataPacket(Map props, IListenDataPacket s) { + void unsetListenDataPacket(Map props, IListenDataPacket s) { if (this.listenDataPacket == null || this.indexDataPacket == null) { logger.error("data structure to store data is NULL"); return; } logger.trace("Received UNsetListenDataPacket request"); - for (Object e : props.entrySet()) { - Map.Entry entry = (Map.Entry) e; - logger.trace("Prop key:({}) value:({})",entry.getKey(), entry.getValue()); + for (Map.Entry e : props.entrySet()) { + logger.trace("Prop key:({}) value:({})",e.getKey(), e.getValue()); } String listenerName = null; diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/FlowProgrammerService.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/FlowProgrammerService.java similarity index 100% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/FlowProgrammerService.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/FlowProgrammerService.java diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Inventory.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Inventory.java similarity index 100% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Inventory.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Inventory.java diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ProtocolService.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ProtocolService.java similarity index 99% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ProtocolService.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ProtocolService.java index e9dc2ad0ee..c0b61278a6 100644 --- a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ProtocolService.java +++ b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ProtocolService.java @@ -195,7 +195,7 @@ public final class ProtocolService { return false; } - ProtocolService plugin = (ProtocolService)o; + ProtocolService plugin = (ProtocolService)o; return (service.equals(plugin.service) && priority == plugin.priority); } diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java similarity index 100% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/ReadService.java diff --git a/opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Topology.java b/opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Topology.java similarity index 100% rename from opendaylight/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Topology.java rename to opendaylight/adsal/sal/implementation/src/main/java/org/opendaylight/controller/sal/implementation/internal/Topology.java diff --git a/opendaylight/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/DataPacketServiceTest.java b/opendaylight/adsal/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/DataPacketServiceTest.java similarity index 100% rename from opendaylight/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/DataPacketServiceTest.java rename to opendaylight/adsal/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/DataPacketServiceTest.java diff --git a/opendaylight/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/ProtocolServiceTest.java b/opendaylight/adsal/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/ProtocolServiceTest.java similarity index 100% rename from opendaylight/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/ProtocolServiceTest.java rename to opendaylight/adsal/sal/implementation/src/test/java/org/opendaylight/controller/sal/implementation/ProtocolServiceTest.java diff --git a/opendaylight/sal/networkconfiguration/api/pom.xml b/opendaylight/adsal/sal/networkconfiguration/api/pom.xml similarity index 96% rename from opendaylight/sal/networkconfiguration/api/pom.xml rename to opendaylight/adsal/sal/networkconfiguration/api/pom.xml index 4b18349745..bbeb2969d6 100644 --- a/opendaylight/sal/networkconfiguration/api/pom.xml +++ b/opendaylight/adsal/sal/networkconfiguration/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight sal.networkconfiguration diff --git a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java b/opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java similarity index 100% rename from opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java rename to opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java diff --git a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/ConfigConstants.java b/opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/ConfigConstants.java similarity index 100% rename from opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/ConfigConstants.java rename to opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/ConfigConstants.java diff --git a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IBridgeDomainConfigService.java b/opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IBridgeDomainConfigService.java similarity index 100% rename from opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IBridgeDomainConfigService.java rename to opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IBridgeDomainConfigService.java diff --git a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java b/opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java similarity index 100% rename from opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java rename to opendaylight/adsal/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java diff --git a/opendaylight/sal/networkconfiguration/implementation/pom.xml b/opendaylight/adsal/sal/networkconfiguration/implementation/pom.xml similarity index 96% rename from opendaylight/sal/networkconfiguration/implementation/pom.xml rename to opendaylight/adsal/sal/networkconfiguration/implementation/pom.xml index bf476a924a..df8c6d2169 100644 --- a/opendaylight/sal/networkconfiguration/implementation/pom.xml +++ b/opendaylight/adsal/sal/networkconfiguration/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight sal.networkconfiguration.implementation diff --git a/opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java b/opendaylight/adsal/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java similarity index 100% rename from opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java rename to opendaylight/adsal/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java diff --git a/opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/internal/Activator.java b/opendaylight/adsal/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/internal/Activator.java similarity index 100% rename from opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/internal/Activator.java rename to opendaylight/adsal/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/internal/Activator.java diff --git a/opendaylight/samples/clustersession/pom.xml b/opendaylight/adsal/samples/clustersession/pom.xml similarity index 98% rename from opendaylight/samples/clustersession/pom.xml rename to opendaylight/adsal/samples/clustersession/pom.xml index 10ae20ca63..2a5e07af84 100644 --- a/opendaylight/samples/clustersession/pom.xml +++ b/opendaylight/adsal/samples/clustersession/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight org.opendaylight.controller clustersession diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSession.java b/opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSession.java similarity index 100% rename from opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSession.java rename to opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSession.java diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionData.java b/opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionData.java similarity index 100% rename from opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionData.java rename to opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionData.java diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionManager.java b/opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionManager.java similarity index 100% rename from opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionManager.java rename to opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionManager.java diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionUtil.java b/opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionUtil.java similarity index 100% rename from opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionUtil.java rename to opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionUtil.java diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/impl/ClusterSessionServiceImpl.java b/opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/impl/ClusterSessionServiceImpl.java similarity index 100% rename from opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/impl/ClusterSessionServiceImpl.java rename to opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/impl/ClusterSessionServiceImpl.java diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/service/ClusterSessionService.java b/opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/service/ClusterSessionService.java similarity index 100% rename from opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/service/ClusterSessionService.java rename to opendaylight/adsal/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/service/ClusterSessionService.java diff --git a/opendaylight/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionManagerTest.java b/opendaylight/adsal/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionManagerTest.java similarity index 100% rename from opendaylight/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionManagerTest.java rename to opendaylight/adsal/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionManagerTest.java diff --git a/opendaylight/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionServiceImplTest.java b/opendaylight/adsal/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionServiceImplTest.java similarity index 100% rename from opendaylight/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionServiceImplTest.java rename to opendaylight/adsal/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionServiceImplTest.java diff --git a/opendaylight/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionUtilTest.java b/opendaylight/adsal/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionUtilTest.java similarity index 100% rename from opendaylight/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionUtilTest.java rename to opendaylight/adsal/samples/clustersession/src/test/java/org/opendaylight/controller/clustersession/ClusterSessionUtilTest.java diff --git a/opendaylight/samples/loadbalancer/pom.xml b/opendaylight/adsal/samples/loadbalancer/pom.xml similarity index 98% rename from opendaylight/samples/loadbalancer/pom.xml rename to opendaylight/adsal/samples/loadbalancer/pom.xml index a7b41096d7..e1b480771b 100644 --- a/opendaylight/samples/loadbalancer/pom.xml +++ b/opendaylight/adsal/samples/loadbalancer/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight samples.loadbalancer diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/ConfigManager.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/ConfigManager.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/ConfigManager.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/ConfigManager.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/IConfigManager.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/IConfigManager.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/IConfigManager.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/IConfigManager.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBConst.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBConst.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBConst.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBConst.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBUtil.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBUtil.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBUtil.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/LBUtil.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Client.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Client.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Client.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Client.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Pool.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Pool.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Pool.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/Pool.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/PoolMember.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/PoolMember.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/PoolMember.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/PoolMember.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/VIP.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/VIP.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/VIP.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/VIP.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/Activator.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/Activator.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/Activator.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/Activator.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerService.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerService.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerService.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerService.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/ILoadBalancingPolicy.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/ILoadBalancingPolicy.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/ILoadBalancingPolicy.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/ILoadBalancingPolicy.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RandomLBPolicy.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RandomLBPolicy.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RandomLBPolicy.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RandomLBPolicy.java diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RoundRobinLBPolicy.java b/opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RoundRobinLBPolicy.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RoundRobinLBPolicy.java rename to opendaylight/adsal/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/policies/RoundRobinLBPolicy.java diff --git a/opendaylight/samples/loadbalancer/src/test/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerTest.java b/opendaylight/adsal/samples/loadbalancer/src/test/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerTest.java similarity index 100% rename from opendaylight/samples/loadbalancer/src/test/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerTest.java rename to opendaylight/adsal/samples/loadbalancer/src/test/java/org/opendaylight/controller/samples/loadbalancer/internal/LoadBalancerTest.java diff --git a/opendaylight/samples/northbound/loadbalancer/enunciate.xml b/opendaylight/adsal/samples/northbound/loadbalancer/enunciate.xml similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/enunciate.xml rename to opendaylight/adsal/samples/northbound/loadbalancer/enunciate.xml diff --git a/opendaylight/samples/northbound/loadbalancer/pom.xml b/opendaylight/adsal/samples/northbound/loadbalancer/pom.xml similarity index 98% rename from opendaylight/samples/northbound/loadbalancer/pom.xml rename to opendaylight/adsal/samples/northbound/loadbalancer/pom.xml index 18aa4e1d62..e63e992b3f 100644 --- a/opendaylight/samples/northbound/loadbalancer/pom.xml +++ b/opendaylight/adsal/samples/northbound/loadbalancer/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../../commons/opendaylight + ../../../../commons/opendaylight samples.loadbalancer.northbound diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/LoadBalancerNorthbound.java b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/LoadBalancerNorthbound.java similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/LoadBalancerNorthbound.java rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/LoadBalancerNorthbound.java diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/NBConst.java b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/NBConst.java similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/NBConst.java rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/NBConst.java diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/Pools.java b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/Pools.java similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/Pools.java rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/Pools.java diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/VIPs.java b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/VIPs.java similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/VIPs.java rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/northbound/VIPs.java diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/samples/northbound/loadbalancer/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/samples/northbound/loadbalancer/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/samples/northbound/loadbalancer/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/samples/simpleforwarding/pom.xml b/opendaylight/adsal/samples/simpleforwarding/pom.xml similarity index 98% rename from opendaylight/samples/simpleforwarding/pom.xml rename to opendaylight/adsal/samples/simpleforwarding/pom.xml index 50410f85af..4d7af2b8fd 100644 --- a/opendaylight/samples/simpleforwarding/pom.xml +++ b/opendaylight/adsal/samples/simpleforwarding/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight samples.simpleforwarding diff --git a/opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/HostNodePair.java b/opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/HostNodePair.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/HostNodePair.java rename to opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/HostNodePair.java diff --git a/opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastHandler.java b/opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastHandler.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastHandler.java rename to opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastHandler.java diff --git a/opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastPortSelector.java b/opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastPortSelector.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastPortSelector.java rename to opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/IBroadcastPortSelector.java diff --git a/opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/Activator.java b/opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/Activator.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/Activator.java rename to opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/Activator.java diff --git a/opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleBroadcastHandlerImpl.java b/opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleBroadcastHandlerImpl.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleBroadcastHandlerImpl.java rename to opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleBroadcastHandlerImpl.java diff --git a/opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleForwardingImpl.java b/opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleForwardingImpl.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleForwardingImpl.java rename to opendaylight/adsal/samples/simpleforwarding/src/main/java/org/opendaylight/controller/samples/simpleforwarding/internal/SimpleForwardingImpl.java diff --git a/opendaylight/samples/simpleforwarding/src/test/java/org/opendaylight/controller/samples/simpleforwarding/internal/HostSwitchTest.java b/opendaylight/adsal/samples/simpleforwarding/src/test/java/org/opendaylight/controller/samples/simpleforwarding/internal/HostSwitchTest.java similarity index 100% rename from opendaylight/samples/simpleforwarding/src/test/java/org/opendaylight/controller/samples/simpleforwarding/internal/HostSwitchTest.java rename to opendaylight/adsal/samples/simpleforwarding/src/test/java/org/opendaylight/controller/samples/simpleforwarding/internal/HostSwitchTest.java diff --git a/opendaylight/security/pom.xml b/opendaylight/adsal/security/pom.xml similarity index 97% rename from opendaylight/security/pom.xml rename to opendaylight/adsal/security/pom.xml index 49889de7f1..436fda24da 100644 --- a/opendaylight/security/pom.xml +++ b/opendaylight/adsal/security/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../commons/opendaylight + ../../commons/opendaylight security diff --git a/opendaylight/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java b/opendaylight/adsal/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java similarity index 100% rename from opendaylight/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java rename to opendaylight/adsal/security/src/main/java/org/opendaylight/controller/security/ControllerCustomRealm.java diff --git a/opendaylight/statisticsmanager/api/pom.xml b/opendaylight/adsal/statisticsmanager/api/pom.xml similarity index 96% rename from opendaylight/statisticsmanager/api/pom.xml rename to opendaylight/adsal/statisticsmanager/api/pom.xml index 23edfa3991..00e23e0f5a 100644 --- a/opendaylight/statisticsmanager/api/pom.xml +++ b/opendaylight/adsal/statisticsmanager/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight statisticsmanager diff --git a/opendaylight/statisticsmanager/api/src/main/java/org/opendaylight/controller/statisticsmanager/IStatisticsManager.java b/opendaylight/adsal/statisticsmanager/api/src/main/java/org/opendaylight/controller/statisticsmanager/IStatisticsManager.java similarity index 100% rename from opendaylight/statisticsmanager/api/src/main/java/org/opendaylight/controller/statisticsmanager/IStatisticsManager.java rename to opendaylight/adsal/statisticsmanager/api/src/main/java/org/opendaylight/controller/statisticsmanager/IStatisticsManager.java diff --git a/opendaylight/statisticsmanager/implementation/pom.xml b/opendaylight/adsal/statisticsmanager/implementation/pom.xml similarity index 98% rename from opendaylight/statisticsmanager/implementation/pom.xml rename to opendaylight/adsal/statisticsmanager/implementation/pom.xml index 08db43a0f0..aa009fbf23 100644 --- a/opendaylight/statisticsmanager/implementation/pom.xml +++ b/opendaylight/adsal/statisticsmanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight statisticsmanager.implementation diff --git a/opendaylight/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/Activator.java b/opendaylight/adsal/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/Activator.java similarity index 100% rename from opendaylight/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/Activator.java rename to opendaylight/adsal/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/Activator.java diff --git a/opendaylight/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManager.java b/opendaylight/adsal/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManager.java similarity index 100% rename from opendaylight/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManager.java rename to opendaylight/adsal/statisticsmanager/implementation/src/main/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManager.java diff --git a/opendaylight/statisticsmanager/implementation/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerTest.java b/opendaylight/adsal/statisticsmanager/implementation/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerTest.java similarity index 100% rename from opendaylight/statisticsmanager/implementation/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerTest.java rename to opendaylight/adsal/statisticsmanager/implementation/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerTest.java diff --git a/opendaylight/statisticsmanager/integrationtest/pom.xml b/opendaylight/adsal/statisticsmanager/integrationtest/pom.xml similarity index 95% rename from opendaylight/statisticsmanager/integrationtest/pom.xml rename to opendaylight/adsal/statisticsmanager/integrationtest/pom.xml index 22696b71e6..857921f14b 100644 --- a/opendaylight/statisticsmanager/integrationtest/pom.xml +++ b/opendaylight/adsal/statisticsmanager/integrationtest/pom.xml @@ -11,9 +11,9 @@ statisticsmanager.integrationtest 0.5.0-SNAPSHOT - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec - ../implementation/target/jacoco.exec + ../../implementation/target/jacoco.exec @@ -141,7 +141,7 @@ org.jacoco jacoco-maven-plugin - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec org.opendaylight.controller.* diff --git a/opendaylight/statisticsmanager/integrationtest/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerIT.java b/opendaylight/adsal/statisticsmanager/integrationtest/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerIT.java similarity index 100% rename from opendaylight/statisticsmanager/integrationtest/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerIT.java rename to opendaylight/adsal/statisticsmanager/integrationtest/src/test/java/org/opendaylight/controller/statisticsmanager/internal/StatisticsManagerIT.java diff --git a/opendaylight/statisticsmanager/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/statisticsmanager/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/statisticsmanager/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/statisticsmanager/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/switchmanager/api/pom.xml b/opendaylight/adsal/switchmanager/api/pom.xml similarity index 98% rename from opendaylight/switchmanager/api/pom.xml rename to opendaylight/adsal/switchmanager/api/pom.xml index a29341ee6f..3c23e29131 100644 --- a/opendaylight/switchmanager/api/pom.xml +++ b/opendaylight/adsal/switchmanager/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight switchmanager diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/IInventoryListener.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/IInventoryListener.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/IInventoryListener.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/IInventoryListener.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISpanAware.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISpanAware.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISpanAware.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISpanAware.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManagerAware.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManagerAware.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManagerAware.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManagerAware.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SpanConfig.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Subnet.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SubnetConfig.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Switch.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Switch.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Switch.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/Switch.java diff --git a/opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java b/opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java similarity index 100% rename from opendaylight/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java rename to opendaylight/adsal/switchmanager/api/src/main/java/org/opendaylight/controller/switchmanager/SwitchConfig.java diff --git a/opendaylight/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetConfigTest.java b/opendaylight/adsal/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetConfigTest.java similarity index 100% rename from opendaylight/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetConfigTest.java rename to opendaylight/adsal/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetConfigTest.java diff --git a/opendaylight/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetTest.java b/opendaylight/adsal/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetTest.java similarity index 100% rename from opendaylight/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetTest.java rename to opendaylight/adsal/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SubnetTest.java diff --git a/opendaylight/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SwitchTest.java b/opendaylight/adsal/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SwitchTest.java similarity index 100% rename from opendaylight/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SwitchTest.java rename to opendaylight/adsal/switchmanager/api/src/test/java/org/opendaylight/controller/switchmanager/SwitchTest.java diff --git a/opendaylight/switchmanager/implementation/pom.xml b/opendaylight/adsal/switchmanager/implementation/pom.xml similarity index 98% rename from opendaylight/switchmanager/implementation/pom.xml rename to opendaylight/adsal/switchmanager/implementation/pom.xml index fe7a0c0bcb..911d5dd71f 100644 --- a/opendaylight/switchmanager/implementation/pom.xml +++ b/opendaylight/adsal/switchmanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight switchmanager.implementation diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java b/opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java similarity index 100% rename from opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java rename to opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/Activator.java diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/ControllerProperties.java b/opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/ControllerProperties.java similarity index 100% rename from opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/ControllerProperties.java rename to opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/ControllerProperties.java diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/IControllerProperties.java b/opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/IControllerProperties.java similarity index 100% rename from opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/IControllerProperties.java rename to opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/IControllerProperties.java diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManager.java b/opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManager.java similarity index 100% rename from opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManager.java rename to opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManager.java diff --git a/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerCLI.java b/opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerCLI.java similarity index 100% rename from opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerCLI.java rename to opendaylight/adsal/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerCLI.java diff --git a/opendaylight/switchmanager/implementation/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerTest.java b/opendaylight/adsal/switchmanager/implementation/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerTest.java similarity index 100% rename from opendaylight/switchmanager/implementation/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerTest.java rename to opendaylight/adsal/switchmanager/implementation/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerTest.java diff --git a/opendaylight/switchmanager/integrationtest/pom.xml b/opendaylight/adsal/switchmanager/integrationtest/pom.xml similarity index 94% rename from opendaylight/switchmanager/integrationtest/pom.xml rename to opendaylight/adsal/switchmanager/integrationtest/pom.xml index 708ac32763..158cd2ca82 100644 --- a/opendaylight/switchmanager/integrationtest/pom.xml +++ b/opendaylight/adsal/switchmanager/integrationtest/pom.xml @@ -11,9 +11,9 @@ switchmanager.integrationtest 0.5.0-SNAPSHOT - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec - ../implementation/target/jacoco.exec + ../../implementation/target/jacoco.exec @@ -118,7 +118,7 @@ org.jacoco jacoco-maven-plugin - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec org.opendaylight.controller.* diff --git a/opendaylight/switchmanager/integrationtest/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerIT.java b/opendaylight/adsal/switchmanager/integrationtest/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerIT.java similarity index 100% rename from opendaylight/switchmanager/integrationtest/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerIT.java rename to opendaylight/adsal/switchmanager/integrationtest/src/test/java/org/opendaylight/controller/switchmanager/internal/SwitchManagerIT.java diff --git a/opendaylight/switchmanager/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/switchmanager/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/switchmanager/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/switchmanager/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/topologymanager/implementation/pom.xml b/opendaylight/adsal/topologymanager/implementation/pom.xml similarity index 96% rename from opendaylight/topologymanager/implementation/pom.xml rename to opendaylight/adsal/topologymanager/implementation/pom.xml index 430dfca74d..c7a6444e1e 100644 --- a/opendaylight/topologymanager/implementation/pom.xml +++ b/opendaylight/adsal/topologymanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight topologymanager @@ -44,7 +44,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManager.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManager.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManager.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManager.java diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerAware.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerAware.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerAware.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerAware.java diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerClusterWideAware.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerClusterWideAware.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerClusterWideAware.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerClusterWideAware.java diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerShell.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerShell.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerShell.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/ITopologyManagerShell.java diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/TopologyUserLinkConfig.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/TopologyUserLinkConfig.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/TopologyUserLinkConfig.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/TopologyUserLinkConfig.java diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/Activator.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/Activator.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/Activator.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/Activator.java diff --git a/opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java b/opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java rename to opendaylight/adsal/topologymanager/implementation/src/main/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImpl.java diff --git a/opendaylight/topologymanager/implementation/src/test/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImplTest.java b/opendaylight/adsal/topologymanager/implementation/src/test/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImplTest.java similarity index 100% rename from opendaylight/topologymanager/implementation/src/test/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImplTest.java rename to opendaylight/adsal/topologymanager/implementation/src/test/java/org/opendaylight/controller/topologymanager/internal/TopologyManagerImplTest.java diff --git a/opendaylight/topologymanager/integrationtest/pom.xml b/opendaylight/adsal/topologymanager/integrationtest/pom.xml similarity index 93% rename from opendaylight/topologymanager/integrationtest/pom.xml rename to opendaylight/adsal/topologymanager/integrationtest/pom.xml index ce6422c8c1..028e775ee0 100644 --- a/opendaylight/topologymanager/integrationtest/pom.xml +++ b/opendaylight/adsal/topologymanager/integrationtest/pom.xml @@ -11,9 +11,9 @@ topologymanager.integrationtest 0.5.0-SNAPSHOT - ../implementaiton/target/jacoco-it.exec + ../../implementaiton/target/jacoco-it.exec - ../implementation/target/jacoco.exec + ../../implementation/target/jacoco.exec @@ -92,7 +92,7 @@ org.jacoco jacoco-maven-plugin - ../implementation/target/jacoco-it.exec + ../../implementation/target/jacoco-it.exec org.opendaylight.controller.* diff --git a/opendaylight/topologymanager/integrationtest/src/test/java/org/opendaylight/controller/topologymanager/TopologyManagerIT.java b/opendaylight/adsal/topologymanager/integrationtest/src/test/java/org/opendaylight/controller/topologymanager/TopologyManagerIT.java similarity index 100% rename from opendaylight/topologymanager/integrationtest/src/test/java/org/opendaylight/controller/topologymanager/TopologyManagerIT.java rename to opendaylight/adsal/topologymanager/integrationtest/src/test/java/org/opendaylight/controller/topologymanager/TopologyManagerIT.java diff --git a/opendaylight/topologymanager/integrationtest/src/test/resources/logback.xml b/opendaylight/adsal/topologymanager/integrationtest/src/test/resources/logback.xml similarity index 100% rename from opendaylight/topologymanager/integrationtest/src/test/resources/logback.xml rename to opendaylight/adsal/topologymanager/integrationtest/src/test/resources/logback.xml diff --git a/opendaylight/topologymanager/shell/pom.xml b/opendaylight/adsal/topologymanager/shell/pom.xml similarity index 90% rename from opendaylight/topologymanager/shell/pom.xml rename to opendaylight/adsal/topologymanager/shell/pom.xml index 2de8c5c26c..a5b21f6224 100644 --- a/opendaylight/topologymanager/shell/pom.xml +++ b/opendaylight/adsal/topologymanager/shell/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight topologymanager.shell ${topologymanager.shell.version} @@ -27,7 +27,6 @@ org.opendaylight.controller topologymanager - ${topologymanager.version} @@ -36,7 +35,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} org.apache.felix.service.command, diff --git a/opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/AddUserLink.java b/opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/AddUserLink.java similarity index 100% rename from opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/AddUserLink.java rename to opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/AddUserLink.java diff --git a/opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/DeleteUserLink.java b/opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/DeleteUserLink.java similarity index 100% rename from opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/DeleteUserLink.java rename to opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/DeleteUserLink.java diff --git a/opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintNodeEdges.java b/opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintNodeEdges.java similarity index 100% rename from opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintNodeEdges.java rename to opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintNodeEdges.java diff --git a/opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintUserLink.java b/opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintUserLink.java similarity index 100% rename from opendaylight/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintUserLink.java rename to opendaylight/adsal/topologymanager/shell/src/main/java/org/opendaylight/controller/topologymanager/shell/PrintUserLink.java diff --git a/opendaylight/topologymanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/opendaylight/adsal/topologymanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml similarity index 100% rename from opendaylight/topologymanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml rename to opendaylight/adsal/topologymanager/shell/src/main/resources/OSGI-INF/blueprint/blueprint.xml diff --git a/opendaylight/usermanager/api/pom.xml b/opendaylight/adsal/usermanager/api/pom.xml similarity index 98% rename from opendaylight/usermanager/api/pom.xml rename to opendaylight/adsal/usermanager/api/pom.xml index e21337242a..76f293b197 100644 --- a/opendaylight/usermanager/api/pom.xml +++ b/opendaylight/adsal/usermanager/api/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight usermanager diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthResponse.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthResponse.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthResponse.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthResponse.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthenticatedUser.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthenticatedUser.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthenticatedUser.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthenticatedUser.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthorizationConfig.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthorizationConfig.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthorizationConfig.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/AuthorizationConfig.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IAAAProvider.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IAAAProvider.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IAAAProvider.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IAAAProvider.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ISessionManager.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ISessionManager.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ISessionManager.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ISessionManager.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IUserManager.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IUserManager.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IUserManager.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/IUserManager.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ODLUserLevel.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ODLUserLevel.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ODLUserLevel.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ODLUserLevel.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ServerConfig.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ServerConfig.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ServerConfig.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/ServerConfig.java diff --git a/opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/UserConfig.java b/opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/UserConfig.java similarity index 100% rename from opendaylight/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/UserConfig.java rename to opendaylight/adsal/usermanager/api/src/main/java/org/opendaylight/controller/usermanager/UserConfig.java diff --git a/opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthResponseTest.java b/opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthResponseTest.java similarity index 100% rename from opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthResponseTest.java rename to opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthResponseTest.java diff --git a/opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthenticatedUserTest.java b/opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthenticatedUserTest.java similarity index 100% rename from opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthenticatedUserTest.java rename to opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthenticatedUserTest.java diff --git a/opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthorizationUserConfigTest.java b/opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthorizationUserConfigTest.java similarity index 100% rename from opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthorizationUserConfigTest.java rename to opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/AuthorizationUserConfigTest.java diff --git a/opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/ServerConfigTest.java b/opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/ServerConfigTest.java similarity index 100% rename from opendaylight/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/ServerConfigTest.java rename to opendaylight/adsal/usermanager/api/src/test/java/org/opendaylight/controller/usermanager/ServerConfigTest.java diff --git a/opendaylight/usermanager/implementation/pom.xml b/opendaylight/adsal/usermanager/implementation/pom.xml similarity index 98% rename from opendaylight/usermanager/implementation/pom.xml rename to opendaylight/adsal/usermanager/implementation/pom.xml index d973f670b2..fd8a397837 100644 --- a/opendaylight/usermanager/implementation/pom.xml +++ b/opendaylight/adsal/usermanager/implementation/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight usermanager.implementation diff --git a/opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/Activator.java b/opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/Activator.java similarity index 100% rename from opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/Activator.java rename to opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/Activator.java diff --git a/opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/UserManager.java b/opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/UserManager.java similarity index 100% rename from opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/UserManager.java rename to opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/internal/UserManager.java diff --git a/opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/SessionManager.java b/opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/SessionManager.java similarity index 100% rename from opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/SessionManager.java rename to opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/SessionManager.java diff --git a/opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/UserSecurityContextRepository.java b/opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/UserSecurityContextRepository.java similarity index 100% rename from opendaylight/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/UserSecurityContextRepository.java rename to opendaylight/adsal/usermanager/implementation/src/main/java/org/opendaylight/controller/usermanager/security/UserSecurityContextRepository.java diff --git a/opendaylight/usermanager/implementation/src/test/java/org/opendaylight/controller/usermanager/internal/UserManagerImplTest.java b/opendaylight/adsal/usermanager/implementation/src/test/java/org/opendaylight/controller/usermanager/internal/UserManagerImplTest.java similarity index 100% rename from opendaylight/usermanager/implementation/src/test/java/org/opendaylight/controller/usermanager/internal/UserManagerImplTest.java rename to opendaylight/adsal/usermanager/implementation/src/test/java/org/opendaylight/controller/usermanager/internal/UserManagerImplTest.java diff --git a/opendaylight/web/brandfragment/pom.xml b/opendaylight/adsal/web/brandfragment/pom.xml similarity index 95% rename from opendaylight/web/brandfragment/pom.xml rename to opendaylight/adsal/web/brandfragment/pom.xml index 25f62f059e..0c76146c50 100644 --- a/opendaylight/web/brandfragment/pom.xml +++ b/opendaylight/adsal/web/brandfragment/pom.xml @@ -7,7 +7,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight scm:git:ssh://git.opendaylight.org:29418/controller.git diff --git a/opendaylight/web/brandfragment/src/main/resources/WEB-INF/jsp/customerror.jsp b/opendaylight/adsal/web/brandfragment/src/main/resources/WEB-INF/jsp/customerror.jsp similarity index 100% rename from opendaylight/web/brandfragment/src/main/resources/WEB-INF/jsp/customerror.jsp rename to opendaylight/adsal/web/brandfragment/src/main/resources/WEB-INF/jsp/customerror.jsp diff --git a/opendaylight/web/brandfragment/src/main/resources/WEB-INF/jsp/customlogin.jsp b/opendaylight/adsal/web/brandfragment/src/main/resources/WEB-INF/jsp/customlogin.jsp similarity index 100% rename from opendaylight/web/brandfragment/src/main/resources/WEB-INF/jsp/customlogin.jsp rename to opendaylight/adsal/web/brandfragment/src/main/resources/WEB-INF/jsp/customlogin.jsp diff --git a/opendaylight/web/brandfragment/src/main/resources/WEB-INF/jsp/custommain.jsp b/opendaylight/adsal/web/brandfragment/src/main/resources/WEB-INF/jsp/custommain.jsp similarity index 100% rename from opendaylight/web/brandfragment/src/main/resources/WEB-INF/jsp/custommain.jsp rename to opendaylight/adsal/web/brandfragment/src/main/resources/WEB-INF/jsp/custommain.jsp diff --git a/opendaylight/web/brandfragment/src/main/resources/css/customlogin.less b/opendaylight/adsal/web/brandfragment/src/main/resources/css/customlogin.less similarity index 100% rename from opendaylight/web/brandfragment/src/main/resources/css/customlogin.less rename to opendaylight/adsal/web/brandfragment/src/main/resources/css/customlogin.less diff --git a/opendaylight/web/brandfragment/src/main/resources/css/custommain.less b/opendaylight/adsal/web/brandfragment/src/main/resources/css/custommain.less similarity index 100% rename from opendaylight/web/brandfragment/src/main/resources/css/custommain.less rename to opendaylight/adsal/web/brandfragment/src/main/resources/css/custommain.less diff --git a/opendaylight/web/brandfragment/src/main/resources/img/logo.png b/opendaylight/adsal/web/brandfragment/src/main/resources/img/logo.png similarity index 100% rename from opendaylight/web/brandfragment/src/main/resources/img/logo.png rename to opendaylight/adsal/web/brandfragment/src/main/resources/img/logo.png diff --git a/opendaylight/web/devices/pom.xml b/opendaylight/adsal/web/devices/pom.xml similarity index 98% rename from opendaylight/web/devices/pom.xml rename to opendaylight/adsal/web/devices/pom.xml index 8e7c9248dd..062812b867 100644 --- a/opendaylight/web/devices/pom.xml +++ b/opendaylight/adsal/web/devices/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight devices.web diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/DevicesJsonBean.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/DevicesJsonBean.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/DevicesJsonBean.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/DevicesJsonBean.java diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/NodeJsonBean.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/NodeJsonBean.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/NodeJsonBean.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/NodeJsonBean.java diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/PortJsonBean.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/PortJsonBean.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/PortJsonBean.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/PortJsonBean.java diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/StatusJsonBean.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/StatusJsonBean.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/StatusJsonBean.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/StatusJsonBean.java diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SubnetGatewayPortBean.java b/opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/SubnetGatewayPortBean.java similarity index 100% rename from opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SubnetGatewayPortBean.java rename to opendaylight/adsal/web/devices/src/main/java/org/opendaylight/controller/devices/web/SubnetGatewayPortBean.java diff --git a/opendaylight/web/devices/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/web/devices/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/web/devices/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/web/devices/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/web/devices/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/web/devices/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/web/devices/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/web/devices/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/web/devices/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/web/devices/src/main/resources/WEB-INF/Devices-servlet.xml b/opendaylight/adsal/web/devices/src/main/resources/WEB-INF/Devices-servlet.xml similarity index 100% rename from opendaylight/web/devices/src/main/resources/WEB-INF/Devices-servlet.xml rename to opendaylight/adsal/web/devices/src/main/resources/WEB-INF/Devices-servlet.xml diff --git a/opendaylight/web/devices/src/main/resources/WEB-INF/jsp/autherror.jsp b/opendaylight/adsal/web/devices/src/main/resources/WEB-INF/jsp/autherror.jsp similarity index 100% rename from opendaylight/web/devices/src/main/resources/WEB-INF/jsp/autherror.jsp rename to opendaylight/adsal/web/devices/src/main/resources/WEB-INF/jsp/autherror.jsp diff --git a/opendaylight/web/devices/src/main/resources/WEB-INF/jsp/error.jsp b/opendaylight/adsal/web/devices/src/main/resources/WEB-INF/jsp/error.jsp similarity index 100% rename from opendaylight/web/devices/src/main/resources/WEB-INF/jsp/error.jsp rename to opendaylight/adsal/web/devices/src/main/resources/WEB-INF/jsp/error.jsp diff --git a/opendaylight/web/devices/src/main/resources/WEB-INF/jsp/login.jsp b/opendaylight/adsal/web/devices/src/main/resources/WEB-INF/jsp/login.jsp similarity index 100% rename from opendaylight/web/devices/src/main/resources/WEB-INF/jsp/login.jsp rename to opendaylight/adsal/web/devices/src/main/resources/WEB-INF/jsp/login.jsp diff --git a/opendaylight/web/devices/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/web/devices/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/web/devices/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/web/devices/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/web/devices/src/main/resources/js/page.js b/opendaylight/adsal/web/devices/src/main/resources/js/page.js similarity index 100% rename from opendaylight/web/devices/src/main/resources/js/page.js rename to opendaylight/adsal/web/devices/src/main/resources/js/page.js diff --git a/opendaylight/web/flows/pom.xml b/opendaylight/adsal/web/flows/pom.xml similarity index 98% rename from opendaylight/web/flows/pom.xml rename to opendaylight/adsal/web/flows/pom.xml index 99238c6aad..4b1d54781a 100644 --- a/opendaylight/web/flows/pom.xml +++ b/opendaylight/adsal/web/flows/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight flows.web diff --git a/opendaylight/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java b/opendaylight/adsal/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java similarity index 100% rename from opendaylight/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java rename to opendaylight/adsal/web/flows/src/main/java/org/opendaylight/controller/flows/web/Flows.java diff --git a/opendaylight/web/flows/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/web/flows/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/web/flows/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/web/flows/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/web/flows/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/web/flows/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/web/flows/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/web/flows/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/web/flows/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/web/flows/src/main/resources/WEB-INF/Flows-servlet.xml b/opendaylight/adsal/web/flows/src/main/resources/WEB-INF/Flows-servlet.xml similarity index 100% rename from opendaylight/web/flows/src/main/resources/WEB-INF/Flows-servlet.xml rename to opendaylight/adsal/web/flows/src/main/resources/WEB-INF/Flows-servlet.xml diff --git a/opendaylight/web/flows/src/main/resources/WEB-INF/jsp/autherror.jsp b/opendaylight/adsal/web/flows/src/main/resources/WEB-INF/jsp/autherror.jsp similarity index 100% rename from opendaylight/web/flows/src/main/resources/WEB-INF/jsp/autherror.jsp rename to opendaylight/adsal/web/flows/src/main/resources/WEB-INF/jsp/autherror.jsp diff --git a/opendaylight/web/flows/src/main/resources/WEB-INF/jsp/error.jsp b/opendaylight/adsal/web/flows/src/main/resources/WEB-INF/jsp/error.jsp similarity index 100% rename from opendaylight/web/flows/src/main/resources/WEB-INF/jsp/error.jsp rename to opendaylight/adsal/web/flows/src/main/resources/WEB-INF/jsp/error.jsp diff --git a/opendaylight/web/flows/src/main/resources/WEB-INF/jsp/login.jsp b/opendaylight/adsal/web/flows/src/main/resources/WEB-INF/jsp/login.jsp similarity index 100% rename from opendaylight/web/flows/src/main/resources/WEB-INF/jsp/login.jsp rename to opendaylight/adsal/web/flows/src/main/resources/WEB-INF/jsp/login.jsp diff --git a/opendaylight/web/flows/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/web/flows/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/web/flows/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/web/flows/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/web/flows/src/main/resources/js/page.js b/opendaylight/adsal/web/flows/src/main/resources/js/page.js similarity index 100% rename from opendaylight/web/flows/src/main/resources/js/page.js rename to opendaylight/adsal/web/flows/src/main/resources/js/page.js diff --git a/opendaylight/web/osgi-brandfragment/pom.xml b/opendaylight/adsal/web/osgi-brandfragment/pom.xml similarity index 94% rename from opendaylight/web/osgi-brandfragment/pom.xml rename to opendaylight/adsal/web/osgi-brandfragment/pom.xml index adea8ace62..78ad3f24c7 100644 --- a/opendaylight/web/osgi-brandfragment/pom.xml +++ b/opendaylight/adsal/web/osgi-brandfragment/pom.xml @@ -6,7 +6,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight osgi-brandfragment.web diff --git a/opendaylight/web/osgi-brandfragment/src/main/resources/META-INF/webconsole.properties b/opendaylight/adsal/web/osgi-brandfragment/src/main/resources/META-INF/webconsole.properties similarity index 100% rename from opendaylight/web/osgi-brandfragment/src/main/resources/META-INF/webconsole.properties rename to opendaylight/adsal/web/osgi-brandfragment/src/main/resources/META-INF/webconsole.properties diff --git a/opendaylight/web/osgi-brandfragment/src/main/resources/res/imgs/odl/favicon.ico b/opendaylight/adsal/web/osgi-brandfragment/src/main/resources/res/imgs/odl/favicon.ico similarity index 100% rename from opendaylight/web/osgi-brandfragment/src/main/resources/res/imgs/odl/favicon.ico rename to opendaylight/adsal/web/osgi-brandfragment/src/main/resources/res/imgs/odl/favicon.ico diff --git a/opendaylight/web/osgi-brandfragment/src/main/resources/res/imgs/odl/logo.png b/opendaylight/adsal/web/osgi-brandfragment/src/main/resources/res/imgs/odl/logo.png similarity index 100% rename from opendaylight/web/osgi-brandfragment/src/main/resources/res/imgs/odl/logo.png rename to opendaylight/adsal/web/osgi-brandfragment/src/main/resources/res/imgs/odl/logo.png diff --git a/opendaylight/web/root/pom.xml b/opendaylight/adsal/web/root/pom.xml similarity index 98% rename from opendaylight/web/root/pom.xml rename to opendaylight/adsal/web/root/pom.xml index cd82f8b07f..faede10e2d 100644 --- a/opendaylight/web/root/pom.xml +++ b/opendaylight/adsal/web/root/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight web diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/ClusterNodeBean.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/ClusterNodeBean.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/ClusterNodeBean.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/ClusterNodeBean.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/ControllerUISessionManager.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/ControllerUISessionManager.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/ControllerUISessionManager.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/ControllerUISessionManager.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebAdmin.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebAdmin.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebAdmin.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebAdmin.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebUtil.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebUtil.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebUtil.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/DaylightWebUtil.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/IDaylightWeb.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/IDaylightWeb.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/IDaylightWeb.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/IDaylightWeb.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/NodeBean.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/NodeBean.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/NodeBean.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/NodeBean.java diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/UserBean.java b/opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/UserBean.java similarity index 100% rename from opendaylight/web/root/src/main/java/org/opendaylight/controller/web/UserBean.java rename to opendaylight/adsal/web/root/src/main/java/org/opendaylight/controller/web/UserBean.java diff --git a/opendaylight/web/root/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/web/root/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/web/root/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/web/root/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/web/root/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/web/root/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/web/root/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/web/root/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/web/root/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/web/root/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/web/root/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/web/root/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/web/root/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/web/root/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/web/root/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/web/root/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/RootGUI-servlet.xml b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/RootGUI-servlet.xml similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/RootGUI-servlet.xml rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/RootGUI-servlet.xml diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/jsp/autherror.jsp b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/autherror.jsp similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/jsp/autherror.jsp rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/autherror.jsp diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/jsp/error.jsp b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/error.jsp similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/jsp/error.jsp rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/error.jsp diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/jsp/login.jsp b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/login.jsp similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/jsp/login.jsp rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/login.jsp diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/jsp/main.jsp b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/main.jsp similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/jsp/main.jsp rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/jsp/main.jsp diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/spring/servlet/security.xml b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/spring/servlet/security.xml similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/spring/servlet/security.xml rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/spring/servlet/security.xml diff --git a/opendaylight/web/root/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/web/root/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/web/root/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/web/root/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/web/root/src/main/resources/css/bootstrap.min.css b/opendaylight/adsal/web/root/src/main/resources/css/bootstrap.min.css similarity index 100% rename from opendaylight/web/root/src/main/resources/css/bootstrap.min.css rename to opendaylight/adsal/web/root/src/main/resources/css/bootstrap.min.css diff --git a/opendaylight/web/root/src/main/resources/css/fuelux-responsive.min.css b/opendaylight/adsal/web/root/src/main/resources/css/fuelux-responsive.min.css similarity index 100% rename from opendaylight/web/root/src/main/resources/css/fuelux-responsive.min.css rename to opendaylight/adsal/web/root/src/main/resources/css/fuelux-responsive.min.css diff --git a/opendaylight/web/root/src/main/resources/css/fuelux.min.css b/opendaylight/adsal/web/root/src/main/resources/css/fuelux.min.css similarity index 100% rename from opendaylight/web/root/src/main/resources/css/fuelux.min.css rename to opendaylight/adsal/web/root/src/main/resources/css/fuelux.min.css diff --git a/opendaylight/web/root/src/main/resources/css/login.less b/opendaylight/adsal/web/root/src/main/resources/css/login.less similarity index 100% rename from opendaylight/web/root/src/main/resources/css/login.less rename to opendaylight/adsal/web/root/src/main/resources/css/login.less diff --git a/opendaylight/web/root/src/main/resources/css/one.less b/opendaylight/adsal/web/root/src/main/resources/css/one.less similarity index 100% rename from opendaylight/web/root/src/main/resources/css/one.less rename to opendaylight/adsal/web/root/src/main/resources/css/one.less diff --git a/opendaylight/web/root/src/main/resources/css/opendaylight.css b/opendaylight/adsal/web/root/src/main/resources/css/opendaylight.css similarity index 100% rename from opendaylight/web/root/src/main/resources/css/opendaylight.css rename to opendaylight/adsal/web/root/src/main/resources/css/opendaylight.css diff --git a/opendaylight/web/root/src/main/resources/img/Device_pc_3045_default_64.png b/opendaylight/adsal/web/root/src/main/resources/img/Device_pc_3045_default_64.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/Device_pc_3045_default_64.png rename to opendaylight/adsal/web/root/src/main/resources/img/Device_pc_3045_default_64.png diff --git a/opendaylight/web/root/src/main/resources/img/Device_switch_3062_unknown_64.png b/opendaylight/adsal/web/root/src/main/resources/img/Device_switch_3062_unknown_64.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/Device_switch_3062_unknown_64.png rename to opendaylight/adsal/web/root/src/main/resources/img/Device_switch_3062_unknown_64.png diff --git a/opendaylight/web/root/src/main/resources/img/Expand16T.png b/opendaylight/adsal/web/root/src/main/resources/img/Expand16T.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/Expand16T.png rename to opendaylight/adsal/web/root/src/main/resources/img/Expand16T.png diff --git a/opendaylight/web/root/src/main/resources/img/Key_0024_16.png b/opendaylight/adsal/web/root/src/main/resources/img/Key_0024_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/Key_0024_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/Key_0024_16.png diff --git a/opendaylight/web/root/src/main/resources/img/alert_unreachable_2008_128.png b/opendaylight/adsal/web/root/src/main/resources/img/alert_unreachable_2008_128.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/alert_unreachable_2008_128.png rename to opendaylight/adsal/web/root/src/main/resources/img/alert_unreachable_2008_128.png diff --git a/opendaylight/web/root/src/main/resources/img/form.png b/opendaylight/adsal/web/root/src/main/resources/img/form.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/form.png rename to opendaylight/adsal/web/root/src/main/resources/img/form.png diff --git a/opendaylight/web/root/src/main/resources/img/logo.png b/opendaylight/adsal/web/root/src/main/resources/img/logo.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/logo.png rename to opendaylight/adsal/web/root/src/main/resources/img/logo.png diff --git a/opendaylight/web/root/src/main/resources/img/logo_16.png b/opendaylight/adsal/web/root/src/main/resources/img/logo_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/logo_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/logo_16.png diff --git a/opendaylight/web/root/src/main/resources/img/nextpageleft.png b/opendaylight/adsal/web/root/src/main/resources/img/nextpageleft.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/nextpageleft.png rename to opendaylight/adsal/web/root/src/main/resources/img/nextpageleft.png diff --git a/opendaylight/web/root/src/main/resources/img/nextpageright.png b/opendaylight/adsal/web/root/src/main/resources/img/nextpageright.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/nextpageright.png rename to opendaylight/adsal/web/root/src/main/resources/img/nextpageright.png diff --git a/opendaylight/web/root/src/main/resources/img/open_1054_16.png b/opendaylight/adsal/web/root/src/main/resources/img/open_1054_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/open_1054_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/open_1054_16.png diff --git a/opendaylight/web/root/src/main/resources/img/open_1054_24.png b/opendaylight/adsal/web/root/src/main/resources/img/open_1054_24.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/open_1054_24.png rename to opendaylight/adsal/web/root/src/main/resources/img/open_1054_24.png diff --git a/opendaylight/web/root/src/main/resources/img/save_as_0106_16.png b/opendaylight/adsal/web/root/src/main/resources/img/save_as_0106_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/save_as_0106_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/save_as_0106_16.png diff --git a/opendaylight/web/root/src/main/resources/img/save_as_0106_24.png b/opendaylight/adsal/web/root/src/main/resources/img/save_as_0106_24.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/save_as_0106_24.png rename to opendaylight/adsal/web/root/src/main/resources/img/save_as_0106_24.png diff --git a/opendaylight/web/root/src/main/resources/img/search.png b/opendaylight/adsal/web/root/src/main/resources/img/search.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/search.png rename to opendaylight/adsal/web/root/src/main/resources/img/search.png diff --git a/opendaylight/web/root/src/main/resources/img/searchremove.png b/opendaylight/adsal/web/root/src/main/resources/img/searchremove.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/searchremove.png rename to opendaylight/adsal/web/root/src/main/resources/img/searchremove.png diff --git a/opendaylight/web/root/src/main/resources/img/sort_down.png b/opendaylight/adsal/web/root/src/main/resources/img/sort_down.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/sort_down.png rename to opendaylight/adsal/web/root/src/main/resources/img/sort_down.png diff --git a/opendaylight/web/root/src/main/resources/img/sort_up.png b/opendaylight/adsal/web/root/src/main/resources/img/sort_up.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/sort_up.png rename to opendaylight/adsal/web/root/src/main/resources/img/sort_up.png diff --git a/opendaylight/web/root/src/main/resources/img/topology_view_1033_128.png b/opendaylight/adsal/web/root/src/main/resources/img/topology_view_1033_128.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/topology_view_1033_128.png rename to opendaylight/adsal/web/root/src/main/resources/img/topology_view_1033_128.png diff --git a/opendaylight/web/root/src/main/resources/img/topology_view_1033_16.png b/opendaylight/adsal/web/root/src/main/resources/img/topology_view_1033_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/topology_view_1033_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/topology_view_1033_16.png diff --git a/opendaylight/web/root/src/main/resources/img/user_0020_16.png b/opendaylight/adsal/web/root/src/main/resources/img/user_0020_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/user_0020_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/user_0020_16.png diff --git a/opendaylight/web/root/src/main/resources/img/user_0020_24.png b/opendaylight/adsal/web/root/src/main/resources/img/user_0020_24.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/user_0020_24.png rename to opendaylight/adsal/web/root/src/main/resources/img/user_0020_24.png diff --git a/opendaylight/web/root/src/main/resources/img/user_group_0107_16.png b/opendaylight/adsal/web/root/src/main/resources/img/user_group_0107_16.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/user_group_0107_16.png rename to opendaylight/adsal/web/root/src/main/resources/img/user_group_0107_16.png diff --git a/opendaylight/web/root/src/main/resources/img/user_group_0107_24.png b/opendaylight/adsal/web/root/src/main/resources/img/user_group_0107_24.png similarity index 100% rename from opendaylight/web/root/src/main/resources/img/user_group_0107_24.png rename to opendaylight/adsal/web/root/src/main/resources/img/user_group_0107_24.png diff --git a/opendaylight/web/root/src/main/resources/js/bootstrap.min.js b/opendaylight/adsal/web/root/src/main/resources/js/bootstrap.min.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/bootstrap.min.js rename to opendaylight/adsal/web/root/src/main/resources/js/bootstrap.min.js diff --git a/opendaylight/web/root/src/main/resources/js/datasource.js b/opendaylight/adsal/web/root/src/main/resources/js/datasource.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/datasource.js rename to opendaylight/adsal/web/root/src/main/resources/js/datasource.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/COPYING b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/COPYING similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/COPYING rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/COPYING diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/all.min.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/all.min.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/all.min.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/all.min.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/checkbox.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/checkbox.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/checkbox.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/checkbox.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/combobox.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/combobox.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/combobox.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/combobox.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/datagrid.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/datagrid.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/datagrid.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/datagrid.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/loader.min.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/loader.min.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/loader.min.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/loader.min.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/pillbox.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/pillbox.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/pillbox.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/pillbox.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/radio.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/radio.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/radio.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/radio.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/search.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/search.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/search.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/search.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/select.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/select.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/select.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/select.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/spinner.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/spinner.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/spinner.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/spinner.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/tree.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/tree.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/tree.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/tree.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/util.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/util.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/util.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/util.js diff --git a/opendaylight/web/root/src/main/resources/js/fuelux/wizard.js b/opendaylight/adsal/web/root/src/main/resources/js/fuelux/wizard.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/fuelux/wizard.js rename to opendaylight/adsal/web/root/src/main/resources/js/fuelux/wizard.js diff --git a/opendaylight/web/root/src/main/resources/js/jit.js b/opendaylight/adsal/web/root/src/main/resources/js/jit.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/jit.js rename to opendaylight/adsal/web/root/src/main/resources/js/jit.js diff --git a/opendaylight/web/root/src/main/resources/js/jquery-1.9.1.min.js b/opendaylight/adsal/web/root/src/main/resources/js/jquery-1.9.1.min.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/jquery-1.9.1.min.js rename to opendaylight/adsal/web/root/src/main/resources/js/jquery-1.9.1.min.js diff --git a/opendaylight/web/root/src/main/resources/js/less-1.3.3.min.js b/opendaylight/adsal/web/root/src/main/resources/js/less-1.3.3.min.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/less-1.3.3.min.js rename to opendaylight/adsal/web/root/src/main/resources/js/less-1.3.3.min.js diff --git a/opendaylight/web/root/src/main/resources/js/lib.js b/opendaylight/adsal/web/root/src/main/resources/js/lib.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/lib.js rename to opendaylight/adsal/web/root/src/main/resources/js/lib.js diff --git a/opendaylight/web/root/src/main/resources/js/open-topology.js b/opendaylight/adsal/web/root/src/main/resources/js/open-topology.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/open-topology.js rename to opendaylight/adsal/web/root/src/main/resources/js/open-topology.js diff --git a/opendaylight/web/root/src/main/resources/js/open.js b/opendaylight/adsal/web/root/src/main/resources/js/open.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/open.js rename to opendaylight/adsal/web/root/src/main/resources/js/open.js diff --git a/opendaylight/web/root/src/main/resources/js/underscore-min.js b/opendaylight/adsal/web/root/src/main/resources/js/underscore-min.js similarity index 100% rename from opendaylight/web/root/src/main/resources/js/underscore-min.js rename to opendaylight/adsal/web/root/src/main/resources/js/underscore-min.js diff --git a/opendaylight/web/topology/pom.xml b/opendaylight/adsal/web/topology/pom.xml similarity index 98% rename from opendaylight/web/topology/pom.xml rename to opendaylight/adsal/web/topology/pom.xml index 24b53db767..0afe038086 100644 --- a/opendaylight/web/topology/pom.xml +++ b/opendaylight/adsal/web/topology/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight topology.web diff --git a/opendaylight/web/topology/src/main/java/org/opendaylight/controller/topology/web/Topology.java b/opendaylight/adsal/web/topology/src/main/java/org/opendaylight/controller/topology/web/Topology.java similarity index 100% rename from opendaylight/web/topology/src/main/java/org/opendaylight/controller/topology/web/Topology.java rename to opendaylight/adsal/web/topology/src/main/java/org/opendaylight/controller/topology/web/Topology.java diff --git a/opendaylight/web/topology/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/web/topology/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/web/topology/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/web/topology/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/web/topology/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/web/topology/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/web/topology/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/web/topology/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/web/topology/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/web/topology/src/main/resources/WEB-INF/Topology-servlet.xml b/opendaylight/adsal/web/topology/src/main/resources/WEB-INF/Topology-servlet.xml similarity index 100% rename from opendaylight/web/topology/src/main/resources/WEB-INF/Topology-servlet.xml rename to opendaylight/adsal/web/topology/src/main/resources/WEB-INF/Topology-servlet.xml diff --git a/opendaylight/web/topology/src/main/resources/WEB-INF/jsp/autherror.jsp b/opendaylight/adsal/web/topology/src/main/resources/WEB-INF/jsp/autherror.jsp similarity index 100% rename from opendaylight/web/topology/src/main/resources/WEB-INF/jsp/autherror.jsp rename to opendaylight/adsal/web/topology/src/main/resources/WEB-INF/jsp/autherror.jsp diff --git a/opendaylight/web/topology/src/main/resources/WEB-INF/jsp/error.jsp b/opendaylight/adsal/web/topology/src/main/resources/WEB-INF/jsp/error.jsp similarity index 100% rename from opendaylight/web/topology/src/main/resources/WEB-INF/jsp/error.jsp rename to opendaylight/adsal/web/topology/src/main/resources/WEB-INF/jsp/error.jsp diff --git a/opendaylight/web/topology/src/main/resources/WEB-INF/jsp/login.jsp b/opendaylight/adsal/web/topology/src/main/resources/WEB-INF/jsp/login.jsp similarity index 100% rename from opendaylight/web/topology/src/main/resources/WEB-INF/jsp/login.jsp rename to opendaylight/adsal/web/topology/src/main/resources/WEB-INF/jsp/login.jsp diff --git a/opendaylight/web/topology/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/web/topology/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/web/topology/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/web/topology/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/web/topology/src/main/resources/js/page.js b/opendaylight/adsal/web/topology/src/main/resources/js/page.js similarity index 100% rename from opendaylight/web/topology/src/main/resources/js/page.js rename to opendaylight/adsal/web/topology/src/main/resources/js/page.js diff --git a/opendaylight/web/topology/src/test/java/org/opendaylight/controller/topology/web/TopologyTest.java b/opendaylight/adsal/web/topology/src/test/java/org/opendaylight/controller/topology/web/TopologyTest.java similarity index 100% rename from opendaylight/web/topology/src/test/java/org/opendaylight/controller/topology/web/TopologyTest.java rename to opendaylight/adsal/web/topology/src/test/java/org/opendaylight/controller/topology/web/TopologyTest.java diff --git a/opendaylight/web/troubleshoot/pom.xml b/opendaylight/adsal/web/troubleshoot/pom.xml similarity index 98% rename from opendaylight/web/troubleshoot/pom.xml rename to opendaylight/adsal/web/troubleshoot/pom.xml index 14817bd186..1ef5de11c4 100644 --- a/opendaylight/web/troubleshoot/pom.xml +++ b/opendaylight/adsal/web/troubleshoot/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller commons.opendaylight 1.5.0-SNAPSHOT - ../../commons/opendaylight + ../../../commons/opendaylight troubleshoot.web diff --git a/opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java b/opendaylight/adsal/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java similarity index 100% rename from opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java rename to opendaylight/adsal/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/Troubleshoot.java diff --git a/opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/TroubleshootingJsonBean.java b/opendaylight/adsal/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/TroubleshootingJsonBean.java similarity index 100% rename from opendaylight/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/TroubleshootingJsonBean.java rename to opendaylight/adsal/web/troubleshoot/src/main/java/org/opendaylight/controller/troubleshoot/web/TroubleshootingJsonBean.java diff --git a/opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.factories b/opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.factories similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.factories rename to opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.factories diff --git a/opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.handlers b/opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.handlers similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.handlers rename to opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.handlers diff --git a/opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.schemas b/opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.schemas similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.schemas rename to opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.schemas diff --git a/opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.tooling b/opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.tooling similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/META-INF/spring.tooling rename to opendaylight/adsal/web/troubleshoot/src/main/resources/META-INF/spring.tooling diff --git a/opendaylight/web/troubleshoot/src/main/resources/WEB-INF/Troubleshoot-servlet.xml b/opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/Troubleshoot-servlet.xml similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/WEB-INF/Troubleshoot-servlet.xml rename to opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/Troubleshoot-servlet.xml diff --git a/opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/autherror.jsp b/opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/jsp/autherror.jsp similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/autherror.jsp rename to opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/jsp/autherror.jsp diff --git a/opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/error.jsp b/opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/jsp/error.jsp similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/error.jsp rename to opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/jsp/error.jsp diff --git a/opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/login.jsp b/opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/jsp/login.jsp similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/WEB-INF/jsp/login.jsp rename to opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/jsp/login.jsp diff --git a/opendaylight/web/troubleshoot/src/main/resources/WEB-INF/web.xml b/opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/WEB-INF/web.xml rename to opendaylight/adsal/web/troubleshoot/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/web/troubleshoot/src/main/resources/js/page.js b/opendaylight/adsal/web/troubleshoot/src/main/resources/js/page.js similarity index 100% rename from opendaylight/web/troubleshoot/src/main/resources/js/page.js rename to opendaylight/adsal/web/troubleshoot/src/main/resources/js/page.js diff --git a/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/jaxb/ParserTest.java b/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/jaxb/ParserTest.java index fc6c01b381..735cf3c5e5 100644 --- a/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/jaxb/ParserTest.java +++ b/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/jaxb/ParserTest.java @@ -9,11 +9,11 @@ package org.opendaylight.controller.filtervalve.cors.jaxb; import static org.hamcrest.core.Is.is; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import com.google.common.base.Optional; import java.io.File; diff --git a/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/model/UrlMatcherTest.java b/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/model/UrlMatcherTest.java index 07f6354b19..6276deab78 100644 --- a/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/model/UrlMatcherTest.java +++ b/opendaylight/commons/filter-valve/src/test/java/org/opendaylight/controller/filtervalve/cors/model/UrlMatcherTest.java @@ -24,14 +24,11 @@ public class UrlMatcherTest { final String jspFilter = "jspFilter"; final String exactMatch = "/somePath"; final String prefixFilter = "prefixFilter"; - LinkedHashMap patternMap = new LinkedHashMap() { - { - put(exactMatch, exactMatchFilter); - put("/*", defaultFilter); - put("*.jsp", jspFilter); - put("/foo/*", prefixFilter); - } - }; + LinkedHashMap patternMap = new LinkedHashMap<>(); + patternMap.put(exactMatch, exactMatchFilter); + patternMap.put("/*", defaultFilter); + patternMap.put("*.jsp", jspFilter); + patternMap.put("/foo/*", prefixFilter); urlMatcher = new UrlMatcher<>(patternMap); assertMatches("/abc", defaultFilter); assertMatches(exactMatch, exactMatchFilter, defaultFilter); diff --git a/opendaylight/commons/liblldp/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java b/opendaylight/commons/liblldp/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java index 07fbf0599b..07b18d7725 100644 --- a/opendaylight/commons/liblldp/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java +++ b/opendaylight/commons/liblldp/src/test/java/org/opendaylight/controller/sal/packet/BitBufferHelperTest.java @@ -9,8 +9,7 @@ package org.opendaylight.controller.sal.packet; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.liblldp.BitBufferHelper; diff --git a/opendaylight/commons/opendaylight/pom.xml b/opendaylight/commons/opendaylight/pom.xml index 198d17a79a..f61094ab48 100644 --- a/opendaylight/commons/opendaylight/pom.xml +++ b/opendaylight/commons/opendaylight/pom.xml @@ -219,6 +219,13 @@ + + org.opendaylight.controller + config-artifacts + ${config.version} + pom + import + org.opendaylight.controller netconf-artifacts @@ -226,6 +233,7 @@ pom import + org.apache.sshd sshd-core @@ -839,60 +847,6 @@ - - org.opendaylight.controller - config-api - ${config.version} - - - org.opendaylight.controller - config-manager - ${config.version} - test-jar - - - org.opendaylight.controller - config-manager - ${config.version} - - - org.opendaylight.controller - config-persister-api - ${config.version} - test-jar - - - org.opendaylight.controller - config-persister-api - ${config.version} - - - org.opendaylight.controller - config-persister-directory-xml-adapter - ${config.version} - - - org.opendaylight.controller - config-persister-file-xml-adapter - ${config.version} - - - org.opendaylight.controller - config-persister-feature-adapter - ${config.version} - - - - org.opendaylight.controller - config-util - ${config.version} - - - org.opendaylight.controller - config-util - ${config.version} - test-jar - org.opendaylight.controller configuration @@ -1035,11 +989,6 @@ liblldp ${sal.version} - - org.opendaylight.controller - logback-config - ${config.version} - org.opendaylight.controller @@ -1052,26 +1001,6 @@ ${dummy-console.version} - - org.opendaylight.controller - netty-config-api - ${config.version} - - - org.opendaylight.controller - netty-event-executor-config - ${config.version} - - - org.opendaylight.controller - netty-threadgroup-config - ${config.version} - - - org.opendaylight.controller - netty-timer-config - ${config.version} - org.opendaylight.controller networkconfig.bridgedomain.northbound @@ -1234,11 +1163,6 @@ sal-rest-connector-config ${mdsal.version} - - org.opendaylight.controller - config-netty-config - ${config.version} - org.opendaylight.controller md-sal-config @@ -1341,16 +1265,6 @@ ${karaf.security.version} - - org.opendaylight.controller - shutdown-api - ${config.version} - - - org.opendaylight.controller - shutdown-impl - ${config.version} - org.opendaylight.controller statistics.northbound @@ -1387,17 +1301,6 @@ ${switchmanager.northbound.version} - - - org.opendaylight.controller - threadpool-config-api - ${config.version} - - - org.opendaylight.controller - threadpool-config-impl - ${config.version} - org.opendaylight.controller topology.northbound @@ -1445,22 +1348,6 @@ web ${web.version} - - org.opendaylight.controller - yang-jmx-generator - ${config.version} - - - org.opendaylight.controller - yang-jmx-generator - ${config.version} - test-jar - - - org.opendaylight.controller - yang-test - ${config.version} - org.opendaylight.controller.md forwardingrules-manager @@ -1554,14 +1441,6 @@ xml runtime - - org.opendaylight.controller - features-config-netty - ${config.version} - features - xml - runtime - org.opendaylight.controller features-flow @@ -1672,14 +1551,6 @@ ${mdsal.version} test - - org.opendaylight.controller - features-config - ${config.version} - features - xml - runtime - org.opendaylight.controller features-protocol-framework @@ -1688,22 +1559,6 @@ xml runtime - - org.opendaylight.controller - features-config-persister - ${config.version} - features - xml - runtime - - - org.opendaylight.controller - config-netty-features - ${config.version} - features - xml - runtime - org.opendaylight.controller features-base @@ -2110,7 +1965,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - ${checkstyle.version} true controller/checkstyle.xml @@ -2196,7 +2050,6 @@ org.apache.maven.plugins maven-surefire-plugin - ${surefire.version} ${testvm.argLine} ${jacoco.agent.ut.arg} diff --git a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/IdentityAttributeRefTest.java b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/IdentityAttributeRefTest.java index 6e8ece343f..91e1f14849 100644 --- a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/IdentityAttributeRefTest.java +++ b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/IdentityAttributeRefTest.java @@ -1,17 +1,13 @@ package org.opendaylight.controller.config.api; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import org.junit.Assert; import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.config.api.annotations.AbstractServiceInterface; import org.opendaylight.yangtools.yang.binding.BaseIdentity; -import javax.management.*; - -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.*; - public class IdentityAttributeRefTest { IdentityAttributeRef attr = new IdentityAttributeRef("attr"); diff --git a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/JmxAttributeValidationExceptionTest.java b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/JmxAttributeValidationExceptionTest.java index f6e7dfb505..9ff7405257 100644 --- a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/JmxAttributeValidationExceptionTest.java +++ b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/JmxAttributeValidationExceptionTest.java @@ -1,23 +1,18 @@ package org.opendaylight.controller.config.api; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import com.google.common.collect.Lists; import java.nio.file.AccessDeniedException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; - -import com.google.common.collect.Lists; import org.hamcrest.CoreMatchers; -import org.junit.Assert; -import org.junit.Before; import org.junit.Test; -import javax.management.Query; - -import static org.junit.Assert.*; - public class JmxAttributeValidationExceptionTest { - private JmxAttribute jmxAttribute = new JmxAttribute("attr1"); + private final JmxAttribute jmxAttribute = new JmxAttribute("attr1"); @Test public void testJmxAttributeValidationExceptionElement() throws Exception { @@ -28,7 +23,7 @@ public class JmxAttributeValidationExceptionTest { @Test public void testJmxAttributeValidationExceptionList() throws Exception { - List attributeNames = new ArrayList(); + List attributeNames = new ArrayList<>(); attributeNames.add(new JmxAttribute("att1")); attributeNames.add(new JmxAttribute("att2")); attributeNames.add(new JmxAttribute("att3")); @@ -38,7 +33,7 @@ public class JmxAttributeValidationExceptionTest { @Test public void testJmxAttributeValidationExceptionList2() throws Exception { - List attributeNames = new ArrayList(); + List attributeNames = new ArrayList<>(); attributeNames.add(new JmxAttribute("att1")); attributeNames.add(new JmxAttribute("att2")); attributeNames.add(new JmxAttribute("att3")); @@ -84,7 +79,7 @@ public class JmxAttributeValidationExceptionTest { JmxAttributeValidationException.checkCondition(false, "message", jmxAttribute); } - private void assertJmxEx(JmxAttributeValidationException e, String message, JmxAttribute... attrNames) { + private void assertJmxEx(final JmxAttributeValidationException e, final String message, final JmxAttribute... attrNames) { assertEquals(message, e.getMessage()); assertEquals(Lists.newArrayList(attrNames), e.getAttributeNames()); } diff --git a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ModuleIdentifierTest.java b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ModuleIdentifierTest.java index c0e584a098..2771b407f4 100644 --- a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ModuleIdentifierTest.java +++ b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ModuleIdentifierTest.java @@ -1,11 +1,8 @@ package org.opendaylight.controller.config.api; -import junit.framework.Assert; -import org.junit.Test; - import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; +import org.junit.Test; public class ModuleIdentifierTest { String fact = new String("factory"); diff --git a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ValidationExceptionTest.java b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ValidationExceptionTest.java index 30712c966d..8b4f2fe258 100644 --- a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ValidationExceptionTest.java +++ b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/ValidationExceptionTest.java @@ -1,23 +1,20 @@ package org.opendaylight.controller.config.api; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; -import static org.junit.Assert.assertNotEquals; +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; -import static org.junit.matchers.JUnitMatchers.containsString; - +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import com.google.common.collect.Lists; import java.util.Map; - import org.junit.Assert; import org.junit.Test; public class ValidationExceptionTest { - private String instance = "instance"; + private final String instance = "instance"; private final ModuleIdentifier mi = new ModuleIdentifier("module", instance); - private String instance2 = "instance2"; + private final String instance2 = "instance2"; private final ModuleIdentifier mi2 = new ModuleIdentifier("module", instance2); private final String message = "ex message"; private final Exception e = new IllegalStateException(message); diff --git a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/CommitStatusTest.java b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/CommitStatusTest.java index 36ebc9de93..cb8271a581 100644 --- a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/CommitStatusTest.java +++ b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/CommitStatusTest.java @@ -1,17 +1,16 @@ package org.opendaylight.controller.config.api.jmx; +import java.util.ArrayList; +import java.util.List; +import javax.management.ObjectName; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import javax.management.ObjectName; -import java.util.ArrayList; -import java.util.List; - public class CommitStatusTest { - List newInst = new ArrayList(); - List reusedInst = new ArrayList(); - List recreatedInst = new ArrayList(); + List newInst = new ArrayList<>(); + List reusedInst = new ArrayList<>(); + List recreatedInst = new ArrayList<>(); @Before public void setUp() throws Exception { @@ -43,9 +42,9 @@ public class CommitStatusTest { @Test public void testNotEqual() throws Exception { - List newInst2 = new ArrayList(); - List reusedInst2 = new ArrayList(); - List recreatedInst2 = new ArrayList(); + List newInst2 = new ArrayList<>(); + List reusedInst2 = new ArrayList<>(); + List recreatedInst2 = new ArrayList<>(); newInst2.add(new ObjectName("first: key1 = value1")); reusedInst2.add(new ObjectName("second: key = val")); diff --git a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtilTest.java b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtilTest.java index 02c1c4b981..e69ff921cc 100644 --- a/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtilTest.java +++ b/opendaylight/config/config-api/src/test/java/org/opendaylight/controller/config/api/jmx/ObjectNameUtilTest.java @@ -7,18 +7,15 @@ */ package org.opendaylight.controller.config.api.jmx; -import static junit.framework.Assert.fail; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; - +import static org.junit.Assert.fail; import com.google.common.base.Throwables; import com.google.common.collect.Maps; - import java.util.HashMap; import java.util.Map; import javax.management.ObjectName; -import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.config.api.ModuleIdentifier; @@ -84,7 +81,7 @@ public class ObjectNameUtilTest { assertPattern(on, pattern); } - private void assertPattern(ObjectName test, ObjectName pattern) { + private void assertPattern(final ObjectName test, final ObjectName pattern) { assertTrue(pattern.isPattern()); assertTrue(pattern.apply(test)); } @@ -150,11 +147,11 @@ public class ObjectNameUtilTest { }, IllegalArgumentException.class); } - private void assertFailure(Runnable test, Class ex) { + private void assertFailure(final Runnable test, final Class ex) { try { test.run(); } catch(Exception e) { - Assert.assertTrue("Failed with wrong exception: " + Throwables.getStackTraceAsString(e), + assertTrue("Failed with wrong exception: " + Throwables.getStackTraceAsString(e), e.getClass().isAssignableFrom(ex)); return; } diff --git a/opendaylight/config/config-artifacts/pom.xml b/opendaylight/config/config-artifacts/pom.xml new file mode 100644 index 0000000000..430d6b41bc --- /dev/null +++ b/opendaylight/config/config-artifacts/pom.xml @@ -0,0 +1,224 @@ + + + + + + 4.0.0 + org.opendaylight.controller + config-artifacts + 0.3.0-SNAPSHOT + pom + + + + + ${project.groupId} + config-api + ${project.version} + + + ${project.groupId} + config-manager + ${project.version} + + + ${project.groupId} + config-manager + ${project.version} + test-jar + test + + + ${project.groupId} + config-module-archetype + ${project.version} + + + ${project.groupId} + config-netty-config + ${project.version} + + + ${project.groupId} + config-persister-api + ${project.version} + + + ${project.groupId} + config-persister-api + ${project.version} + test-jar + test + + + ${project.groupId} + config-persister-directory-adapter + ${project.version} + + + ${project.groupId} + config-persister-directory-autodetect-adapter + ${project.version} + + + ${project.groupId} + config-persister-directory-xml-adapter + ${project.version} + + + ${project.groupId} + config-persister-feature-adapter + ${project.version} + + + ${project.groupId} + config-persister-file-adapter + ${project.version} + + + ${project.groupId} + config-persister-file-xml-adapter + ${project.version} + + + ${project.groupId} + config-plugin-parent + ${project.version} + + + ${project.groupId} + config-util + ${project.version} + + + ${project.groupId} + config-util + ${project.version} + test-jar + test + + + ${project.groupId} + logback-config + ${project.version} + + + ${project.groupId} + logback-config-loader + ${project.version} + + + ${project.groupId} + netty-config-api + ${project.version} + + + ${project.groupId} + netty-event-executor-config + ${project.version} + + + ${project.groupId} + netty-threadgroup-config + ${project.version} + + + ${project.groupId} + netty-timer-config + ${project.version} + + + ${project.groupId} + shutdown-api + ${project.version} + + + ${project.groupId} + shutdown-impl + ${project.version} + + + ${project.groupId} + threadpool-config-api + ${project.version} + + + ${project.groupId} + threadpool-config-impl + ${project.version} + + + ${project.groupId} + yang-jmx-generator + ${project.version} + + + ${project.groupId} + yang-jmx-generator + ${project.version} + test-jar + test + + + ${project.groupId} + yang-jmx-generator-plugin + ${project.version} + + + ${project.groupId} + yang-store-api + ${project.version} + + + ${project.groupId} + yang-store-impl + ${project.version} + + + ${project.groupId} + yang-test + ${project.version} + + + + ${project.groupId} + features-config + ${project.version} + features + xml + runtime + + + ${project.groupId} + features-config-netty + ${project.version} + features + xml + runtime + + + ${project.groupId} + features-config-persister + ${project.version} + features + xml + runtime + + + ${project.groupId} + config-netty-features + ${project.version} + features + xml + runtime + + + + + diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java index 4d94c6d265..5cb1513d9c 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java @@ -7,17 +7,16 @@ */ package org.opendaylight.controller.config.manager.impl.util; -import org.opendaylight.controller.config.api.annotations.AbstractServiceInterface; -import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation; -import org.opendaylight.controller.config.spi.Module; -import org.opendaylight.controller.config.spi.ModuleFactory; - -import javax.management.JMX; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import javax.management.JMX; +import org.opendaylight.controller.config.api.annotations.AbstractServiceInterface; +import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation; +import org.opendaylight.controller.config.spi.Module; +import org.opendaylight.controller.config.spi.ModuleFactory; public class InterfacesHelper { @@ -40,7 +39,7 @@ public class InterfacesHelper { } - private static Set> getAllSuperInterfaces(Set> ifcs) { + private static Set> getAllSuperInterfaces(final Set> ifcs) { Set> interfaces = new HashSet<>(ifcs); // create copy to modify // each interface can extend other interfaces Set> result = new HashSet<>(); @@ -61,7 +60,7 @@ public class InterfacesHelper { * Get interfaces that this class is derived from that are JMX interfaces. */ public static Set> getMXInterfaces( - Class configBeanClass) { + final Class configBeanClass) { Set> allInterfaces = getAllInterfaces(configBeanClass); Set> result = new HashSet<>(); for (Class clazz : allInterfaces) { @@ -78,7 +77,7 @@ public class InterfacesHelper { * annotation. */ public static Set> getServiceInterfaces( - Class configBeanClass) { + final Class configBeanClass) { Set> allInterfaces = getAllInterfaces(configBeanClass); Set> result = new HashSet<>(); for (Class clazz : allInterfaces) { @@ -93,7 +92,7 @@ public class InterfacesHelper { return result; } - public static Set> getAllAbstractServiceClasses(Class configBeanClass) { + public static Set> getAllAbstractServiceClasses(final Class configBeanClass) { Set> foundGeneratedSIClasses = new HashSet<>(); for (Class clazz : getAllInterfaces(configBeanClass)) { @@ -111,7 +110,7 @@ public class InterfacesHelper { * {@link org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation#osgiRegistrationType()} */ public static Set> getOsgiRegistrationTypes( - Class configBeanClass) { + final Class configBeanClass) { Set> serviceInterfaces = getServiceInterfaces(configBeanClass); Set> result = new HashSet<>(); for (Class clazz : serviceInterfaces) { @@ -122,7 +121,7 @@ public class InterfacesHelper { return result; } - public static Set getQNames(Set siAnnotations) { + public static Set getQNames(final Set siAnnotations) { Set qNames = new HashSet<>(); for (ServiceInterfaceAnnotation sia: siAnnotations) { qNames.add(sia.value()); @@ -130,12 +129,12 @@ public class InterfacesHelper { return Collections.unmodifiableSet(qNames); } - public static Set getServiceInterfaceAnnotations(ModuleFactory factory) { + public static Set getServiceInterfaceAnnotations(final ModuleFactory factory) { Set> implementedServiceIntefaces = Collections.unmodifiableSet(factory.getImplementedServiceIntefaces()); return getServiceInterfaceAnnotations(implementedServiceIntefaces); } - private static Set getServiceInterfaceAnnotations(Set> implementedServiceIntefaces) { + private static Set getServiceInterfaceAnnotations(final Set> implementedServiceIntefaces) { Set> inspected = getAllAbstractServiceInterfaceClasses(implementedServiceIntefaces); Set result = new HashSet<>(); // SIs can form hierarchies, inspect superclass until it does not extend AbstractSI @@ -149,9 +148,9 @@ public class InterfacesHelper { } static Set> getAllAbstractServiceInterfaceClasses( - Set> directlyImplementedAbstractSIs) { + final Set> directlyImplementedAbstractSIs) { - Set> allInterfaces = getAllSuperInterfaces((Set) directlyImplementedAbstractSIs); + Set> allInterfaces = getAllSuperInterfaces(directlyImplementedAbstractSIs); Set> result = new HashSet<>(); for(Class ifc: allInterfaces){ if (AbstractServiceInterface.class.isAssignableFrom(ifc) && diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtil.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtil.java index f839452dca..4f792e72b1 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtil.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtil.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.config.manager.impl.util; import static com.google.common.base.Preconditions.checkNotNull; - import java.util.ArrayList; import java.util.List; import java.util.ListIterator; @@ -27,7 +26,7 @@ public class OsgiRegistrationUtil { } @SafeVarargs - public static AutoCloseable registerService(BundleContext bundleContext, T service, Class ... interfaces) { + public static AutoCloseable registerService(final BundleContext bundleContext, final T service, final Class ... interfaces) { checkNotNull(service); checkNotNull(interfaces); List autoCloseableList = new ArrayList<>(); @@ -48,7 +47,7 @@ public class OsgiRegistrationUtil { }; } - public static AutoCloseable wrap(final BundleTracker bundleTracker) { + public static AutoCloseable wrap(final BundleTracker bundleTracker) { checkNotNull(bundleTracker); return new AutoCloseable() { @Override diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/AbstractConfigTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/AbstractConfigTest.java index 63a37de0c3..c4a4192cba 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/AbstractConfigTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/AbstractConfigTest.java @@ -213,7 +213,7 @@ public abstract class AbstractConfigTest extends Object serviceTypeRaw = args[0]; Object serviceInstance = args[1]; - Dictionary props = (Dictionary) args[2]; + Dictionary props = (Dictionary) args[2]; if (serviceTypeRaw instanceof Class) { Class serviceType = (Class) serviceTypeRaw; diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManagerTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManagerTest.java index 48d7de0e82..83ee87ce0e 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManagerTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManagerTest.java @@ -100,10 +100,10 @@ public class DependencyResolverManagerTest extends AbstractLockedPlatformMBeanSe tested.put(moduleIdentifier, mockedModule(), - moduleFactory, - maybeOldInternalInfo, - transactionModuleJMXRegistration, - isDefaultBean, mock(BundleContext.class)); + moduleFactory, + maybeOldInternalInfo, + transactionModuleJMXRegistration, + isDefaultBean, mock(BundleContext.class)); } private static Module mockedModule() { diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BlankTransactionServiceTrackerTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BlankTransactionServiceTrackerTest.java index 471c98a676..8ceee0caf5 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BlankTransactionServiceTrackerTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BlankTransactionServiceTrackerTest.java @@ -1,14 +1,13 @@ package org.opendaylight.controller.config.manager.impl.osgi; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertSame; -import static junit.framework.Assert.fail; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; - import java.util.Collections; import javax.management.ObjectName; import org.junit.Before; diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolverTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolverTest.java index dc3deddddc..44e6e9ab77 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolverTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolverTest.java @@ -1,13 +1,12 @@ package org.opendaylight.controller.config.manager.impl.osgi; -import static junit.framework.Assert.fail; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import static org.junit.matchers.JUnitMatchers.containsString; +import static org.junit.Assert.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; - import com.google.common.collect.Lists; import java.util.Map; import org.junit.Before; @@ -24,8 +23,8 @@ public class BundleContextBackedModuleFactoriesResolverTest { @Mock private BundleContext bundleContext; private BundleContextBackedModuleFactoriesResolver resolver; - private ServiceReference s1; - private ServiceReference s2; + private ServiceReference s1; + private ServiceReference s2; private ModuleFactory f1; private ModuleFactory f2; @@ -42,15 +41,15 @@ public class BundleContextBackedModuleFactoriesResolverTest { resolver = new BundleContextBackedModuleFactoriesResolver(bundleContext); } - private ModuleFactory getMockFactory(String name) { + private ModuleFactory getMockFactory(final String name) { ModuleFactory mock = mock(ModuleFactory.class); doReturn(name).when(mock).toString(); doReturn(name).when(mock).getImplementationName(); return mock; } - private ServiceReference getServiceRef() { - ServiceReference mock = mock(ServiceReference.class); + private ServiceReference getServiceRef() { + ServiceReference mock = mock(ServiceReference.class); doReturn("serviceRef").when(mock).toString(); final Bundle bundle = mock(Bundle.class); doReturn(bundleContext).when(bundle).getBundleContext(); diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTrackerTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTrackerTest.java index 5b83412083..25d770e6c9 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTrackerTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTrackerTest.java @@ -1,8 +1,8 @@ package org.opendaylight.controller.config.manager.impl.osgi; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.fail; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyObject; import static org.mockito.Matchers.anyString; @@ -11,10 +11,8 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; - import java.util.Dictionary; import java.util.Set; - import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -44,7 +42,7 @@ public class ModuleFactoryBundleTrackerTest { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override public Object answer(final InvocationOnMock invocation) throws Throwable { return getClass().getClassLoader().loadClass((String) invocation.getArguments()[0]); @@ -141,7 +139,7 @@ public class ModuleFactoryBundleTrackerTest { } static class WrongConstructorTestingFactory extends TestingFactory { - WrongConstructorTestingFactory(String randomParam) { + WrongConstructorTestingFactory(final String randomParam) { } } diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/RefreshingSCPModuleInfoRegistryTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/RefreshingSCPModuleInfoRegistryTest.java index 79391d4343..9edb64ac6b 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/RefreshingSCPModuleInfoRegistryTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/osgi/RefreshingSCPModuleInfoRegistryTest.java @@ -1,5 +1,9 @@ package org.opendaylight.controller.config.manager.impl.osgi; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import java.util.Dictionary; import org.junit.Test; import org.mockito.Mockito; import org.opendaylight.controller.config.manager.impl.osgi.mapping.RefreshingSCPModuleInfoRegistry; @@ -10,12 +14,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; -import java.util.*; - -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - public class RefreshingSCPModuleInfoRegistryTest { @Test public void testConstructor() throws Exception { @@ -24,8 +22,7 @@ public class RefreshingSCPModuleInfoRegistryTest { doReturn("string").when(prov).toString(); BundleContext ctxt = mock(BundleContext.class); - Dictionary dict = new Hashtable(); - ServiceRegistration servReg = mock(ServiceRegistration.class); + ServiceRegistration servReg = mock(ServiceRegistration.class); doReturn(servReg).when(ctxt).registerService(Mockito.any(Class.class), Mockito.any(SchemaContextProvider.class), Mockito.any(Dictionary.class)); doReturn(servReg).when(ctxt).registerService(Mockito.anyString(), Mockito.any(Object.class), Mockito.any(Dictionary.class)); RefreshingSCPModuleInfoRegistry scpreg = new RefreshingSCPModuleInfoRegistry(reg, prov, ctxt); diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelperTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelperTest.java index 220bef03bc..4be40a64f5 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelperTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelperTest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.config.manager.impl.util; import static org.junit.Assert.assertEquals; - +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import java.util.Collections; import java.util.HashSet; @@ -92,7 +92,7 @@ public class InterfacesHelperTest { input.add(clazz); Set> result = InterfacesHelper.getAllAbstractServiceInterfaceClasses(input); - Set> expected = Sets.newHashSet((Class) TestingScheduledThreadPoolServiceInterface.class, + Set> expected = ImmutableSet.of((Class) TestingScheduledThreadPoolServiceInterface.class, TestingThreadPoolServiceInterface.class ); assertEquals(expected, result); diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtilTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtilTest.java index fb59e3d515..f1efc4787d 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtilTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/util/OsgiRegistrationUtilTest.java @@ -4,7 +4,6 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; - import org.junit.Test; import org.mockito.InOrder; import org.mockito.Mockito; @@ -37,7 +36,7 @@ public class OsgiRegistrationUtilTest { OsgiRegistrationUtil.wrap(serviceReg).close(); verify(serviceReg).unregister(); - final BundleTracker tracker = mock(BundleTracker.class); + final BundleTracker tracker = mock(BundleTracker.class); doNothing().when(tracker).close(); OsgiRegistrationUtil.wrap(tracker).close(); verify(tracker).close(); @@ -49,7 +48,7 @@ public class OsgiRegistrationUtilTest { } private ServiceRegistration mockServiceRegistration() { - ServiceRegistration mock = mock(ServiceRegistration.class); + ServiceRegistration mock = mock(ServiceRegistration.class); doNothing().when(mock).unregister(); return mock; } diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/TestingScheduledThreadPoolModuleFactory.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/TestingScheduledThreadPoolModuleFactory.java index e5306a4fa6..d34e73ec47 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/TestingScheduledThreadPoolModuleFactory.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/TestingScheduledThreadPoolModuleFactory.java @@ -7,7 +7,9 @@ */ package org.opendaylight.controller.config.manager.testingservices.scheduledthreadpool; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; +import java.util.HashSet; +import java.util.Set; import org.opendaylight.controller.config.api.DependencyResolver; import org.opendaylight.controller.config.api.DependencyResolverFactory; import org.opendaylight.controller.config.api.DynamicMBeanWithInstance; @@ -19,20 +21,16 @@ import org.opendaylight.controller.config.spi.Module; import org.opendaylight.controller.config.spi.ModuleFactory; import org.osgi.framework.BundleContext; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - public class TestingScheduledThreadPoolModuleFactory implements ModuleFactory { public static final String NAME = "scheduled"; - private static Set> ifc = Collections.unmodifiableSet(Sets.newHashSet( + private static Set> ifc = ImmutableSet.of( (Class) TestingScheduledThreadPoolServiceInterface.class, - TestingThreadPoolServiceInterface.class)); + TestingThreadPoolServiceInterface.class); @Override public boolean isModuleImplementingServiceInterface( - Class serviceInterface) { + final Class serviceInterface) { return ifc.contains(serviceInterface); } @@ -42,15 +40,15 @@ public class TestingScheduledThreadPoolModuleFactory implements ModuleFactory { } @Override - public Module createModule(String instanceName, - DependencyResolver dependencyResolver, BundleContext bundleContext) { + public Module createModule(final String instanceName, + final DependencyResolver dependencyResolver, final BundleContext bundleContext) { return new TestingScheduledThreadPoolModule(new ModuleIdentifier(NAME, instanceName), null, null); } @Override - public Module createModule(String instanceName, - DependencyResolver dependencyResolver, DynamicMBeanWithInstance old, BundleContext bundleContext) + public Module createModule(final String instanceName, + final DependencyResolver dependencyResolver, final DynamicMBeanWithInstance old, final BundleContext bundleContext) throws Exception { TestingScheduledThreadPoolImpl oldInstance; try { @@ -68,7 +66,7 @@ public class TestingScheduledThreadPoolModuleFactory implements ModuleFactory { } @Override - public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, BundleContext bundleContext) { + public Set getDefaultModules(final DependencyResolverFactory dependencyResolverFactory, final BundleContext bundleContext) { return new HashSet(); } diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/test/TwoInterfacesExportTest.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/test/TwoInterfacesExportTest.java index ca038f1f1c..9c8b575fe5 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/test/TwoInterfacesExportTest.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/scheduledthreadpool/test/TwoInterfacesExportTest.java @@ -7,38 +7,35 @@ */ package org.opendaylight.controller.config.manager.testingservices.scheduledthreadpool.test; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; - import javax.annotation.Nullable; import javax.management.DynamicMBean; import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; import javax.management.ObjectName; - import org.junit.Test; import org.opendaylight.controller.config.api.ValidationException; import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; import org.opendaylight.controller.config.manager.testingservices.parallelapsp.TestingParallelAPSPConfigMXBean; import org.opendaylight.controller.config.manager.testingservices.parallelapsp.TestingParallelAPSPModuleFactory; import org.opendaylight.controller.config.manager.testingservices.scheduledthreadpool.TestingScheduledThreadPoolImpl; -import org.opendaylight.controller.config.manager.testingservices.scheduledthreadpool - .TestingScheduledThreadPoolModuleFactory; +import org.opendaylight.controller.config.manager.testingservices.scheduledthreadpool.TestingScheduledThreadPoolModuleFactory; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; public class TwoInterfacesExportTest extends AbstractScheduledTest { - private void assertExists(String moduleName, String instanceName) + private void assertExists(final String moduleName, final String instanceName) throws Exception { assertExists(null, moduleName, instanceName); } - private void assertExists(@Nullable ConfigTransactionJMXClient transaction, - String moduleName, String instanceName) + private void assertExists(@Nullable final ConfigTransactionJMXClient transaction, + final String moduleName, final String instanceName) throws InstanceNotFoundException { if (transaction != null) { transaction.lookupConfigBean(moduleName, instanceName); @@ -56,13 +53,13 @@ public class TwoInterfacesExportTest extends AbstractScheduledTest { } } - private void assertNotExists(String moduleName, String instanceName) { + private void assertNotExists(final String moduleName, final String instanceName) { assertNotExists(null, moduleName, instanceName); } private void assertNotExists( - @Nullable ConfigTransactionJMXClient transaction, - String moduleName, String instanceName) { + @Nullable final ConfigTransactionJMXClient transaction, + final String moduleName, final String instanceName) { if (transaction != null) { try { diff --git a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/TestingFixedThreadPoolModuleFactory.java b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/TestingFixedThreadPoolModuleFactory.java index bec2868557..d385a7db5a 100644 --- a/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/TestingFixedThreadPoolModuleFactory.java +++ b/opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/TestingFixedThreadPoolModuleFactory.java @@ -7,7 +7,9 @@ */ package org.opendaylight.controller.config.manager.testingservices.threadpool; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; +import java.util.HashSet; +import java.util.Set; import org.opendaylight.controller.config.api.DependencyResolver; import org.opendaylight.controller.config.api.DependencyResolverFactory; import org.opendaylight.controller.config.api.DynamicMBeanWithInstance; @@ -19,16 +21,12 @@ import org.opendaylight.controller.config.spi.Module; import org.opendaylight.controller.config.spi.ModuleFactory; import org.osgi.framework.BundleContext; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - public class TestingFixedThreadPoolModuleFactory extends AbstractTestingFixedThreadPoolModuleFactory implements ModuleFactory { public static final String NAME = "fixed"; - private static Set> ifc = Collections.unmodifiableSet(Sets.newHashSet( + private static final Set> ifc = ImmutableSet.of( (Class) ModifiableThreadPoolServiceInterface.class, - TestingThreadPoolServiceInterface.class)); + TestingThreadPoolServiceInterface.class); @Override public String getImplementationName() { @@ -36,15 +34,15 @@ public class TestingFixedThreadPoolModuleFactory extends AbstractTestingFixedThr } @Override - public TestingFixedThreadPoolModule createModule(String instanceName, - DependencyResolver dependencyResolver, BundleContext bundleContext) { + public TestingFixedThreadPoolModule createModule(final String instanceName, + final DependencyResolver dependencyResolver, final BundleContext bundleContext) { return new TestingFixedThreadPoolModule(new ModuleIdentifier(NAME, instanceName), null, null); } @Override - public Module createModule(String instanceName, - DependencyResolver dependencyResolver, DynamicMBeanWithInstance old, BundleContext bundleContext) + public Module createModule(final String instanceName, + final DependencyResolver dependencyResolver, final DynamicMBeanWithInstance old, final BundleContext bundleContext) throws Exception { int threadCount = (Integer) old.getAttribute("ThreadCount"); // is the instance compatible? @@ -65,12 +63,12 @@ public class TestingFixedThreadPoolModuleFactory extends AbstractTestingFixedThr @Override public boolean isModuleImplementingServiceInterface( - Class serviceInterface) { + final Class serviceInterface) { return ifc.contains(serviceInterface); } @Override - public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, BundleContext bundleContext) { + public Set getDefaultModules(final DependencyResolverFactory dependencyResolverFactory, final BundleContext bundleContext) { return new HashSet(); } diff --git a/opendaylight/config/config-netty-config/pom.xml b/opendaylight/config/config-netty-config/pom.xml index 257c36779c..1e7a027b5b 100644 --- a/opendaylight/config/config-netty-config/pom.xml +++ b/opendaylight/config/config-netty-config/pom.xml @@ -1,4 +1,5 @@ + - 4.0.0 - - org.opendaylight.controller - config-subsystem - 0.3.0-SNAPSHOT - - config-netty-config - Configuration files for sal-rest-connector - jar - - - - org.codehaus.mojo - build-helper-maven-plugin - - - attach-artifacts - - attach-artifact - - package - - - - ${project.build.directory}/classes/initial/00-netty.xml - xml - config - - - - - - - - + 4.0.0 + + org.opendaylight.controller + config-subsystem + 0.3.0-SNAPSHOT + + config-netty-config + Configuration files for sal-rest-connector + jar + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + + attach-artifact + + package + + + + ${project.build.directory}/classes/initial/00-netty.xml + xml + config + + + + + + + + diff --git a/opendaylight/config/config-persister-api/src/test/java/org/opendaylight/controller/config/persist/test/PropertiesProviderTest.java b/opendaylight/config/config-persister-api/src/test/java/org/opendaylight/controller/config/persist/test/PropertiesProviderTest.java index 3d4757b926..2c60310e8a 100644 --- a/opendaylight/config/config-persister-api/src/test/java/org/opendaylight/controller/config/persist/test/PropertiesProviderTest.java +++ b/opendaylight/config/config-persister-api/src/test/java/org/opendaylight/controller/config/persist/test/PropertiesProviderTest.java @@ -12,7 +12,7 @@ import java.util.Map; import org.opendaylight.controller.config.persist.api.PropertiesProvider; public class PropertiesProviderTest implements PropertiesProvider { - private final Map properties = new HashMap(); + private final Map properties = new HashMap<>(); public void addProperty(String key,String value){ properties.put(key,value); diff --git a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java index 7f8ebd7fdd..92bf080662 100644 --- a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java +++ b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryPersister.java @@ -7,17 +7,9 @@ */ package org.opendaylight.controller.config.persist.storage.directory.xml; +import static com.google.common.base.Preconditions.checkArgument; import com.google.common.base.Optional; import com.google.common.io.Files; -import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; -import org.opendaylight.controller.config.persist.api.Persister; -import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -27,11 +19,17 @@ import java.util.Collections; import java.util.List; import java.util.Set; import java.util.SortedSet; - -import static com.google.common.base.Preconditions.checkArgument; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; +import org.opendaylight.controller.config.persist.api.Persister; +import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class XmlDirectoryPersister implements Persister { - private static final Logger logger = LoggerFactory.getLogger(XmlDirectoryPersister.class); + private static final Logger LOG = LoggerFactory.getLogger(XmlDirectoryPersister.class); private final File storage; private final Optional extensionsFilter; @@ -39,25 +37,25 @@ public class XmlDirectoryPersister implements Persister { /** * Creates XmlDirectoryPersister that picks up all files in specified folder */ - public XmlDirectoryPersister(File storage) { + public XmlDirectoryPersister(final File storage) { this(storage, Optional.absent()); } /** * Creates XmlDirectoryPersister that picks up files only with specified file extension */ - public XmlDirectoryPersister(File storage, Set fileExtensions) { + public XmlDirectoryPersister(final File storage, final Set fileExtensions) { this(storage, Optional.of(getFilter(fileExtensions))); } - private XmlDirectoryPersister(File storage, Optional extensionsFilter) { + private XmlDirectoryPersister(final File storage, final Optional extensionsFilter) { checkArgument(storage.exists() && storage.isDirectory(), "Storage directory does not exist: " + storage); this.storage = storage; this.extensionsFilter = extensionsFilter; } @Override - public void persistConfig(ConfigSnapshotHolder holder) throws IOException { + public void persistConfig(final ConfigSnapshotHolder holder) throws IOException { throw new UnsupportedOperationException("This adapter is read only. Please set readonly=true on " + getClass()); } @@ -70,11 +68,11 @@ public class XmlDirectoryPersister implements Persister { List sortedFiles = new ArrayList<>(Arrays.asList(filesArray)); Collections.sort(sortedFiles); // combine all found files - logger.debug("Reading files in following order: {}", sortedFiles); + LOG.debug("Reading files in following order: {}", sortedFiles); List result = new ArrayList<>(); for (File file : sortedFiles) { - logger.trace("Adding file '{}' to combined result", file); + LOG.trace("Adding file '{}' to combined result", file); Optional h = fromXmlSnapshot(file); // Ignore non valid snapshot if(h.isPresent() == false) { @@ -86,12 +84,12 @@ public class XmlDirectoryPersister implements Persister { return result; } - private Optional fromXmlSnapshot(File file) { + private Optional fromXmlSnapshot(final File file) { try { return Optional.of(loadLastConfig(file)); } catch (JAXBException e) { // In case of parse error, issue a warning, ignore and continue - logger.warn( + LOG.warn( "Unable to parse configuration snapshot from {}. Initial config from {} will be IGNORED in this run. " + "Note that subsequent config files may fail due to this problem. " + "Xml markup in this file needs to be fixed, for detailed information see enclosed exception.", @@ -101,7 +99,7 @@ public class XmlDirectoryPersister implements Persister { return Optional.absent(); } - public static ConfigSnapshotHolder loadLastConfig(File file) throws JAXBException { + public static ConfigSnapshotHolder loadLastConfig(final File file) throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(ConfigSnapshot.class); Unmarshaller um = jaxbContext.createUnmarshaller(); @@ -132,7 +130,7 @@ public class XmlDirectoryPersister implements Persister { return new FilenameFilter() { @Override - public boolean accept(File dir, String name) { + public boolean accept(final File dir, final String name) { String ext = Files.getFileExtension(name); return fileExtensions.contains(ext); } diff --git a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryStorageAdapter.java b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryStorageAdapter.java index 40f8c283dd..42ab93b585 100644 --- a/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryStorageAdapter.java +++ b/opendaylight/config/config-persister-directory-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/directory/xml/XmlDirectoryStorageAdapter.java @@ -11,21 +11,20 @@ package org.opendaylight.controller.config.persist.storage.directory.xml; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.Sets; +import java.io.File; +import java.util.Set; 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.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.util.Set; - /** * StorageAdapter that retrieves initial configuration from a directory. If multiple files are present, snapshot and * required capabilities will be merged together. Writing to this persister is not supported. */ public class XmlDirectoryStorageAdapter implements StorageAdapter { - private static final Logger logger = LoggerFactory.getLogger(XmlDirectoryStorageAdapter.class); + private static final Logger LOG = LoggerFactory.getLogger(XmlDirectoryStorageAdapter.class); public static final String DIRECTORY_STORAGE_PROP = "directoryStorage"; public static final String INCLUDE_EXT_PROP = "includeExtensions"; @@ -33,23 +32,23 @@ public class XmlDirectoryStorageAdapter implements StorageAdapter { @Override - public Persister instantiate(PropertiesProvider propertiesProvider) { + public Persister instantiate(final PropertiesProvider propertiesProvider) { String fileStorageProperty = propertiesProvider.getProperty(DIRECTORY_STORAGE_PROP); Preconditions.checkNotNull(fileStorageProperty, "Unable to find " + propertiesProvider.getFullKeyForReporting(DIRECTORY_STORAGE_PROP)); File storage = new File(fileStorageProperty); String fileExtensions = propertiesProvider.getProperty(INCLUDE_EXT_PROP); - logger.debug("Using storage: {}", storage); + LOG.debug("Using storage: {}", storage); if(fileExtensions != null) { - logger.debug("Using extensions: {}", fileExtensions); + LOG.debug("Using extensions: {}", fileExtensions); return new XmlDirectoryPersister(storage, splitExtensions(fileExtensions)); } else { return new XmlDirectoryPersister(storage); } } - private Set splitExtensions(String fileExtensions) { + private Set splitExtensions(final String fileExtensions) { return Sets.newHashSet(Splitter.on(EXTENSIONS_SEPARATOR).trimResults().omitEmptyStrings() .split(fileExtensions)); } diff --git a/opendaylight/config/config-persister-directory-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/xml/DirectoryStorageAdapterTest.java b/opendaylight/config/config-persister-directory-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/xml/DirectoryStorageAdapterTest.java index 7af06bd3e3..11c7e1253a 100644 --- a/opendaylight/config/config-persister-directory-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/xml/DirectoryStorageAdapterTest.java +++ b/opendaylight/config/config-persister-directory-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/xml/DirectoryStorageAdapterTest.java @@ -12,13 +12,12 @@ import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - +import com.google.common.base.Optional; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.SortedSet; - import org.junit.Test; import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; import org.opendaylight.controller.config.persist.api.Persister; @@ -27,13 +26,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; -import com.google.common.base.Optional; - public class DirectoryStorageAdapterTest { + private static final Logger LOG = LoggerFactory.getLogger(DirectoryStorageAdapterTest.class); Persister tested; - Logger logger = LoggerFactory.getLogger(DirectoryStorageAdapterTest.class.toString()); - private Persister instantiatePersisterFromAdapter(File file, Optional extensions){ + private Persister instantiatePersisterFromAdapter(final File file, final Optional extensions){ PropertiesProviderTest pp = new PropertiesProviderTest(); pp.addProperty(XmlDirectoryStorageAdapter.DIRECTORY_STORAGE_PROP,file.getPath()); if(extensions.isPresent()) { @@ -44,7 +41,7 @@ public class DirectoryStorageAdapterTest { return dsa.instantiate(pp); } - private Persister instantiatePersisterFromAdapter(File file){ + private Persister instantiatePersisterFromAdapter(final File file){ return instantiatePersisterFromAdapter(file, Optional.absent()); } @@ -74,7 +71,7 @@ public class DirectoryStorageAdapterTest { } } - private File getFolder(String folderName) { + private File getFolder(final String folderName) { File result = new File(("src/test/resources/" + folderName).replace("/", File.separator)); assertTrue(result + " is not a directory", result.isDirectory()); @@ -86,7 +83,7 @@ public class DirectoryStorageAdapterTest { File folder = getFolder("oneFile"); tested = instantiatePersisterFromAdapter(folder, Optional.of("xml")); - logger.info("Testing : " + tested.toString()); + LOG.info("Testing : {}", tested); List results = tested.loadLastConfigs(); assertEquals(1, results.size()); ConfigSnapshotHolder result = results.get(0); @@ -97,10 +94,10 @@ public class DirectoryStorageAdapterTest { public void testOneFileWrongExtension() throws Exception { File folder = getFolder("oneFile"); tested = instantiatePersisterFromAdapter(folder, Optional.of("aa, bb")); - logger.info("Testing : " + tested.toString()); + LOG.info("Testing : {}", tested); } - private void assertResult(ConfigSnapshotHolder result, String s, String... caps) throws SAXException, IOException { + private void assertResult(final ConfigSnapshotHolder result, final String s, final String... caps) throws SAXException, IOException { assertXMLEqual(s, result.getConfigSnapshot()); int i = 0; for (String capFromSnapshot : result.getCapabilities()) { @@ -112,7 +109,7 @@ public class DirectoryStorageAdapterTest { public void testTwoFilesAllExtensions() throws Exception { File folder = getFolder("twoFiles"); tested = instantiatePersisterFromAdapter(folder); - logger.info("Testing : " + tested.toString()); + LOG.info("Testing : {}", tested); List results = tested.loadLastConfigs(); assertEquals(2, results.size()); @@ -124,7 +121,7 @@ public class DirectoryStorageAdapterTest { public void testTwoFilesTwoExtensions() throws Exception { File folder = getFolder("twoFiles"); tested = instantiatePersisterFromAdapter(folder, Optional.of("xml, xml2")); - logger.info("Testing : " + tested.toString()); + LOG.info("Testing : {}", tested); assertEquals(2, tested.loadLastConfigs().size()); } @@ -132,7 +129,7 @@ public class DirectoryStorageAdapterTest { public void testTwoFilesOnlyOneExtension() throws Exception { File folder = getFolder("twoFiles"); tested = instantiatePersisterFromAdapter(folder, Optional.of("xml")); - logger.info("Testing : " + tested.toString()); + LOG.info("Testing : ", tested); List results = tested.loadLastConfigs(); assertEquals(1, results.size()); @@ -143,7 +140,7 @@ public class DirectoryStorageAdapterTest { public void testTwoFilesOneInvalid() throws Exception { File folder = getFolder("twoFiles_corrupt"); tested = instantiatePersisterFromAdapter(folder, Optional.of("xml")); - logger.info("Testing : " + tested.toString()); + LOG.info("Testing : {}", tested); List results = tested.loadLastConfigs(); assertEquals(1, results.size()); diff --git a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPusherCustomizer.java b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPusherCustomizer.java index abb1dbe9aa..52bca76555 100644 --- a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPusherCustomizer.java +++ b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPusherCustomizer.java @@ -17,14 +17,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ConfigPusherCustomizer implements ServiceTrackerCustomizer, AutoCloseable { - private static final Logger LOGGER = LoggerFactory.getLogger(ConfigPusherCustomizer.class); + private static final Logger LOG = LoggerFactory.getLogger(ConfigPusherCustomizer.class); private ConfigFeaturesListener configFeaturesListener = null; private FeatureServiceCustomizer featureServiceCustomizer = null; private ServiceTracker fsst = null; @Override public ConfigPusher addingService(ServiceReference configPusherServiceReference) { - LOGGER.trace("Got ConfigPusherCustomizer.addingService {}", configPusherServiceReference); + LOG.trace("Got ConfigPusherCustomizer.addingService {}", configPusherServiceReference); BundleContext bc = configPusherServiceReference.getBundle().getBundleContext(); ConfigPusher cpService = bc.getService(configPusherServiceReference); featureServiceCustomizer = new FeatureServiceCustomizer(cpService); diff --git a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPushingRunnable.java b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPushingRunnable.java index b0e64b84d2..1a40bb34d7 100644 --- a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPushingRunnable.java +++ b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ConfigPushingRunnable.java @@ -40,14 +40,14 @@ public class ConfigPushingRunnable implements Runnable { while(true) { try { if(!interuppted) { - if(toInstall.isEmpty()) { - event = queue.take(); - } else { - event = queue.poll(POLL_TIME, TimeUnit.MILLISECONDS); - } - if(event != null && event.getFeature() !=null) { - processFeatureEvent(event,toInstall); - } + if(toInstall.isEmpty()) { + event = queue.take(); + } else { + event = queue.poll(POLL_TIME, TimeUnit.MILLISECONDS); + } + if(event != null && event.getFeature() !=null) { + processFeatureEvent(event,toInstall); + } } else if(toInstall.isEmpty()) { LOGGER.error("ConfigPushingRunnable - exiting"); return; diff --git a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigPusher.java b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigPusher.java index 5c5061277b..7b90580a66 100644 --- a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigPusher.java +++ b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigPusher.java @@ -7,11 +7,11 @@ */ package org.opendaylight.controller.configpusherfeature.internal; +import com.google.common.collect.LinkedHashMultimap; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; - import org.apache.karaf.features.Feature; import org.apache.karaf.features.FeaturesService; import org.opendaylight.controller.config.persist.api.ConfigPusher; @@ -19,13 +19,11 @@ import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.LinkedHashMultimap; - /* * Simple class to push configs to the config subsystem from Feature's configfiles */ public class FeatureConfigPusher { - private static final Logger LOGGER = LoggerFactory.getLogger(FeatureConfigPusher.class); + private static final Logger LOG = LoggerFactory.getLogger(FeatureConfigPusher.class); private static final int MAX_RETRIES=100; private static final int RETRY_PAUSE_MILLIS=1; private FeaturesService featuresService = null; @@ -46,7 +44,7 @@ public class FeatureConfigPusher { /* * @param p - ConfigPusher to push ConfigSnapshotHolders */ - public FeatureConfigPusher(ConfigPusher p, FeaturesService f) { + public FeatureConfigPusher(final ConfigPusher p, final FeaturesService f) { pusher = p; featuresService = f; } @@ -59,7 +57,7 @@ public class FeatureConfigPusher { * If a Feature is not in the returned LinkedHashMultimap then we couldn't push its configs * (Ususally because it was not yet installed) */ - public LinkedHashMultimap pushConfigs(List features) throws Exception, InterruptedException { + public LinkedHashMultimap pushConfigs(final List features) throws Exception, InterruptedException { LinkedHashMultimap pushedFeatures = LinkedHashMultimap.create(); for(Feature feature: features) { LinkedHashSet configSnapShots = pushConfig(feature); @@ -70,7 +68,7 @@ public class FeatureConfigPusher { return pushedFeatures; } - private LinkedHashSet pushConfig(Feature feature) throws Exception, InterruptedException { + private LinkedHashSet pushConfig(final Feature feature) throws Exception, InterruptedException { LinkedHashSet configs = new LinkedHashSet(); if(isInstalled(feature)) { ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(feature,featuresService); @@ -83,20 +81,20 @@ public class FeatureConfigPusher { return configs; } - private boolean isInstalled(Feature feature) { + private boolean isInstalled(final Feature feature) { for(int retries=0;retries installedFeatures = Arrays.asList(featuresService.listInstalledFeatures()); if(installedFeatures.contains(feature)) { return true; } else { - LOGGER.warn("Karaf featuresService.listInstalledFeatures() has not yet finished installing feature (retry {}) {} {}",retries,feature.getName(),feature.getVersion()); + LOG.warn("Karaf featuresService.listInstalledFeatures() has not yet finished installing feature (retry {}) {} {}",retries,feature.getName(),feature.getVersion()); } } catch (Exception e) { if(retries < MAX_RETRIES) { - LOGGER.warn("Karaf featuresService.listInstalledFeatures() has thrown an exception, retry {}, Exception {}", retries,e); + LOG.warn("Karaf featuresService.listInstalledFeatures() has thrown an exception, retry {}", retries, e); } else { - LOGGER.error("Giving up on Karaf featuresService.listInstalledFeatures() which has thrown an exception, retry {}, Exception {}", retries,e); + LOG.error("Giving up on Karaf featuresService.listInstalledFeatures() which has thrown an exception, retry {}", retries, e); throw e; } } @@ -106,11 +104,11 @@ public class FeatureConfigPusher { throw new IllegalStateException(e1); } } - LOGGER.error("Giving up (after {} retries) on Karaf featuresService.listInstalledFeatures() which has not yet finished installing feature {} {}",MAX_RETRIES,feature.getName(),feature.getVersion()); + LOG.error("Giving up (after {} retries) on Karaf featuresService.listInstalledFeatures() which has not yet finished installing feature {} {}",MAX_RETRIES,feature.getName(),feature.getVersion()); return false; } - private LinkedHashSet pushConfig(LinkedHashSet configs) throws InterruptedException { + private LinkedHashSet pushConfig(final LinkedHashSet configs) throws InterruptedException { LinkedHashSet configsToPush = new LinkedHashSet(configs); configsToPush.removeAll(pushedConfigs); if(!configsToPush.isEmpty()) { diff --git a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigSnapshotHolder.java b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigSnapshotHolder.java index d1a92ebe7f..5ab5c959f7 100644 --- a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigSnapshotHolder.java +++ b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/FeatureConfigSnapshotHolder.java @@ -106,16 +106,15 @@ public class FeatureConfigSnapshotHolder implements ConfigSnapshotHolder { @Override public String toString() { - StringBuilder b = new StringBuilder(); - Path p = Paths.get(fileInfo.getFinalname()); - b.append(p.getFileName()) - .append("(") - .append(getCauseFeature()) - .append(",") - .append(getFeature()) - .append(")"); - return b.toString(); - + StringBuilder b = new StringBuilder(); + Path p = Paths.get(fileInfo.getFinalname()); + b.append(p.getFileName()) + .append("(") + .append(getCauseFeature()) + .append(",") + .append(getFeature()) + .append(")"); + return b.toString(); } @Override diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java b/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java index 2bfe70adb8..942ba4c4b3 100644 --- a/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java +++ b/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java @@ -8,12 +8,12 @@ package org.opendaylight.controller.config.persist.storage.file.xml; -import static junit.framework.Assert.assertFalse; +import static org.junit.Assert.assertFalse; import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; - +import com.google.common.base.Charsets; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -21,17 +21,12 @@ import java.nio.file.Files; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; - -import junit.framework.Assert; - import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; import org.opendaylight.controller.config.persist.test.PropertiesProviderTest; -import com.google.common.base.Charsets; - public class FileStorageAdapterTest { private static int i; @@ -42,8 +37,9 @@ public class FileStorageAdapterTest { @Before public void setUp() throws Exception { file = Files.createTempFile("testFilePersist", ".txt").toFile(); - if (!file.exists()) + if (!file.exists()) { return; + } com.google.common.io.Files.write("", file, Charsets.UTF_8); i = 1; } @@ -71,7 +67,7 @@ public class FileStorageAdapterTest { storage.persistConfig(holder); - Assert.assertEquals(storage.toString().replace("\\","/"),"XmlFileStorageAdapter [storage="+NON_EXISTENT_DIRECTORY+NON_EXISTENT_FILE+"]"); + assertEquals(storage.toString().replace("\\","/"),"XmlFileStorageAdapter [storage="+NON_EXISTENT_DIRECTORY+NON_EXISTENT_FILE+"]"); delete(new File(NON_EXISTENT_DIRECTORY)); } @Test @@ -109,7 +105,7 @@ public class FileStorageAdapterTest { storage.setNumberOfBackups(Integer.MAX_VALUE); List last = storage.loadLastConfigs(); - Assert.assertEquals(createCaps(), last.get(0).getCapabilities()); + assertEquals(createCaps(), last.get(0).getCapabilities()); } private SortedSet createCaps() { @@ -188,8 +184,9 @@ public class FileStorageAdapterTest { @Test public void testNoLastConfig() throws Exception { File file = Files.createTempFile("testFilePersist", ".txt").toFile(); - if (!file.exists()) + if (!file.exists()) { return; + } XmlFileStorageAdapter storage = new XmlFileStorageAdapter(); storage.setFileStorage(file); @@ -223,12 +220,14 @@ public class FileStorageAdapterTest { return "" + i++ + ""; } - private void delete(File f) throws IOException { + private void delete(final File f) throws IOException { if (f.isDirectory()) { - for (File c : f.listFiles()) + for (File c : f.listFiles()) { delete(c); + } } - if (!f.delete()) + if (!f.delete()) { throw new FileNotFoundException("Failed to delete file: " + f); + } } } diff --git a/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/AttributeEntryTest.java b/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/AttributeEntryTest.java index b2afd3542e..200fa8854d 100644 --- a/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/AttributeEntryTest.java +++ b/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/AttributeEntryTest.java @@ -2,8 +2,6 @@ package org.opendaylight.controller.config.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; - -import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/ConfigRegistryClientsTest.java b/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/ConfigRegistryClientsTest.java index 0524f0019a..fc1c3f8afe 100644 --- a/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/ConfigRegistryClientsTest.java +++ b/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/ConfigRegistryClientsTest.java @@ -7,29 +7,25 @@ */ package org.opendaylight.controller.config.util; +import static org.hamcrest.CoreMatchers.hasItem; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; -import static org.junit.matchers.JUnitMatchers.hasItem; - +import com.google.common.collect.Sets; import java.lang.management.ManagementFactory; import java.util.HashMap; import java.util.Map; import java.util.Set; - import javax.management.InstanceNotFoundException; import javax.management.MBeanServer; import javax.management.ObjectName; - import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.config.api.ConfigRegistry; -import com.google.common.collect.Sets; - public class ConfigRegistryClientsTest { private TestingConfigRegistry testingRegistry; @@ -145,7 +141,7 @@ public class ConfigRegistryClientsTest { assertEquals(Sets.newHashSet(TestingConfigRegistry.run2, TestingConfigRegistry.run1, TestingConfigRegistry.run3), jmxLookup); } - private Set lookupRuntimeBeans(ConfigRegistryClient client) + private Set lookupRuntimeBeans(final ConfigRegistryClient client) throws Exception { Set beans = client.lookupRuntimeBeans(); for (ObjectName on : beans) { @@ -178,7 +174,7 @@ public class ConfigRegistryClientsTest { } private Set clientLookupRuntimeBeansWithModuleAndInstance( - ConfigRegistryClient client, String moduleName, String instanceName) { + final ConfigRegistryClient client, final String moduleName, final String instanceName) { Set beans = client.lookupRuntimeBeans(moduleName, instanceName); if (beans.size() > 0) { assertEquals("RuntimeBean", @@ -220,7 +216,7 @@ public class ConfigRegistryClientsTest { assertThat(clientLookupServiceInterfaceNames(testingRegistryON), hasItem(TestingConfigRegistry.serviceQName2)); } - private Set clientLookupServiceInterfaceNames(ObjectName client) throws InstanceNotFoundException{ + private Set clientLookupServiceInterfaceNames(final ObjectName client) throws InstanceNotFoundException{ return jmxRegistryClient.lookupServiceInterfaceNames(client); } diff --git a/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/LookupTest.java b/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/LookupTest.java index 4489762a47..3bc362b38c 100644 --- a/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/LookupTest.java +++ b/opendaylight/config/config-util/src/test/java/org/opendaylight/controller/config/util/LookupTest.java @@ -93,8 +93,7 @@ public class LookupTest { public void testLookupConfigBeans2() throws Exception { Method method = LookupRegistry.class.getMethod("lookupConfigBeans", String.class, String.class); - Object[] args = new Object[] { TestingConfigRegistry.moduleName1, - TestingConfigRegistry.instName1 }; + Object[] args = new Object[] { TestingConfigRegistry.moduleName1, TestingConfigRegistry.instName1 }; test(method, args); } @@ -102,8 +101,7 @@ public class LookupTest { public void testLookupConfigBean() throws Exception { Method method = LookupRegistry.class.getMethod("lookupConfigBean", String.class, String.class); - Object[] args = new Object[] { TestingConfigRegistry.moduleName1, - TestingConfigRegistry.instName1 }; + Object[] args = new Object[] { TestingConfigRegistry.moduleName1, TestingConfigRegistry.instName1 }; test(method, args); } diff --git a/opendaylight/config/logback-config-loader/src/test/java/org/opendaylight/controller/logback/config/loader/test/LogbackConfigurationLoaderTest.java b/opendaylight/config/logback-config-loader/src/test/java/org/opendaylight/controller/logback/config/loader/test/LogbackConfigurationLoaderTest.java index 2e9bf1df00..adbb9f4cd6 100644 --- a/opendaylight/config/logback-config-loader/src/test/java/org/opendaylight/controller/logback/config/loader/test/LogbackConfigurationLoaderTest.java +++ b/opendaylight/config/logback-config-loader/src/test/java/org/opendaylight/controller/logback/config/loader/test/LogbackConfigurationLoaderTest.java @@ -58,23 +58,22 @@ public class LogbackConfigurationLoaderTest { // check logs String[] expectedLogs = new String[] { - "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.LogbackConfigurationLoaderTest: LOGBACK ready -> about to use it", - "LoggingEvent -> [TRACE] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: tracing", - "LoggingEvent -> [DEBUG] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: debugging", - "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: infoing", - "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: warning", - "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: erroring", - "LoggingEvent -> [DEBUG] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: debugging", - "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: infoing", - "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: warning", - "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: erroring", - "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.logwork.Informer: infoing", - "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Informer: warning", - "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Informer: erroring", - "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Warner: warning", - "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Warner: erroring", - "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Errorer: erroring" - + "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.LogbackConfigurationLoaderTest: LOGBACK ready -> about to use it", + "LoggingEvent -> [TRACE] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: tracing", + "LoggingEvent -> [DEBUG] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: debugging", + "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: infoing", + "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: warning", + "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Tracer: erroring", + "LoggingEvent -> [DEBUG] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: debugging", + "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: infoing", + "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: warning", + "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Debugger: erroring", + "LoggingEvent -> [INFO] org.opendaylight.controller.logback.config.loader.test.logwork.Informer: infoing", + "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Informer: warning", + "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Informer: erroring", + "LoggingEvent -> [WARN] org.opendaylight.controller.logback.config.loader.test.logwork.Warner: warning", + "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Warner: erroring", + "LoggingEvent -> [ERROR] org.opendaylight.controller.logback.config.loader.test.logwork.Errorer: erroring" }; List logSnapshot = new ArrayList<>(TestAppender.getLogRecord()); diff --git a/opendaylight/config/logback-config-loader/src/test/resources/logback-test.xml b/opendaylight/config/logback-config-loader/src/test/resources/logback-test.xml index 7fb760aca7..52f2521969 100755 --- a/opendaylight/config/logback-config-loader/src/test/resources/logback-test.xml +++ b/opendaylight/config/logback-config-loader/src/test/resources/logback-test.xml @@ -1,17 +1,17 @@ - - - - - - %date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - + + + + + + %date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + diff --git a/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt.xml b/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt.xml index ca489d5c78..e4f8dfc26b 100755 --- a/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt.xml +++ b/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt.xml @@ -1,19 +1,19 @@ - - - - - - - %date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - + + + + + + + %date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + diff --git a/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt2.xml b/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt2.xml index 89f82c5046..83557f6072 100755 --- a/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt2.xml +++ b/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt2.xml @@ -1,12 +1,12 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt3.xml b/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt3.xml index a37b6f7f21..a944cc28b5 100755 --- a/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt3.xml +++ b/opendaylight/config/logback-config-loader/src/test/resources/logback.d/logback-alt3.xml @@ -1,11 +1,11 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/ContextSetterImpl.java b/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/ContextSetterImpl.java index ff7da5df48..087648cae7 100644 --- a/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/ContextSetterImpl.java +++ b/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/ContextSetterImpl.java @@ -7,16 +7,6 @@ */ package org.opendaylight.controller.config.yang.logback.config; -import java.io.Closeable; -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.slf4j.LoggerFactory; - import ch.qos.logback.classic.Level; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.encoder.PatternLayoutEncoder; @@ -26,10 +16,17 @@ import ch.qos.logback.core.Appender; import ch.qos.logback.core.rolling.FixedWindowRollingPolicy; import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy; import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; - import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Sets; +import java.io.Closeable; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.slf4j.LoggerFactory; /** * Implementation of {@link ContextSetter}. Resets running logback @@ -40,12 +37,13 @@ public class ContextSetterImpl implements ContextSetter, Closeable { private final LogbackStatusListener statusListener; private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ContextSetterImpl.class); - public ContextSetterImpl(LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper) { + public ContextSetterImpl(final LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper) { statusListener = new LogbackStatusListener(rootRuntimeBeanRegistratorWrapper); statusListener.register(); } - public void updateContext(LogbackModule module) { + @Override + public void updateContext(final LogbackModule module) { LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); List loggersBefore = context.getLoggerList(); @@ -53,12 +51,12 @@ public class ContextSetterImpl implements ContextSetter, Closeable { createLoggers(context, module, Sets.newHashSet(loggersBefore)); } - private Map> createConsoleAppenders(LoggerContext context, LogbackModule module) { + private Map> createConsoleAppenders(final LoggerContext context, final LogbackModule module) { Map> appendersMap = new HashMap<>(); for (ConsoleAppenderTO appender : module.getConsoleAppenderTO()) { Preconditions.checkState(appendersMap.containsKey(appender.getName()) == false, "Duplicate appender name %s", appender.getName()); - ch.qos.logback.core.ConsoleAppender app = new ch.qos.logback.core.ConsoleAppender(); + ch.qos.logback.core.ConsoleAppender app = new ch.qos.logback.core.ConsoleAppender<>(); app.setContext(context); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(context); @@ -77,8 +75,8 @@ public class ContextSetterImpl implements ContextSetter, Closeable { return appendersMap; } - private void createLoggers(LoggerContext context, LogbackModule module, - Set loggersBefore) { + private void createLoggers(final LoggerContext context, final LogbackModule module, + final Set loggersBefore) { Map> appendersMap = getAppenders(module, context); @@ -97,8 +95,8 @@ public class ContextSetterImpl implements ContextSetter, Closeable { } } - private void addNewAppenders(Map> appendersMap, LoggerTO logger, - ch.qos.logback.classic.Logger logbackLogger, Optional>> appendersBefore) { + private void addNewAppenders(final Map> appendersMap, final LoggerTO logger, + final ch.qos.logback.classic.Logger logbackLogger, final Optional>> appendersBefore) { if (logger.getAppenders() != null) { for (String appenderName : logger.getAppenders()) { if (appendersMap.containsKey(appenderName)) { @@ -112,8 +110,8 @@ public class ContextSetterImpl implements ContextSetter, Closeable { } } - private void removeBeforeAppenders(Set loggersBefore, LoggerTO logger, - ch.qos.logback.classic.Logger logbackLogger, Optional>> appendersBefore) { + private void removeBeforeAppenders(final Set loggersBefore, final LoggerTO logger, + final ch.qos.logback.classic.Logger logbackLogger, final Optional>> appendersBefore) { if (appendersBefore.isPresent()) { for (Appender appenderBefore : appendersBefore.get()) { logbackLogger.detachAppender(appenderBefore); @@ -125,8 +123,8 @@ public class ContextSetterImpl implements ContextSetter, Closeable { } } - private Optional>> getAppendersBefore(Set loggersBefore, - ch.qos.logback.classic.Logger logbackLogger) { + private Optional>> getAppendersBefore(final Set loggersBefore, + final ch.qos.logback.classic.Logger logbackLogger) { if (loggersBefore.contains(logbackLogger)) { Iterator> appenderIt = logbackLogger.iteratorForAppenders(); Set> appendersBefore = Sets.newHashSet(); @@ -140,7 +138,7 @@ public class ContextSetterImpl implements ContextSetter, Closeable { } - private Map> getAppenders(LogbackModule module, LoggerContext context) { + private Map> getAppenders(final LogbackModule module, final LoggerContext context) { Map> appendersMap = new HashMap<>(); addAllAppenders(appendersMap, createRollingAppenders(context, module)); addAllAppenders(appendersMap, createFileAppenders(context, module)); @@ -149,8 +147,8 @@ public class ContextSetterImpl implements ContextSetter, Closeable { return appendersMap; } - private void addAllAppenders(Map> allAppenders, - Map> appendersToAdd) { + private void addAllAppenders(final Map> allAppenders, + final Map> appendersToAdd) { for (String appenderName : appendersToAdd.keySet()) { Preconditions.checkState(allAppenders.containsKey(appenderName) == false, "Duplicate appender name %s", appenderName); @@ -158,12 +156,12 @@ public class ContextSetterImpl implements ContextSetter, Closeable { } } - private Map> createFileAppenders(LoggerContext context, LogbackModule module) { + private Map> createFileAppenders(final LoggerContext context, final LogbackModule module) { Map> appendersMap = new HashMap<>(); for (FileAppenderTO appender : module.getFileAppenderTO()) { Preconditions.checkState(appendersMap.containsKey(appender.getName()) == false, "Duplicate appender name %s", appender.getName()); - ch.qos.logback.core.FileAppender app = new ch.qos.logback.core.FileAppender<>(); + ch.qos.logback.core.FileAppender app = new ch.qos.logback.core.FileAppender<>(); app.setAppend(appender.getAppend()); app.setContext(context); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); @@ -180,12 +178,12 @@ public class ContextSetterImpl implements ContextSetter, Closeable { return appendersMap; } - private Map> createRollingAppenders(LoggerContext context, LogbackModule module) { + private Map> createRollingAppenders(final LoggerContext context, final LogbackModule module) { Map> appendersMap = new HashMap<>(); for (RollingFileAppenderTO appender : module.getRollingFileAppenderTO()) { Preconditions.checkState(appendersMap.containsKey(appender.getName()) == false, "Duplicate appender name %s", appender.getName()); - ch.qos.logback.core.rolling.RollingFileAppender app = new ch.qos.logback.core.rolling.RollingFileAppender<>(); + ch.qos.logback.core.rolling.RollingFileAppender app = new ch.qos.logback.core.rolling.RollingFileAppender<>(); app.setAppend(appender.getAppend()); app.setContext(context); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); @@ -204,7 +202,7 @@ public class ContextSetterImpl implements ContextSetter, Closeable { policy.start(); app.setRollingPolicy(policy); } else if (appender.getRollingPolicyType().equals("TimeBasedRollingPolicy")) { - TimeBasedRollingPolicy policy = new TimeBasedRollingPolicy(); + TimeBasedRollingPolicy policy = new TimeBasedRollingPolicy<>(); policy.setContext(context); policy.setMaxHistory(appender.getMaxHistory()); if (appender.getCleanHistoryOnStart() != null) { @@ -215,7 +213,7 @@ public class ContextSetterImpl implements ContextSetter, Closeable { policy.start(); app.setRollingPolicy(policy); } - SizeBasedTriggeringPolicy triggeringPolicy = new SizeBasedTriggeringPolicy(); + SizeBasedTriggeringPolicy triggeringPolicy = new SizeBasedTriggeringPolicy<>(); triggeringPolicy.setContext(context); triggeringPolicy.setMaxFileSize(appender.getMaxFileSize()); triggeringPolicy.start(); diff --git a/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java b/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java index b5d0d1b4de..bd19d5eecd 100644 --- a/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java +++ b/opendaylight/config/logback-config/src/main/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleFactory.java @@ -16,6 +16,18 @@ */ package org.opendaylight.controller.config.yang.logback.config; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.encoder.PatternLayoutEncoder; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.classic.spi.LoggerComparator; +import ch.qos.logback.core.Appender; +import ch.qos.logback.core.rolling.FixedWindowRollingPolicy; +import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy; +import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -24,7 +36,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import org.apache.commons.lang3.StringUtils; import org.opendaylight.controller.config.api.DependencyResolver; import org.opendaylight.controller.config.api.DependencyResolverFactory; @@ -32,20 +43,6 @@ import org.opendaylight.controller.config.api.ModuleIdentifier; import org.osgi.framework.BundleContext; import org.slf4j.LoggerFactory; -import ch.qos.logback.classic.Logger; -import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.encoder.PatternLayoutEncoder; -import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.classic.spi.LoggerComparator; -import ch.qos.logback.core.Appender; -import ch.qos.logback.core.rolling.FixedWindowRollingPolicy; -import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy; -import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - /** * */ @@ -59,8 +56,8 @@ public class LogbackModuleFactory extends private Map fileDTOs; @Override - public LogbackModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, - BundleContext bundleContext) { + public LogbackModule instantiateModule(final String instanceName, final DependencyResolver dependencyResolver, + final BundleContext bundleContext) { Preconditions.checkArgument(instanceName.equals(INSTANCE_NAME), "There should be just one instance of logback, named " + INSTANCE_NAME); prepareDTOs(); @@ -74,8 +71,8 @@ public class LogbackModuleFactory extends } @Override - public LogbackModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, - LogbackModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + public LogbackModule instantiateModule(final String instanceName, final DependencyResolver dependencyResolver, + final LogbackModule oldModule, final AutoCloseable oldInstance, final BundleContext bundleContext) { Preconditions.checkArgument(instanceName.equals(INSTANCE_NAME), "There should be just one instance of logback, named " + INSTANCE_NAME); prepareDTOs(); @@ -97,7 +94,7 @@ public class LogbackModuleFactory extends prepareAppendersDTOs(context); } - private void prepareAppendersDTOs(LoggerContext context) { + private void prepareAppendersDTOs(final LoggerContext context) { this.rollingDTOs = new HashMap<>(); this.consoleDTOs = new HashMap<>(); this.fileDTOs = new HashMap<>(); @@ -131,7 +128,7 @@ public class LogbackModuleFactory extends app.setFileNamePattern(rollingPolicy.getFileNamePattern()); app.setRollingPolicyType("FixedWindowRollingPolicy"); } else if (rollingApp.getRollingPolicy() instanceof TimeBasedRollingPolicy) { - TimeBasedRollingPolicy rollingPolicy = (TimeBasedRollingPolicy) rollingApp.getRollingPolicy(); + TimeBasedRollingPolicy rollingPolicy = (TimeBasedRollingPolicy) rollingApp.getRollingPolicy(); app.setRollingPolicyType("TimeBasedRollingPolicy"); app.setFileNamePattern(rollingPolicy.getFileNamePattern()); app.setMaxHistory(rollingPolicy.getMaxHistory()); @@ -166,7 +163,7 @@ public class LogbackModuleFactory extends } } - private Map prepareLoggersDTOs(LoggerContext context) { + private Map prepareLoggersDTOs(final LoggerContext context) { Map DTOs = new HashMap<>(); List appenders = new ArrayList<>(); List loggersToBeAdd = removeUnusableLoggers(context.getLoggerList(), @@ -192,7 +189,7 @@ public class LogbackModuleFactory extends return DTOs; } - private List removeUnusableLoggers(List loggerList, Logger rootLogger) { + private List removeUnusableLoggers(final List loggerList, final Logger rootLogger) { Collections.sort(loggerList, new LoggerComparator()); Map loggersToReturn = new HashMap<>(); @@ -234,8 +231,8 @@ public class LogbackModuleFactory extends } @Override - public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, - BundleContext bundleContext) { + public Set getDefaultModules(final DependencyResolverFactory dependencyResolverFactory, + final BundleContext bundleContext) { DependencyResolver resolver = dependencyResolverFactory.createDependencyResolver(new ModuleIdentifier( getImplementationName(), INSTANCE_NAME)); LogbackModule defaultLogback = instantiateModule(INSTANCE_NAME, resolver, bundleContext); diff --git a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java index 75323d256e..9e07cc68cb 100644 --- a/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java +++ b/opendaylight/config/logback-config/src/test/java/org/opendaylight/controller/config/yang/logback/config/LogbackModuleTest.java @@ -7,9 +7,9 @@ */ package org.opendaylight.controller.config.yang.logback.config; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import java.util.ArrayList; import java.util.Arrays; diff --git a/opendaylight/config/netconf-config-dispatcher/src/main/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModule.java b/opendaylight/config/netconf-config-dispatcher/src/main/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModule.java index 344ef3dec3..0a10c2d3a8 100644 --- a/opendaylight/config/netconf-config-dispatcher/src/main/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModule.java +++ b/opendaylight/config/netconf-config-dispatcher/src/main/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModule.java @@ -12,8 +12,7 @@ import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl; /** * */ -public final class NetconfClientDispatcherModule extends org.opendaylight.controller.config.yang.config.netconf.client.dispatcher.AbstractNetconfClientDispatcherModule - { +public final class NetconfClientDispatcherModule extends org.opendaylight.controller.config.yang.config.netconf.client.dispatcher.AbstractNetconfClientDispatcherModule { public NetconfClientDispatcherModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); diff --git a/opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java b/opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java index 5fe5f9496e..578476f0f7 100644 --- a/opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java +++ b/opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java @@ -7,12 +7,11 @@ */ package org.opendaylight.controller.config.yang.netty.timer; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; import javax.management.ObjectName; - -import junit.framework.Assert; - import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.config.api.ConflictingVersionException; @@ -42,9 +41,9 @@ public class HashedWheelTimerModuleTest extends AbstractConfigTest { try { createInstance(transaction, instanceName, 0L, 10, true); transaction.validateConfig(); - Assert.fail(); + fail(); } catch (ValidationException e) { - Assert.assertTrue(e.getMessage().contains("TickDuration value must be greater than 0")); + assertTrue(e.getMessage().contains("TickDuration value must be greater than 0")); } } @@ -53,9 +52,9 @@ public class HashedWheelTimerModuleTest extends AbstractConfigTest { try { createInstance(transaction, instanceName, 500L, 0, true); transaction.validateConfig(); - Assert.fail(); + fail(); } catch (ValidationException e) { - Assert.assertTrue(e.getMessage().contains("TicksPerWheel value must be greater than 0")); + assertTrue(e.getMessage().contains("TicksPerWheel value must be greater than 0")); } } @@ -112,7 +111,7 @@ public class HashedWheelTimerModuleTest extends AbstractConfigTest { assertStatus(status, 0, 1, 1); } - private ObjectName createInstance(ConfigTransactionJMXClient transaction, String instanceName, + private ObjectName createInstance(final ConfigTransactionJMXClient transaction, final String instanceName, final Long tickDuration, final Integer ticksPerWheel, final boolean hasThreadfactory) throws InstanceAlreadyExistsException { ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName); @@ -126,7 +125,7 @@ public class HashedWheelTimerModuleTest extends AbstractConfigTest { return nameCreated; } - private ObjectName createThreadfactoryInstance(ConfigTransactionJMXClient transaction, String instanceName, + private ObjectName createThreadfactoryInstance(final ConfigTransactionJMXClient transaction, final String instanceName, final String namePrefix) throws InstanceAlreadyExistsException { ObjectName nameCreated = transaction.createModule(threadFactory.getImplementationName(), instanceName); NamingThreadFactoryModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated, diff --git a/opendaylight/config/pom.xml b/opendaylight/config/pom.xml index ea7b243179..ad2607a8db 100644 --- a/opendaylight/config/pom.xml +++ b/opendaylight/config/pom.xml @@ -41,6 +41,8 @@ netconf-config-dispatcher config-module-archetype config-netty-config + + config-artifacts diff --git a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/async/AsyncEventBusConfigBeanTest.java b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/async/AsyncEventBusConfigBeanTest.java index 0b339fc600..92b81220ff 100644 --- a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/async/AsyncEventBusConfigBeanTest.java +++ b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/async/AsyncEventBusConfigBeanTest.java @@ -7,9 +7,9 @@ */ package org.opendaylight.controller.config.threadpool.async; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import javax.management.InstanceAlreadyExistsException; import javax.management.ObjectName; diff --git a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/eventbus/SyncEventBusConfigBeanTest.java b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/eventbus/SyncEventBusConfigBeanTest.java index aeb6d6b959..6d0449cf5a 100644 --- a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/eventbus/SyncEventBusConfigBeanTest.java +++ b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/eventbus/SyncEventBusConfigBeanTest.java @@ -20,10 +20,10 @@ import org.opendaylight.controller.config.yang.threadpool.impl.EventBusModuleFac import javax.management.InstanceAlreadyExistsException; import javax.management.ObjectName; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; public class SyncEventBusConfigBeanTest extends AbstractConfigTest { diff --git a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/fixed/FixedThreadPoolConfigBeanTest.java b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/fixed/FixedThreadPoolConfigBeanTest.java index 62b295be8d..f968e287c2 100644 --- a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/fixed/FixedThreadPoolConfigBeanTest.java +++ b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/fixed/FixedThreadPoolConfigBeanTest.java @@ -7,10 +7,10 @@ */ package org.opendaylight.controller.config.threadpool.fixed; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; diff --git a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/flexible/FlexibleThreadPoolConfigBeanTest.java b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/flexible/FlexibleThreadPoolConfigBeanTest.java index a1d1c40655..9ae721ee87 100644 --- a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/flexible/FlexibleThreadPoolConfigBeanTest.java +++ b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/flexible/FlexibleThreadPoolConfigBeanTest.java @@ -24,9 +24,9 @@ import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; import javax.management.ObjectName; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; public class FlexibleThreadPoolConfigBeanTest extends AbstractConfigTest { diff --git a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/naming/NamingThreadPoolFactoryConfigBeanTest.java b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/naming/NamingThreadPoolFactoryConfigBeanTest.java index 499beced5f..be3d59bf39 100644 --- a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/naming/NamingThreadPoolFactoryConfigBeanTest.java +++ b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/naming/NamingThreadPoolFactoryConfigBeanTest.java @@ -7,11 +7,11 @@ */ package org.opendaylight.controller.config.threadpool.naming; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; diff --git a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/scheduled/ScheduledThreadPoolConfigBeanTest.java b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/scheduled/ScheduledThreadPoolConfigBeanTest.java index 0fc2fd6eb3..6482fe9c1b 100644 --- a/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/scheduled/ScheduledThreadPoolConfigBeanTest.java +++ b/opendaylight/config/threadpool-config-impl/src/test/java/org/opendaylight/controller/config/threadpool/scheduled/ScheduledThreadPoolConfigBeanTest.java @@ -7,11 +7,11 @@ */ package org.opendaylight.controller.config.threadpool.scheduled; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import javax.management.InstanceAlreadyExistsException; import javax.management.InstanceNotFoundException; diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java index f8f5cd6742..ca1e823ec7 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java @@ -607,9 +607,8 @@ public class TemplateFactory { String varName = BindingGeneratorUtil .parseToValidParamName(attrEntry.getKey()); - { - ModuleField field; + ModuleField field; if (isIdentity) { String identityBaseClass = getInnerTypeFromIdentity(((TypedAttribute) attributeIfc).getType()); IdentityRefModuleField identityField = new IdentityRefModuleField(type, varName, @@ -641,7 +640,8 @@ public class TemplateFactory { nullableDefaultWrapped, isDependency, dependency, isListOfDependencies, needsDepResolver); } moduleFields.add(field); - } + + String getterName = "get" + attributeIfc.getUpperCaseCammelCase(); MethodDefinition getter = new MethodDefinition(type, diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsModuleGeneratedObjectFactory.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsModuleGeneratedObjectFactory.java index 33546b1e2a..2378fac6e7 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsModuleGeneratedObjectFactory.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/AbsModuleGeneratedObjectFactory.java @@ -318,11 +318,11 @@ public class AbsModuleGeneratedObjectFactory { .append("}\n"); } else { result.append(format( - "private %s %sDependency;\n"+ - "protected final %s get%sDependency(){\n"+ - "return %sDependency;\n"+ - "}", - osgi, moduleField.getName(), osgi, moduleField.getAttributeName(), moduleField.getName())); + "private %s %sDependency;\n"+ + "protected final %s get%sDependency(){\n"+ + "return %sDependency;\n"+ + "}", + osgi, moduleField.getName(), osgi, moduleField.getAttributeName(), moduleField.getName())); } } } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorFileNamesValidationTest.java b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorFileNamesValidationTest.java index e33f1cddc4..cdff5090bb 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorFileNamesValidationTest.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorFileNamesValidationTest.java @@ -7,11 +7,11 @@ */ package org.opendaylight.controller.config.yangjmxgenerator.plugin; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import org.junit.Test; import org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants; diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorGeneratedFilesTrackerTest.java b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorGeneratedFilesTrackerTest.java index 4112ff017a..589fe41f46 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorGeneratedFilesTrackerTest.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorGeneratedFilesTrackerTest.java @@ -7,10 +7,8 @@ */ package org.opendaylight.controller.config.yangjmxgenerator.plugin; +import static org.junit.Assert.assertEquals; import java.io.File; - -import junit.framework.Assert; - import org.junit.Test; public class JMXGeneratorGeneratedFilesTrackerTest { @@ -20,7 +18,7 @@ public class JMXGeneratorGeneratedFilesTrackerTest { JMXGenerator.GeneratedFilesTracker tracker = new JMXGenerator.GeneratedFilesTracker(); tracker.addFile(new File("./a/b/c")); - Assert.assertEquals(1, tracker.getFiles().size()); + assertEquals(1, tracker.getFiles().size()); tracker.addFile(new File("./a/b/c")); } } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java index 864ebdf954..42112013e9 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.config.yangjmxgenerator.plugin; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; @@ -15,7 +16,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/Dependency.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/Dependency.java index b3e7b90c96..6ea2ea1724 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/Dependency.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/Dependency.java @@ -10,43 +10,43 @@ package org.opendaylight.controller.config.yangjmxgenerator.attribute; import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry; public class Dependency { - private final ServiceInterfaceEntry sie; - private final boolean mandatory; + private final ServiceInterfaceEntry sie; + private final boolean mandatory; - public Dependency(ServiceInterfaceEntry sie, boolean mandatory) { - this.sie = sie; - this.mandatory = mandatory; - } + public Dependency(ServiceInterfaceEntry sie, boolean mandatory) { + this.sie = sie; + this.mandatory = mandatory; + } - public ServiceInterfaceEntry getSie() { - return sie; - } + public ServiceInterfaceEntry getSie() { + return sie; + } - public boolean isMandatory() { - return mandatory; - } + public boolean isMandatory() { + return mandatory; + } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; - Dependency that = (Dependency) o; + Dependency that = (Dependency) o; - if (mandatory != that.mandatory) - return false; - if (!sie.equals(that.sie)) - return false; + if (mandatory != that.mandatory) + return false; + if (!sie.equals(that.sie)) + return false; - return true; - } - - @Override - public int hashCode() { - int result = sie.hashCode(); - result = 31 * result + (mandatory ? 1 : 0); - return result; - } + return true; + } + + @Override + public int hashCode() { + int result = sie.hashCode(); + result = 31 * result + (mandatory ? 1 : 0); + return result; } +} diff --git a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/AbstractYangTest.java b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/AbstractYangTest.java index b9f2ba9cd1..e3c3a3024c 100644 --- a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/AbstractYangTest.java +++ b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/AbstractYangTest.java @@ -7,8 +7,7 @@ */ package org.opendaylight.controller.config.yangjmxgenerator; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.format; +import static org.junit.Assert.assertNotNull; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @@ -92,8 +91,8 @@ public abstract class AbstractYangTest { QName qName = identitySchemaNode.getQName(); Preconditions.checkArgument( result.containsKey(qName) == false, - format("Two identities of %s contain same " + "qname %s", - module, qName)); + "Two identities of %s contain same qname %s", + module, qName); result.put(qName, identitySchemaNode); } return result; diff --git a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/RuntimeBeanEntryTest.java b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/RuntimeBeanEntryTest.java index e80ebc67a5..38b0a3afec 100644 --- a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/RuntimeBeanEntryTest.java +++ b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/RuntimeBeanEntryTest.java @@ -7,10 +7,10 @@ */ package org.opendaylight.controller.config.yangjmxgenerator; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertNull; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doReturn; diff --git a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/SchemaContextTest.java b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/SchemaContextTest.java index 1837bac266..b72d85c118 100644 --- a/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/SchemaContextTest.java +++ b/opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/SchemaContextTest.java @@ -95,7 +95,7 @@ public class SchemaContextTest extends AbstractYangTest { } } assertEquals("Expected identities not found " + copyOfExpectedNames, - Collections.EMPTY_MAP, copyOfExpectedNames); + Collections.emptyMap(), copyOfExpectedNames); } @Test diff --git a/opendaylight/config/yang-test/src/test/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleTest.java b/opendaylight/config/yang-test/src/test/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleTest.java index 13a31f5976..fb9264749b 100644 --- a/opendaylight/config/yang-test/src/test/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleTest.java +++ b/opendaylight/config/yang-test/src/test/java/org/opendaylight/controller/config/yang/test/impl/NetconfTestImplModuleTest.java @@ -9,8 +9,6 @@ package org.opendaylight.controller.config.yang.test.impl; import com.google.common.collect.Lists; -import junit.framework.Assert; - import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.config.api.IdentityAttributeRef; @@ -96,7 +94,7 @@ public class NetconfTestImplModuleTest extends AbstractConfigTest { List testingDeps = proxy.getTestingDeps(); ObjectName testingDep = proxy.getTestingDep(); - Assert.assertEquals(TESTING_DEP_PREFIX, ObjectNameUtil.getInstanceName(testingDep)); + assertEquals(TESTING_DEP_PREFIX, ObjectNameUtil.getInstanceName(testingDep)); assertTestingDeps(testingDeps, 4); transaction.abortConfig(); @@ -135,11 +133,11 @@ public class NetconfTestImplModuleTest extends AbstractConfigTest { } private void assertTestingDeps(List testingDeps, int i) { - Assert.assertEquals(i, testingDeps.size()); + assertEquals(i, testingDeps.size()); int c = 1; for (ObjectName testingDep : testingDeps) { - Assert.assertEquals(TESTING_DEP_PREFIX + Integer.toString(c++), ObjectNameUtil.getInstanceName(testingDep)); + assertEquals(TESTING_DEP_PREFIX + Integer.toString(c++), ObjectNameUtil.getInstanceName(testingDep)); } } diff --git a/opendaylight/distribution/opendaylight-karaf-empty/pom.xml b/opendaylight/distribution/opendaylight-karaf-empty/pom.xml index 72eaf005ad..a66a502a70 100644 --- a/opendaylight/distribution/opendaylight-karaf-empty/pom.xml +++ b/opendaylight/distribution/opendaylight-karaf-empty/pom.xml @@ -156,7 +156,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - ${checkstyle.version} **\/target\/,**\/bin\/,**\/target-ide\/,**\/configuration\/initial\/ diff --git a/opendaylight/distribution/opendaylight-karaf/pom.xml b/opendaylight/distribution/opendaylight-karaf/pom.xml index 3a2f4b0580..e44b569759 100644 --- a/opendaylight/distribution/opendaylight-karaf/pom.xml +++ b/opendaylight/distribution/opendaylight-karaf/pom.xml @@ -221,7 +221,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - ${checkstyle.version} **\/target\/,**\/bin\/,**\/target-ide\/,**\/configuration\/initial\/ diff --git a/opendaylight/distribution/opendaylight/pom.xml b/opendaylight/distribution/opendaylight/pom.xml index f6ecb44fa1..cd02759f5a 100644 --- a/opendaylight/distribution/opendaylight/pom.xml +++ b/opendaylight/distribution/opendaylight/pom.xml @@ -773,7 +773,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - ${checkstyle.version} **\/target\/,**\/bin\/,**\/target-ide\/,**\/configuration\/initial\/ @@ -825,7 +824,6 @@ commons-lang commons-lang - 2.4 org.apache.servicemix.bundles @@ -1020,7 +1018,6 @@ org.opendaylight.controller sal-inmemory-datastore - 1.2.0-SNAPSHOT org.opendaylight.controller @@ -1133,24 +1130,20 @@ org.opendaylight.controller.model model-topology - 1.2.0-SNAPSHOT org.opendaylight.controller.samples sample-toaster - ${mdsal.version} org.opendaylight.controller.samples sample-toaster-consumer - ${mdsal.version} org.opendaylight.controller.samples sample-toaster-provider - ${mdsal.version} org.apache.sshd @@ -1286,12 +1279,10 @@ org.opendaylight.yangtools.thirdparty antlr4-runtime-osgi-nohead - 4.0 org.opendaylight.yangtools.thirdparty xtend-lib-osgi - 2.4.3 org.openexi diff --git a/opendaylight/karaf-branding/pom.xml b/opendaylight/karaf-branding/pom.xml index dfdc3b76cb..7b2bd864f2 100644 --- a/opendaylight/karaf-branding/pom.xml +++ b/opendaylight/karaf-branding/pom.xml @@ -8,7 +8,6 @@ 0.2.0-SNAPSHOT ../.. - org.opendaylight.controller karaf.branding 1.1.0-SNAPSHOT bundle diff --git a/opendaylight/md-sal/benchmark-data-store/pom.xml b/opendaylight/md-sal/benchmark-data-store/pom.xml index ac384319b8..b196c3180f 100644 --- a/opendaylight/md-sal/benchmark-data-store/pom.xml +++ b/opendaylight/md-sal/benchmark-data-store/pom.xml @@ -16,7 +16,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html 4.0.0 - org.opendaylight.controller benchmark-data-store @@ -40,6 +39,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller sal-inmemory-datastore + + org.opendaylight.controller + sal-broker-impl + + + org.slf4j + slf4j-simple + @@ -69,4 +76,4 @@ and is available at http://www.eclipse.org/legal/epl-v10.html - \ No newline at end of file + diff --git a/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryBrokerWriteTransactionBenchmark.java b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryBrokerWriteTransactionBenchmark.java new file mode 100644 index 0000000000..fdd715e54f --- /dev/null +++ b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryBrokerWriteTransactionBenchmark.java @@ -0,0 +1,104 @@ +/* + * 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.md.sal.dom.store.benchmark; + +import java.util.concurrent.TimeUnit; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataBrokerImpl; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Warmup; + +/** + * @author Lukas Sedlak + */ +public abstract class AbstractInMemoryBrokerWriteTransactionBenchmark extends AbstractInMemoryWriteTransactionBenchmark { + + protected DOMDataBrokerImpl domBroker; + + protected void initTestNode() throws Exception { + final YangInstanceIdentifier testPath = YangInstanceIdentifier.builder(BenchmarkModel.TEST_PATH) + .build(); + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + writeTx.put(LogicalDatastoreType.OPERATIONAL, testPath, provideOuterListNode()); + + writeTx.submit().get(); + } + + @Benchmark + @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + public void write100KSingleNodeWithOneInnerItemInOneCommitBenchmark() throws Exception { + + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + for (int outerListKey = 0; outerListKey < OUTER_LIST_100K; ++outerListKey) { + writeTx.put(LogicalDatastoreType.OPERATIONAL, OUTER_LIST_100K_PATHS[outerListKey], OUTER_LIST_ONE_ITEM_INNER_LIST[outerListKey]); + } + + writeTx.submit().get(); + } + + @Benchmark + @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + public void write100KSingleNodeWithOneInnerItemInCommitPerWriteBenchmark() throws Exception { + for (int outerListKey = 0; outerListKey < OUTER_LIST_100K; ++outerListKey) { + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + writeTx.put(LogicalDatastoreType.OPERATIONAL, OUTER_LIST_100K_PATHS[outerListKey], OUTER_LIST_ONE_ITEM_INNER_LIST[outerListKey]); + + writeTx.submit().get(); + } + } + + @Benchmark + @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + public void write50KSingleNodeWithTwoInnerItemsInOneCommitBenchmark() throws Exception { + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + for (int outerListKey = 0; outerListKey < OUTER_LIST_50K; ++outerListKey) { + writeTx.put(LogicalDatastoreType.OPERATIONAL, OUTER_LIST_50K_PATHS[outerListKey], OUTER_LIST_TWO_ITEM_INNER_LIST[outerListKey]); + } + + writeTx.submit().get(); + } + + @Benchmark + @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + public void write50KSingleNodeWithTwoInnerItemsInCommitPerWriteBenchmark() throws Exception { + for (int outerListKey = 0; outerListKey < OUTER_LIST_50K; ++outerListKey) { + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + writeTx.put(LogicalDatastoreType.OPERATIONAL, OUTER_LIST_50K_PATHS[outerListKey], OUTER_LIST_TWO_ITEM_INNER_LIST[outerListKey]); + writeTx.submit().get(); + } + } + + @Benchmark + @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + public void write10KSingleNodeWithTenInnerItemsInOneCommitBenchmark() throws Exception { + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + for (int outerListKey = 0; outerListKey < OUTER_LIST_10K; ++outerListKey) { + writeTx.put(LogicalDatastoreType.OPERATIONAL, OUTER_LIST_10K_PATHS[outerListKey], OUTER_LIST_TEN_ITEM_INNER_LIST[outerListKey]); + } + writeTx.submit().get(); + } + + @Benchmark + @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) + public void write10KSingleNodeWithTenInnerItemsInCommitPerWriteBenchmark() throws Exception { + for (int outerListKey = 0; outerListKey < OUTER_LIST_10K; ++outerListKey) { + DOMDataReadWriteTransaction writeTx = domBroker.newReadWriteTransaction(); + writeTx.put(LogicalDatastoreType.OPERATIONAL, OUTER_LIST_10K_PATHS[outerListKey], OUTER_LIST_TEN_ITEM_INNER_LIST[outerListKey]); + writeTx.submit().get(); + } + } +} diff --git a/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryDatastoreWriteTransactionBenchmark.java b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryDatastoreWriteTransactionBenchmark.java index aa5ef61ce4..fce0642860 100644 --- a/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryDatastoreWriteTransactionBenchmark.java +++ b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryDatastoreWriteTransactionBenchmark.java @@ -12,14 +12,6 @@ import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.MapNode; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Measurement; import org.openjdk.jmh.annotations.Warmup; @@ -27,67 +19,10 @@ import org.openjdk.jmh.annotations.Warmup; /** * @author Lukas Sedlak */ -public abstract class AbstractInMemoryDatastoreWriteTransactionBenchmark { +public abstract class AbstractInMemoryDatastoreWriteTransactionBenchmark extends AbstractInMemoryWriteTransactionBenchmark { - private static final int WARMUP_ITERATIONS = 20; - private static final int MEASUREMENT_ITERATIONS = 20; - - private static final int OUTER_LIST_100K = 100000; - private static final int OUTER_LIST_50K = 50000; - private static final int OUTER_LIST_10K = 10000; - - private static final YangInstanceIdentifier[] OUTER_LIST_100K_PATHS = initOuterListPaths(OUTER_LIST_100K); - private static final YangInstanceIdentifier[] OUTER_LIST_50K_PATHS = initOuterListPaths(OUTER_LIST_50K); - private static final YangInstanceIdentifier[] OUTER_LIST_10K_PATHS = initOuterListPaths(OUTER_LIST_10K); - - private static YangInstanceIdentifier[] initOuterListPaths(final int outerListPathsCount) { - final YangInstanceIdentifier[] paths = new YangInstanceIdentifier[outerListPathsCount]; - - for (int outerListKey = 0; outerListKey < outerListPathsCount; ++outerListKey) { - paths[outerListKey] = YangInstanceIdentifier.builder(BenchmarkModel.OUTER_LIST_PATH) - .nodeWithKey(BenchmarkModel.OUTER_LIST_QNAME, BenchmarkModel.ID_QNAME, outerListKey) - .build(); - } - return paths; - } - - private static final MapNode ONE_ITEM_INNER_LIST = initInnerListItems(1); - private static final MapNode TWO_ITEM_INNER_LIST = initInnerListItems(2); - private static final MapNode TEN_ITEM_INNER_LIST = initInnerListItems(10); - - private static MapNode initInnerListItems(final int count) { - final CollectionNodeBuilder mapEntryBuilder = ImmutableNodes - .mapNodeBuilder(BenchmarkModel.INNER_LIST_QNAME); - - for (int i = 1; i <= count; ++i) { - mapEntryBuilder - .withChild(ImmutableNodes.mapEntry(BenchmarkModel.INNER_LIST_QNAME, BenchmarkModel.NAME_QNAME, i)); - } - return mapEntryBuilder.build(); - } - - private static final NormalizedNode[] OUTER_LIST_ONE_ITEM_INNER_LIST = initOuterListItems(OUTER_LIST_100K, ONE_ITEM_INNER_LIST); - private static final NormalizedNode[] OUTER_LIST_TWO_ITEM_INNER_LIST = initOuterListItems(OUTER_LIST_50K, TWO_ITEM_INNER_LIST); - private static final NormalizedNode[] OUTER_LIST_TEN_ITEM_INNER_LIST = initOuterListItems(OUTER_LIST_10K, TEN_ITEM_INNER_LIST); - - private static NormalizedNode[] initOuterListItems(int outerListItemsCount, MapNode innerList) { - final NormalizedNode[] outerListItems = new NormalizedNode[outerListItemsCount]; - - for (int i = 0; i < outerListItemsCount; ++i) { - int outerListKey = i; - outerListItems[i] = ImmutableNodes.mapEntryBuilder(BenchmarkModel.OUTER_LIST_QNAME, BenchmarkModel.ID_QNAME, outerListKey) - .withChild(innerList).build(); - } - return outerListItems; - } - - protected SchemaContext schemaContext; protected InMemoryDOMDataStore domStore; - abstract public void setUp() throws Exception; - - abstract public void tearDown(); - protected void initTestNode() throws Exception { final YangInstanceIdentifier testPath = YangInstanceIdentifier.builder(BenchmarkModel.TEST_PATH) .build(); @@ -100,15 +35,6 @@ public abstract class AbstractInMemoryDatastoreWriteTransactionBenchmark { cohort.commit().get(); } - private DataContainerChild provideOuterListNode() { - return ImmutableContainerNodeBuilder - .create() - .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(BenchmarkModel.TEST_QNAME)) - .withChild( - ImmutableNodes.mapNodeBuilder(BenchmarkModel.OUTER_LIST_QNAME) - .build()).build(); - } - @Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) diff --git a/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryWriteTransactionBenchmark.java b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryWriteTransactionBenchmark.java new file mode 100644 index 0000000000..6c256eb7af --- /dev/null +++ b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/AbstractInMemoryWriteTransactionBenchmark.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.benchmark; + +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; +import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; +import org.opendaylight.yangtools.yang.data.api.schema.MapNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; + +public abstract class AbstractInMemoryWriteTransactionBenchmark { + protected static final int OUTER_LIST_100K = 100000; + protected static final int OUTER_LIST_50K = 50000; + protected static final int OUTER_LIST_10K = 10000; + + protected static final YangInstanceIdentifier[] OUTER_LIST_100K_PATHS = initOuterListPaths(OUTER_LIST_100K); + protected static final YangInstanceIdentifier[] OUTER_LIST_50K_PATHS = initOuterListPaths(OUTER_LIST_50K); + protected static final YangInstanceIdentifier[] OUTER_LIST_10K_PATHS = initOuterListPaths(OUTER_LIST_10K); + + private static YangInstanceIdentifier[] initOuterListPaths(final int outerListPathsCount) { + final YangInstanceIdentifier[] paths = new YangInstanceIdentifier[outerListPathsCount]; + + for (int outerListKey = 0; outerListKey < outerListPathsCount; ++outerListKey) { + paths[outerListKey] = YangInstanceIdentifier.builder(BenchmarkModel.OUTER_LIST_PATH) + .nodeWithKey(BenchmarkModel.OUTER_LIST_QNAME, BenchmarkModel.ID_QNAME, outerListKey) + .build(); + } + return paths; + } + + protected static final int WARMUP_ITERATIONS = 20; + protected static final int MEASUREMENT_ITERATIONS = 20; + + protected static final MapNode ONE_ITEM_INNER_LIST = initInnerListItems(1); + protected static final MapNode TWO_ITEM_INNER_LIST = initInnerListItems(2); + protected static final MapNode TEN_ITEM_INNER_LIST = initInnerListItems(10); + + private static MapNode initInnerListItems(final int count) { + final CollectionNodeBuilder mapEntryBuilder = ImmutableNodes + .mapNodeBuilder(BenchmarkModel.INNER_LIST_QNAME); + + for (int i = 1; i <= count; ++i) { + mapEntryBuilder + .withChild(ImmutableNodes.mapEntry(BenchmarkModel.INNER_LIST_QNAME, BenchmarkModel.NAME_QNAME, i)); + } + return mapEntryBuilder.build(); + } + + protected static final NormalizedNode[] OUTER_LIST_ONE_ITEM_INNER_LIST = initOuterListItems(OUTER_LIST_100K, ONE_ITEM_INNER_LIST); + protected static final NormalizedNode[] OUTER_LIST_TWO_ITEM_INNER_LIST = initOuterListItems(OUTER_LIST_50K, TWO_ITEM_INNER_LIST); + protected static final NormalizedNode[] OUTER_LIST_TEN_ITEM_INNER_LIST = initOuterListItems(OUTER_LIST_10K, TEN_ITEM_INNER_LIST); + + private static NormalizedNode[] initOuterListItems(final int outerListItemsCount, final MapNode innerList) { + final NormalizedNode[] outerListItems = new NormalizedNode[outerListItemsCount]; + + for (int i = 0; i < outerListItemsCount; ++i) { + int outerListKey = i; + outerListItems[i] = ImmutableNodes.mapEntryBuilder(BenchmarkModel.OUTER_LIST_QNAME, BenchmarkModel.ID_QNAME, outerListKey) + .withChild(innerList).build(); + } + return outerListItems; + } + + protected SchemaContext schemaContext; + abstract public void setUp() throws Exception; + abstract public void tearDown(); + + protected static DataContainerChild provideOuterListNode() { + return ImmutableContainerNodeBuilder + .create() + .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(BenchmarkModel.TEST_QNAME)) + .withChild( + ImmutableNodes.mapNodeBuilder(BenchmarkModel.OUTER_LIST_QNAME) + .build()).build(); + } +} diff --git a/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryBrokerWriteTransactionBenchmark.java b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryBrokerWriteTransactionBenchmark.java new file mode 100644 index 0000000000..a46a6d1e79 --- /dev/null +++ b/opendaylight/md-sal/benchmark-data-store/src/main/java/org/opendaylight/controller/md/sal/dom/store/benchmark/InMemoryBrokerWriteTransactionBenchmark.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.benchmark; + +import com.google.common.collect.ImmutableMap; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import java.util.Map; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataBrokerImpl; +import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore; +import org.opendaylight.controller.sal.core.spi.data.DOMStore; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; + +@State(Scope.Thread) +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@Fork(1) +public class InMemoryBrokerWriteTransactionBenchmark extends AbstractInMemoryBrokerWriteTransactionBenchmark { + private ListeningExecutorService executor; + + @Setup(Level.Trial) + @Override + public void setUp() throws Exception { + ListeningExecutorService dsExec = MoreExecutors.sameThreadExecutor(); + executor = MoreExecutors.listeningDecorator( + MoreExecutors.getExitingExecutorService((ThreadPoolExecutor)Executors.newFixedThreadPool(1), 1L, TimeUnit.SECONDS)); + + InMemoryDOMDataStore operStore = new InMemoryDOMDataStore("OPER", dsExec, + MoreExecutors.sameThreadExecutor()); + InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", dsExec, + MoreExecutors.sameThreadExecutor()); + Map datastores = ImmutableMap.of( + LogicalDatastoreType.OPERATIONAL, (DOMStore)operStore, + LogicalDatastoreType.CONFIGURATION, configStore); + + domBroker = new DOMDataBrokerImpl(datastores, executor); + schemaContext = BenchmarkModel.createTestContext(); + configStore.onGlobalContextUpdated(schemaContext); + operStore.onGlobalContextUpdated(schemaContext); + initTestNode(); + } + + @Override + public void tearDown() { + domBroker.close(); + executor.shutdown(); + } +} diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/FromSalConversionsUtils.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/FromSalConversionsUtils.java index ecf1a94c18..8468c2d7f5 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/FromSalConversionsUtils.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/FromSalConversionsUtils.java @@ -331,11 +331,11 @@ public final class FromSalConversionsUtils { final Inet4Address inetDestAddress) { String inetSourceAddressStr = InetAddresses .toAddrString(inetSourceAddress); - Ipv4Prefix ipv4SourcePrefix = new Ipv4Prefix(inetSourceAddressStr); + Ipv4Prefix ipv4SourcePrefix = new Ipv4Prefix(inetSourceAddressStr + "/32"); String inetDestAddressValue = InetAddresses .toAddrString(inetDestAddress); - Ipv4Prefix ipv4DestPrefix = new Ipv4Prefix(inetDestAddressValue); + Ipv4Prefix ipv4DestPrefix = new Ipv4Prefix(inetDestAddressValue + "/32"); ArpMatchBuilder arpMatchBuilder = new ArpMatchBuilder(); @@ -375,13 +375,13 @@ public final class FromSalConversionsUtils { if(inetSourceAddress != null) { String inetSrcAddressString = InetAddresses .toAddrString(inetSourceAddress); - layer4MatchBuild.setIpv4Source(new Ipv4Prefix(inetSrcAddressString)); + layer4MatchBuild.setIpv4Source(new Ipv4Prefix(inetSrcAddressString + "/32")); } if(inetDestAddress != null) { String inetDstAddressString = InetAddresses .toAddrString(inetDestAddress); layer4MatchBuild - .setIpv4Destination(new Ipv4Prefix(inetDstAddressString)); + .setIpv4Destination(new Ipv4Prefix(inetDstAddressString + "/32")); } return layer4MatchBuild.build(); @@ -394,13 +394,13 @@ public final class FromSalConversionsUtils { if(inetSourceAddress != null) { String inetSrcAddressString = InetAddresses .toAddrString(inetSourceAddress); - layer6MatchBuild.setIpv6Source(new Ipv6Prefix(inetSrcAddressString)); + layer6MatchBuild.setIpv6Source(new Ipv6Prefix(inetSrcAddressString + "/128")); } if(inetDestAddress != null) { String inetDstAddressString = InetAddresses .toAddrString(inetDestAddress); layer6MatchBuild - .setIpv6Destination(new Ipv6Prefix(inetDstAddressString)); + .setIpv6Destination(new Ipv6Prefix(inetDstAddressString + "/128")); } return layer6MatchBuild.build(); } diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/MDFlowMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/MDFlowMapping.java index 00511bc744..d3b96d010d 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/MDFlowMapping.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/MDFlowMapping.java @@ -429,12 +429,12 @@ public final class MDFlowMapping { public static Address toInetAddress(final InetAddress address) { if (address instanceof Inet4Address) { return new Ipv4Builder() - .setIpv4Address(new Ipv4Prefix(InetAddresses.toAddrString(address))) + .setIpv4Address(new Ipv4Prefix(InetAddresses.toAddrString(address) + "/32")) .build(); } if (address instanceof Inet6Address) { return new Ipv6Builder() - .setIpv6Address(new Ipv6Prefix(InetAddresses.toAddrString(address))) + .setIpv6Address(new Ipv6Prefix(InetAddresses.toAddrString(address) + "/128")) .build(); } diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/MDFlowMappingTest.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/MDFlowMappingTest.java index 78e82c32de..2490ace648 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/MDFlowMappingTest.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/MDFlowMappingTest.java @@ -7,8 +7,7 @@ */ package org.opendaylight.controller.sal.compatibility.test; -import junit.framework.Assert; - +import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.sal.action.Action; import org.opendaylight.controller.sal.action.PushVlan; diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java index 98df90112d..35555daff2 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestFromSalConversionsUtils.java @@ -129,9 +129,9 @@ public class TestFromSalConversionsUtils { Layer3Match layer3Match = match.getLayer3Match(); boolean arpFound = false; if (layer3Match instanceof ArpMatch) { - assertEquals("Source IP address is wrong.", "192.168.100.100", ((ArpMatch) layer3Match) + assertEquals("Source IP address is wrong.", "192.168.100.100/32", ((ArpMatch) layer3Match) .getArpSourceTransportAddress().getValue()); - assertEquals("Destination IP address is wrong.", "192.168.100.101", ((ArpMatch) layer3Match) + assertEquals("Destination IP address is wrong.", "192.168.100.101/32", ((ArpMatch) layer3Match) .getArpTargetTransportAddress().getValue()); assertEquals("Source MAC address is wrong.", "ff:ee:dd:cc:bb:aa", ((ArpMatch) layer3Match) .getArpSourceHardwareAddress().getAddress().getValue()); @@ -147,9 +147,9 @@ public class TestFromSalConversionsUtils { boolean ipv4Found = false; layer3Match = match.getLayer3Match(); if (layer3Match instanceof Ipv4Match) { - assertEquals("Source IP address is wrong.", "192.168.100.102", ((Ipv4Match) layer3Match) + assertEquals("Source IP address is wrong.", "192.168.100.102/32", ((Ipv4Match) layer3Match) .getIpv4Source().getValue()); - assertEquals("Destination IP address is wrong.", "192.168.100.103", ((Ipv4Match) layer3Match) + assertEquals("Destination IP address is wrong.", "192.168.100.103/32", ((Ipv4Match) layer3Match) .getIpv4Destination().getValue()); } assertNotNull("Ipv4 wasn't found", ipv4Found); @@ -160,9 +160,9 @@ public class TestFromSalConversionsUtils { boolean ipv6Found = false; layer3Match = match.getLayer3Match(); if (layer3Match instanceof Ipv6Match) { - assertEquals("Source IP address is wrong.", "2001:db8:85a3::8a2e:370:7335", ((Ipv6Match) layer3Match) + assertEquals("Source IP address is wrong.", "2001:db8:85a3::8a2e:370:7335/128", ((Ipv6Match) layer3Match) .getIpv6Source().getValue()); - assertEquals("Destination IP address is wrong.", "2001:db8:85a3::8a2e:370:7336", + assertEquals("Destination IP address is wrong.", "2001:db8:85a3::8a2e:370:7336/128", ((Ipv6Match) layer3Match).getIpv6Destination().getValue()); } assertNotNull("Ipv6 wasn't found", ipv6Found); @@ -288,7 +288,7 @@ public class TestFromSalConversionsUtils { boolean ipv4AddressFound = false; if (address instanceof Ipv4) { ipv4AddressFound = true; - assertEquals("Wrong IP address type in SetNextHopAction.", "192.168.100.100", ((Ipv4) address) + assertEquals("Wrong IP address type in SetNextHopAction.", "192.168.100.100/32", ((Ipv4) address) .getIpv4Address().getValue()); } assertTrue("Ipv4 address wasn't found.", ipv4AddressFound); @@ -299,7 +299,7 @@ public class TestFromSalConversionsUtils { boolean ipv4AddressFound = false; if (address instanceof Ipv4) { ipv4AddressFound = true; - assertEquals("Wrong IP address type in SetNwDstAction.", "192.168.100.101", ((Ipv4) address) + assertEquals("Wrong IP address type in SetNwDstAction.", "192.168.100.101/32", ((Ipv4) address) .getIpv4Address().getValue()); } assertTrue("Ipv4 address wasn't found.", ipv4AddressFound); @@ -308,7 +308,7 @@ public class TestFromSalConversionsUtils { boolean ipv4AddressFound = false; if (address instanceof Ipv4) { ipv4AddressFound = true; - assertEquals("Wrong IP address type in SetNwSrcAction.", "192.168.100.102", ((Ipv4) address) + assertEquals("Wrong IP address type in SetNwSrcAction.", "192.168.100.102/32", ((Ipv4) address) .getIpv4Address().getValue()); } assertTrue("Ipv4 address wasn't found.", ipv4AddressFound); diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java index 16d0bb424d..54ffddbbe3 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/test/TestToSalConversionsUtils.java @@ -22,8 +22,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import junit.framework.Assert; - import org.junit.Test; import org.opendaylight.controller.sal.action.Flood; import org.opendaylight.controller.sal.action.FloodAll; @@ -198,7 +196,7 @@ public class TestToSalConversionsUtils { public void testFromNodeConnectorRef() throws ConstructionException { Node node = new Node(NodeIDType.OPENFLOW, 42L); NodeConnector nodeConnector = ToSalConversionsUtils.fromNodeConnectorRef(new Uri("1"), node); - Assert.assertEquals("OF|1@OF|00:00:00:00:00:00:00:2a", nodeConnector.toString()); + assertEquals("OF|1@OF|00:00:00:00:00:00:00:2a", nodeConnector.toString()); } private void checkSalMatch(org.opendaylight.controller.sal.match.Match match, MtchType mt) throws ConstructionException { @@ -542,7 +540,7 @@ public class TestToSalConversionsUtils { private Address prapareIpv4Address(String ipv4Address) { Ipv4Builder ipv4Builder = new Ipv4Builder(); - ipv4Builder.setIpv4Address(new Ipv4Prefix(ipv4Address)); + ipv4Builder.setIpv4Address(new Ipv4Prefix(ipv4Address + "/32")); return ipv4Builder.build(); } @@ -647,8 +645,8 @@ public class TestToSalConversionsUtils { private Layer3Match prepLayer3MatchIpv4() { Ipv4MatchBuilder ipv4MatchBuilder = new Ipv4MatchBuilder(); - ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix("192.168.1.104")); - ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.105")); + ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix("192.168.1.104/32")); + ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.105/32")); return ipv4MatchBuilder.build(); } @@ -661,8 +659,8 @@ public class TestToSalConversionsUtils { private Layer3Match prepLayer3MatchArp() { ArpMatchBuilder arpMatchBuilder = new ArpMatchBuilder(); - arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix("192.168.1.101")); - arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix("192.168.1.102")); + arpMatchBuilder.setArpSourceTransportAddress(new Ipv4Prefix("192.168.1.101/32")); + arpMatchBuilder.setArpTargetTransportAddress(new Ipv4Prefix("192.168.1.102/32")); ArpSourceHardwareAddressBuilder arpSourAddressBuild = new ArpSourceHardwareAddressBuilder(); arpSourAddressBuild.setAddress(new MacAddress("22:44:66:88:AA:CC")); diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java index 9369217d78..2a0d47e9c2 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/test/java/org/opendaylight/controller/sal/compatibility/topology/test/TopologyMappingTest.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.sal.compatibility.topology.test; -import junit.framework.Assert; +import static org.junit.Assert.assertEquals; import org.junit.Test; import org.opendaylight.controller.sal.compatibility.topology.TopologyMapping; @@ -30,7 +30,7 @@ public class TopologyMappingTest { NodeId nodeId = new NodeId("openflow:1"); String observedNodeId = TopologyMapping.toADNodeId(nodeId); - Assert.assertEquals("1", observedNodeId); + assertEquals("1", observedNodeId); } /** @@ -43,7 +43,7 @@ public class TopologyMappingTest { TpId source = new TpId("foo:2"); NodeConnector observedNodeConnector = TopologyMapping.toADNodeConnector(source, nodeId); - Assert.assertEquals("OF|2@OF|00:00:00:00:00:00:00:01", observedNodeConnector.toString()); + assertEquals("OF|2@OF|00:00:00:00:00:00:00:01", observedNodeConnector.toString()); } /** @@ -54,7 +54,7 @@ public class TopologyMappingTest { TpId source = new TpId("foo:2"); String observedNodeConnectorId = TopologyMapping.toADNodeConnectorId(source); - Assert.assertEquals("2", observedNodeConnectorId); + assertEquals("2", observedNodeConnectorId); } /** @@ -66,7 +66,7 @@ public class TopologyMappingTest { NodeId nodeId = new NodeId("openflow:1"); Node observedNode = TopologyMapping.toADNode(nodeId); - Assert.assertEquals("OF|00:00:00:00:00:00:00:01", observedNode.toString()); + assertEquals("OF|00:00:00:00:00:00:00:01", observedNode.toString()); } /** @@ -79,7 +79,7 @@ public class TopologyMappingTest { TpId source = new TpId("192.168.0.1"); NodeConnector observedNodeConnector = TopologyMapping.toADNodeConnector(source, nodeId); - Assert.assertEquals("MD_SAL_DEPRECATED|192.168.0.1@MD_SAL_DEPRECATED|some_unknown_node", observedNodeConnector.toString()); + assertEquals("MD_SAL_DEPRECATED|192.168.0.1@MD_SAL_DEPRECATED|some_unknown_node", observedNodeConnector.toString()); } } diff --git a/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java b/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java index b14bfd429c..ec184ad101 100644 --- a/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java +++ b/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java @@ -32,7 +32,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; import org.slf4j.Logger; @@ -112,10 +111,10 @@ class NodeChangeCommiter implements OpendaylightInventoryListener { InstanceIdentifierBuilder builder = ((InstanceIdentifier) ref.getValue()).builder(); InstanceIdentifierBuilder augmentation = builder.augmentation(FlowCapableNode.class); final InstanceIdentifier path = augmentation.build(); - CheckedFuture readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, path); - Futures.addCallback(readFuture, new FutureCallback>() { + CheckedFuture, ?> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, path); + Futures.addCallback(readFuture, new FutureCallback>() { @Override - public void onSuccess(Optional optional) { + public void onSuccess(Optional optional) { enqueueWriteNodeDataTx(node, flowNode, path); if (!optional.isPresent()) { enqueuePutTable0Tx(ref); diff --git a/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-meter-types.yang b/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-meter-types.yang index 6d1405019c..95f2b7cc39 100644 --- a/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-meter-types.yang +++ b/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-meter-types.yang @@ -94,7 +94,7 @@ module opendaylight-meter-types { type uint32; } - leaf perc_level { + leaf prec_level { description "Number of drop precedence level to add"; type uint8; } diff --git a/opendaylight/md-sal/sal-akka-raft/pom.xml b/opendaylight/md-sal/sal-akka-raft/pom.xml index 53353cded1..4b6091b429 100644 --- a/opendaylight/md-sal/sal-akka-raft/pom.xml +++ b/opendaylight/md-sal/sal-akka-raft/pom.xml @@ -13,7 +13,6 @@ org.opendaylight.controller sal-clustering-commons - 1.2.0-SNAPSHOT com.google.guava @@ -81,7 +80,6 @@ org.slf4j slf4j-simple - ${slf4j.version} test diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ClientActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ClientActor.java index 2560f16588..59bec91511 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ClientActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ClientActor.java @@ -29,6 +29,7 @@ public class ClientActor extends UntypedActor { public static Props props(final ActorRef target){ return Props.create(new Creator(){ + private static final long serialVersionUID = 1L; @Override public ClientActor create() throws Exception { return new ClientActor(target); diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java index 97b912ef74..8e4a44cf20 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleActor.java @@ -11,45 +11,48 @@ package org.opendaylight.controller.cluster.example; import akka.actor.ActorRef; import akka.actor.Props; import akka.japi.Creator; - import com.google.common.base.Optional; import com.google.protobuf.ByteString; - +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.HashMap; +import java.util.Map; +import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.example.messages.KeyValue; import org.opendaylight.controller.cluster.example.messages.KeyValueSaved; import org.opendaylight.controller.cluster.example.messages.PrintRole; import org.opendaylight.controller.cluster.example.messages.PrintState; import org.opendaylight.controller.cluster.raft.ConfigParams; import org.opendaylight.controller.cluster.raft.RaftActor; +import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshotReply; +import org.opendaylight.controller.cluster.raft.behaviors.Leader; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.HashMap; -import java.util.Map; - /** * A sample actor showing how the RaftActor is to be extended */ public class ExampleActor extends RaftActor { - private final Map state = new HashMap(); + private final Map state = new HashMap<>(); + private final DataPersistenceProvider dataPersistenceProvider; private long persistIdentifier = 1; - public ExampleActor(String id, Map peerAddresses, - Optional configParams) { + public ExampleActor(final String id, final Map peerAddresses, + final Optional configParams) { super(id, peerAddresses, configParams); + this.dataPersistenceProvider = new PersistentDataProvider(); } public static Props props(final String id, final Map peerAddresses, final Optional configParams){ return Props.create(new Creator(){ + private static final long serialVersionUID = 1L; @Override public ExampleActor create() throws Exception { return new ExampleActor(id, peerAddresses, configParams); @@ -57,7 +60,7 @@ public class ExampleActor extends RaftActor { }); } - @Override public void onReceiveCommand(Object message){ + @Override public void onReceiveCommand(final Object message) throws Exception{ if(message instanceof KeyValue){ if(isLeader()) { String persistId = Long.toString(persistIdentifier++); @@ -76,7 +79,15 @@ public class ExampleActor extends RaftActor { } else if (message instanceof PrintRole) { if(LOG.isDebugEnabled()) { - LOG.debug("{} = {}, Peers={}", getId(), getRaftState(), getPeers()); + String followers = ""; + if (getRaftState() == RaftState.Leader) { + followers = ((Leader)this.getCurrentBehavior()).printFollowerStates(); + LOG.debug("{} = {}, Peers={}, followers={}", getId(), getRaftState(), getPeers(), followers); + } else { + LOG.debug("{} = {}, Peers={}", getId(), getRaftState(), getPeers()); + } + + } } else { @@ -84,8 +95,8 @@ public class ExampleActor extends RaftActor { } } - @Override protected void applyState(ActorRef clientActor, String identifier, - Object data) { + @Override protected void applyState(final ActorRef clientActor, final String identifier, + final Object data) { if(data instanceof KeyValue){ KeyValue kv = (KeyValue) data; state.put(kv.getKey(), kv.getValue()); @@ -105,19 +116,19 @@ public class ExampleActor extends RaftActor { getSelf().tell(new CaptureSnapshotReply(bs), null); } - @Override protected void applySnapshot(ByteString snapshot) { + @Override protected void applySnapshot(final ByteString snapshot) { state.clear(); try { - state.putAll((HashMap) toObject(snapshot)); + state.putAll((Map) toObject(snapshot)); } catch (Exception e) { LOG.error(e, "Exception in applying snapshot"); } if(LOG.isDebugEnabled()) { - LOG.debug("Snapshot applied to state : {}", ((HashMap) state).size()); + LOG.debug("Snapshot applied to state : {}", ((Map) state).size()); } } - private ByteString fromObject(Object snapshot) throws Exception { + private ByteString fromObject(final Object snapshot) throws Exception { ByteArrayOutputStream b = null; ObjectOutputStream o = null; try { @@ -137,7 +148,7 @@ public class ExampleActor extends RaftActor { } } - private Object toObject(ByteString bs) throws ClassNotFoundException, IOException { + private Object toObject(final ByteString bs) throws ClassNotFoundException, IOException { Object obj = null; ByteArrayInputStream bis = null; ObjectInputStream ois = null; @@ -160,7 +171,12 @@ public class ExampleActor extends RaftActor { } - @Override public void onReceiveRecover(Object message) { + @Override + protected DataPersistenceProvider persistence() { + return dataPersistenceProvider; + } + + @Override public void onReceiveRecover(final Object message)throws Exception { super.onReceiveRecover(message); } @@ -169,11 +185,11 @@ public class ExampleActor extends RaftActor { } @Override - protected void startLogRecoveryBatch(int maxBatchSize) { + protected void startLogRecoveryBatch(final int maxBatchSize) { } @Override - protected void appendRecoveredLogEntry(Payload data) { + protected void appendRecoveredLogEntry(final Payload data) { } @Override @@ -185,6 +201,6 @@ public class ExampleActor extends RaftActor { } @Override - protected void applyRecoverySnapshot(ByteString snapshot) { + protected void applyRecoverySnapshot(final ByteString snapshot) { } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleConfigParamsImpl.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleConfigParamsImpl.java index 6192cad230..2faae48838 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleConfigParamsImpl.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/ExampleConfigParamsImpl.java @@ -15,7 +15,7 @@ import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; public class ExampleConfigParamsImpl extends DefaultConfigParamsImpl { @Override public long getSnapshotBatchCount() { - return 50; + return 25; } @Override diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/TestDriver.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/TestDriver.java index cb51a8951a..f202a8bb1d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/TestDriver.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/TestDriver.java @@ -6,7 +6,6 @@ import com.google.common.base.Optional; import org.opendaylight.controller.cluster.example.messages.PrintRole; import org.opendaylight.controller.cluster.example.messages.PrintState; import org.opendaylight.controller.cluster.raft.ConfigParams; -import org.opendaylight.controller.cluster.raft.client.messages.AddRaftPeer; import java.io.BufferedReader; import java.io.InputStreamReader; @@ -35,7 +34,6 @@ public class TestDriver { * Commands * bye * createNodes:{num} - * addNodes:{num} * stopNode:{nodeName} * reinstateNode:{nodeName} * addClients:{num} @@ -66,11 +64,6 @@ public class TestDriver { int n = Integer.parseInt(arr[1]); td.createNodes(n); - } else if (command.startsWith("addNodes")) { - String[] arr = command.split(":"); - int n = Integer.parseInt(arr[1]); - td.addNodes(n); - } else if (command.startsWith("addClients")) { String[] arr = command.split(":"); int n = Integer.parseInt(arr[1]); @@ -134,32 +127,6 @@ public class TestDriver { } } - // add new nodes , pass in the count - public void addNodes(int num) { - Map newPeers = new HashMap<>(); - for (int i=0; i < num; i++) { - nameCounter = nameCounter + 1; - newPeers.put("example-"+nameCounter, "akka://default/user/example-"+nameCounter); - allPeers.put("example-"+nameCounter, "akka://default/user/example-"+nameCounter); - - } - Map newActorRefs = new HashMap(num); - for (Map.Entry entry : newPeers.entrySet()) { - ActorRef exampleActor = createExampleActor(entry.getKey()); - newActorRefs.put(entry.getKey(), exampleActor); - - //now also add these new nodes as peers from the previous nodes - for (ActorRef actor : actorRefs.values()) { - actor.tell(new AddRaftPeer(entry.getKey(), entry.getValue()), null); - } - - System.out.println("Added node:" + entry); - } - - actorRefs.putAll(newActorRefs); - } - - // add num clients to all nodes in the system public void addClients(int num) { for(Map.Entry actorRefEntry : actorRefs.entrySet()) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValue.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValue.java index db3e683130..e0873cc7ba 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValue.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValue.java @@ -18,6 +18,7 @@ import java.util.HashMap; import java.util.Map; public class KeyValue extends Payload implements Serializable { + private static final long serialVersionUID = 1L; private String key; private String value; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValueSaved.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValueSaved.java index 9b2a2e9e3b..63c48ba703 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValueSaved.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/KeyValueSaved.java @@ -11,4 +11,5 @@ package org.opendaylight.controller.cluster.example.messages; import java.io.Serializable; public class KeyValueSaved implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintRole.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintRole.java index a5105f041a..c888d3f996 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintRole.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintRole.java @@ -11,4 +11,5 @@ package org.opendaylight.controller.cluster.example.messages; import java.io.Serializable; public class PrintRole implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintState.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintState.java index 20ed142d76..540f3768a6 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintState.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/example/messages/PrintState.java @@ -11,4 +11,5 @@ package org.opendaylight.controller.cluster.example.messages; import java.io.Serializable; public class PrintState implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImpl.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImpl.java index 2be4a0c36f..a2c9d660ad 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImpl.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImpl.java @@ -7,8 +7,6 @@ */ package org.opendaylight.controller.cluster.raft; -import com.google.protobuf.ByteString; - import java.util.ArrayList; import java.util.List; @@ -20,27 +18,23 @@ public abstract class AbstractReplicatedLogImpl implements ReplicatedLog { // We define this as ArrayList so we can use ensureCapacity. protected ArrayList journal; - protected ByteString snapshot; + protected long snapshotIndex = -1; protected long snapshotTerm = -1; // to be used for rollback during save snapshot failure protected ArrayList snapshottedJournal; - protected ByteString previousSnapshot; protected long previousSnapshotIndex = -1; protected long previousSnapshotTerm = -1; - public AbstractReplicatedLogImpl(ByteString state, long snapshotIndex, + public AbstractReplicatedLogImpl(long snapshotIndex, long snapshotTerm, List unAppliedEntries) { - this.snapshot = state; this.snapshotIndex = snapshotIndex; this.snapshotTerm = snapshotTerm; this.journal = new ArrayList<>(unAppliedEntries); } - public AbstractReplicatedLogImpl() { - this.snapshot = null; this.journal = new ArrayList<>(); } @@ -154,11 +148,6 @@ public abstract class AbstractReplicatedLogImpl implements ReplicatedLog { return logEntryIndex <= snapshotIndex && snapshotIndex != -1; } - @Override - public ByteString getSnapshot() { - return snapshot; - } - @Override public long getSnapshotIndex() { return snapshotIndex; @@ -185,18 +174,13 @@ public abstract class AbstractReplicatedLogImpl implements ReplicatedLog { this.snapshotTerm = snapshotTerm; } - @Override - public void setSnapshot(ByteString snapshot) { - this.snapshot = snapshot; - } - @Override public void clear(int startIndex, int endIndex) { journal.subList(startIndex, endIndex).clear(); } @Override - public void snapshotPreCommit(ByteString snapshot, long snapshotCapturedIndex, long snapshotCapturedTerm) { + public void snapshotPreCommit(long snapshotCapturedIndex, long snapshotCapturedTerm) { snapshottedJournal = new ArrayList<>(journal.size()); snapshottedJournal.addAll(journal.subList(0, (int)(snapshotCapturedIndex - snapshotIndex))); @@ -207,9 +191,6 @@ public abstract class AbstractReplicatedLogImpl implements ReplicatedLog { previousSnapshotTerm = snapshotTerm; setSnapshotTerm(snapshotCapturedTerm); - - previousSnapshot = getSnapshot(); - setSnapshot(snapshot); } @Override @@ -217,7 +198,6 @@ public abstract class AbstractReplicatedLogImpl implements ReplicatedLog { snapshottedJournal = null; previousSnapshotIndex = -1; previousSnapshotTerm = -1; - previousSnapshot = null; } @Override @@ -231,9 +211,5 @@ public abstract class AbstractReplicatedLogImpl implements ReplicatedLog { snapshotTerm = previousSnapshotTerm; previousSnapshotTerm = -1; - - snapshot = previousSnapshot; - previousSnapshot = null; - } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformation.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformation.java index f3de983538..2c4304d404 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformation.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformation.java @@ -61,5 +61,16 @@ public interface FollowerLogInformation { */ public AtomicLong getMatchIndex(); + /** + * Checks if the follower is active by comparing the last updated with the duration + * @return boolean + */ + public boolean isFollowerActive(); + + /** + * restarts the timeout clock of the follower + */ + public void markFollowerActive(); + } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java index 94f9a53a85..c0cfd7e862 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java @@ -8,6 +8,10 @@ package org.opendaylight.controller.cluster.raft; +import com.google.common.base.Stopwatch; +import scala.concurrent.duration.FiniteDuration; + +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; public class FollowerLogInformationImpl implements FollowerLogInformation{ @@ -18,11 +22,17 @@ public class FollowerLogInformationImpl implements FollowerLogInformation{ private final AtomicLong matchIndex; + private final Stopwatch stopwatch; + + private final long followerTimeoutMillis; + public FollowerLogInformationImpl(String id, AtomicLong nextIndex, - AtomicLong matchIndex) { + AtomicLong matchIndex, FiniteDuration followerTimeoutDuration) { this.id = id; this.nextIndex = nextIndex; this.matchIndex = matchIndex; + this.stopwatch = new Stopwatch(); + this.followerTimeoutMillis = followerTimeoutDuration.toMillis(); } public long incrNextIndex(){ @@ -57,4 +67,17 @@ public class FollowerLogInformationImpl implements FollowerLogInformation{ return matchIndex; } + @Override + public boolean isFollowerActive() { + long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); + return (stopwatch.isRunning()) && (elapsed <= followerTimeoutMillis); + } + + @Override + public void markFollowerActive() { + if (stopwatch.isRunning()) { + stopwatch.reset(); + } + stopwatch.start(); + } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java index 66a46ef3bd..042b9fb569 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActor.java @@ -18,10 +18,12 @@ import akka.persistence.SaveSnapshotFailure; import akka.persistence.SaveSnapshotSuccess; import akka.persistence.SnapshotOffer; import akka.persistence.SnapshotSelectionCriteria; -import akka.persistence.UntypedPersistentActor; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; import com.google.common.base.Stopwatch; import com.google.protobuf.ByteString; +import org.opendaylight.controller.cluster.DataPersistenceProvider; +import org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor; import org.opendaylight.controller.cluster.raft.base.messages.ApplyLogEntries; import org.opendaylight.controller.cluster.raft.base.messages.ApplySnapshot; import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; @@ -29,15 +31,16 @@ import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshot; import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshotReply; import org.opendaylight.controller.cluster.raft.base.messages.Replicate; import org.opendaylight.controller.cluster.raft.base.messages.SendHeartBeat; +import org.opendaylight.controller.cluster.raft.base.messages.SendInstallSnapshot; +import org.opendaylight.controller.cluster.raft.behaviors.AbstractRaftActorBehavior; import org.opendaylight.controller.cluster.raft.behaviors.Follower; import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior; -import org.opendaylight.controller.cluster.raft.client.messages.AddRaftPeer; import org.opendaylight.controller.cluster.raft.client.messages.FindLeader; import org.opendaylight.controller.cluster.raft.client.messages.FindLeaderReply; -import org.opendaylight.controller.cluster.raft.client.messages.RemoveRaftPeer; import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages; + import java.io.Serializable; import java.util.Map; @@ -81,7 +84,7 @@ import java.util.Map; *
  • when a snapshot should be saved
  • * */ -public abstract class RaftActor extends UntypedPersistentActor { +public abstract class RaftActor extends AbstractUntypedPersistentActor { protected final LoggingAdapter LOG = Logging.getLogger(getContext().system(), this); @@ -135,24 +138,40 @@ public abstract class RaftActor extends UntypedPersistentActor { public void preStart() throws Exception { LOG.info("Starting recovery for {} with journal batch size {}", persistenceId(), context.getConfigParams().getJournalRecoveryLogBatchSize()); + super.preStart(); } @Override - public void onReceiveRecover(Object message) { - if (message instanceof SnapshotOffer) { - onRecoveredSnapshot((SnapshotOffer)message); - } else if (message instanceof ReplicatedLogEntry) { - onRecoveredJournalLogEntry((ReplicatedLogEntry)message); - } else if (message instanceof ApplyLogEntries) { - onRecoveredApplyLogEntries((ApplyLogEntries)message); - } else if (message instanceof DeleteEntries) { - replicatedLog.removeFrom(((DeleteEntries) message).getFromIndex()); - } else if (message instanceof UpdateElectionTerm) { - context.getTermInformation().update(((UpdateElectionTerm) message).getCurrentTerm(), - ((UpdateElectionTerm) message).getVotedFor()); - } else if (message instanceof RecoveryCompleted) { - onRecoveryCompletedMessage(); + public void handleRecover(Object message) { + if(persistence().isRecoveryApplicable()) { + if (message instanceof SnapshotOffer) { + onRecoveredSnapshot((SnapshotOffer) message); + } else if (message instanceof ReplicatedLogEntry) { + onRecoveredJournalLogEntry((ReplicatedLogEntry) message); + } else if (message instanceof ApplyLogEntries) { + onRecoveredApplyLogEntries((ApplyLogEntries) message); + } else if (message instanceof DeleteEntries) { + replicatedLog.removeFrom(((DeleteEntries) message).getFromIndex()); + } else if (message instanceof UpdateElectionTerm) { + context.getTermInformation().update(((UpdateElectionTerm) message).getCurrentTerm(), + ((UpdateElectionTerm) message).getVotedFor()); + } else if (message instanceof RecoveryCompleted) { + onRecoveryCompletedMessage(); + } + } else { + if (message instanceof RecoveryCompleted) { + // Delete all the messages from the akka journal so that we do not end up with consistency issues + // Note I am not using the dataPersistenceProvider and directly using the akka api here + deleteMessages(lastSequenceNr()); + + // Delete all the akka snapshots as they will not be needed + deleteSnapshots(new SnapshotSelectionCriteria(scala.Long.MaxValue(), scala.Long.MaxValue())); + + onRecoveryComplete(); + currentBehavior = new Follower(context); + onStateChanged(); + } } } @@ -254,7 +273,7 @@ public abstract class RaftActor extends UntypedPersistentActor { onStateChanged(); } - @Override public void onReceiveCommand(Object message) { + @Override public void handleCommand(Object message) { if (message instanceof ApplyState){ ApplyState applyState = (ApplyState) message; @@ -272,7 +291,7 @@ public abstract class RaftActor extends UntypedPersistentActor { if(LOG.isDebugEnabled()) { LOG.debug("Persisting ApplyLogEntries with index={}", ale.getToIndex()); } - persist(new ApplyLogEntries(ale.getToIndex()), new Procedure() { + persistence().persist(new ApplyLogEntries(ale.getToIndex()), new Procedure() { @Override public void apply(ApplyLogEntries param) throws Exception { } @@ -304,10 +323,9 @@ public abstract class RaftActor extends UntypedPersistentActor { SaveSnapshotSuccess success = (SaveSnapshotSuccess) message; LOG.info("SaveSnapshotSuccess received for snapshot"); - context.getReplicatedLog().snapshotCommit(); + long sequenceNumber = success.metadata().sequenceNr(); - // TODO: Not sure if we want to be this aggressive with trimming stuff - trimPersistentData(success.metadata().sequenceNr()); + commitSnapshot(sequenceNumber); } else if (message instanceof SaveSnapshotFailure) { SaveSnapshotFailure saveSnapshotFailure = (SaveSnapshotFailure) message; @@ -323,20 +341,6 @@ public abstract class RaftActor extends UntypedPersistentActor { context.getReplicatedLog().getSnapshotTerm(), context.getReplicatedLog().size()); - } else if (message instanceof AddRaftPeer){ - - // FIXME : Do not add raft peers like this. - // When adding a new Peer we have to ensure that the a majority of - // the peers know about the new Peer. Doing it this way may cause - // a situation where multiple Leaders may emerge - AddRaftPeer arp = (AddRaftPeer)message; - context.addToPeers(arp.getName(), arp.getAddress()); - - } else if (message instanceof RemoveRaftPeer){ - - RemoveRaftPeer rrp = (RemoveRaftPeer)message; - context.removePeer(rrp.getName()); - } else if (message instanceof CaptureSnapshot) { LOG.info("CaptureSnapshot received by actor"); CaptureSnapshot cs = (CaptureSnapshot)message; @@ -371,6 +375,7 @@ public abstract class RaftActor extends UntypedPersistentActor { } public java.util.Set getPeers() { + return context.getPeerAddresses().keySet(); } @@ -485,7 +490,12 @@ public abstract class RaftActor extends UntypedPersistentActor { context.setPeerAddress(peerId, peerAddress); } + protected void commitSnapshot(long sequenceNumber) { + context.getReplicatedLog().snapshotCommit(); + // TODO: Not sure if we want to be this aggressive with trimming stuff + trimPersistentData(sequenceNumber); + } /** * The applyState method will be called by the RaftActor when some data @@ -515,7 +525,7 @@ public abstract class RaftActor extends UntypedPersistentActor { /** * This method is called during recovery to append state data to the current batch. This method - * is called 1 or more times after {@link #startRecoveryStateBatch}. + * is called 1 or more times after {@link #startLogRecoveryBatch}. * * @param data the state data */ @@ -530,7 +540,7 @@ public abstract class RaftActor extends UntypedPersistentActor { /** * This method is called during recovery at the end of a batch to apply the current batched - * log entries. This method is called after {@link #appendRecoveryLogEntry}. + * log entries. This method is called after {@link #appendRecoveredLogEntry}. */ protected abstract void applyCurrentLogRecoveryBatch(); @@ -566,17 +576,19 @@ public abstract class RaftActor extends UntypedPersistentActor { */ protected abstract void onStateChanged(); + protected abstract DataPersistenceProvider persistence(); + protected void onLeaderChanged(String oldLeader, String newLeader){}; private void trimPersistentData(long sequenceNumber) { // Trim akka snapshots // FIXME : Not sure how exactly the SnapshotSelectionCriteria is applied // For now guessing that it is ANDed. - deleteSnapshots(new SnapshotSelectionCriteria( + persistence().deleteSnapshots(new SnapshotSelectionCriteria( sequenceNumber - context.getConfigParams().getSnapshotBatchCount(), 43200000)); // Trim akka journal - deleteMessages(sequenceNumber); + persistence().deleteMessages(sequenceNumber); } private String getLeaderAddress(){ @@ -605,14 +617,14 @@ public abstract class RaftActor extends UntypedPersistentActor { captureSnapshot.getLastIndex(), captureSnapshot.getLastTerm(), captureSnapshot.getLastAppliedIndex(), captureSnapshot.getLastAppliedTerm()); - saveSnapshot(sn); + persistence().saveSnapshot(sn); LOG.info("Persisting of snapshot done:{}", sn.getLogMessage()); //be greedy and remove entries from in-mem journal which are in the snapshot // and update snapshotIndex and snapshotTerm without waiting for the success, - context.getReplicatedLog().snapshotPreCommit(stateInBytes, + context.getReplicatedLog().snapshotPreCommit( captureSnapshot.getLastAppliedIndex(), captureSnapshot.getLastAppliedTerm()); @@ -620,16 +632,19 @@ public abstract class RaftActor extends UntypedPersistentActor { "and term:{}", captureSnapshot.getLastAppliedIndex(), captureSnapshot.getLastAppliedTerm()); + if (isLeader() && captureSnapshot.isInstallSnapshotInitiated()) { + // this would be call straight to the leader and won't initiate in serialization + currentBehavior.handleMessage(getSelf(), new SendInstallSnapshot(stateInBytes)); + } + captureSnapshot = null; hasSnapshotCaptureInitiated = false; } - private class ReplicatedLogImpl extends AbstractReplicatedLogImpl { public ReplicatedLogImpl(Snapshot snapshot) { - super(ByteString.copyFrom(snapshot.getState()), - snapshot.getLastAppliedIndex(), snapshot.getLastAppliedTerm(), + super(snapshot.getLastAppliedIndex(), snapshot.getLastAppliedTerm(), snapshot.getUnAppliedEntries()); } @@ -647,7 +662,7 @@ public abstract class RaftActor extends UntypedPersistentActor { // FIXME: Maybe this should be done after the command is saved journal.subList(adjustedIndex , journal.size()).clear(); - persist(new DeleteEntries(adjustedIndex), new Procedure(){ + persistence().persist(new DeleteEntries(adjustedIndex), new Procedure(){ @Override public void apply(DeleteEntries param) throws Exception { @@ -677,7 +692,7 @@ public abstract class RaftActor extends UntypedPersistentActor { // persist call and the execution(s) of the associated event // handler. This also holds for multiple persist calls in context // of a single command. - persist(replicatedLogEntry, + persistence().persist(replicatedLogEntry, new Procedure() { @Override public void apply(ReplicatedLogEntry evt) throws Exception { @@ -723,10 +738,10 @@ public abstract class RaftActor extends UntypedPersistentActor { } - private static class DeleteEntries implements Serializable { + static class DeleteEntries implements Serializable { + private static final long serialVersionUID = 1L; private final int fromIndex; - public DeleteEntries(int fromIndex) { this.fromIndex = fromIndex; } @@ -766,7 +781,7 @@ public abstract class RaftActor extends UntypedPersistentActor { public void updateAndPersist(long currentTerm, String votedFor){ update(currentTerm, votedFor); // FIXME : Maybe first persist then update the state - persist(new UpdateElectionTerm(this.currentTerm, this.votedFor), new Procedure(){ + persistence().persist(new UpdateElectionTerm(this.currentTerm, this.votedFor), new Procedure(){ @Override public void apply(UpdateElectionTerm param) throws Exception { @@ -776,7 +791,8 @@ public abstract class RaftActor extends UntypedPersistentActor { } } - private static class UpdateElectionTerm implements Serializable { + static class UpdateElectionTerm implements Serializable { + private static final long serialVersionUID = 1L; private final long currentTerm; private final String votedFor; @@ -794,4 +810,37 @@ public abstract class RaftActor extends UntypedPersistentActor { } } + protected class NonPersistentRaftDataProvider extends NonPersistentDataProvider { + + public NonPersistentRaftDataProvider(){ + + } + + /** + * The way snapshotting works is, + *
      + *
    1. RaftActor calls createSnapshot on the Shard + *
    2. Shard sends a CaptureSnapshotReply and RaftActor then calls saveSnapshot + *
    3. When saveSnapshot is invoked on the akka-persistence API it uses the SnapshotStore to save the snapshot. + * The SnapshotStore sends SaveSnapshotSuccess or SaveSnapshotFailure. When the RaftActor gets SaveSnapshot + * success it commits the snapshot to the in-memory journal. This commitSnapshot is mimicking what is done + * in SaveSnapshotSuccess. + *
    + * @param o + */ + @Override + public void saveSnapshot(Object o) { + // Make saving Snapshot successful + commitSnapshot(-1L); + } + } + + @VisibleForTesting + void setCurrentBehavior(AbstractRaftActorBehavior behavior) { + currentBehavior = behavior; + } + + protected RaftActorBehavior getCurrentBehavior() { + return currentBehavior; + } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java index 85893333c2..7ee85322a6 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLog.java @@ -8,8 +8,6 @@ package org.opendaylight.controller.cluster.raft; -import com.google.protobuf.ByteString; - import java.util.List; /** @@ -122,13 +120,6 @@ public interface ReplicatedLog { */ boolean isInSnapshot(long index); - /** - * Get the snapshot - * - * @return an object representing the snapshot if it exists. null otherwise - */ - ByteString getSnapshot(); - /** * Get the index of the snapshot * @@ -156,12 +147,6 @@ public interface ReplicatedLog { */ public void setSnapshotTerm(long snapshotTerm); - /** - * sets the snapshot in bytes - * @param snapshot - */ - public void setSnapshot(ByteString snapshot); - /** * Clears the journal entries with startIndex(inclusive) and endIndex (exclusive) * @param startIndex @@ -172,12 +157,10 @@ public interface ReplicatedLog { /** * Handles all the bookkeeping in order to perform a rollback in the * event of SaveSnapshotFailure - * @param snapshot * @param snapshotCapturedIndex * @param snapshotCapturedTerm */ - public void snapshotPreCommit(ByteString snapshot, - long snapshotCapturedIndex, long snapshotCapturedTerm); + public void snapshotPreCommit(long snapshotCapturedIndex, long snapshotCapturedTerm); /** * Sets the Replicated log to state after snapshot success. diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java index fc2ec5cff9..ceb5633d4d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplEntry.java @@ -14,6 +14,7 @@ import java.io.Serializable; public class ReplicatedLogImplEntry implements ReplicatedLogEntry, Serializable { + private static final long serialVersionUID = 1L; private final long index; private final long term; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/Snapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/Snapshot.java index 8e0fcca9f7..77bf103701 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/Snapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/Snapshot.java @@ -12,6 +12,7 @@ import java.util.List; public class Snapshot implements Serializable { + private static final long serialVersionUID = 1L; private final byte[] state; private final List unAppliedEntries; private final long lastIndex; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyLogEntries.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyLogEntries.java index af3c4fd87d..c395915a0f 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyLogEntries.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyLogEntries.java @@ -20,6 +20,7 @@ import java.io.Serializable; * */ public class ApplyLogEntries implements Serializable { + private static final long serialVersionUID = 1L; private final int toIndex; public ApplyLogEntries(int toIndex) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java index c356804223..54ee02a057 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplySnapshot.java @@ -16,6 +16,7 @@ import java.io.Serializable; * Internal message, issued by follower to its actor */ public class ApplySnapshot implements Serializable { + private static final long serialVersionUID = 1L; private final Snapshot snapshot; public ApplySnapshot(Snapshot snapshot) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java index b904335be3..0a7a632880 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ApplyState.java @@ -14,6 +14,7 @@ import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; import java.io.Serializable; public class ApplyState implements Serializable { + private static final long serialVersionUID = 1L; private final ActorRef clientActor; private final String identifier; private final ReplicatedLogEntry replicatedLogEntry; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java index bb86e1a37d..d4dd3350f3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CaptureSnapshot.java @@ -13,13 +13,20 @@ public class CaptureSnapshot { private long lastAppliedTerm; private long lastIndex; private long lastTerm; + private boolean installSnapshotInitiated; public CaptureSnapshot(long lastIndex, long lastTerm, long lastAppliedIndex, long lastAppliedTerm) { + this(lastIndex, lastTerm, lastAppliedIndex, lastAppliedTerm, false); + } + + public CaptureSnapshot(long lastIndex, long lastTerm,long lastAppliedIndex, + long lastAppliedTerm, boolean installSnapshotInitiated) { this.lastIndex = lastIndex; this.lastTerm = lastTerm; this.lastAppliedIndex = lastAppliedIndex; this.lastAppliedTerm = lastAppliedTerm; + this.installSnapshotInitiated = installSnapshotInitiated; } public long getLastAppliedIndex() { @@ -37,4 +44,8 @@ public class CaptureSnapshot { public long getLastTerm() { return lastTerm; } + + public boolean isInstallSnapshotInitiated() { + return installSnapshotInitiated; + } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CommitEntry.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CommitEntry.java index 07e376fca3..6335e3272e 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CommitEntry.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/CommitEntry.java @@ -14,4 +14,5 @@ import java.io.Serializable; * Message sent to commit an entry to the log */ public class CommitEntry implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java index a844849f15..84fa8b7590 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/ElectionTimeout.java @@ -11,4 +11,5 @@ package org.opendaylight.controller.cluster.raft.base.messages; import java.io.Serializable; public class ElectionTimeout implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/InitiateInstallSnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/InitiateInstallSnapshot.java new file mode 100644 index 0000000000..7844914873 --- /dev/null +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/InitiateInstallSnapshot.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014 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.cluster.raft.base.messages; + +/** + * Internal message by Leader to initiate an install snapshot + */ +public class InitiateInstallSnapshot { +} + diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/PersistEntry.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/PersistEntry.java index 6a62817e90..68ecc1289b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/PersistEntry.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/PersistEntry.java @@ -14,4 +14,5 @@ import java.io.Serializable; * Message sent to Persist an entry into the transaction journal */ public class PersistEntry implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/Replicate.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/Replicate.java index 9bc737a0e3..611c6eaf1f 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/Replicate.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/Replicate.java @@ -14,6 +14,7 @@ import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; import java.io.Serializable; public class Replicate implements Serializable { + private static final long serialVersionUID = 1L; private final ActorRef clientActor; private final String identifier; private final ReplicatedLogEntry replicatedLogEntry; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SaveSnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SaveSnapshot.java index 861f5ee715..7b7f085856 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SaveSnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SaveSnapshot.java @@ -15,4 +15,5 @@ import java.io.Serializable; * it and use it to save it's state */ public class SaveSnapshot implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java index 3c8c845f5d..7eb7522b85 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendHeartBeat.java @@ -17,4 +17,5 @@ import java.io.Serializable; * Typically the Leader to itself on a schedule */ public class SendHeartBeat implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendInstallSnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendInstallSnapshot.java index 6c3313f316..83c85d9135 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendInstallSnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/base/messages/SendInstallSnapshot.java @@ -8,7 +8,16 @@ package org.opendaylight.controller.cluster.raft.base.messages; -import java.io.Serializable; +import com.google.protobuf.ByteString; -public class SendInstallSnapshot implements Serializable { +public class SendInstallSnapshot { + private ByteString snapshot; + + public SendInstallSnapshot(ByteString snapshot) { + this.snapshot = snapshot; + } + + public ByteString getSnapshot() { + return snapshot; + } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java index 9edba85865..d83362b580 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/Leader.java @@ -11,6 +11,8 @@ package org.opendaylight.controller.cluster.raft.behaviors; import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.Cancellable; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.protobuf.ByteString; import org.opendaylight.controller.cluster.raft.ClientRequestTracker; @@ -20,6 +22,8 @@ import org.opendaylight.controller.cluster.raft.FollowerLogInformationImpl; import org.opendaylight.controller.cluster.raft.RaftActorContext; import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; +import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshot; +import org.opendaylight.controller.cluster.raft.base.messages.InitiateInstallSnapshot; import org.opendaylight.controller.cluster.raft.base.messages.Replicate; import org.opendaylight.controller.cluster.raft.base.messages.SendHeartBeat; import org.opendaylight.controller.cluster.raft.base.messages.SendInstallSnapshot; @@ -66,20 +70,20 @@ import java.util.concurrent.atomic.AtomicLong; public class Leader extends AbstractRaftActorBehavior { - protected final Map followerToLog = - new HashMap(); + protected final Map followerToLog = new HashMap<>(); protected final Map mapFollowerToSnapshot = new HashMap<>(); private final Set followers; private Cancellable heartbeatSchedule = null; - private Cancellable appendEntriesSchedule = null; private Cancellable installSnapshotSchedule = null; private List trackerList = new ArrayList<>(); private final int minReplicationCount; + private Optional snapshot; + public Leader(RaftActorContext context) { super(context); @@ -89,7 +93,8 @@ public class Leader extends AbstractRaftActorBehavior { FollowerLogInformation followerLogInformation = new FollowerLogInformationImpl(followerId, new AtomicLong(context.getCommitIndex()), - new AtomicLong(-1)); + new AtomicLong(-1), + context.getConfigParams().getElectionTimeOutInterval()); followerToLog.put(followerId, followerLogInformation); } @@ -104,6 +109,7 @@ public class Leader extends AbstractRaftActorBehavior { minReplicationCount = 0; } + snapshot = Optional.absent(); // Immediately schedule a heartbeat // Upon election: send initial empty AppendEntries RPCs @@ -118,6 +124,15 @@ public class Leader extends AbstractRaftActorBehavior { } + private Optional getSnapshot() { + return snapshot; + } + + @VisibleForTesting + void setSnapshot(Optional snapshot) { + this.snapshot = snapshot; + } + @Override protected RaftActorBehavior handleAppendEntries(ActorRef sender, AppendEntries appendEntries) { @@ -147,6 +162,8 @@ public class Leader extends AbstractRaftActorBehavior { return this; } + followerLogInformation.markFollowerActive(); + if (appendEntriesReply.isSuccess()) { followerLogInformation .setMatchIndex(appendEntriesReply.getLogLastIndex()); @@ -247,10 +264,18 @@ public class Leader extends AbstractRaftActorBehavior { if (message instanceof SendHeartBeat) { sendHeartBeat(); return this; - } else if(message instanceof SendInstallSnapshot) { + + } else if(message instanceof InitiateInstallSnapshot) { installSnapshotIfNeeded(); + + } else if(message instanceof SendInstallSnapshot) { + // received from RaftActor + setSnapshot(Optional.of(((SendInstallSnapshot) message).getSnapshot())); + sendInstallSnapshot(); + } else if (message instanceof Replicate) { replicate((Replicate) message); + } else if (message instanceof InstallSnapshotReply){ handleInstallSnapshotReply( (InstallSnapshotReply) message); @@ -264,8 +289,9 @@ public class Leader extends AbstractRaftActorBehavior { private void handleInstallSnapshotReply(InstallSnapshotReply reply) { String followerId = reply.getFollowerId(); - FollowerToSnapshot followerToSnapshot = - mapFollowerToSnapshot.get(followerId); + FollowerToSnapshot followerToSnapshot = mapFollowerToSnapshot.get(followerId); + FollowerLogInformation followerLogInformation = followerToLog.get(followerId); + followerLogInformation.markFollowerActive(); if (followerToSnapshot != null && followerToSnapshot.getChunkIndex() == reply.getChunkIndex()) { @@ -281,8 +307,6 @@ public class Leader extends AbstractRaftActorBehavior { ); } - FollowerLogInformation followerLogInformation = - followerToLog.get(followerId); followerLogInformation.setMatchIndex( context.getReplicatedLog().getSnapshotIndex()); followerLogInformation.setNextIndex( @@ -294,6 +318,12 @@ public class Leader extends AbstractRaftActorBehavior { followerToLog.get(followerId).getNextIndex().get()); } + if (mapFollowerToSnapshot.isEmpty()) { + // once there are no pending followers receiving snapshots + // we can remove snapshot from the memory + setSnapshot(Optional.absent()); + } + } else { followerToSnapshot.markSendStatus(true); } @@ -345,64 +375,87 @@ public class Leader extends AbstractRaftActorBehavior { if (followerActor != null) { FollowerLogInformation followerLogInformation = followerToLog.get(followerId); long followerNextIndex = followerLogInformation.getNextIndex().get(); - List entries = Collections.emptyList(); + boolean isFollowerActive = followerLogInformation.isFollowerActive(); + List entries = null; if (mapFollowerToSnapshot.get(followerId) != null) { - if (mapFollowerToSnapshot.get(followerId).canSendNextChunk()) { + // if install snapshot is in process , then sent next chunk if possible + if (isFollowerActive && mapFollowerToSnapshot.get(followerId).canSendNextChunk()) { sendSnapshotChunk(followerActor, followerId); + } else { + // we send a heartbeat even if we have not received a reply for the last chunk + sendAppendEntriesToFollower(followerActor, followerNextIndex, + Collections.emptyList()); } } else { + long leaderLastIndex = context.getReplicatedLog().lastIndex(); + long leaderSnapShotIndex = context.getReplicatedLog().getSnapshotIndex(); - if (context.getReplicatedLog().isPresent(followerNextIndex)) { + if (isFollowerActive && + context.getReplicatedLog().isPresent(followerNextIndex)) { // FIXME : Sending one entry at a time entries = context.getReplicatedLog().getFrom(followerNextIndex, 1); - followerActor.tell( - new AppendEntries(currentTerm(), context.getId(), - prevLogIndex(followerNextIndex), - prevLogTerm(followerNextIndex), entries, - context.getCommitIndex()).toSerializable(), - actor() - ); - - } else { - // if the followers next index is not present in the leaders log, then snapshot should be sent - long leaderSnapShotIndex = context.getReplicatedLog().getSnapshotIndex(); - long leaderLastIndex = context.getReplicatedLog().lastIndex(); - if (followerNextIndex >= 0 && leaderLastIndex >= followerNextIndex ) { - // if the follower is just not starting and leader's index - // is more than followers index - if(LOG.isDebugEnabled()) { - LOG.debug("SendInstallSnapshot to follower:{}," + - "follower-nextIndex:{}, leader-snapshot-index:{}, " + - "leader-last-index:{}", followerId, - followerNextIndex, leaderSnapShotIndex, leaderLastIndex - ); - } - - actor().tell(new SendInstallSnapshot(), actor()); - } else { - followerActor.tell( - new AppendEntries(currentTerm(), context.getId(), - prevLogIndex(followerNextIndex), - prevLogTerm(followerNextIndex), entries, - context.getCommitIndex()).toSerializable(), - actor() + } else if (isFollowerActive && followerNextIndex >= 0 && + leaderLastIndex >= followerNextIndex ) { + // if the followers next index is not present in the leaders log, and + // if the follower is just not starting and if leader's index is more than followers index + // then snapshot should be sent + + if(LOG.isDebugEnabled()) { + LOG.debug("InitiateInstallSnapshot to follower:{}," + + "follower-nextIndex:{}, leader-snapshot-index:{}, " + + "leader-last-index:{}", followerId, + followerNextIndex, leaderSnapShotIndex, leaderLastIndex ); } + actor().tell(new InitiateInstallSnapshot(), actor()); + + // we would want to sent AE as the capture snapshot might take time + entries = Collections.emptyList(); + + } else { + //we send an AppendEntries, even if the follower is inactive + // in-order to update the followers timestamp, in case it becomes active again + entries = Collections.emptyList(); } + + sendAppendEntriesToFollower(followerActor, followerNextIndex, entries); + } } } } + private void sendAppendEntriesToFollower(ActorSelection followerActor, long followerNextIndex, + List entries) { + followerActor.tell( + new AppendEntries(currentTerm(), context.getId(), + prevLogIndex(followerNextIndex), + prevLogTerm(followerNextIndex), entries, + context.getCommitIndex()).toSerializable(), + actor() + ); + } + /** * An installSnapshot is scheduled at a interval that is a multiple of * a HEARTBEAT_INTERVAL. This is to avoid the need to check for installing * snapshots at every heartbeat. + * + * Install Snapshot works as follows + * 1. Leader sends a InitiateInstallSnapshot message to self + * 2. Leader then initiates the capture snapshot by sending a CaptureSnapshot message to actor + * 3. RaftActor on receipt of the CaptureSnapshotReply (from Shard), stores the received snapshot in the replicated log + * and makes a call to Leader's handleMessage , with SendInstallSnapshot message. + * 4. Leader , picks the snapshot from im-mem ReplicatedLog and sends it in chunks to the Follower + * 5. On complete, Follower sends back a InstallSnapshotReply. + * 6. On receipt of the InstallSnapshotReply for the last chunk, Leader marks the install complete for that follower + * and replenishes the memory by deleting the snapshot in Replicated log. + * */ - private void installSnapshotIfNeeded(){ + private void installSnapshotIfNeeded() { for (String followerId : followers) { ActorSelection followerActor = context.getPeerActorSelection(followerId); @@ -413,6 +466,58 @@ public class Leader extends AbstractRaftActorBehavior { long nextIndex = followerLogInformation.getNextIndex().get(); + if (!context.getReplicatedLog().isPresent(nextIndex) && + context.getReplicatedLog().isInSnapshot(nextIndex)) { + LOG.info("{} follower needs a snapshot install", followerId); + if (snapshot.isPresent()) { + // if a snapshot is present in the memory, most likely another install is in progress + // no need to capture snapshot + sendSnapshotChunk(followerActor, followerId); + + } else { + initiateCaptureSnapshot(); + //we just need 1 follower who would need snapshot to be installed. + // when we have the snapshot captured, we would again check (in SendInstallSnapshot) + // who needs an install and send to all who need + break; + } + + } + } + } + } + + // on every install snapshot, we try to capture the snapshot. + // Once a capture is going on, another one issued will get ignored by RaftActor. + private void initiateCaptureSnapshot() { + LOG.info("Initiating Snapshot Capture to Install Snapshot, Leader:{}", getLeaderId()); + ReplicatedLogEntry lastAppliedEntry = context.getReplicatedLog().get(context.getLastApplied()); + long lastAppliedIndex = -1; + long lastAppliedTerm = -1; + + if (lastAppliedEntry != null) { + lastAppliedIndex = lastAppliedEntry.getIndex(); + lastAppliedTerm = lastAppliedEntry.getTerm(); + } else if (context.getReplicatedLog().getSnapshotIndex() > -1) { + lastAppliedIndex = context.getReplicatedLog().getSnapshotIndex(); + lastAppliedTerm = context.getReplicatedLog().getSnapshotTerm(); + } + + boolean isInstallSnapshotInitiated = true; + actor().tell(new CaptureSnapshot(lastIndex(), lastTerm(), + lastAppliedIndex, lastAppliedTerm, isInstallSnapshotInitiated), + actor()); + } + + + private void sendInstallSnapshot() { + for (String followerId : followers) { + ActorSelection followerActor = context.getPeerActorSelection(followerId); + + if(followerActor != null) { + FollowerLogInformation followerLogInformation = followerToLog.get(followerId); + long nextIndex = followerLogInformation.getNextIndex().get(); + if (!context.getReplicatedLog().isPresent(nextIndex) && context.getReplicatedLog().isInSnapshot(nextIndex)) { sendSnapshotChunk(followerActor, followerId); @@ -427,20 +532,21 @@ public class Leader extends AbstractRaftActorBehavior { */ private void sendSnapshotChunk(ActorSelection followerActor, String followerId) { try { - followerActor.tell( - new InstallSnapshot(currentTerm(), context.getId(), - context.getReplicatedLog().getSnapshotIndex(), - context.getReplicatedLog().getSnapshotTerm(), - getNextSnapshotChunk(followerId, - context.getReplicatedLog().getSnapshot()), - mapFollowerToSnapshot.get(followerId).incrementChunkIndex(), - mapFollowerToSnapshot.get(followerId).getTotalChunks() - ).toSerializable(), - actor() - ); - LOG.info("InstallSnapshot sent to follower {}, Chunk: {}/{}", - followerActor.path(), mapFollowerToSnapshot.get(followerId).getChunkIndex(), - mapFollowerToSnapshot.get(followerId).getTotalChunks()); + if (snapshot.isPresent()) { + followerActor.tell( + new InstallSnapshot(currentTerm(), context.getId(), + context.getReplicatedLog().getSnapshotIndex(), + context.getReplicatedLog().getSnapshotTerm(), + getNextSnapshotChunk(followerId,snapshot.get()), + mapFollowerToSnapshot.get(followerId).incrementChunkIndex(), + mapFollowerToSnapshot.get(followerId).getTotalChunks() + ).toSerializable(), + actor() + ); + LOG.info("InstallSnapshot sent to follower {}, Chunk: {}/{}", + followerActor.path(), mapFollowerToSnapshot.get(followerId).getChunkIndex(), + mapFollowerToSnapshot.get(followerId).getTotalChunks()); + } } catch (IOException e) { LOG.error(e, "InstallSnapshot failed for Leader."); } @@ -457,10 +563,9 @@ public class Leader extends AbstractRaftActorBehavior { mapFollowerToSnapshot.put(followerId, followerToSnapshot); } ByteString nextChunk = followerToSnapshot.getNextChunk(); - if(LOG.isDebugEnabled()) { + if (LOG.isDebugEnabled()) { LOG.debug("Leader's snapshot nextChunk size:{}", nextChunk.size()); } - return nextChunk; } @@ -496,14 +601,11 @@ public class Leader extends AbstractRaftActorBehavior { // Scheduling the heartbeat only once here because heartbeats do not // need to be sent if there are other messages being sent to the remote // actor. - heartbeatSchedule = - context.getActorSystem().scheduler().scheduleOnce( - interval, - context.getActor(), new SendHeartBeat(), - context.getActorSystem().dispatcher(), context.getActor()); + heartbeatSchedule = context.getActorSystem().scheduler().scheduleOnce( + interval, context.getActor(), new SendHeartBeat(), + context.getActorSystem().dispatcher(), context.getActor()); } - private void scheduleInstallSnapshotCheck(FiniteDuration interval) { if(followers.size() == 0){ // Optimization - do not bother scheduling a heartbeat as there are @@ -518,7 +620,7 @@ public class Leader extends AbstractRaftActorBehavior { installSnapshotSchedule = context.getActorSystem().scheduler().scheduleOnce( interval, - context.getActor(), new SendInstallSnapshot(), + context.getActor(), new InitiateInstallSnapshot(), context.getActorSystem().dispatcher(), context.getActor()); } @@ -629,4 +731,19 @@ public class Leader extends AbstractRaftActorBehavior { } } + // called from example-actor for printing the follower-states + public String printFollowerStates() { + StringBuilder sb = new StringBuilder(); + for(FollowerLogInformation followerLogInformation : followerToLog.values()) { + boolean isFollowerActive = followerLogInformation.isFollowerActive(); + sb.append("{"+followerLogInformation.getId() + " state:" + isFollowerActive + "},"); + + } + return "[" + sb.toString() + "]"; + } + + @VisibleForTesting + void markFollowerActive(String followerId) { + followerToLog.get(followerId).markFollowerActive(); + } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/AddRaftPeer.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/AddRaftPeer.java deleted file mode 100644 index d1f4c43c86..0000000000 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/AddRaftPeer.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.opendaylight.controller.cluster.raft.client.messages; - -/** - * Created by kramesha on 7/17/14. - */ -public class AddRaftPeer { - - private String name; - private String address; - - public AddRaftPeer(String name, String address) { - this.name = name; - this.address = address; - } - - public String getName() { - return name; - } - - public String getAddress() { - return address; - } -} diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeader.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeader.java index 98dd0d4653..eebbde3393 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeader.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeader.java @@ -11,5 +11,6 @@ package org.opendaylight.controller.cluster.raft.client.messages; import java.io.Serializable; public class FindLeader implements Serializable{ + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeaderReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeaderReply.java index 64c7350896..8b2e45aa06 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeaderReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/FindLeaderReply.java @@ -11,6 +11,7 @@ package org.opendaylight.controller.cluster.raft.client.messages; import java.io.Serializable; public class FindLeaderReply implements Serializable { + private static final long serialVersionUID = 1L; private final String leaderActor; public FindLeaderReply(String leaderActor) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/RemoveRaftPeer.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/RemoveRaftPeer.java deleted file mode 100644 index 4b766e04b7..0000000000 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/client/messages/RemoveRaftPeer.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.opendaylight.controller.cluster.raft.client.messages; - -/** - * Created by kramesha on 7/17/14. - */ -public class RemoveRaftPeer { - private String name; - - public RemoveRaftPeer(String name) { - this.name = name; - } - - public String getName() { - return name; - } -} diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AbstractRaftRPC.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AbstractRaftRPC.java index 33d8a68686..0122d45c30 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AbstractRaftRPC.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AbstractRaftRPC.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.raft.messages; public class AbstractRaftRPC implements RaftRPC { + private static final long serialVersionUID = 1L; // term protected long term; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntries.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntries.java index 5149cf9f34..e5aebaa6be 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntries.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntries.java @@ -24,10 +24,10 @@ import java.util.Map; * heartbeat (§5.2). */ public class AppendEntries extends AbstractRaftRPC { - - public static final Class SERIALIZABLE_CLASS = AppendEntriesMessages.AppendEntries.class; + public static final Class SERIALIZABLE_CLASS = AppendEntriesMessages.AppendEntries.class; private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(AppendEntries.class); + private static final long serialVersionUID = 1L; // So that follower can redirect clients private final String leaderId; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java index b923baa716..a782eda565 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/AppendEntriesReply.java @@ -12,6 +12,7 @@ package org.opendaylight.controller.cluster.raft.messages; * Reply for the AppendEntriesRpc message */ public class AppendEntriesReply extends AbstractRaftRPC { + private static final long serialVersionUID = 1L; // true if follower contained entry matching // prevLogIndex and prevLogTerm diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshot.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshot.java index c084cba822..3c4e8117c7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshot.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshot.java @@ -13,7 +13,8 @@ import org.opendaylight.controller.protobuff.messages.cluster.raft.InstallSnapsh public class InstallSnapshot extends AbstractRaftRPC { - public static final Class SERIALIZABLE_CLASS = InstallSnapshotMessages.InstallSnapshot.class; + public static final Class SERIALIZABLE_CLASS = InstallSnapshotMessages.InstallSnapshot.class; + private static final long serialVersionUID = 1L; private final String leaderId; private final long lastIncludedIndex; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java index d293a47c8e..71e7ecc189 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/InstallSnapshotReply.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.raft.messages; public class InstallSnapshotReply extends AbstractRaftRPC { + private static final long serialVersionUID = 1L; // The followerId - this will be used to figure out which follower is // responding diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java index 6ef2a06285..8321d0c25b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVote.java @@ -12,6 +12,7 @@ package org.opendaylight.controller.cluster.raft.messages; * Invoked by candidates to gather votes (§5.2). */ public class RequestVote extends AbstractRaftRPC { + private static final long serialVersionUID = 1L; // candidate requesting vote private String candidateId; diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java index df80b4e5e2..da3ba5c39f 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/messages/RequestVoteReply.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.raft.messages; public class RequestVoteReply extends AbstractRaftRPC { + private static final long serialVersionUID = 1L; // true means candidate received vot private final boolean voteGranted; diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImplTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImplTest.java index 913665861d..398a2e9b36 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImplTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractReplicatedLogImplTest.java @@ -7,21 +7,19 @@ */ package org.opendaylight.controller.cluster.raft; -import junit.framework.Assert; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload; -import static org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockReplicatedLogEntry; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload; +import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockReplicatedLogEntry; /** * */ @@ -65,7 +63,7 @@ public class AbstractReplicatedLogImplTest { // now create a snapshot of 3 entries, with 1 unapplied entry left in the log // It removes the entries which have made it to snapshot // and updates the snapshot index and term - Map state = takeSnapshot(3); + Map state = takeSnapshot(3); // check the values after the snapshot. // each index value passed in the test is the logical index (log entry index) @@ -131,8 +129,8 @@ public class AbstractReplicatedLogImplTest { } // create a snapshot for test - public Map takeSnapshot(int numEntries) { - Map map = new HashMap(numEntries); + public Map takeSnapshot(final int numEntries) { + Map map = new HashMap<>(numEntries); List entries = replicatedLogImpl.getEntriesTill(numEntries); for (ReplicatedLogEntry entry : entries) { map.put(entry.getIndex(), entry.getData().toString()); @@ -149,22 +147,24 @@ public class AbstractReplicatedLogImplTest { } class MockAbstractReplicatedLogImpl extends AbstractReplicatedLogImpl { @Override - public void appendAndPersist(ReplicatedLogEntry replicatedLogEntry) { + public void appendAndPersist(final ReplicatedLogEntry replicatedLogEntry) { } @Override - public void removeFromAndPersist(long index) { + public void removeFromAndPersist(final long index) { } - public void setSnapshotIndex(long snapshotIndex) { + @Override + public void setSnapshotIndex(final long snapshotIndex) { this.snapshotIndex = snapshotIndex; } - public void setSnapshotTerm(long snapshotTerm) { + @Override + public void setSnapshotTerm(final long snapshotTerm) { this.snapshotTerm = snapshotTerm; } - public List getEntriesTill(int index) { + public List getEntriesTill(final int index) { return journal.subList(0, index); } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImplTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImplTest.java new file mode 100644 index 0000000000..7df9f3713f --- /dev/null +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImplTest.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014 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.cluster.raft; + + +import com.google.common.base.Stopwatch; +import com.google.common.util.concurrent.Uninterruptibles; +import org.junit.Test; +import scala.concurrent.duration.FiniteDuration; + +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLong; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class FollowerLogInformationImplTest { + + @Test + public void testIsFollowerActive() { + + FiniteDuration timeoutDuration = + new FiniteDuration(500, TimeUnit.MILLISECONDS); + + FollowerLogInformation followerLogInformation = + new FollowerLogInformationImpl( + "follower1", new AtomicLong(10), new AtomicLong(9), timeoutDuration); + + + + assertFalse("Follower should be termed inactive before stopwatch starts", + followerLogInformation.isFollowerActive()); + + followerLogInformation.markFollowerActive(); + if (sleepWithElaspsedTimeReturned(200) > 200) { + return; + } + assertTrue("Follower should be active", followerLogInformation.isFollowerActive()); + + if (sleepWithElaspsedTimeReturned(400) > 400) { + return; + } + assertFalse("Follower should be inactive after time lapsed", + followerLogInformation.isFollowerActive()); + + followerLogInformation.markFollowerActive(); + assertTrue("Follower should be active from inactive", + followerLogInformation.isFollowerActive()); + } + + // we cannot rely comfortably that the sleep will indeed sleep for the desired time + // hence getting the actual elapsed time and do a match. + // if the sleep has spilled over, then return the test gracefully + private long sleepWithElaspsedTimeReturned(long millis) { + Stopwatch stopwatch = new Stopwatch(); + stopwatch.start(); + Uninterruptibles.sleepUninterruptibly(millis, TimeUnit.MILLISECONDS); + stopwatch.stop(); + return stopwatch.elapsed(TimeUnit.MILLISECONDS); + } +} diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java index 0d5f644b3d..562ca213a9 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActorContext.java @@ -33,7 +33,7 @@ public class MockRaftActorContext implements RaftActorContext { private long lastApplied = 0; private final ElectionTerm electionTerm; private ReplicatedLog replicatedLog; - private Map peerAddresses = new HashMap(); + private Map peerAddresses = new HashMap<>(); private ConfigParams configParams; public MockRaftActorContext(){ @@ -198,6 +198,7 @@ public class MockRaftActorContext implements RaftActorContext { } public static class MockPayload extends Payload implements Serializable { + private static final long serialVersionUID = 1L; private String value = ""; public MockPayload(){ @@ -231,6 +232,7 @@ public class MockRaftActorContext implements RaftActorContext { } public static class MockReplicatedLogEntry implements ReplicatedLogEntry, Serializable { + private static final long serialVersionUID = 1L; private final long term; private final long index; diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java index c15c9198bd..9eb2fb757b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java @@ -5,21 +5,44 @@ import akka.actor.ActorSystem; import akka.actor.PoisonPill; import akka.actor.Props; import akka.actor.Terminated; -import akka.event.Logging; import akka.japi.Creator; +import akka.japi.Procedure; +import akka.pattern.Patterns; +import akka.persistence.RecoveryCompleted; +import akka.persistence.SaveSnapshotFailure; +import akka.persistence.SaveSnapshotSuccess; +import akka.persistence.SnapshotMetadata; +import akka.persistence.SnapshotOffer; +import akka.persistence.SnapshotSelectionCriteria; import akka.testkit.JavaTestKit; import akka.testkit.TestActorRef; +import akka.util.Timeout; import com.google.common.base.Optional; +import com.google.common.collect.Lists; +import com.google.common.util.concurrent.Uninterruptibles; import com.google.protobuf.ByteString; import org.junit.After; +import org.junit.Assert; import org.junit.Test; +import org.opendaylight.controller.cluster.DataPersistenceProvider; +import org.opendaylight.controller.cluster.datastore.DataPersistenceProviderMonitor; import org.opendaylight.controller.cluster.raft.base.messages.ApplyLogEntries; +import org.opendaylight.controller.cluster.raft.base.messages.ApplySnapshot; +import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; +import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshot; +import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshotReply; +import org.opendaylight.controller.cluster.raft.behaviors.Follower; +import org.opendaylight.controller.cluster.raft.behaviors.Leader; import org.opendaylight.controller.cluster.raft.client.messages.FindLeader; import org.opendaylight.controller.cluster.raft.client.messages.FindLeaderReply; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import org.opendaylight.controller.cluster.raft.utils.MockAkkaJournal; import org.opendaylight.controller.cluster.raft.utils.MockSnapshotStore; +import scala.concurrent.Await; +import scala.concurrent.Future; +import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -32,7 +55,20 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; public class RaftActorTest extends AbstractActorTest { @@ -45,30 +81,43 @@ public class RaftActorTest extends AbstractActorTest { public static class MockRaftActor extends RaftActor { + private final DataPersistenceProvider dataPersistenceProvider; + private final RaftActor delegate; + public static final class MockRaftActorCreator implements Creator { + private static final long serialVersionUID = 1L; private final Map peerAddresses; private final String id; private final Optional config; + private final DataPersistenceProvider dataPersistenceProvider; private MockRaftActorCreator(Map peerAddresses, String id, - Optional config) { + Optional config, DataPersistenceProvider dataPersistenceProvider) { this.peerAddresses = peerAddresses; this.id = id; this.config = config; + this.dataPersistenceProvider = dataPersistenceProvider; } @Override public MockRaftActor create() throws Exception { - return new MockRaftActor(id, peerAddresses, config); + return new MockRaftActor(id, peerAddresses, config, dataPersistenceProvider); } } private final CountDownLatch recoveryComplete = new CountDownLatch(1); + private final List state; - public MockRaftActor(String id, Map peerAddresses, Optional config) { + public MockRaftActor(String id, Map peerAddresses, Optional config, DataPersistenceProvider dataPersistenceProvider) { super(id, peerAddresses, config); state = new ArrayList<>(); + this.delegate = mock(RaftActor.class); + if(dataPersistenceProvider == null){ + this.dataPersistenceProvider = new PersistentDataProvider(); + } else { + this.dataPersistenceProvider = dataPersistenceProvider; + } } public void waitForRecoveryComplete() { @@ -85,12 +134,23 @@ public class RaftActorTest extends AbstractActorTest { public static Props props(final String id, final Map peerAddresses, Optional config){ - return Props.create(new MockRaftActorCreator(peerAddresses, id, config)); + return Props.create(new MockRaftActorCreator(peerAddresses, id, config, null)); + } + + public static Props props(final String id, final Map peerAddresses, + Optional config, DataPersistenceProvider dataPersistenceProvider){ + return Props.create(new MockRaftActorCreator(peerAddresses, id, config, dataPersistenceProvider)); } + @Override protected void applyState(ActorRef clientActor, String identifier, Object data) { + delegate.applyState(clientActor, identifier, data); + LOG.info("applyState called"); } + + + @Override protected void startLogRecoveryBatch(int maxBatchSize) { } @@ -106,16 +166,18 @@ public class RaftActorTest extends AbstractActorTest { @Override protected void onRecoveryComplete() { + delegate.onRecoveryComplete(); recoveryComplete.countDown(); } @Override protected void applyRecoverySnapshot(ByteString snapshot) { + delegate.applyRecoverySnapshot(snapshot); try { Object data = toObject(snapshot); System.out.println("!!!!!applyRecoverySnapshot: "+data); if (data instanceof List) { - state.addAll((List) data); + state.addAll((List) data); } } catch (Exception e) { e.printStackTrace(); @@ -123,13 +185,20 @@ public class RaftActorTest extends AbstractActorTest { } @Override protected void createSnapshot() { - throw new UnsupportedOperationException("createSnapshot"); + delegate.createSnapshot(); } @Override protected void applySnapshot(ByteString snapshot) { + delegate.applySnapshot(snapshot); } @Override protected void onStateChanged() { + delegate.onStateChanged(); + } + + @Override + protected DataPersistenceProvider persistence() { + return this.dataPersistenceProvider; } @Override public String persistenceId() { @@ -155,6 +224,9 @@ public class RaftActorTest extends AbstractActorTest { return obj; } + public ReplicatedLog getReplicatedLog(){ + return this.getRaftActorContext().getReplicatedLog(); + } } @@ -166,51 +238,69 @@ public class RaftActorTest extends AbstractActorTest { super(actorSystem); raftActor = this.getSystem().actorOf(MockRaftActor.props(actorName, - Collections.EMPTY_MAP, Optional.absent()), actorName); + Collections.emptyMap(), Optional.absent()), actorName); } - public boolean waitForStartup(){ + public ActorRef getRaftActor() { + return raftActor; + } + + public boolean waitForLogMessage(final Class logEventClass, String message){ // Wait for a specific log message to show up return - new JavaTestKit.EventFilter(Logging.Info.class + new JavaTestKit.EventFilter(logEventClass ) { @Override protected Boolean run() { return true; } }.from(raftActor.path().toString()) - .message("Switching from behavior Candidate to Leader") + .message(message) .occurrences(1).exec(); } - public void findLeader(final String expectedLeader){ - raftActor.tell(new FindLeader(), getRef()); - - FindLeaderReply reply = expectMsgClass(duration("5 seconds"), FindLeaderReply.class); - assertEquals("getLeaderActor", expectedLeader, reply.getLeaderActor()); + protected void waitUntilLeader(){ + waitUntilLeader(raftActor); } - public ActorRef getRaftActor() { - return raftActor; + protected void waitUntilLeader(ActorRef actorRef) { + FiniteDuration duration = Duration.create(100, TimeUnit.MILLISECONDS); + for(int i = 0; i < 20 * 5; i++) { + Future future = Patterns.ask(actorRef, new FindLeader(), new Timeout(duration)); + try { + FindLeaderReply resp = (FindLeaderReply) Await.result(future, duration); + if(resp.getLeaderActor() != null) { + return; + } + } catch(TimeoutException e) { + } catch(Exception e) { + System.err.println("FindLeader threw ex"); + e.printStackTrace(); + } + + + Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); + } + + Assert.fail("Leader not found for actorRef " + actorRef.path()); } + } @Test public void testConstruction() { - boolean started = new RaftActorTestKit(getSystem(), "testConstruction").waitForStartup(); - assertEquals(true, started); + new RaftActorTestKit(getSystem(), "testConstruction").waitUntilLeader(); } @Test public void testFindLeaderWhenLeaderIsSelf(){ RaftActorTestKit kit = new RaftActorTestKit(getSystem(), "testFindLeader"); - kit.waitForStartup(); - kit.findLeader(kit.getRaftActor().path().toString()); + kit.waitUntilLeader(); } @Test @@ -225,7 +315,7 @@ public class RaftActorTest extends AbstractActorTest { config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); ActorRef followerActor = getSystem().actorOf(MockRaftActor.props(persistenceId, - Collections.EMPTY_MAP, Optional.of(config)), persistenceId); + Collections.emptyMap(), Optional.of(config)), persistenceId); watch(followerActor); @@ -279,7 +369,7 @@ public class RaftActorTest extends AbstractActorTest { //reinstate the actor TestActorRef ref = TestActorRef.create(getSystem(), - MockRaftActor.props(persistenceId, Collections.EMPTY_MAP, + MockRaftActor.props(persistenceId, Collections.emptyMap(), Optional.of(config))); ref.underlyingActor().waitForRecoveryComplete(); @@ -294,6 +384,484 @@ public class RaftActorTest extends AbstractActorTest { }}; } + /** + * This test verifies that when recovery is applicable (typically when persistence is true) the RaftActor does + * process recovery messages + * + * @throws Exception + */ + + @Test + public void testHandleRecoveryWhenDataPersistenceRecoveryApplicable() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testHandleRecoveryWhenDataPersistenceRecoveryApplicable"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config)), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + // Wait for akka's recovery to complete so it doesn't interfere. + mockRaftActor.waitForRecoveryComplete(); + + ByteString snapshotBytes = fromObject(Arrays.asList( + new MockRaftActorContext.MockPayload("A"), + new MockRaftActorContext.MockPayload("B"), + new MockRaftActorContext.MockPayload("C"), + new MockRaftActorContext.MockPayload("D"))); + + Snapshot snapshot = Snapshot.create(snapshotBytes.toByteArray(), + Lists.newArrayList(), 3, 1 ,3, 1); + + mockRaftActor.onReceiveRecover(new SnapshotOffer(new SnapshotMetadata(persistenceId, 100, 100), snapshot)); + + verify(mockRaftActor.delegate).applyRecoverySnapshot(eq(snapshotBytes)); + + mockRaftActor.onReceiveRecover(new ReplicatedLogImplEntry(0, 1, new MockRaftActorContext.MockPayload("A"))); + + ReplicatedLog replicatedLog = mockRaftActor.getReplicatedLog(); + + assertEquals("add replicated log entry", 1, replicatedLog.size()); + + mockRaftActor.onReceiveRecover(new ReplicatedLogImplEntry(1, 1, new MockRaftActorContext.MockPayload("A"))); + + assertEquals("add replicated log entry", 2, replicatedLog.size()); + + mockRaftActor.onReceiveRecover(new ApplyLogEntries(1)); + + assertEquals("commit index 1", 1, mockRaftActor.getRaftActorContext().getCommitIndex()); + + // The snapshot had 4 items + we added 2 more items during the test + // We start removing from 5 and we should get 1 item in the replicated log + mockRaftActor.onReceiveRecover(new RaftActor.DeleteEntries(5)); + + assertEquals("remove log entries", 1, replicatedLog.size()); + + mockRaftActor.onReceiveRecover(new RaftActor.UpdateElectionTerm(10, "foobar")); + + assertEquals("election term", 10, mockRaftActor.getRaftActorContext().getTermInformation().getCurrentTerm()); + assertEquals("voted for", "foobar", mockRaftActor.getRaftActorContext().getTermInformation().getVotedFor()); + + mockRaftActor.onReceiveRecover(mock(RecoveryCompleted.class)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + }}; + } + + /** + * This test verifies that when recovery is not applicable (typically when persistence is false) the RaftActor does + * not process recovery messages + * + * @throws Exception + */ + @Test + public void testHandleRecoveryWhenDataPersistenceRecoveryNotApplicable() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testHandleRecoveryWhenDataPersistenceRecoveryNotApplicable"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), new DataPersistenceProviderMonitor()), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + // Wait for akka's recovery to complete so it doesn't interfere. + mockRaftActor.waitForRecoveryComplete(); + + ByteString snapshotBytes = fromObject(Arrays.asList( + new MockRaftActorContext.MockPayload("A"), + new MockRaftActorContext.MockPayload("B"), + new MockRaftActorContext.MockPayload("C"), + new MockRaftActorContext.MockPayload("D"))); + + Snapshot snapshot = Snapshot.create(snapshotBytes.toByteArray(), + Lists.newArrayList(), 3, 1 ,3, 1); + + mockRaftActor.onReceiveRecover(new SnapshotOffer(new SnapshotMetadata(persistenceId, 100, 100), snapshot)); + + verify(mockRaftActor.delegate, times(0)).applyRecoverySnapshot(any(ByteString.class)); + + mockRaftActor.onReceiveRecover(new ReplicatedLogImplEntry(0, 1, new MockRaftActorContext.MockPayload("A"))); + + ReplicatedLog replicatedLog = mockRaftActor.getReplicatedLog(); + + assertEquals("add replicated log entry", 0, replicatedLog.size()); + + mockRaftActor.onReceiveRecover(new ReplicatedLogImplEntry(1, 1, new MockRaftActorContext.MockPayload("A"))); + + assertEquals("add replicated log entry", 0, replicatedLog.size()); + + mockRaftActor.onReceiveRecover(new ApplyLogEntries(1)); + + assertEquals("commit index -1", -1, mockRaftActor.getRaftActorContext().getCommitIndex()); + + mockRaftActor.onReceiveRecover(new RaftActor.DeleteEntries(2)); + + assertEquals("remove log entries", 0, replicatedLog.size()); + + mockRaftActor.onReceiveRecover(new RaftActor.UpdateElectionTerm(10, "foobar")); + + assertNotEquals("election term", 10, mockRaftActor.getRaftActorContext().getTermInformation().getCurrentTerm()); + assertNotEquals("voted for", "foobar", mockRaftActor.getRaftActorContext().getTermInformation().getVotedFor()); + + mockRaftActor.onReceiveRecover(mock(RecoveryCompleted.class)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + }}; + } + + + @Test + public void testUpdatingElectionTermCallsDataPersistence() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testUpdatingElectionTermCallsDataPersistence"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + CountDownLatch persistLatch = new CountDownLatch(1); + DataPersistenceProviderMonitor dataPersistenceProviderMonitor = new DataPersistenceProviderMonitor(); + dataPersistenceProviderMonitor.setPersistLatch(persistLatch); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProviderMonitor), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + mockRaftActor.getRaftActorContext().getTermInformation().updateAndPersist(10, "foobar"); + + assertEquals("Persist called", true, persistLatch.await(5, TimeUnit.SECONDS)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testAddingReplicatedLogEntryCallsDataPersistence() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testAddingReplicatedLogEntryCallsDataPersistence"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProvider), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + MockRaftActorContext.MockReplicatedLogEntry logEntry = new MockRaftActorContext.MockReplicatedLogEntry(10, 10, mock(Payload.class)); + + mockRaftActor.getRaftActorContext().getReplicatedLog().appendAndPersist(logEntry); + + verify(dataPersistenceProvider).persist(eq(logEntry), any(Procedure.class)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testRemovingReplicatedLogEntryCallsDataPersistence() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testRemovingReplicatedLogEntryCallsDataPersistence"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProvider), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + mockRaftActor.getReplicatedLog().appendAndPersist(new MockRaftActorContext.MockReplicatedLogEntry(1, 0, mock(Payload.class))); + + mockRaftActor.getRaftActorContext().getReplicatedLog().removeFromAndPersist(0); + + verify(dataPersistenceProvider, times(2)).persist(anyObject(), any(Procedure.class)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testApplyLogEntriesCallsDataPersistence() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testApplyLogEntriesCallsDataPersistence"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProvider), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + mockRaftActor.onReceiveCommand(new ApplyLogEntries(10)); + + verify(dataPersistenceProvider, times(1)).persist(anyObject(), any(Procedure.class)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testCaptureSnapshotReplyCallsDataPersistence() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testCaptureSnapshotReplyCallsDataPersistence"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), + MockRaftActor.props(persistenceId,Collections.emptyMap(), + Optional.of(config), dataPersistenceProvider), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + ByteString snapshotBytes = fromObject(Arrays.asList( + new MockRaftActorContext.MockPayload("A"), + new MockRaftActorContext.MockPayload("B"), + new MockRaftActorContext.MockPayload("C"), + new MockRaftActorContext.MockPayload("D"))); + + mockRaftActor.onReceiveCommand(new CaptureSnapshot(-1,1,-1,1)); + + RaftActorContext raftActorContext = mockRaftActor.getRaftActorContext(); + + mockRaftActor.setCurrentBehavior(new Leader(raftActorContext)); + + mockRaftActor.onReceiveCommand(new CaptureSnapshotReply(snapshotBytes)); + + verify(dataPersistenceProvider).saveSnapshot(anyObject()); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testSaveSnapshotSuccessCallsDataPersistence() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testSaveSnapshotSuccessCallsDataPersistence"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProvider), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + mockRaftActor.getReplicatedLog().append(new MockRaftActorContext.MockReplicatedLogEntry(1,0, mock(Payload.class))); + mockRaftActor.getReplicatedLog().append(new MockRaftActorContext.MockReplicatedLogEntry(1,1, mock(Payload.class))); + mockRaftActor.getReplicatedLog().append(new MockRaftActorContext.MockReplicatedLogEntry(1,2, mock(Payload.class))); + mockRaftActor.getReplicatedLog().append(new MockRaftActorContext.MockReplicatedLogEntry(1,3, mock(Payload.class))); + mockRaftActor.getReplicatedLog().append(new MockRaftActorContext.MockReplicatedLogEntry(1,4, mock(Payload.class))); + + ByteString snapshotBytes = fromObject(Arrays.asList( + new MockRaftActorContext.MockPayload("A"), + new MockRaftActorContext.MockPayload("B"), + new MockRaftActorContext.MockPayload("C"), + new MockRaftActorContext.MockPayload("D"))); + + RaftActorContext raftActorContext = mockRaftActor.getRaftActorContext(); + mockRaftActor.setCurrentBehavior(new Follower(raftActorContext)); + + mockRaftActor.onReceiveCommand(new CaptureSnapshot(-1, 1, 2, 1)); + + verify(mockRaftActor.delegate).createSnapshot(); + + mockRaftActor.onReceiveCommand(new CaptureSnapshotReply(snapshotBytes)); + + mockRaftActor.onReceiveCommand(new SaveSnapshotSuccess(new SnapshotMetadata("foo", 100, 100))); + + verify(dataPersistenceProvider).deleteSnapshots(any(SnapshotSelectionCriteria.class)); + + verify(dataPersistenceProvider).deleteMessages(100); + + assertEquals(2, mockRaftActor.getReplicatedLog().size()); + + assertNotNull(mockRaftActor.getReplicatedLog().get(3)); + assertNotNull(mockRaftActor.getReplicatedLog().get(4)); + + // Index 2 will not be in the log because it was removed due to snapshotting + assertNull(mockRaftActor.getReplicatedLog().get(2)); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testApplyState() throws Exception { + + new JavaTestKit(getSystem()) { + { + String persistenceId = "testApplyState"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProvider), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + ReplicatedLogEntry entry = new MockRaftActorContext.MockReplicatedLogEntry(1, 5, + new MockRaftActorContext.MockPayload("F")); + + mockRaftActor.onReceiveCommand(new ApplyState(mockActorRef, "apply-state", entry)); + + verify(mockRaftActor.delegate).applyState(eq(mockActorRef), eq("apply-state"), anyObject()); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testApplySnapshot() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testApplySnapshot"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProviderMonitor dataPersistenceProviderMonitor = new DataPersistenceProviderMonitor(); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProviderMonitor), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + ReplicatedLog oldReplicatedLog = mockRaftActor.getReplicatedLog(); + + oldReplicatedLog.append(new MockRaftActorContext.MockReplicatedLogEntry(1,0,mock(Payload.class))); + oldReplicatedLog.append(new MockRaftActorContext.MockReplicatedLogEntry(1,1,mock(Payload.class))); + oldReplicatedLog.append( + new MockRaftActorContext.MockReplicatedLogEntry(1, 2, + mock(Payload.class))); + + ByteString snapshotBytes = fromObject(Arrays.asList( + new MockRaftActorContext.MockPayload("A"), + new MockRaftActorContext.MockPayload("B"), + new MockRaftActorContext.MockPayload("C"), + new MockRaftActorContext.MockPayload("D"))); + + Snapshot snapshot = mock(Snapshot.class); + + doReturn(snapshotBytes.toByteArray()).when(snapshot).getState(); + + doReturn(3L).when(snapshot).getLastAppliedIndex(); + + mockRaftActor.onReceiveCommand(new ApplySnapshot(snapshot)); + + verify(mockRaftActor.delegate).applySnapshot(eq(snapshotBytes)); + + assertTrue("The replicatedLog should have changed", + oldReplicatedLog != mockRaftActor.getReplicatedLog()); + + assertEquals("lastApplied should be same as in the snapshot", + (Long) 3L, mockRaftActor.getLastApplied()); + + assertEquals(0, mockRaftActor.getReplicatedLog().size()); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + + @Test + public void testSaveSnapshotFailure() throws Exception { + new JavaTestKit(getSystem()) { + { + String persistenceId = "testSaveSnapshotFailure"; + + DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); + + config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); + + DataPersistenceProviderMonitor dataPersistenceProviderMonitor = new DataPersistenceProviderMonitor(); + + TestActorRef mockActorRef = TestActorRef.create(getSystem(), MockRaftActor.props(persistenceId, + Collections.emptyMap(), Optional.of(config), dataPersistenceProviderMonitor), persistenceId); + + MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); + + ByteString snapshotBytes = fromObject(Arrays.asList( + new MockRaftActorContext.MockPayload("A"), + new MockRaftActorContext.MockPayload("B"), + new MockRaftActorContext.MockPayload("C"), + new MockRaftActorContext.MockPayload("D"))); + + RaftActorContext raftActorContext = mockRaftActor.getRaftActorContext(); + + mockRaftActor.setCurrentBehavior(new Leader(raftActorContext)); + + mockRaftActor.onReceiveCommand(new CaptureSnapshot(-1,1,-1,1)); + + mockRaftActor.onReceiveCommand(new CaptureSnapshotReply(snapshotBytes)); + + mockRaftActor.onReceiveCommand(new SaveSnapshotFailure(new SnapshotMetadata("foobar", 10L, 1234L), + new Exception())); + + assertEquals("Snapshot index should not have advanced because save snapshot failed", -1, + mockRaftActor.getReplicatedLog().getSnapshotIndex()); + + mockActorRef.tell(PoisonPill.getInstance(), getRef()); + + } + }; + } + private ByteString fromObject(Object snapshot) throws Exception { ByteArrayOutputStream b = null; ObjectOutputStream o = null; diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/CandidateTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/CandidateTest.java index a8d47e2c60..485ee4b316 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/CandidateTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/CandidateTest.java @@ -3,23 +3,22 @@ package org.opendaylight.controller.cluster.raft.behaviors; import akka.actor.ActorRef; import akka.actor.Props; import akka.testkit.JavaTestKit; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.cluster.raft.MockRaftActorContext; import org.opendaylight.controller.cluster.raft.RaftActorContext; +import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry; import org.opendaylight.controller.cluster.raft.base.messages.ElectionTimeout; import org.opendaylight.controller.cluster.raft.messages.AppendEntries; import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; import org.opendaylight.controller.cluster.raft.messages.RequestVote; import org.opendaylight.controller.cluster.raft.messages.RequestVoteReply; import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; - import java.util.Collections; import java.util.HashMap; import java.util.Map; - import static org.junit.Assert.assertEquals; public class CandidateTest extends AbstractRaftActorBehaviorTest { @@ -168,7 +167,7 @@ public class CandidateTest extends AbstractRaftActorBehaviorTest { Candidate candidate = new Candidate(createActorContext(getTestActor())); - candidate.handleMessage(getTestActor(), new AppendEntries(0, "test", 0,0,Collections.EMPTY_LIST, 0)); + candidate.handleMessage(getTestActor(), new AppendEntries(0, "test", 0,0,Collections.emptyList(), 0)); final Boolean out = new ExpectMsg(duration("1 seconds"), "AppendEntriesResponse") { // do not put code outside this method, will run afterwards diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java index edeab11e2a..83b9ad3ec7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java @@ -4,7 +4,6 @@ import akka.actor.ActorRef; import akka.actor.Props; import akka.testkit.JavaTestKit; import com.google.protobuf.ByteString; -import junit.framework.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.cluster.raft.MockRaftActorContext; @@ -87,7 +86,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { RaftActorBehavior raftBehavior = follower.handleMessage(followerActor, new ElectionTimeout()); - Assert.assertTrue(raftBehavior instanceof Candidate); + assertTrue(raftBehavior instanceof Candidate); } @Test diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java index 48543d7de2..168eb3e5f2 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java @@ -1,20 +1,23 @@ package org.opendaylight.controller.cluster.raft.behaviors; import akka.actor.ActorRef; -import akka.actor.ActorSystem; import akka.actor.Props; import akka.testkit.JavaTestKit; +import com.google.common.base.Optional; import com.google.protobuf.ByteString; import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.cluster.raft.FollowerLogInformation; -import org.opendaylight.controller.cluster.raft.FollowerLogInformationImpl; import org.opendaylight.controller.cluster.raft.MockRaftActorContext; import org.opendaylight.controller.cluster.raft.RaftActorContext; +import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.cluster.raft.ReplicatedLogImplEntry; import org.opendaylight.controller.cluster.raft.SerializationUtils; +import org.opendaylight.controller.cluster.raft.base.messages.ApplyLogEntries; import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; +import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshot; +import org.opendaylight.controller.cluster.raft.base.messages.InitiateInstallSnapshot; import org.opendaylight.controller.cluster.raft.base.messages.Replicate; import org.opendaylight.controller.cluster.raft.base.messages.SendHeartBeat; import org.opendaylight.controller.cluster.raft.base.messages.SendInstallSnapshot; @@ -22,17 +25,20 @@ import org.opendaylight.controller.cluster.raft.messages.AppendEntries; import org.opendaylight.controller.cluster.raft.messages.AppendEntriesReply; import org.opendaylight.controller.cluster.raft.messages.InstallSnapshot; import org.opendaylight.controller.cluster.raft.messages.InstallSnapshotReply; +import org.opendaylight.controller.cluster.raft.messages.RequestVoteReply; import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages; import org.opendaylight.controller.protobuff.messages.cluster.raft.InstallSnapshotMessages; +import scala.concurrent.duration.FiniteDuration; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -68,10 +74,9 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { ActorRef followerActor = getTestActor(); - MockRaftActorContext actorContext = - (MockRaftActorContext) createActorContext(); + MockRaftActorContext actorContext = (MockRaftActorContext) createActorContext(); - Map peerAddresses = new HashMap(); + Map peerAddresses = new HashMap<>(); peerAddresses.put(followerActor.path().toString(), followerActor.path().toString()); @@ -116,7 +121,7 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext actorContext = (MockRaftActorContext) createActorContext(); - Map peerAddresses = new HashMap(); + Map peerAddresses = new HashMap<>(); peerAddresses.put(followerActor.path().toString(), followerActor.path().toString()); @@ -151,10 +156,7 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { }.get(); // this extracts the received message assertEquals("match", out); - } - - }; }}; } @@ -210,229 +212,360 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { } @Test - public void testSendInstallSnapshot() { - new LeaderTestKit(getSystem()) {{ + public void testSendAppendEntriesOnAnInProgressInstallSnapshot() throws Exception { + new JavaTestKit(getSystem()) {{ + ActorRef followerActor = getSystem().actorOf(Props.create(MessageCollectorActor.class)); - new Within(duration("1 seconds")) { - protected void run() { - ActorRef followerActor = getTestActor(); + Map peerAddresses = new HashMap<>(); + peerAddresses.put(followerActor.path().toString(), + followerActor.path().toString()); - Map peerAddresses = new HashMap(); - peerAddresses.put(followerActor.path().toString(), - followerActor.path().toString()); + MockRaftActorContext actorContext = + (MockRaftActorContext) createActorContext(leaderActor); + actorContext.setPeerAddresses(peerAddresses); + Map leadersSnapshot = new HashMap<>(); + leadersSnapshot.put("1", "A"); + leadersSnapshot.put("2", "B"); + leadersSnapshot.put("3", "C"); - MockRaftActorContext actorContext = - (MockRaftActorContext) createActorContext(getRef()); - actorContext.setPeerAddresses(peerAddresses); + //clears leaders log + actorContext.getReplicatedLog().removeFrom(0); + final int followersLastIndex = 2; + final int snapshotIndex = 3; + final int newEntryIndex = 4; + final int snapshotTerm = 1; + final int currentTerm = 2; - Map leadersSnapshot = new HashMap<>(); - leadersSnapshot.put("1", "A"); - leadersSnapshot.put("2", "B"); - leadersSnapshot.put("3", "C"); + // set the snapshot variables in replicatedlog + actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); + actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + actorContext.setCommitIndex(followersLastIndex); + //set follower timeout to 2 mins, helps during debugging + actorContext.setConfigParams(new MockConfigParamsImpl(120000L, 10)); - //clears leaders log - actorContext.getReplicatedLog().removeFrom(0); + MockLeader leader = new MockLeader(actorContext); - final int followersLastIndex = 2; - final int snapshotIndex = 3; - final int newEntryIndex = 4; - final int snapshotTerm = 1; - final int currentTerm = 2; + // new entry + ReplicatedLogImplEntry entry = + new ReplicatedLogImplEntry(newEntryIndex, currentTerm, + new MockRaftActorContext.MockPayload("D")); - // set the snapshot variables in replicatedlog - actorContext.getReplicatedLog().setSnapshot( - toByteString(leadersSnapshot)); - actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); - actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + //update follower timestamp + leader.markFollowerActive(followerActor.path().toString()); - MockLeader leader = new MockLeader(actorContext); - // set the follower info in leader - leader.addToFollowerToLog(followerActor.path().toString(), followersLastIndex, -1); + ByteString bs = toByteString(leadersSnapshot); + leader.setSnapshot(Optional.of(bs)); + leader.createFollowerToSnapshot(followerActor.path().toString(), bs); - // new entry - ReplicatedLogImplEntry entry = - new ReplicatedLogImplEntry(newEntryIndex, currentTerm, - new MockRaftActorContext.MockPayload("D")); + //send first chunk and no InstallSnapshotReply received yet + leader.getFollowerToSnapshot().getNextChunk(); + leader.getFollowerToSnapshot().incrementChunkIndex(); - // this should invoke a sendinstallsnapshot as followersLastIndex < snapshotIndex - RaftActorBehavior raftBehavior = leader.handleMessage( - senderActor, new Replicate(null, "state-id", entry)); + leader.handleMessage(leaderActor, new SendHeartBeat()); - assertTrue(raftBehavior instanceof Leader); + AppendEntriesMessages.AppendEntries aeproto = (AppendEntriesMessages.AppendEntries)MessageCollectorActor.getFirstMatching( + followerActor, AppendEntries.SERIALIZABLE_CLASS); - // we might receive some heartbeat messages, so wait till we SendInstallSnapshot - Boolean[] matches = new ReceiveWhile(Boolean.class, duration("2 seconds")) { - @Override - protected Boolean match(Object o) throws Exception { - if (o instanceof SendInstallSnapshot) { - return true; - } - return false; - } - }.get(); + assertNotNull("AppendEntries should be sent even if InstallSnapshotReply is not " + + "received", aeproto); - boolean sendInstallSnapshotReceived = false; - for (Boolean b: matches) { - sendInstallSnapshotReceived = b | sendInstallSnapshotReceived; - } + AppendEntries ae = (AppendEntries) SerializationUtils.fromSerializable(aeproto); + + assertTrue("AppendEntries should be sent with empty entries", ae.getEntries().isEmpty()); + + //InstallSnapshotReply received + leader.getFollowerToSnapshot().markSendStatus(true); + + leader.handleMessage(senderActor, new SendHeartBeat()); - assertTrue(sendInstallSnapshotReceived); + InstallSnapshotMessages.InstallSnapshot isproto = (InstallSnapshotMessages.InstallSnapshot) + MessageCollectorActor.getFirstMatching(followerActor, + InstallSnapshot.SERIALIZABLE_CLASS); + assertNotNull("Installsnapshot should get called for sending the next chunk of snapshot", + isproto); + + InstallSnapshot is = (InstallSnapshot) SerializationUtils.fromSerializable(isproto); + + assertEquals(snapshotIndex, is.getLastIncludedIndex()); + + }}; + } + + @Test + public void testSendAppendEntriesSnapshotScenario() { + new JavaTestKit(getSystem()) {{ + + ActorRef followerActor = getTestActor(); + + Map peerAddresses = new HashMap<>(); + peerAddresses.put(followerActor.path().toString(), + followerActor.path().toString()); + + MockRaftActorContext actorContext = + (MockRaftActorContext) createActorContext(getRef()); + actorContext.setPeerAddresses(peerAddresses); + + Map leadersSnapshot = new HashMap<>(); + leadersSnapshot.put("1", "A"); + leadersSnapshot.put("2", "B"); + leadersSnapshot.put("3", "C"); + + //clears leaders log + actorContext.getReplicatedLog().removeFrom(0); + + final int followersLastIndex = 2; + final int snapshotIndex = 3; + final int newEntryIndex = 4; + final int snapshotTerm = 1; + final int currentTerm = 2; + + // set the snapshot variables in replicatedlog + actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); + actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + actorContext.setCommitIndex(followersLastIndex); + + Leader leader = new Leader(actorContext); + + // new entry + ReplicatedLogImplEntry entry = + new ReplicatedLogImplEntry(newEntryIndex, currentTerm, + new MockRaftActorContext.MockPayload("D")); + + //update follower timestamp + leader.markFollowerActive(followerActor.path().toString()); + + // this should invoke a sendinstallsnapshot as followersLastIndex < snapshotIndex + RaftActorBehavior raftBehavior = leader.handleMessage( + senderActor, new Replicate(null, "state-id", entry)); + + assertTrue(raftBehavior instanceof Leader); + + // we might receive some heartbeat messages, so wait till we InitiateInstallSnapshot + Boolean[] matches = new ReceiveWhile(Boolean.class, duration("2 seconds")) { + @Override + protected Boolean match(Object o) throws Exception { + if (o instanceof InitiateInstallSnapshot) { + return true; + } + return false; } - }; + }.get(); + + boolean initiateInitiateInstallSnapshot = false; + for (Boolean b: matches) { + initiateInitiateInstallSnapshot = b | initiateInitiateInstallSnapshot; + } + + assertTrue(initiateInitiateInstallSnapshot); }}; } @Test - public void testInstallSnapshot() { - new LeaderTestKit(getSystem()) {{ + public void testInitiateInstallSnapshot() throws Exception { + new JavaTestKit(getSystem()) {{ - new Within(duration("1 seconds")) { - protected void run() { - ActorRef followerActor = getTestActor(); + ActorRef leaderActor = getSystem().actorOf(Props.create(MessageCollectorActor.class)); - Map peerAddresses = new HashMap(); - peerAddresses.put(followerActor.path().toString(), - followerActor.path().toString()); + ActorRef followerActor = getTestActor(); - MockRaftActorContext actorContext = - (MockRaftActorContext) createActorContext(); - actorContext.setPeerAddresses(peerAddresses); + Map peerAddresses = new HashMap<>(); + peerAddresses.put(followerActor.path().toString(), + followerActor.path().toString()); - Map leadersSnapshot = new HashMap<>(); - leadersSnapshot.put("1", "A"); - leadersSnapshot.put("2", "B"); - leadersSnapshot.put("3", "C"); + MockRaftActorContext actorContext = + (MockRaftActorContext) createActorContext(leaderActor); + actorContext.setPeerAddresses(peerAddresses); - //clears leaders log - actorContext.getReplicatedLog().removeFrom(0); + Map leadersSnapshot = new HashMap<>(); + leadersSnapshot.put("1", "A"); + leadersSnapshot.put("2", "B"); + leadersSnapshot.put("3", "C"); - final int followersLastIndex = 2; - final int snapshotIndex = 3; - final int newEntryIndex = 4; - final int snapshotTerm = 1; - final int currentTerm = 2; + //clears leaders log + actorContext.getReplicatedLog().removeFrom(0); - // set the snapshot variables in replicatedlog - actorContext.getReplicatedLog().setSnapshot(toByteString(leadersSnapshot)); - actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); - actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + final int followersLastIndex = 2; + final int snapshotIndex = 3; + final int newEntryIndex = 4; + final int snapshotTerm = 1; + final int currentTerm = 2; - actorContext.getTermInformation().update(currentTerm, leaderActor.path().toString()); + // set the snapshot variables in replicatedlog + actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); + actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + actorContext.setLastApplied(3); + actorContext.setCommitIndex(followersLastIndex); - MockLeader leader = new MockLeader(actorContext); - // set the follower info in leader - leader.addToFollowerToLog(followerActor.path().toString(), followersLastIndex, -1); + Leader leader = new Leader(actorContext); + // set the snapshot as absent and check if capture-snapshot is invoked. + leader.setSnapshot(Optional.absent()); - // new entry - ReplicatedLogImplEntry entry = - new ReplicatedLogImplEntry(newEntryIndex, currentTerm, - new MockRaftActorContext.MockPayload("D")); + // new entry + ReplicatedLogImplEntry entry = + new ReplicatedLogImplEntry(newEntryIndex, currentTerm, + new MockRaftActorContext.MockPayload("D")); - RaftActorBehavior raftBehavior = leader.handleMessage(senderActor, new SendInstallSnapshot()); + actorContext.getReplicatedLog().append(entry); - assertTrue(raftBehavior instanceof Leader); + // this should invoke a sendinstallsnapshot as followersLastIndex < snapshotIndex + RaftActorBehavior raftBehavior = leader.handleMessage( + leaderActor, new InitiateInstallSnapshot()); - // check if installsnapshot gets called with the correct values. - final String out = - new ExpectMsg(duration("1 seconds"), "match hint") { - // do not put code outside this method, will run afterwards - protected String match(Object in) { - if (in instanceof InstallSnapshotMessages.InstallSnapshot) { - InstallSnapshot is = (InstallSnapshot) - SerializationUtils.fromSerializable(in); - if (is.getData() == null) { - return "InstallSnapshot data is null"; - } - if (is.getLastIncludedIndex() != snapshotIndex) { - return is.getLastIncludedIndex() + "!=" + snapshotIndex; - } - if (is.getLastIncludedTerm() != snapshotTerm) { - return is.getLastIncludedTerm() + "!=" + snapshotTerm; - } - if (is.getTerm() == currentTerm) { - return is.getTerm() + "!=" + currentTerm; - } + CaptureSnapshot cs = (CaptureSnapshot) MessageCollectorActor. + getFirstMatching(leaderActor, CaptureSnapshot.class); - return "match"; + assertNotNull(cs); - } else { - return "message mismatch:" + in.getClass(); - } + assertTrue(cs.isInstallSnapshotInitiated()); + assertEquals(3, cs.getLastAppliedIndex()); + assertEquals(1, cs.getLastAppliedTerm()); + assertEquals(4, cs.getLastIndex()); + assertEquals(2, cs.getLastTerm()); + }}; + } + + @Test + public void testInstallSnapshot() { + new JavaTestKit(getSystem()) {{ + + ActorRef followerActor = getTestActor(); + + Map peerAddresses = new HashMap<>(); + peerAddresses.put(followerActor.path().toString(), + followerActor.path().toString()); + + MockRaftActorContext actorContext = + (MockRaftActorContext) createActorContext(); + actorContext.setPeerAddresses(peerAddresses); + + + Map leadersSnapshot = new HashMap<>(); + leadersSnapshot.put("1", "A"); + leadersSnapshot.put("2", "B"); + leadersSnapshot.put("3", "C"); + + //clears leaders log + actorContext.getReplicatedLog().removeFrom(0); + + final int followersLastIndex = 2; + final int snapshotIndex = 3; + final int newEntryIndex = 4; + final int snapshotTerm = 1; + final int currentTerm = 2; + + // set the snapshot variables in replicatedlog + actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); + actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + actorContext.getTermInformation().update(currentTerm, leaderActor.path().toString()); + actorContext.setCommitIndex(followersLastIndex); + + Leader leader = new Leader(actorContext); + + // new entry + ReplicatedLogImplEntry entry = + new ReplicatedLogImplEntry(newEntryIndex, currentTerm, + new MockRaftActorContext.MockPayload("D")); + + RaftActorBehavior raftBehavior = leader.handleMessage(senderActor, + new SendInstallSnapshot(toByteString(leadersSnapshot))); + + assertTrue(raftBehavior instanceof Leader); + + // check if installsnapshot gets called with the correct values. + final String out = + new ExpectMsg(duration("1 seconds"), "match hint") { + // do not put code outside this method, will run afterwards + protected String match(Object in) { + if (in instanceof InstallSnapshotMessages.InstallSnapshot) { + InstallSnapshot is = (InstallSnapshot) + SerializationUtils.fromSerializable(in); + if (is.getData() == null) { + return "InstallSnapshot data is null"; + } + if (is.getLastIncludedIndex() != snapshotIndex) { + return is.getLastIncludedIndex() + "!=" + snapshotIndex; + } + if (is.getLastIncludedTerm() != snapshotTerm) { + return is.getLastIncludedTerm() + "!=" + snapshotTerm; + } + if (is.getTerm() == currentTerm) { + return is.getTerm() + "!=" + currentTerm; } - }.get(); // this extracts the received message - assertEquals("match", out); - } - }; + return "match"; + + } else { + return "message mismatch:" + in.getClass(); + } + } + }.get(); // this extracts the received message + + assertEquals("match", out); }}; } @Test public void testHandleInstallSnapshotReplyLastChunk() { - new LeaderTestKit(getSystem()) {{ - new Within(duration("1 seconds")) { - protected void run() { - ActorRef followerActor = getTestActor(); + new JavaTestKit(getSystem()) {{ - Map peerAddresses = new HashMap(); - peerAddresses.put(followerActor.path().toString(), - followerActor.path().toString()); + ActorRef followerActor = getTestActor(); - MockRaftActorContext actorContext = - (MockRaftActorContext) createActorContext(); - actorContext.setPeerAddresses(peerAddresses); + Map peerAddresses = new HashMap<>(); + peerAddresses.put(followerActor.path().toString(), + followerActor.path().toString()); - final int followersLastIndex = 2; - final int snapshotIndex = 3; - final int newEntryIndex = 4; - final int snapshotTerm = 1; - final int currentTerm = 2; - - MockLeader leader = new MockLeader(actorContext); - // set the follower info in leader - leader.addToFollowerToLog(followerActor.path().toString(), followersLastIndex, -1); - - Map leadersSnapshot = new HashMap<>(); - leadersSnapshot.put("1", "A"); - leadersSnapshot.put("2", "B"); - leadersSnapshot.put("3", "C"); - - // set the snapshot variables in replicatedlog - actorContext.getReplicatedLog().setSnapshot( - toByteString(leadersSnapshot)); - actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); - actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); - actorContext.getTermInformation().update(currentTerm, leaderActor.path().toString()); - - ByteString bs = toByteString(leadersSnapshot); - leader.createFollowerToSnapshot(followerActor.path().toString(), bs); - while(!leader.getFollowerToSnapshot().isLastChunk(leader.getFollowerToSnapshot().getChunkIndex())) { - leader.getFollowerToSnapshot().getNextChunk(); - leader.getFollowerToSnapshot().incrementChunkIndex(); - } + final int followersLastIndex = 2; + final int snapshotIndex = 3; + final int newEntryIndex = 4; + final int snapshotTerm = 1; + final int currentTerm = 2; - //clears leaders log - actorContext.getReplicatedLog().removeFrom(0); + MockRaftActorContext actorContext = + (MockRaftActorContext) createActorContext(); + actorContext.setPeerAddresses(peerAddresses); + actorContext.setCommitIndex(followersLastIndex); - RaftActorBehavior raftBehavior = leader.handleMessage(senderActor, - new InstallSnapshotReply(currentTerm, followerActor.path().toString(), - leader.getFollowerToSnapshot().getChunkIndex(), true)); + MockLeader leader = new MockLeader(actorContext); - assertTrue(raftBehavior instanceof Leader); + Map leadersSnapshot = new HashMap<>(); + leadersSnapshot.put("1", "A"); + leadersSnapshot.put("2", "B"); + leadersSnapshot.put("3", "C"); - assertEquals(leader.mapFollowerToSnapshot.size(), 0); - assertEquals(leader.followerToLog.size(), 1); - assertNotNull(leader.followerToLog.get(followerActor.path().toString())); - FollowerLogInformation fli = leader.followerToLog.get(followerActor.path().toString()); - assertEquals(snapshotIndex, fli.getMatchIndex().get()); - assertEquals(snapshotIndex, fli.getMatchIndex().get()); - assertEquals(snapshotIndex + 1, fli.getNextIndex().get()); - } - }; + // set the snapshot variables in replicatedlog + + actorContext.getReplicatedLog().setSnapshotIndex(snapshotIndex); + actorContext.getReplicatedLog().setSnapshotTerm(snapshotTerm); + actorContext.getTermInformation().update(currentTerm, leaderActor.path().toString()); + + ByteString bs = toByteString(leadersSnapshot); + leader.setSnapshot(Optional.of(bs)); + leader.createFollowerToSnapshot(followerActor.path().toString(), bs); + while(!leader.getFollowerToSnapshot().isLastChunk(leader.getFollowerToSnapshot().getChunkIndex())) { + leader.getFollowerToSnapshot().getNextChunk(); + leader.getFollowerToSnapshot().incrementChunkIndex(); + } + + //clears leaders log + actorContext.getReplicatedLog().removeFrom(0); + + RaftActorBehavior raftBehavior = leader.handleMessage(senderActor, + new InstallSnapshotReply(currentTerm, followerActor.path().toString(), + leader.getFollowerToSnapshot().getChunkIndex(), true)); + + assertTrue(raftBehavior instanceof Leader); + + assertEquals(leader.mapFollowerToSnapshot.size(), 0); + assertEquals(leader.followerToLog.size(), 1); + assertNotNull(leader.followerToLog.get(followerActor.path().toString())); + FollowerLogInformation fli = leader.followerToLog.get(followerActor.path().toString()); + assertEquals(snapshotIndex, fli.getMatchIndex().get()); + assertEquals(snapshotIndex, fli.getMatchIndex().get()); + assertEquals(snapshotIndex + 1, fli.getNextIndex().get()); }}; } @@ -557,7 +690,7 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { ForwardMessageToBehaviorActor.setBehavior(follower); - Map peerAddresses = new HashMap(); + Map peerAddresses = new HashMap<>(); peerAddresses.put(followerActor.path().toString(), followerActor.path().toString()); @@ -580,6 +713,7 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { followerActorContext.setCommitIndex(1); Leader leader = new Leader(leaderActorContext); + leader.markFollowerActive(followerActor.path().toString()); leader.handleMessage(leaderActor, new SendHeartBeat()); @@ -626,7 +760,7 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { ForwardMessageToBehaviorActor.setBehavior(follower); - Map peerAddresses = new HashMap(); + Map peerAddresses = new HashMap<>(); peerAddresses.put(followerActor.path().toString(), followerActor.path().toString()); @@ -648,6 +782,7 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { followerActorContext.setCommitIndex(2); Leader leader = new Leader(leaderActorContext); + leader.markFollowerActive(followerActor.path().toString()); leader.handleMessage(leaderActor, new SendHeartBeat()); @@ -673,28 +808,143 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { }}; } - private static class LeaderTestKit extends JavaTestKit { + @Test + public void testHandleAppendEntriesReplyFailure(){ + new JavaTestKit(getSystem()) { + { - private LeaderTestKit(ActorSystem actorSystem) { - super(actorSystem); - } + ActorRef leaderActor = + getSystem().actorOf(Props.create(MessageCollectorActor.class)); - protected void waitForLogMessage(final Class logLevel, ActorRef subject, String logMessage){ - // Wait for a specific log message to show up - final boolean result = - new JavaTestKit.EventFilter(logLevel - ) { - @Override - protected Boolean run() { - return true; - } - }.from(subject.path().toString()) - .message(logMessage) - .occurrences(1).exec(); + ActorRef followerActor = + getSystem().actorOf(Props.create(MessageCollectorActor.class)); - Assert.assertEquals(true, result); - } + MockRaftActorContext leaderActorContext = + new MockRaftActorContext("leader", getSystem(), leaderActor); + + Map peerAddresses = new HashMap<>(); + peerAddresses.put("follower-1", + followerActor.path().toString()); + + leaderActorContext.setPeerAddresses(peerAddresses); + + Leader leader = new Leader(leaderActorContext); + + AppendEntriesReply reply = new AppendEntriesReply("follower-1", 1, false, 10, 1); + + RaftActorBehavior raftActorBehavior = leader.handleAppendEntriesReply(followerActor, reply); + + assertEquals(RaftState.Leader, raftActorBehavior.state()); + + }}; + } + + @Test + public void testHandleAppendEntriesReplySuccess() throws Exception { + new JavaTestKit(getSystem()) { + { + + ActorRef leaderActor = + getSystem().actorOf(Props.create(MessageCollectorActor.class)); + + ActorRef followerActor = + getSystem().actorOf(Props.create(MessageCollectorActor.class)); + + + MockRaftActorContext leaderActorContext = + new MockRaftActorContext("leader", getSystem(), leaderActor); + + leaderActorContext.setReplicatedLog( + new MockRaftActorContext.MockReplicatedLogBuilder().createEntries(0, 3, 1).build()); + + Map peerAddresses = new HashMap<>(); + peerAddresses.put("follower-1", + followerActor.path().toString()); + + leaderActorContext.setPeerAddresses(peerAddresses); + leaderActorContext.setCommitIndex(1); + leaderActorContext.setLastApplied(1); + leaderActorContext.getTermInformation().update(1, "leader"); + + Leader leader = new Leader(leaderActorContext); + + AppendEntriesReply reply = new AppendEntriesReply("follower-1", 1, true, 2, 1); + + RaftActorBehavior raftActorBehavior = leader.handleAppendEntriesReply(followerActor, reply); + + assertEquals(RaftState.Leader, raftActorBehavior.state()); + + assertEquals(2, leaderActorContext.getCommitIndex()); + + ApplyLogEntries applyLogEntries = + (ApplyLogEntries) MessageCollectorActor.getFirstMatching(leaderActor, + ApplyLogEntries.class); + + assertNotNull(applyLogEntries); + + assertEquals(2, leaderActorContext.getLastApplied()); + + assertEquals(2, applyLogEntries.getToIndex()); + + List applyStateList = MessageCollectorActor.getAllMatching(leaderActor, + ApplyState.class); + + assertEquals(1,applyStateList.size()); + + ApplyState applyState = (ApplyState) applyStateList.get(0); + + assertEquals(2, applyState.getReplicatedLogEntry().getIndex()); + + }}; + } + + @Test + public void testHandleAppendEntriesReplyUnknownFollower(){ + new JavaTestKit(getSystem()) { + { + + ActorRef leaderActor = + getSystem().actorOf(Props.create(MessageCollectorActor.class)); + + MockRaftActorContext leaderActorContext = + new MockRaftActorContext("leader", getSystem(), leaderActor); + + Leader leader = new Leader(leaderActorContext); + + AppendEntriesReply reply = new AppendEntriesReply("follower-1", 1, false, 10, 1); + + RaftActorBehavior raftActorBehavior = leader.handleAppendEntriesReply(getRef(), reply); + + assertEquals(RaftState.Leader, raftActorBehavior.state()); + + }}; + } + + @Test + public void testHandleRequestVoteReply(){ + new JavaTestKit(getSystem()) { + { + + ActorRef leaderActor = + getSystem().actorOf(Props.create(MessageCollectorActor.class)); + + MockRaftActorContext leaderActorContext = + new MockRaftActorContext("leader", getSystem(), leaderActor); + + Leader leader = new Leader(leaderActorContext); + + RaftActorBehavior raftActorBehavior = leader.handleRequestVoteReply(getRef(), new RequestVoteReply(1, true)); + + assertEquals(RaftState.Leader, raftActorBehavior.state()); + + raftActorBehavior = leader.handleRequestVoteReply(getRef(), new RequestVoteReply(1, false)); + + assertEquals(RaftState.Leader, raftActorBehavior.state()); + + + }}; + } class MockLeader extends Leader { @@ -705,14 +955,6 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { super(context); } - public void addToFollowerToLog(String followerId, long nextIndex, long matchIndex) { - FollowerLogInformation followerLogInformation = - new FollowerLogInformationImpl(followerId, - new AtomicLong(nextIndex), - new AtomicLong(matchIndex)); - followerToLog.put(followerId, followerLogInformation); - } - public FollowerToSnapshot getFollowerToSnapshot() { return fts; } @@ -723,4 +965,26 @@ public class LeaderTest extends AbstractRaftActorBehaviorTest { } } + + private class MockConfigParamsImpl extends DefaultConfigParamsImpl { + + private long electionTimeOutIntervalMillis; + private int snapshotChunkSize; + + public MockConfigParamsImpl(long electionTimeOutIntervalMillis, int snapshotChunkSize) { + super(); + this.electionTimeOutIntervalMillis = electionTimeOutIntervalMillis; + this.snapshotChunkSize = snapshotChunkSize; + } + + @Override + public FiniteDuration getElectionTimeOutInterval() { + return new FiniteDuration(electionTimeOutIntervalMillis, TimeUnit.MILLISECONDS); + } + + @Override + public int getSnapshotChunkSize() { + return snapshotChunkSize; + } + } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java index 58928453b4..2a79c8f4bc 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java @@ -12,6 +12,7 @@ import akka.actor.ActorRef; import akka.actor.UntypedActor; import akka.pattern.Patterns; import akka.util.Timeout; +import com.google.common.collect.Lists; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; @@ -53,7 +54,7 @@ public class MessageCollectorActor extends UntypedActor { * @param clazz * @return */ - public static Object getFirstMatching(ActorRef actor, Class clazz) throws Exception { + public static Object getFirstMatching(ActorRef actor, Class clazz) throws Exception { List allMessages = getAllMessages(actor); for(Object message : allMessages){ @@ -65,4 +66,18 @@ public class MessageCollectorActor extends UntypedActor { return null; } + public static List getAllMatching(ActorRef actor, Class clazz) throws Exception { + List allMessages = getAllMessages(actor); + + List output = Lists.newArrayList(); + + for(Object message : allMessages){ + if(message.getClass().equals(clazz)){ + output.add(message); + } + } + + return output; + } + } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/resources/application.conf b/opendaylight/md-sal/sal-akka-raft/src/test/resources/application.conf index 2f53d4a4eb..818ddf7d85 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/resources/application.conf +++ b/opendaylight/md-sal/sal-akka-raft/src/test/resources/application.conf @@ -7,7 +7,7 @@ akka { actor { # enable to test serialization only. - serialize-messages = on + serialize-messages = off serializers { java = "akka.serialization.JavaSerializer" @@ -15,6 +15,7 @@ akka { } serialization-bindings { + "org.opendaylight.controller.cluster.common.actor.Monitor" = java "org.opendaylight.controller.cluster.raft.client.messages.FindLeader" = java "org.opendaylight.controller.cluster.raft.ReplicatedLogImplEntry" = java "com.google.protobuf.Message" = proto diff --git a/opendaylight/md-sal/sal-binding-broker/pom.xml b/opendaylight/md-sal/sal-binding-broker/pom.xml index 7482c52fdd..ade3e1b8f6 100644 --- a/opendaylight/md-sal/sal-binding-broker/pom.xml +++ b/opendaylight/md-sal/sal-binding-broker/pom.xml @@ -70,7 +70,6 @@ org.opendaylight.yangtools binding-data-codec - 0.7.0-SNAPSHOT org.opendaylight.yangtools diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java index 754d14f2c4..0ad0434892 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java @@ -7,42 +7,25 @@ */ package org.opendaylight.controller.config.yang.md.sal.binding.impl; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.Hashtable; -import java.util.Map.Entry; -import java.util.Set; import javassist.ClassPool; import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder; import org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator; import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry; -import org.opendaylight.yangtools.concepts.Delegator; import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy; import org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl; -import org.opendaylight.yangtools.yang.binding.DataContainer; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.RpcService; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService; -import org.opendaylight.yangtools.yang.data.impl.codec.CodecRegistry; -import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * */ public final class RuntimeMappingModule extends AbstractRuntimeMappingModule { - private static final Logger LOG = LoggerFactory.getLogger(RuntimeMappingModule.class); - private BundleContext bundleContext; public RuntimeMappingModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, @@ -72,7 +55,7 @@ public final class RuntimeMappingModule extends AbstractRuntimeMappingModule { public java.lang.AutoCloseable createInstance() { final GeneratedClassLoadingStrategy classLoading = getGlobalClassLoadingStrategy(); final BindingIndependentMappingService legacyMapping = getGlobalLegacyMappingService(classLoading); - BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(new StreamWriterGenerator(SingletonHolder.JAVASSIST)); + BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(StreamWriterGenerator.create(SingletonHolder.JAVASSIST)); BindingToNormalizedNodeCodec instance = new BindingToNormalizedNodeCodec(classLoading, legacyMapping, codecRegistry); bundleContext.registerService(SchemaContextListener.class, instance, new Hashtable()); return instance; @@ -108,93 +91,4 @@ public final class RuntimeMappingModule extends AbstractRuntimeMappingModule { public void setBundleContext(final BundleContext bundleContext) { this.bundleContext = bundleContext; } - - private static final class RuntimeGeneratedMappingServiceProxy implements // - BindingIndependentMappingService, // - Delegator, // - AutoCloseable { - - private BindingIndependentMappingService delegate; - private ServiceReference reference; - private BundleContext bundleContext; - - public RuntimeGeneratedMappingServiceProxy(final BundleContext bundleContext, - final ServiceReference serviceRef, - final BindingIndependentMappingService delegate) { - this.bundleContext = Preconditions.checkNotNull(bundleContext); - this.reference = Preconditions.checkNotNull(serviceRef); - this.delegate = Preconditions.checkNotNull(delegate); - } - - @Override - public CodecRegistry getCodecRegistry() { - return delegate.getCodecRegistry(); - } - - @Override - public CompositeNode toDataDom(final DataObject data) { - return delegate.toDataDom(data); - } - - @Override - public Entry toDataDom( - final Entry, DataObject> entry) { - return delegate.toDataDom(entry); - } - - @Override - public YangInstanceIdentifier toDataDom(final InstanceIdentifier path) { - return delegate.toDataDom(path); - } - - @Override - public DataObject dataObjectFromDataDom( - final InstanceIdentifier path, - final CompositeNode result) throws DeserializationException { - return delegate.dataObjectFromDataDom(path, result); - } - - @Override - public InstanceIdentifier fromDataDom(final YangInstanceIdentifier entry) - throws DeserializationException { - return delegate.fromDataDom(entry); - } - - @Override - public Set getRpcQNamesFor(final Class service) { - return delegate.getRpcQNamesFor(service); - } - - @Override - public Optional> getRpcServiceClassFor(final String namespace, final String revision) { - return delegate.getRpcServiceClassFor(namespace,revision); - } - - @Override - public DataContainer dataObjectFromDataDom(final Class inputClass, final CompositeNode domInput) { - return delegate.dataObjectFromDataDom(inputClass, domInput); - } - - @Override - public void close() { - if(delegate != null) { - delegate = null; - - try { - bundleContext.ungetService(reference); - } catch (IllegalStateException e) { - // Indicates the BundleContext is no longer valid which can happen normally on shutdown. - LOG.debug( "Error unregistering service", e ); - } - - bundleContext= null; - reference = null; - } - } - - @Override - public BindingIndependentMappingService getDelegate() { - return delegate; - } - } } diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java index d4b1d84aa7..273155bcf7 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java @@ -124,7 +124,7 @@ public abstract class AbstractForwardedDataBroker implements Delegator> of(data)); + return (Optional) getCodec().deserializeFunction(path).apply(Optional.> of(data)); } private class TranslatingDataChangeInvoker implements DOMDataChangeListener { diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java index 1fa54be200..eba5b8756b 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/AbstractRuntimeCodeGenerator.java @@ -8,17 +8,11 @@ package org.opendaylight.controller.sal.binding.codegen.impl; import com.google.common.base.Supplier; - -import java.util.Map; -import java.util.WeakHashMap; - +import com.google.common.collect.Iterables; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.NotFoundException; - -import javax.annotation.concurrent.GuardedBy; - import org.eclipse.xtext.xbase.lib.Extension; import org.opendaylight.controller.sal.binding.api.rpc.RpcRouter; import org.opendaylight.controller.sal.binding.codegen.RpcIsNotRoutedException; @@ -31,6 +25,10 @@ import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.binding.annotations.RoutingContext; import org.opendaylight.yangtools.yang.binding.util.ClassLoaderUtils; +import javax.annotation.concurrent.GuardedBy; +import java.util.Map; +import java.util.WeakHashMap; + abstract class AbstractRuntimeCodeGenerator implements org.opendaylight.controller.sal.binding.codegen.RuntimeCodeGenerator, NotificationInvokerFactory { @GuardedBy("this") private final Map, RuntimeGeneratedInvokerPrototype> invokerClasses = new WeakHashMap<>(); @@ -174,6 +172,10 @@ abstract class AbstractRuntimeCodeGenerator implements org.opendaylight.controll } }); + if (Iterables.isEmpty(metadata.getContexts())) { + throw new RpcIsNotRoutedException("Service doesn't have routing context associated."); + } + synchronized (utils) { final T instance = ClassLoaderUtils.withClassLoader(serviceType.getClassLoader(), routerSupplier(serviceType, metadata)); return new RpcRouterCodegenInstance(name, serviceType, instance, metadata.getContexts()); diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/AugmentationVerifier.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/AugmentationVerifier.java index 227354c41e..c8129e6eca 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/AugmentationVerifier.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/AugmentationVerifier.java @@ -7,9 +7,7 @@ */ package org.opendaylight.controller.sal.binding.test; -import junit.framework.Assert; - - +import static org.junit.Assert.assertNotNull; import org.opendaylight.yangtools.yang.binding.Augmentable; import org.opendaylight.yangtools.yang.binding.Augmentation; @@ -28,8 +26,8 @@ public class AugmentationVerifier> { public static > void assertHasAugmentation(T object, Class> augmentation) { - Assert.assertNotNull(object); - Assert.assertNotNull("Augmentation " + augmentation.getSimpleName() + " is not present.", object.getAugmentation(augmentation)); + assertNotNull(object); + assertNotNull("Augmentation " + augmentation.getSimpleName() + " is not present.", object.getAugmentation(augmentation)); } public static > AugmentationVerifier from(T obj) { diff --git a/opendaylight/md-sal/sal-binding-dom-it/pom.xml b/opendaylight/md-sal/sal-binding-dom-it/pom.xml index fefd85b44b..01cd1f88ba 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/pom.xml +++ b/opendaylight/md-sal/sal-binding-dom-it/pom.xml @@ -52,7 +52,6 @@ org.opendaylight.controller sal-test-model - 1.2.0-SNAPSHOT diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java index 4cc3780c6f..ba75d578fb 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerRpcTest.java @@ -7,10 +7,10 @@ */ package org.opendaylight.controller.sal.binding.test.connect.dom; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertNotSame; -import static junit.framework.Assert.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertTrue; import java.math.BigInteger; import java.util.Collections; diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java index 6686a83a2e..7d616ca62c 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java @@ -7,9 +7,9 @@ */ package org.opendaylight.controller.sal.binding.test.connect.dom; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.InputStream; import java.util.Collections; diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/MessageCapturingFlowService.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/MessageCapturingFlowService.java index df287791ef..47e79650fe 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/MessageCapturingFlowService.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/MessageCapturingFlowService.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.sal.binding.test.connect.dom; -import static junit.framework.Assert.assertNotNull; +import static org.junit.Assert.assertNotNull; import java.util.concurrent.Future; diff --git a/opendaylight/md-sal/sal-clustering-commons/pom.xml b/opendaylight/md-sal/sal-clustering-commons/pom.xml index 54a1fe7a95..f6d7dbab1a 100644 --- a/opendaylight/md-sal/sal-clustering-commons/pom.xml +++ b/opendaylight/md-sal/sal-clustering-commons/pom.xml @@ -55,7 +55,6 @@ com.google.code.findbugs jsr305 - 2.0.1 com.google.guava @@ -111,7 +110,6 @@ xmlunit xmlunit - 1.5 junit @@ -131,7 +129,6 @@ org.slf4j slf4j-simple - ${slf4j.version} test @@ -185,7 +182,6 @@ xmlunit xmlunit - 1.5 @@ -199,13 +195,11 @@ org.slf4j slf4j-simple - ${slf4j.version} test com.google.code.findbugs jsr305 - 2.0.1 com.codahale.metrics diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java new file mode 100644 index 0000000000..db4bf31438 --- /dev/null +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014 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.cluster; + +import akka.japi.Procedure; +import akka.persistence.SnapshotSelectionCriteria; + +/** + * DataPersistenceProvider provides methods to persist data and is an abstraction of the akka-persistence persistence + * API. + */ +public interface DataPersistenceProvider { + /** + * @return false if recovery is not applicable. In that case the provider is not persistent and may not have + * anything to be recovered + */ + boolean isRecoveryApplicable(); + + /** + * Persist a journal entry. + * + * @param o + * @param procedure + * @param + */ + void persist(T o, Procedure procedure); + + /** + * Save a snapshot + * + * @param o + */ + void saveSnapshot(Object o); + + /** + * Delete snapshots based on the criteria + * + * @param criteria + */ + void deleteSnapshots(SnapshotSelectionCriteria criteria); + + /** + * Delete journal entries up to the sequence number + * + * @param sequenceNumber + */ + void deleteMessages(long sequenceNumber); + +} diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java index 36b2866210..8a6217deab 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActor.java @@ -10,7 +10,10 @@ package org.opendaylight.controller.cluster.common.actor; import akka.event.Logging; import akka.event.LoggingAdapter; +import akka.japi.Procedure; +import akka.persistence.SnapshotSelectionCriteria; import akka.persistence.UntypedPersistentActor; +import org.opendaylight.controller.cluster.DataPersistenceProvider; public abstract class AbstractUntypedPersistentActor extends UntypedPersistentActor { @@ -67,4 +70,71 @@ public abstract class AbstractUntypedPersistentActor extends UntypedPersistentAc } unhandled(message); } + + protected class PersistentDataProvider implements DataPersistenceProvider { + + public PersistentDataProvider(){ + + } + + @Override + public boolean isRecoveryApplicable() { + return true; + } + + @Override + public void persist(T o, Procedure procedure) { + AbstractUntypedPersistentActor.this.persist(o, procedure); + } + + @Override + public void saveSnapshot(Object o) { + AbstractUntypedPersistentActor.this.saveSnapshot(o); + } + + @Override + public void deleteSnapshots(SnapshotSelectionCriteria criteria) { + AbstractUntypedPersistentActor.this.deleteSnapshots(criteria); + } + + @Override + public void deleteMessages(long sequenceNumber) { + AbstractUntypedPersistentActor.this.deleteMessages(sequenceNumber); + } + } + + protected class NonPersistentDataProvider implements DataPersistenceProvider { + + public NonPersistentDataProvider(){ + + } + + @Override + public boolean isRecoveryApplicable() { + return false; + } + + @Override + public void persist(T o, Procedure procedure) { + try { + procedure.apply(o); + } catch (Exception e) { + LOG.error(e, "An unexpected error occurred"); + } + } + + @Override + public void saveSnapshot(Object o) { + } + + @Override + public void deleteSnapshots(SnapshotSelectionCriteria criteria) { + + } + + @Override + public void deleteMessages(long sequenceNumber) { + + } + } } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/CommonConfig.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/CommonConfig.java index 0d139f9670..48afe40607 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/CommonConfig.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/CommonConfig.java @@ -109,7 +109,7 @@ public class CommonConfig extends AbstractConfig { public T mailboxCapacity(int capacity) { Preconditions.checkArgument(capacity > 0, "mailbox capacity must be >0"); - Map boundedMailbox = (Map) configHolder.get(TAG_MAILBOX); + Map boundedMailbox = (Map) configHolder.get(TAG_MAILBOX); boundedMailbox.put(TAG_MAILBOX_CAPACITY, capacity); return (T)this; } @@ -118,7 +118,7 @@ public class CommonConfig extends AbstractConfig { Duration pushTimeout = Duration.create(timeout); Preconditions.checkArgument(pushTimeout.isFinite(), "invalid value for mailbox push timeout"); - Map boundedMailbox = (Map) configHolder.get(TAG_MAILBOX); + Map boundedMailbox = (Map) configHolder.get(TAG_MAILBOX); boundedMailbox.put(TAG_MAILBOX_PUSH_TIMEOUT, timeout); return (T)this; } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailbox.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailbox.java index 458f379f84..9b4560c726 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailbox.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailbox.java @@ -55,24 +55,25 @@ public class MeteredBoundedMailbox implements MailboxType, ProducesMessageQueue< return; //there's no actor to monitor } String actorName = owner.get().path().toStringWithoutAddress(); - String metricName = registry.name(actorName, QUEUE_SIZE); + String metricName = MetricRegistry.name(actorName, QUEUE_SIZE); if (registry.getMetrics().containsKey(metricName)) return; //already registered - Gauge queueSize = getQueueSizeGuage(monitoredQueue); + Gauge queueSize = getQueueSizeGuage(monitoredQueue); registerQueueSizeMetric(metricName, queueSize); } public static class MeteredMessageQueue extends BoundedDequeBasedMailbox.MessageQueue { + private static final long serialVersionUID = 1L; public MeteredMessageQueue(int capacity, FiniteDuration pushTimeOut) { super(capacity, pushTimeOut); } } - private Gauge getQueueSizeGuage(final MeteredMessageQueue monitoredQueue ){ + private Gauge getQueueSizeGuage(final MeteredMessageQueue monitoredQueue ){ return new Gauge() { @Override public Integer getValue() { @@ -81,7 +82,7 @@ public class MeteredBoundedMailbox implements MailboxType, ProducesMessageQueue< }; } - private void registerQueueSizeMetric(String metricName, Gauge metric){ + private void registerQueueSizeMetric(String metricName, Gauge metric){ try { registry.register(metricName,metric); } catch (IllegalArgumentException e) { diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/Monitor.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/Monitor.java index b2a43c03d9..f81b34aad8 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/Monitor.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/Monitor.java @@ -10,7 +10,10 @@ package org.opendaylight.controller.cluster.common.actor; import akka.actor.ActorRef; -public class Monitor { +import java.io.Serializable; + +public class Monitor implements Serializable { + private static final long serialVersionUID = 1L; private final ActorRef actorRef; public Monitor(ActorRef actorRef){ diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/DataPersistenceProviderMonitor.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/DataPersistenceProviderMonitor.java new file mode 100644 index 0000000000..33d4056395 --- /dev/null +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/DataPersistenceProviderMonitor.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2014 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.cluster.datastore; + +import akka.japi.Procedure; +import akka.persistence.SnapshotSelectionCriteria; +import org.opendaylight.controller.cluster.DataPersistenceProvider; + +import java.util.concurrent.CountDownLatch; + +/** + * This class is intended for testing purposes. It just triggers CountDownLatch's in each method. + * This class really should be under src/test/java but it was problematic trying to uses it in other projects. + */ +public class DataPersistenceProviderMonitor implements DataPersistenceProvider { + + private CountDownLatch persistLatch = new CountDownLatch(1); + private CountDownLatch saveSnapshotLatch = new CountDownLatch(1); + private CountDownLatch deleteSnapshotsLatch = new CountDownLatch(1);; + private CountDownLatch deleteMessagesLatch = new CountDownLatch(1);; + + @Override + public boolean isRecoveryApplicable() { + return false; + } + + @Override + public void persist(T o, Procedure procedure) { + persistLatch.countDown(); + } + + @Override + public void saveSnapshot(Object o) { + saveSnapshotLatch.countDown(); + } + + @Override + public void deleteSnapshots(SnapshotSelectionCriteria criteria) { + deleteSnapshotsLatch.countDown(); + } + + @Override + public void deleteMessages(long sequenceNumber) { + deleteMessagesLatch.countDown(); + } + + public void setPersistLatch(CountDownLatch persistLatch) { + this.persistLatch = persistLatch; + } + + public void setSaveSnapshotLatch(CountDownLatch saveSnapshotLatch) { + this.saveSnapshotLatch = saveSnapshotLatch; + } + + public void setDeleteSnapshotsLatch(CountDownLatch deleteSnapshotsLatch) { + this.deleteSnapshotsLatch = deleteSnapshotsLatch; + } + + public void setDeleteMessagesLatch(CountDownLatch deleteMessagesLatch) { + this.deleteMessagesLatch = deleteMessagesLatch; + } +} diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeGetter.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeGetter.java index 32f3be82fc..fd53b0f972 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeGetter.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeGetter.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; public class NormalizedNodeGetter implements NormalizedNodeVisitor { private final String path; - NormalizedNode output; + NormalizedNode output; public NormalizedNodeGetter(String path){ Preconditions.checkNotNull(path); @@ -24,7 +24,7 @@ public class NormalizedNodeGetter implements } @Override - public void visitNode(int level, String parentPath, NormalizedNode normalizedNode) { + public void visitNode(int level, String parentPath, NormalizedNode normalizedNode) { String nodePath = parentPath + "/"+ PathUtils.toString(normalizedNode.getIdentifier()); if(nodePath.toString().equals(path)){ @@ -32,7 +32,7 @@ public class NormalizedNodeGetter implements } } - public NormalizedNode getOutput(){ + public NormalizedNode getOutput(){ return output; } } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeNavigator.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeNavigator.java index 0083b00403..f8019c9186 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeNavigator.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeNavigator.java @@ -67,7 +67,7 @@ public class NormalizedNodeNavigator { String newParentPath = parentPath + "/" + node.getIdentifier().toString(); final Iterable> value = node.getValue(); - for(NormalizedNode normalizedNode : value){ + for(NormalizedNode normalizedNode : value){ if(normalizedNode instanceof MixinNode && normalizedNode instanceof NormalizedNodeContainer){ navigateNormalizedNodeContainerMixin(level + 1, newParentPath, (NormalizedNodeContainer) normalizedNode); } else { @@ -81,7 +81,7 @@ public class NormalizedNodeNavigator { private void navigateNormalizedNode(int level, String parentPath, NormalizedNode normalizedNode){ if(normalizedNode instanceof DataContainerNode){ - final DataContainerNode dataContainerNode = (DataContainerNode) normalizedNode; + final DataContainerNode dataContainerNode = (DataContainerNode) normalizedNode; navigateDataContainerNode(level + 1, parentPath, dataContainerNode); } else { diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodePrinter.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodePrinter.java index d370eb2deb..5f10800e34 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodePrinter.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodePrinter.java @@ -25,7 +25,7 @@ public class NormalizedNodePrinter implements NormalizedNodeVisitor { } @Override - public void visitNode(int level, String parentPath, NormalizedNode normalizedNode) { + public void visitNode(int level, String parentPath, NormalizedNode normalizedNode) { System.out.println(spaces((level) * 4) + normalizedNode.getClass().toString() + ":" + normalizedNode.getIdentifier()); if(normalizedNode instanceof LeafNode || normalizedNode instanceof LeafSetEntryNode){ System.out.println(spaces((level) * 4) + " parentPath = " + parentPath); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeVisitor.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeVisitor.java index 9e85ccb9ab..9e847d94ce 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeVisitor.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/NormalizedNodeVisitor.java @@ -13,5 +13,5 @@ package org.opendaylight.controller.cluster.datastore.node.utils; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; public interface NormalizedNodeVisitor { - public void visitNode(int level, String parentPath, NormalizedNode normalizedNode); + public void visitNode(int level, String parentPath, NormalizedNode normalizedNode); } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializer.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializer.java index 15d51e1d80..fae7eb1a33 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializer.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializer.java @@ -81,12 +81,12 @@ public class NormalizedNodeSerializer { * @param node * @return */ - public static NormalizedNodeMessages.Node serialize(NormalizedNode node){ + public static NormalizedNodeMessages.Node serialize(NormalizedNode node){ Preconditions.checkNotNull(node, "node should not be null"); return new Serializer(node).serialize(); } - public static Serializer newSerializer(NormalizedNode node) { + public static Serializer newSerializer(NormalizedNode node) { Preconditions.checkNotNull(node, "node should not be null"); return new Serializer(node); } @@ -97,7 +97,7 @@ public class NormalizedNodeSerializer { * @param node * @return */ - public static NormalizedNode deSerialize(NormalizedNodeMessages.Node node) { + public static NormalizedNode deSerialize(NormalizedNodeMessages.Node node) { Preconditions.checkNotNull(node, "node should not be null"); return new DeSerializer(null, node).deSerialize(); } @@ -131,11 +131,11 @@ public class NormalizedNodeSerializer { public static class Serializer extends QNameSerializationContextImpl implements NormalizedNodeSerializationContext { - private final NormalizedNode node; + private final NormalizedNode node; private NormalizedNodeMessages.InstanceIdentifier serializedPath; - private Serializer(NormalizedNode node) { + private Serializer(NormalizedNode node) { this.node = node; } @@ -154,7 +154,7 @@ public class NormalizedNodeSerializer { } private NormalizedNodeMessages.Node.Builder serialize( - NormalizedNode node) { + NormalizedNode node) { NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder(); @@ -183,13 +183,13 @@ public class NormalizedNodeSerializer { for (Object o : iterable) { if (o instanceof NormalizedNode) { - builder.addChild(serialize((NormalizedNode) o)); + builder.addChild(serialize((NormalizedNode) o)); } } } else if (value instanceof NormalizedNode) { - builder.addChild(serialize((NormalizedNode) value)); + builder.addChild(serialize((NormalizedNode) value)); } else { @@ -208,7 +208,7 @@ public class NormalizedNodeSerializer { static { deSerializationFunctions.put(CONTAINER_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { DataContainerNodeAttrBuilder @@ -226,7 +226,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(LEAF_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { NormalizedNodeAttrBuilder> @@ -243,7 +243,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(MAP_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { CollectionNodeBuilder @@ -255,7 +255,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(MAP_ENTRY_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { DataContainerNodeAttrBuilder @@ -270,7 +270,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(AUGMENTATION_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { DataContainerNodeBuilder @@ -286,7 +286,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(LEAF_SET_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { ListNodeBuilder> @@ -298,7 +298,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(LEAF_SET_ENTRY_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { NormalizedNodeAttrBuilder> @@ -313,7 +313,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(CHOICE_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { DataContainerNodeBuilder @@ -330,7 +330,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(ORDERED_LEAF_SET_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { ListNodeBuilder> @@ -345,7 +345,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(ORDERED_MAP_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { CollectionNodeBuilder @@ -358,7 +358,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(UNKEYED_LIST_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { CollectionNodeBuilder @@ -371,7 +371,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(UNKEYED_LIST_ENTRY_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { DataContainerNodeAttrBuilder @@ -389,7 +389,7 @@ public class NormalizedNodeSerializer { deSerializationFunctions.put(ANY_XML_NODE_TYPE, new DeSerializationFunction() { - @Override public NormalizedNode apply( + @Override public NormalizedNode apply( DeSerializer deSerializer, NormalizedNodeMessages.Node node) { NormalizedNodeAttrBuilder, AnyXmlNode> @@ -421,8 +421,8 @@ public class NormalizedNodeSerializer { return deserializedPath; } - public NormalizedNode deSerialize() { - NormalizedNode deserializedNode = deSerialize(node); + public NormalizedNode deSerialize() { + NormalizedNode deserializedNode = deSerialize(node); if(path != null) { deserializedPath = InstanceIdentifierUtils.fromSerializable(path, this); } @@ -430,7 +430,7 @@ public class NormalizedNodeSerializer { return deserializedNode; } - private NormalizedNode deSerialize(NormalizedNodeMessages.Node node){ + private NormalizedNode deSerialize(NormalizedNodeMessages.Node node){ Preconditions.checkNotNull(node, "node should not be null"); DeSerializationFunction deSerializationFunction = deSerializationFunctions.get( @@ -440,7 +440,7 @@ public class NormalizedNodeSerializer { } - private NormalizedNode buildCollectionNode( + private NormalizedNode buildCollectionNode( CollectionNodeBuilder builder, NormalizedNodeMessages.Node node) { @@ -454,7 +454,7 @@ public class NormalizedNodeSerializer { } - private NormalizedNode buildListNode( + private NormalizedNode buildListNode( ListNodeBuilder> builder, NormalizedNodeMessages.Node node) { builder.withNodeIdentifier(toNodeIdentifier(node.getPathArgument())); @@ -466,7 +466,7 @@ public class NormalizedNodeSerializer { return builder.build(); } - private NormalizedNode buildDataContainer(DataContainerNodeBuilder builder, NormalizedNodeMessages.Node node){ + private NormalizedNode buildDataContainer(DataContainerNodeBuilder builder, NormalizedNodeMessages.Node node){ for(NormalizedNodeMessages.Node child : node.getChildList()){ builder.withChild((DataContainerChild) deSerialize(child)); @@ -477,7 +477,7 @@ public class NormalizedNodeSerializer { return builder.build(); } - private NormalizedNode buildNormalizedNode(NormalizedNodeAttrBuilder builder, NormalizedNodeMessages.Node node){ + private NormalizedNode buildNormalizedNode(NormalizedNodeAttrBuilder builder, NormalizedNodeMessages.Node node){ builder.withValue(ValueSerializer.deSerialize(this, node)); @@ -515,7 +515,7 @@ public class NormalizedNodeSerializer { } private static interface DeSerializationFunction { - NormalizedNode apply(DeSerializer deserializer, NormalizedNodeMessages.Node node); + NormalizedNode apply(DeSerializer deserializer, NormalizedNodeMessages.Node node); } } } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeType.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeType.java index 2d6d738b76..b7460e8acf 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeType.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeType.java @@ -39,7 +39,7 @@ public enum NormalizedNodeType { UNKEYED_LIST_ENTRY_NODE_TYPE, ANY_XML_NODE_TYPE; - public static NormalizedNodeType getSerializableNodeType(NormalizedNode node){ + public static NormalizedNodeType getSerializableNodeType(NormalizedNode node){ Preconditions.checkNotNull(node, "node should not be null"); if(node instanceof LeafNode){ diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializer.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializer.java index 6a843f57c7..bb7f9c35ee 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializer.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializer.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.cluster.datastore.node.utils.serialization; +import com.google.protobuf.ByteString; import org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory; import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils; import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages; @@ -27,17 +28,19 @@ public class ValueSerializer { builder.setInstanceIdentifierValue( InstanceIdentifierUtils.toSerializable((YangInstanceIdentifier) value, context)); } else if(value instanceof Set) { - Set set = (Set) value; - if(!set.isEmpty()){ - for(Object o : set){ - if(o instanceof String){ + Set set = (Set) value; + if (!set.isEmpty()) { + for (Object o : set) { + if (o instanceof String) { builder.addBitsValue(o.toString()); } else { throw new IllegalArgumentException("Expected value type to be Bits but was : " + - value.toString()); + value.toString()); } } } + } else if(value instanceof byte[]){ + builder.setBytesValue(ByteString.copyFrom((byte[]) value)); } else { builder.setValue(value.toString()); } @@ -56,7 +59,9 @@ public class ValueSerializer { return InstanceIdentifierUtils.fromSerializable( node.getInstanceIdentifierValue(), context); } else if(node.getIntValueType() == ValueType.BITS_TYPE.ordinal()){ - return new HashSet(node.getBitsValueList()); + return new HashSet<>(node.getBitsValueList()); + } else if(node.getIntValueType() == ValueType.BINARY_TYPE.ordinal()){ + return node.getBytesValue().toByteArray(); } return deSerializeBasicTypes(node.getIntValueType(), node.getValue()); } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java index 49db8967a6..2007544b7e 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueType.java @@ -29,9 +29,10 @@ public enum ValueType { YANG_IDENTIFIER_TYPE, STRING_TYPE, BIG_INTEGER_TYPE, - BIG_DECIMAL_TYPE; + BIG_DECIMAL_TYPE, + BINARY_TYPE; - private static Map types = new HashMap<>(); + private static Map, ValueType> types = new HashMap<>(); static { types.put(String.class, STRING_TYPE); @@ -45,6 +46,7 @@ public enum ValueType { types.put(Short.class,SHORT_TYPE); types.put(BigInteger.class, BIG_INTEGER_TYPE); types.put(BigDecimal.class, BIG_DECIMAL_TYPE); + types.put(byte[].class, BINARY_TYPE); } public static final ValueType getSerializableType(Object node){ diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java index b59a32efc9..797258b443 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java @@ -140,7 +140,7 @@ public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamRead case NodeTypes.ANY_XML_NODE : LOG.debug("Read xml node"); - Node value = (Node) readObject(); + Node value = (Node) readObject(); return Builders.anyXmlBuilder().withValue(value).build(); case NodeTypes.MAP_NODE : diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeOutputStreamWriter.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeOutputStreamWriter.java index cbd7bf8853..08567fd79e 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeOutputStreamWriter.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeOutputStreamWriter.java @@ -204,7 +204,7 @@ public class NormalizedNodeOutputStreamWriter implements NormalizedNodeStreamWri } } - private void writeObjSet(Set set) throws IOException { + private void writeObjSet(Set set) throws IOException { if(!set.isEmpty()){ writer.writeInt(set.size()); for(Object o : set){ @@ -329,7 +329,7 @@ public class NormalizedNodeOutputStreamWriter implements NormalizedNodeStreamWri writer.writeShort((Short) value); break; case ValueTypes.BITS_TYPE: - writeObjSet((Set) value); + writeObjSet((Set) value); break; case ValueTypes.YANG_IDENTIFIER_TYPE: writeYangInstanceIdentifier((YangInstanceIdentifier) value); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java index 6035e3c644..80fa527b46 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ValueTypes.java @@ -31,7 +31,7 @@ public class ValueTypes { public static final byte BIG_INTEGER_TYPE = 10; public static final byte BIG_DECIMAL_TYPE = 11; - private static Map types = new HashMap<>(); + private static Map, Byte> types = new HashMap<>(); static { types.put(String.class, Byte.valueOf(STRING_TYPE)); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/raft/protobuff/client/messages/CompositeModificationPayload.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/raft/protobuff/client/messages/CompositeModificationPayload.java index 8822ac83a6..aadc3625cc 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/raft/protobuff/client/messages/CompositeModificationPayload.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/raft/protobuff/client/messages/CompositeModificationPayload.java @@ -21,6 +21,7 @@ import java.util.Map; public class CompositeModificationPayload extends Payload implements Serializable { + private static final long serialVersionUID = 1L; private final PersistentMessages.CompositeModification modification; diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/cohort3pc/ThreePhaseCommitCohortMessages.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/cohort3pc/ThreePhaseCommitCohortMessages.java index e43b44582d..2a79a5b827 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/cohort3pc/ThreePhaseCommitCohortMessages.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/cohort3pc/ThreePhaseCommitCohortMessages.java @@ -11,17 +11,17 @@ public final class ThreePhaseCommitCohortMessages { public interface CanCommitTransactionOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required string transactionId = 1; + // optional string transactionId = 1; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ boolean hasTransactionId(); /** - * required string transactionId = 1; + * optional string transactionId = 1; */ java.lang.String getTransactionId(); /** - * required string transactionId = 1; + * optional string transactionId = 1; */ com.google.protobuf.ByteString getTransactionIdBytes(); @@ -122,17 +122,17 @@ public final class ThreePhaseCommitCohortMessages { } private int bitField0_; - // required string transactionId = 1; + // optional string transactionId = 1; public static final int TRANSACTIONID_FIELD_NUMBER = 1; private java.lang.Object transactionId_; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public boolean hasTransactionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public java.lang.String getTransactionId() { java.lang.Object ref = transactionId_; @@ -149,7 +149,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public com.google.protobuf.ByteString getTransactionIdBytes() { @@ -173,10 +173,6 @@ public final class ThreePhaseCommitCohortMessages { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - if (!hasTransactionId()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } @@ -376,10 +372,6 @@ public final class ThreePhaseCommitCohortMessages { } public final boolean isInitialized() { - if (!hasTransactionId()) { - - return false; - } return true; } @@ -402,16 +394,16 @@ public final class ThreePhaseCommitCohortMessages { } private int bitField0_; - // required string transactionId = 1; + // optional string transactionId = 1; private java.lang.Object transactionId_ = ""; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public boolean hasTransactionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public java.lang.String getTransactionId() { java.lang.Object ref = transactionId_; @@ -425,7 +417,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public com.google.protobuf.ByteString getTransactionIdBytes() { @@ -441,7 +433,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder setTransactionId( java.lang.String value) { @@ -454,7 +446,7 @@ public final class ThreePhaseCommitCohortMessages { return this; } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder clearTransactionId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -463,7 +455,7 @@ public final class ThreePhaseCommitCohortMessages { return this; } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder setTransactionIdBytes( com.google.protobuf.ByteString value) { @@ -894,17 +886,17 @@ public final class ThreePhaseCommitCohortMessages { public interface AbortTransactionOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required string transactionId = 1; + // optional string transactionId = 1; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ boolean hasTransactionId(); /** - * required string transactionId = 1; + * optional string transactionId = 1; */ java.lang.String getTransactionId(); /** - * required string transactionId = 1; + * optional string transactionId = 1; */ com.google.protobuf.ByteString getTransactionIdBytes(); @@ -1005,17 +997,17 @@ public final class ThreePhaseCommitCohortMessages { } private int bitField0_; - // required string transactionId = 1; + // optional string transactionId = 1; public static final int TRANSACTIONID_FIELD_NUMBER = 1; private java.lang.Object transactionId_; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public boolean hasTransactionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public java.lang.String getTransactionId() { java.lang.Object ref = transactionId_; @@ -1032,7 +1024,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public com.google.protobuf.ByteString getTransactionIdBytes() { @@ -1056,10 +1048,6 @@ public final class ThreePhaseCommitCohortMessages { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - if (!hasTransactionId()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } @@ -1259,10 +1247,6 @@ public final class ThreePhaseCommitCohortMessages { } public final boolean isInitialized() { - if (!hasTransactionId()) { - - return false; - } return true; } @@ -1285,16 +1269,16 @@ public final class ThreePhaseCommitCohortMessages { } private int bitField0_; - // required string transactionId = 1; + // optional string transactionId = 1; private java.lang.Object transactionId_ = ""; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public boolean hasTransactionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public java.lang.String getTransactionId() { java.lang.Object ref = transactionId_; @@ -1308,7 +1292,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public com.google.protobuf.ByteString getTransactionIdBytes() { @@ -1324,7 +1308,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder setTransactionId( java.lang.String value) { @@ -1337,7 +1321,7 @@ public final class ThreePhaseCommitCohortMessages { return this; } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder clearTransactionId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -1346,7 +1330,7 @@ public final class ThreePhaseCommitCohortMessages { return this; } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder setTransactionIdBytes( com.google.protobuf.ByteString value) { @@ -1682,17 +1666,17 @@ public final class ThreePhaseCommitCohortMessages { public interface CommitTransactionOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required string transactionId = 1; + // optional string transactionId = 1; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ boolean hasTransactionId(); /** - * required string transactionId = 1; + * optional string transactionId = 1; */ java.lang.String getTransactionId(); /** - * required string transactionId = 1; + * optional string transactionId = 1; */ com.google.protobuf.ByteString getTransactionIdBytes(); @@ -1793,17 +1777,17 @@ public final class ThreePhaseCommitCohortMessages { } private int bitField0_; - // required string transactionId = 1; + // optional string transactionId = 1; public static final int TRANSACTIONID_FIELD_NUMBER = 1; private java.lang.Object transactionId_; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public boolean hasTransactionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public java.lang.String getTransactionId() { java.lang.Object ref = transactionId_; @@ -1820,7 +1804,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public com.google.protobuf.ByteString getTransactionIdBytes() { @@ -1844,10 +1828,6 @@ public final class ThreePhaseCommitCohortMessages { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - if (!hasTransactionId()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } @@ -2047,10 +2027,6 @@ public final class ThreePhaseCommitCohortMessages { } public final boolean isInitialized() { - if (!hasTransactionId()) { - - return false; - } return true; } @@ -2073,16 +2049,16 @@ public final class ThreePhaseCommitCohortMessages { } private int bitField0_; - // required string transactionId = 1; + // optional string transactionId = 1; private java.lang.Object transactionId_ = ""; /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public boolean hasTransactionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public java.lang.String getTransactionId() { java.lang.Object ref = transactionId_; @@ -2096,7 +2072,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public com.google.protobuf.ByteString getTransactionIdBytes() { @@ -2112,7 +2088,7 @@ public final class ThreePhaseCommitCohortMessages { } } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder setTransactionId( java.lang.String value) { @@ -2125,7 +2101,7 @@ public final class ThreePhaseCommitCohortMessages { return this; } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder clearTransactionId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -2134,7 +2110,7 @@ public final class ThreePhaseCommitCohortMessages { return this; } /** - * required string transactionId = 1; + * optional string transactionId = 1; */ public Builder setTransactionIdBytes( com.google.protobuf.ByteString value) { @@ -3136,11 +3112,11 @@ public final class ThreePhaseCommitCohortMessages { java.lang.String[] descriptorData = { "\n\014Cohort.proto\022!org.opendaylight.control" + "ler.mdsal\"-\n\024CanCommitTransaction\022\025\n\rtra" + - "nsactionId\030\001 \002(\t\".\n\031CanCommitTransaction" + + "nsactionId\030\001 \001(\t\".\n\031CanCommitTransaction" + "Reply\022\021\n\tcanCommit\030\001 \002(\010\")\n\020AbortTransac" + - "tion\022\025\n\rtransactionId\030\001 \002(\t\"\027\n\025AbortTran" + + "tion\022\025\n\rtransactionId\030\001 \001(\t\"\027\n\025AbortTran" + "sactionReply\"*\n\021CommitTransaction\022\025\n\rtra" + - "nsactionId\030\001 \002(\t\"\030\n\026CommitTransactionRep" + + "nsactionId\030\001 \001(\t\"\030\n\026CommitTransactionRep" + "ly\"\026\n\024PreCommitTransaction\"\033\n\031PreCommitT" + "ransactionReplyBZ\n8org.opendaylight.cont" + "roller.protobuff.messages.cohort3pcB\036Thr", diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/common/NormalizedNodeMessages.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/common/NormalizedNodeMessages.java index e7f2c361ae..8285009d35 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/common/NormalizedNodeMessages.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/common/NormalizedNodeMessages.java @@ -5410,6 +5410,16 @@ public final class NormalizedNodeMessages { */ com.google.protobuf.ByteString getCodeBytes(int index); + + // optional bytes bytesValue = 13; + /** + * optional bytes bytesValue = 13; + */ + boolean hasBytesValue(); + /** + * optional bytes bytesValue = 13; + */ + com.google.protobuf.ByteString getBytesValue(); } /** * Protobuf type {@code org.opendaylight.controller.mdsal.Node} @@ -5550,6 +5560,11 @@ public final class NormalizedNodeMessages { code_.add(input.readBytes()); break; } + case 106: { + bitField0_ |= 0x00000100; + bytesValue_ = input.readBytes(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -6070,6 +6085,22 @@ public final class NormalizedNodeMessages { return code_.getByteString(index); } + // optional bytes bytesValue = 13; + public static final int BYTESVALUE_FIELD_NUMBER = 13; + private com.google.protobuf.ByteString bytesValue_; + /** + * optional bytes bytesValue = 13; + */ + public boolean hasBytesValue() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * optional bytes bytesValue = 13; + */ + public com.google.protobuf.ByteString getBytesValue() { + return bytesValue_; + } + private void initFields() { path_ = ""; type_ = ""; @@ -6083,6 +6114,7 @@ public final class NormalizedNodeMessages { instanceIdentifierValue_ = org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.InstanceIdentifier.getDefaultInstance(); bitsValue_ = com.google.protobuf.LazyStringArrayList.EMPTY; code_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bytesValue_ = com.google.protobuf.ByteString.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -6156,6 +6188,9 @@ public final class NormalizedNodeMessages { for (int i = 0; i < code_.size(); i++) { output.writeBytes(12, code_.getByteString(i)); } + if (((bitField0_ & 0x00000100) == 0x00000100)) { + output.writeBytes(13, bytesValue_); + } getUnknownFields().writeTo(output); } @@ -6223,6 +6258,10 @@ public final class NormalizedNodeMessages { size += dataSize; size += 1 * getCodeList().size(); } + if (((bitField0_ & 0x00000100) == 0x00000100)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(13, bytesValue_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -6383,6 +6422,8 @@ public final class NormalizedNodeMessages { bitField0_ = (bitField0_ & ~0x00000400); code_ = com.google.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000800); + bytesValue_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00001000); return this; } @@ -6481,6 +6522,10 @@ public final class NormalizedNodeMessages { bitField0_ = (bitField0_ & ~0x00000800); } result.code_ = code_; + if (((from_bitField0_ & 0x00001000) == 0x00001000)) { + to_bitField0_ |= 0x00000100; + } + result.bytesValue_ = bytesValue_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -6601,6 +6646,9 @@ public final class NormalizedNodeMessages { } onChanged(); } + if (other.hasBytesValue()) { + setBytesValue(other.getBytesValue()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -8110,6 +8158,42 @@ public final class NormalizedNodeMessages { return this; } + // optional bytes bytesValue = 13; + private com.google.protobuf.ByteString bytesValue_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes bytesValue = 13; + */ + public boolean hasBytesValue() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * optional bytes bytesValue = 13; + */ + public com.google.protobuf.ByteString getBytesValue() { + return bytesValue_; + } + /** + * optional bytes bytesValue = 13; + */ + public Builder setBytesValue(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00001000; + bytesValue_ = value; + onChanged(); + return this; + } + /** + * optional bytes bytesValue = 13; + */ + public Builder clearBytesValue() { + bitField0_ = (bitField0_ & ~0x00001000); + bytesValue_ = getDefaultInstance().getBytesValue(); + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:org.opendaylight.controller.mdsal.Node) } @@ -10287,7 +10371,7 @@ public final class NormalizedNodeMessages { "ntroller.mdsal.Attribute\022\017\n\007intType\030\006 \001(" + "\005\"f\n\022InstanceIdentifier\022B\n\targuments\030\001 \003" + "(\0132/.org.opendaylight.controller.mdsal.P" + - "athArgument\022\014\n\004code\030\002 \003(\t\"\245\003\n\004Node\022\014\n\004pa" + + "athArgument\022\014\n\004code\030\002 \003(\t\"\271\003\n\004Node\022\014\n\004pa" + "th\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022E\n\014pathArgument\030\003" + " \001(\0132/.org.opendaylight.controller.mdsal" + ".PathArgument\022\017\n\007intType\030\004 \001(\005\022@\n\nattrib", @@ -10298,17 +10382,18 @@ public final class NormalizedNodeMessages { "pe\030\t \001(\005\022V\n\027instanceIdentifierValue\030\n \001(" + "\01325.org.opendaylight.controller.mdsal.In" + "stanceIdentifier\022\021\n\tbitsValue\030\013 \003(\t\022\014\n\004c" + - "ode\030\014 \003(\t\"`\n\tContainer\022\022\n\nparentPath\030\001 \002" + - "(\t\022?\n\016normalizedNode\030\002 \001(\0132\'.org.openday" + - "light.controller.mdsal.Node\"\246\001\n\014NodeMapE", - "ntry\022U\n\026instanceIdentifierPath\030\001 \002(\01325.o" + - "rg.opendaylight.controller.mdsal.Instanc" + - "eIdentifier\022?\n\016normalizedNode\030\002 \001(\0132\'.or" + - "g.opendaylight.controller.mdsal.Node\"N\n\007" + - "NodeMap\022C\n\nmapEntries\030\001 \003(\0132/.org.openda" + - "ylight.controller.mdsal.NodeMapEntryBO\n5" + - "org.opendaylight.controller.protobuff.me" + - "ssages.commonB\026NormalizedNodeMessages" + "ode\030\014 \003(\t\022\022\n\nbytesValue\030\r \001(\014\"`\n\tContain" + + "er\022\022\n\nparentPath\030\001 \002(\t\022?\n\016normalizedNode" + + "\030\002 \001(\0132\'.org.opendaylight.controller.mds", + "al.Node\"\246\001\n\014NodeMapEntry\022U\n\026instanceIden" + + "tifierPath\030\001 \002(\01325.org.opendaylight.cont" + + "roller.mdsal.InstanceIdentifier\022?\n\016norma" + + "lizedNode\030\002 \001(\0132\'.org.opendaylight.contr" + + "oller.mdsal.Node\"N\n\007NodeMap\022C\n\nmapEntrie" + + "s\030\001 \003(\0132/.org.opendaylight.controller.md" + + "sal.NodeMapEntryBO\n5org.opendaylight.con" + + "troller.protobuff.messages.commonB\026Norma" + + "lizedNodeMessages" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -10350,7 +10435,7 @@ public final class NormalizedNodeMessages { internal_static_org_opendaylight_controller_mdsal_Node_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_opendaylight_controller_mdsal_Node_descriptor, - new java.lang.String[] { "Path", "Type", "PathArgument", "IntType", "Attributes", "Child", "Value", "ValueType", "IntValueType", "InstanceIdentifierValue", "BitsValue", "Code", }); + new java.lang.String[] { "Path", "Type", "PathArgument", "IntType", "Attributes", "Child", "Value", "ValueType", "IntValueType", "InstanceIdentifierValue", "BitsValue", "Code", "BytesValue", }); internal_static_org_opendaylight_controller_mdsal_Container_descriptor = getDescriptor().getMessageTypes().get(6); internal_static_org_opendaylight_controller_mdsal_Container_fieldAccessorTable = new diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/transaction/ShardTransactionMessages.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/transaction/ShardTransactionMessages.java index 96a39bddd3..3a1cfaa443 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/transaction/ShardTransactionMessages.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/transaction/ShardTransactionMessages.java @@ -668,6 +668,16 @@ public final class ShardTransactionMessages { */ com.google.protobuf.ByteString getTransactionChainIdBytes(); + + // optional int32 messageVersion = 4; + /** + * optional int32 messageVersion = 4; + */ + boolean hasMessageVersion(); + /** + * optional int32 messageVersion = 4; + */ + int getMessageVersion(); } /** * Protobuf type {@code org.opendaylight.controller.mdsal.CreateTransaction} @@ -735,6 +745,11 @@ public final class ShardTransactionMessages { transactionChainId_ = input.readBytes(); break; } + case 32: { + bitField0_ |= 0x00000008; + messageVersion_ = input.readInt32(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -877,10 +892,27 @@ public final class ShardTransactionMessages { } } + // optional int32 messageVersion = 4; + public static final int MESSAGEVERSION_FIELD_NUMBER = 4; + private int messageVersion_; + /** + * optional int32 messageVersion = 4; + */ + public boolean hasMessageVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional int32 messageVersion = 4; + */ + public int getMessageVersion() { + return messageVersion_; + } + private void initFields() { transactionId_ = ""; transactionType_ = 0; transactionChainId_ = ""; + messageVersion_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -911,6 +943,9 @@ public final class ShardTransactionMessages { if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeBytes(3, getTransactionChainIdBytes()); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeInt32(4, messageVersion_); + } getUnknownFields().writeTo(output); } @@ -932,6 +967,10 @@ public final class ShardTransactionMessages { size += com.google.protobuf.CodedOutputStream .computeBytesSize(3, getTransactionChainIdBytes()); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(4, messageVersion_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -1054,6 +1093,8 @@ public final class ShardTransactionMessages { bitField0_ = (bitField0_ & ~0x00000002); transactionChainId_ = ""; bitField0_ = (bitField0_ & ~0x00000004); + messageVersion_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -1094,6 +1135,10 @@ public final class ShardTransactionMessages { to_bitField0_ |= 0x00000004; } result.transactionChainId_ = transactionChainId_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.messageVersion_ = messageVersion_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -1123,6 +1168,9 @@ public final class ShardTransactionMessages { transactionChainId_ = other.transactionChainId_; onChanged(); } + if (other.hasMessageVersion()) { + setMessageVersion(other.getMessageVersion()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -1339,6 +1387,39 @@ public final class ShardTransactionMessages { return this; } + // optional int32 messageVersion = 4; + private int messageVersion_ ; + /** + * optional int32 messageVersion = 4; + */ + public boolean hasMessageVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional int32 messageVersion = 4; + */ + public int getMessageVersion() { + return messageVersion_; + } + /** + * optional int32 messageVersion = 4; + */ + public Builder setMessageVersion(int value) { + bitField0_ |= 0x00000008; + messageVersion_ = value; + onChanged(); + return this; + } + /** + * optional int32 messageVersion = 4; + */ + public Builder clearMessageVersion() { + bitField0_ = (bitField0_ & ~0x00000008); + messageVersion_ = 0; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:org.opendaylight.controller.mdsal.CreateTransaction) } @@ -1382,6 +1463,16 @@ public final class ShardTransactionMessages { */ com.google.protobuf.ByteString getTransactionIdBytes(); + + // optional int32 messageVersion = 3; + /** + * optional int32 messageVersion = 3; + */ + boolean hasMessageVersion(); + /** + * optional int32 messageVersion = 3; + */ + int getMessageVersion(); } /** * Protobuf type {@code org.opendaylight.controller.mdsal.CreateTransactionReply} @@ -1444,6 +1535,11 @@ public final class ShardTransactionMessages { transactionId_ = input.readBytes(); break; } + case 24: { + bitField0_ |= 0x00000004; + messageVersion_ = input.readInt32(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -1570,9 +1666,26 @@ public final class ShardTransactionMessages { } } + // optional int32 messageVersion = 3; + public static final int MESSAGEVERSION_FIELD_NUMBER = 3; + private int messageVersion_; + /** + * optional int32 messageVersion = 3; + */ + public boolean hasMessageVersion() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional int32 messageVersion = 3; + */ + public int getMessageVersion() { + return messageVersion_; + } + private void initFields() { transactionActorPath_ = ""; transactionId_ = ""; + messageVersion_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -1600,6 +1713,9 @@ public final class ShardTransactionMessages { if (((bitField0_ & 0x00000002) == 0x00000002)) { output.writeBytes(2, getTransactionIdBytes()); } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeInt32(3, messageVersion_); + } getUnknownFields().writeTo(output); } @@ -1617,6 +1733,10 @@ public final class ShardTransactionMessages { size += com.google.protobuf.CodedOutputStream .computeBytesSize(2, getTransactionIdBytes()); } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, messageVersion_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -1737,6 +1857,8 @@ public final class ShardTransactionMessages { bitField0_ = (bitField0_ & ~0x00000001); transactionId_ = ""; bitField0_ = (bitField0_ & ~0x00000002); + messageVersion_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } @@ -1773,6 +1895,10 @@ public final class ShardTransactionMessages { to_bitField0_ |= 0x00000002; } result.transactionId_ = transactionId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.messageVersion_ = messageVersion_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -1799,6 +1925,9 @@ public final class ShardTransactionMessages { transactionId_ = other.transactionId_; onChanged(); } + if (other.hasMessageVersion()) { + setMessageVersion(other.getMessageVersion()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -1982,6 +2111,39 @@ public final class ShardTransactionMessages { return this; } + // optional int32 messageVersion = 3; + private int messageVersion_ ; + /** + * optional int32 messageVersion = 3; + */ + public boolean hasMessageVersion() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional int32 messageVersion = 3; + */ + public int getMessageVersion() { + return messageVersion_; + } + /** + * optional int32 messageVersion = 3; + */ + public Builder setMessageVersion(int value) { + bitField0_ |= 0x00000004; + messageVersion_ = value; + onChanged(); + return this; + } + /** + * optional int32 messageVersion = 3; + */ + public Builder clearMessageVersion() { + bitField0_ = (bitField0_ & ~0x00000004); + messageVersion_ = 0; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:org.opendaylight.controller.mdsal.CreateTransactionReply) } @@ -7753,37 +7915,38 @@ public final class ShardTransactionMessages { java.lang.String[] descriptorData = { "\n\026ShardTransaction.proto\022!org.opendaylig" + "ht.controller.mdsal\032\014Common.proto\"\022\n\020Clo" + - "seTransaction\"\027\n\025CloseTransactionReply\"_" + + "seTransaction\"\027\n\025CloseTransactionReply\"w" + "\n\021CreateTransaction\022\025\n\rtransactionId\030\001 \002" + "(\t\022\027\n\017transactionType\030\002 \002(\005\022\032\n\022transacti" + - "onChainId\030\003 \001(\t\"M\n\026CreateTransactionRepl" + - "y\022\034\n\024transactionActorPath\030\001 \002(\t\022\025\n\rtrans" + - "actionId\030\002 \002(\t\"\022\n\020ReadyTransaction\"*\n\025Re" + - "adyTransactionReply\022\021\n\tactorPath\030\001 \002(\t\"l" + - "\n\nDeleteData\022^\n\037instanceIdentifierPathAr", + "onChainId\030\003 \001(\t\022\026\n\016messageVersion\030\004 \001(\005\"" + + "e\n\026CreateTransactionReply\022\034\n\024transaction" + + "ActorPath\030\001 \002(\t\022\025\n\rtransactionId\030\002 \002(\t\022\026" + + "\n\016messageVersion\030\003 \001(\005\"\022\n\020ReadyTransacti" + + "on\"*\n\025ReadyTransactionReply\022\021\n\tactorPath", + "\030\001 \002(\t\"l\n\nDeleteData\022^\n\037instanceIdentifi" + + "erPathArguments\030\001 \002(\01325.org.opendaylight" + + ".controller.mdsal.InstanceIdentifier\"\021\n\017" + + "DeleteDataReply\"j\n\010ReadData\022^\n\037instanceI" + + "dentifierPathArguments\030\001 \002(\01325.org.opend" + + "aylight.controller.mdsal.InstanceIdentif" + + "ier\"P\n\rReadDataReply\022?\n\016normalizedNode\030\001" + + " \001(\0132\'.org.opendaylight.controller.mdsal" + + ".Node\"\254\001\n\tWriteData\022^\n\037instanceIdentifie" + + "rPathArguments\030\001 \002(\01325.org.opendaylight.", + "controller.mdsal.InstanceIdentifier\022?\n\016n" + + "ormalizedNode\030\002 \002(\0132\'.org.opendaylight.c" + + "ontroller.mdsal.Node\"\020\n\016WriteDataReply\"\254" + + "\001\n\tMergeData\022^\n\037instanceIdentifierPathAr" + "guments\030\001 \002(\01325.org.opendaylight.control" + - "ler.mdsal.InstanceIdentifier\"\021\n\017DeleteDa" + - "taReply\"j\n\010ReadData\022^\n\037instanceIdentifie" + - "rPathArguments\030\001 \002(\01325.org.opendaylight." + - "controller.mdsal.InstanceIdentifier\"P\n\rR" + - "eadDataReply\022?\n\016normalizedNode\030\001 \001(\0132\'.o" + - "rg.opendaylight.controller.mdsal.Node\"\254\001" + - "\n\tWriteData\022^\n\037instanceIdentifierPathArg" + - "uments\030\001 \002(\01325.org.opendaylight.controll" + - "er.mdsal.InstanceIdentifier\022?\n\016normalize", - "dNode\030\002 \002(\0132\'.org.opendaylight.controlle" + - "r.mdsal.Node\"\020\n\016WriteDataReply\"\254\001\n\tMerge" + - "Data\022^\n\037instanceIdentifierPathArguments\030" + - "\001 \002(\01325.org.opendaylight.controller.mdsa" + - "l.InstanceIdentifier\022?\n\016normalizedNode\030\002" + - " \002(\0132\'.org.opendaylight.controller.mdsal" + - ".Node\"\020\n\016MergeDataReply\"l\n\nDataExists\022^\n" + - "\037instanceIdentifierPathArguments\030\001 \002(\01325" + - ".org.opendaylight.controller.mdsal.Insta" + - "nceIdentifier\"!\n\017DataExistsReply\022\016\n\006exis", - "ts\030\001 \002(\010BV\n:org.opendaylight.controller." + - "protobuff.messages.transactionB\030ShardTra" + - "nsactionMessages" + "ler.mdsal.InstanceIdentifier\022?\n\016normaliz" + + "edNode\030\002 \002(\0132\'.org.opendaylight.controll" + + "er.mdsal.Node\"\020\n\016MergeDataReply\"l\n\nDataE" + + "xists\022^\n\037instanceIdentifierPathArguments" + + "\030\001 \002(\01325.org.opendaylight.controller.mds", + "al.InstanceIdentifier\"!\n\017DataExistsReply" + + "\022\016\n\006exists\030\001 \002(\010BV\n:org.opendaylight.con" + + "troller.protobuff.messages.transactionB\030" + + "ShardTransactionMessages" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -7807,13 +7970,13 @@ public final class ShardTransactionMessages { internal_static_org_opendaylight_controller_mdsal_CreateTransaction_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_opendaylight_controller_mdsal_CreateTransaction_descriptor, - new java.lang.String[] { "TransactionId", "TransactionType", "TransactionChainId", }); + new java.lang.String[] { "TransactionId", "TransactionType", "TransactionChainId", "MessageVersion", }); internal_static_org_opendaylight_controller_mdsal_CreateTransactionReply_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_org_opendaylight_controller_mdsal_CreateTransactionReply_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_opendaylight_controller_mdsal_CreateTransactionReply_descriptor, - new java.lang.String[] { "TransactionActorPath", "TransactionId", }); + new java.lang.String[] { "TransactionActorPath", "TransactionId", "MessageVersion", }); internal_static_org_opendaylight_controller_mdsal_ReadyTransaction_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_org_opendaylight_controller_mdsal_ReadyTransaction_fieldAccessorTable = new diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Cohort.proto b/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Cohort.proto index 49c6cd07a8..222f68ab4f 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Cohort.proto +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Cohort.proto @@ -5,7 +5,7 @@ option java_outer_classname = "ThreePhaseCommitCohortMessages"; message CanCommitTransaction{ - required string transactionId = 1; + optional string transactionId = 1; } message CanCommitTransactionReply{ @@ -14,7 +14,7 @@ message CanCommitTransactionReply{ } message AbortTransaction{ - required string transactionId = 1; + optional string transactionId = 1; } message AbortTransactionReply { @@ -22,7 +22,7 @@ message AbortTransactionReply { } message CommitTransaction{ - required string transactionId = 1; + optional string transactionId = 1; } message CommitTransactionReply{ diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Common.proto b/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Common.proto index 356bfbf684..842a9725d1 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Common.proto +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/resources/Common.proto @@ -63,6 +63,8 @@ message Node{ repeated string bitsValue = 11; // intValueType = Bits repeated string code = 12; // A list of string codes which can be used for any repeated strings in the NormalizedNode + + optional bytes bytesValue = 13; } message Container{ diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/resources/ShardTransaction.proto b/opendaylight/md-sal/sal-clustering-commons/src/main/resources/ShardTransaction.proto index 26581478d9..c5e4ee45c0 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/resources/ShardTransaction.proto +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/resources/ShardTransaction.proto @@ -16,12 +16,13 @@ message CreateTransaction{ required string transactionId = 1; required int32 transactionType =2; optional string transactionChainId = 3; + optional int32 messageVersion = 4; } message CreateTransactionReply{ -required string transactionActorPath = 1; -required string transactionId = 2; - + required string transactionActorPath = 1; + required string transactionId = 2; + optional int32 messageVersion = 3; } message ReadyTransaction{ @@ -29,7 +30,7 @@ message ReadyTransaction{ } message ReadyTransactionReply{ -required string actorPath = 1; + required string actorPath = 1; } message DeleteData { diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailboxTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailboxTest.java index d33e79f533..60efb9d7ca 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailboxTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/common/actor/MeteredBoundedMailboxTest.java @@ -81,6 +81,7 @@ public class MeteredBoundedMailboxTest { public static Props props(final ReentrantLock lock){ return Props.create(new Creator(){ + private static final long serialVersionUID = 1L; @Override public PingPongActor create() throws Exception { return new PingPongActor(lock); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/NormalizedNodeToNodeCodecTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/NormalizedNodeToNodeCodecTest.java index 6de1083cbe..0b408e2e1e 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/NormalizedNodeToNodeCodecTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/NormalizedNodeToNodeCodecTest.java @@ -26,8 +26,8 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import java.util.List; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class NormalizedNodeToNodeCodecTest { @@ -60,7 +60,7 @@ public class NormalizedNodeToNodeCodecTest { PathUtils.toString(YangInstanceIdentifier.builder().build()), documentOne); // Validate the value of id can be retrieved from the normalized node - NormalizedNode output = normalizedNodeGetter.getOutput(); + NormalizedNode output = normalizedNodeGetter.getOutput(); assertNotNull(output); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierFactoryTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierFactoryTest.java index 4da7d8c483..13dfff3a8a 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierFactoryTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/NodeIdentifierFactoryTest.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.cluster.datastore.node.utils; -import junit.framework.Assert; +import static org.junit.Assert.assertTrue; import org.junit.Test; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -22,8 +22,7 @@ public class NodeIdentifierFactoryTest { NodeIdentifierFactory .getArgument("AugmentationIdentifier{childNames=[(urn:opendaylight:flow:table:statistics?revision=2013-12-15)flow-table-statistics]}"); - Assert - .assertTrue(argument instanceof YangInstanceIdentifier.AugmentationIdentifier); + assertTrue(argument instanceof YangInstanceIdentifier.AugmentationIdentifier); } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/PathUtilsTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/PathUtilsTest.java index d1e3eb202f..75e8e2aa4a 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/PathUtilsTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/PathUtilsTest.java @@ -1,15 +1,13 @@ package org.opendaylight.controller.cluster.datastore.node.utils; +import com.google.common.collect.ImmutableSet; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.util.TestModel; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; - import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Set; - import static junit.framework.TestCase.assertEquals; public class PathUtilsTest { @@ -92,8 +90,7 @@ public class PathUtilsTest { } private YangInstanceIdentifier.AugmentationIdentifier augmentationIdentifier(){ - Set childNames = new HashSet(); - childNames.add(QNameFactory.create("(urn:opendaylight:flow:table:statistics?revision=2013-12-15)flow-table-statistics")); + Set childNames = ImmutableSet.of(QNameFactory.create("(urn:opendaylight:flow:table:statistics?revision=2013-12-15)flow-table-statistics")); return new YangInstanceIdentifier.AugmentationIdentifier(childNames); } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactoryTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactoryTest.java index 76d4ceb2f5..2ae83bd6c6 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactoryTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/QNameFactoryTest.java @@ -4,9 +4,9 @@ import org.junit.Test; import org.opendaylight.controller.cluster.datastore.util.TestModel; import org.opendaylight.yangtools.yang.common.QName; -import static junit.framework.Assert.assertTrue; -import static junit.framework.TestCase.assertEquals; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class QNameFactoryTest { diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializerTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializerTest.java index cdb2e69e83..816442f885 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializerTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializerTest.java @@ -1,15 +1,20 @@ package org.opendaylight.controller.cluster.datastore.node.utils.serialization; +import com.google.common.base.Optional; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.opendaylight.controller.cluster.datastore.util.TestModel; import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public class NormalizedNodeSerializerTest { @@ -40,7 +45,7 @@ public class NormalizedNodeSerializerTest { start = System.nanoTime(); - NormalizedNode actualNode = + NormalizedNode actualNode = NormalizedNodeSerializer.deSerialize(expected); System.out.println("DeSerialize Time = " + (System.nanoTime() - start)/1000000); @@ -49,6 +54,37 @@ public class NormalizedNodeSerializerTest { // created by serializing the original node and deSerializing it back. assertEquals(expectedNode, actualNode); + byte[] binaryData = new byte[5]; + for(byte i=0;i<5;i++){ + binaryData[i] = i; + } + + ContainerNode node1 = TestModel.createBaseTestContainerBuilder() + .withChild(ImmutableNodes.leafNode(TestModel.SOME_BINARY_DATE_QNAME, binaryData)) + .build(); + + NormalizedNodeMessages.Node serializedNode1 = NormalizedNodeSerializer + .serialize(node1); + + ContainerNode node2 = + (ContainerNode) NormalizedNodeSerializer.deSerialize(serializedNode1); + + + // FIXME: This will not work due to BUG 2326. Once that is fixed we can uncomment this assertion + // assertEquals(node1, node2); + + Optional> child = node2.getChild(new YangInstanceIdentifier.NodeIdentifier(TestModel.SOME_BINARY_DATE_QNAME)); + + Object value = child.get().getValue(); + + assertTrue("value should be of type byte[]", value instanceof byte[]); + + byte[] bytesValue = (byte[]) value; + + for(byte i=0;i<5;i++){ + assertEquals(i, bytesValue[i]); + } + } @Test(expected = NullPointerException.class) diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java index 88c2695075..d0be36beeb 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java @@ -355,8 +355,8 @@ public class ValueSerializerTest{ nodeBuilder.build()); assertTrue(o instanceof Set); - assertTrue(((Set)o).contains("foo")); - assertTrue(((Set) o).contains("bar")); + assertTrue(((Set)o).contains("foo")); + assertTrue(((Set) o).contains("bar")); } diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueTypeTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueTypeTest.java new file mode 100644 index 0000000000..8fe0633b6e --- /dev/null +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueTypeTest.java @@ -0,0 +1,18 @@ +package org.opendaylight.controller.cluster.datastore.node.utils.serialization; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ValueTypeTest { + + @Test + public void testGetSerializableType(){ + byte[] b = new byte[10]; + b[0] = 1; + b[2] = 2; + + ValueType serializableType = ValueType.getSerializableType(b); + assertEquals(ValueType.BINARY_TYPE, serializableType); + } +} \ No newline at end of file diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java index 6cd06e9c1c..d15f534f80 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java @@ -10,6 +10,7 @@ package org.opendaylight.controller.cluster.datastore.util; +import com.google.common.collect.ImmutableSet; import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContext; @@ -20,7 +21,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashSet; import java.util.List; public class InstanceIdentifierUtilsTest { @@ -116,8 +116,8 @@ public class InstanceIdentifierUtilsTest { @Test public void testAugmentationIdentifier() { - YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.AugmentationIdentifier(new HashSet( - Arrays.asList(TEST_QNAME))); + YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.AugmentationIdentifier( + ImmutableSet.of(TEST_QNAME)); List arguments = new ArrayList<>(); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/TestModel.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/TestModel.java index cda4b06e29..99df01a32e 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/TestModel.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/TestModel.java @@ -62,6 +62,7 @@ public class TestModel { public static final QName DESC_QNAME = QName.create(TEST_QNAME, "desc"); public static final QName POINTER_QNAME = QName.create(TEST_QNAME, "pointer"); + public static final QName SOME_BINARY_DATE_QNAME = QName.create(TEST_QNAME, "some-binary-data"); public static final QName SOME_REF_QNAME = QName.create(TEST_QNAME, "some-ref"); public static final QName MYIDENTITY_QNAME = QName.create(TEST_QNAME, @@ -282,114 +283,115 @@ public class TestModel { } - public static ContainerNode createTestContainer() { - - - // Create a list of shoes - // This is to test leaf list entry - final LeafSetEntryNode nike = - ImmutableLeafSetEntryNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeWithValue(QName.create( - TEST_QNAME, "shoe"), "nike")).withValue("nike").build(); - - final LeafSetEntryNode puma = - ImmutableLeafSetEntryNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeWithValue(QName.create( - TEST_QNAME, "shoe"), "puma")).withValue("puma").build(); - - final LeafSetNode shoes = - ImmutableLeafSetNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeIdentifier(QName.create( - TEST_QNAME, "shoe"))).withChild(nike).withChild(puma) - .build(); - - - // Test a leaf-list where each entry contains an identity - final LeafSetEntryNode cap1 = - ImmutableLeafSetEntryNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeWithValue(QName.create( - TEST_QNAME, "capability"), DESC_QNAME)) - .withValue(DESC_QNAME).build(); - - final LeafSetNode capabilities = - ImmutableLeafSetNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeIdentifier(QName.create( - TEST_QNAME, "capability"))).withChild(cap1).build(); - - ContainerNode switchFeatures = - ImmutableContainerNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeIdentifier(SWITCH_FEATURES_QNAME)) - .withChild(capabilities).build(); - - // Create a leaf list with numbers - final LeafSetEntryNode five = - ImmutableLeafSetEntryNodeBuilder - .create() - .withNodeIdentifier( - (new YangInstanceIdentifier.NodeWithValue(QName.create( - TEST_QNAME, "number"), 5))).withValue(5).build(); - final LeafSetEntryNode fifteen = - ImmutableLeafSetEntryNodeBuilder - .create() - .withNodeIdentifier( - (new YangInstanceIdentifier.NodeWithValue(QName.create( - TEST_QNAME, "number"), 15))).withValue(15).build(); - final LeafSetNode numbers = - ImmutableLeafSetNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeIdentifier(QName.create( - TEST_QNAME, "number"))).withChild(five).withChild(fifteen) - .build(); - - - // Create augmentations - MapEntryNode mapEntry = createAugmentedListEntry(1, "First Test"); - - // Create a bits leaf + public static DataContainerNodeAttrBuilder createBaseTestContainerBuilder() { + // Create a list of shoes + // This is to test leaf list entry + final LeafSetEntryNode nike = + ImmutableLeafSetEntryNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeWithValue(QName.create( + TEST_QNAME, "shoe"), "nike")).withValue("nike").build(); + + final LeafSetEntryNode puma = + ImmutableLeafSetEntryNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeWithValue(QName.create( + TEST_QNAME, "shoe"), "puma")).withValue("puma").build(); + + final LeafSetNode shoes = + ImmutableLeafSetNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeIdentifier(QName.create( + TEST_QNAME, "shoe"))).withChild(nike).withChild(puma) + .build(); + + + // Test a leaf-list where each entry contains an identity + final LeafSetEntryNode cap1 = + ImmutableLeafSetEntryNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeWithValue(QName.create( + TEST_QNAME, "capability"), DESC_QNAME)) + .withValue(DESC_QNAME).build(); + + final LeafSetNode capabilities = + ImmutableLeafSetNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeIdentifier(QName.create( + TEST_QNAME, "capability"))).withChild(cap1).build(); + + ContainerNode switchFeatures = + ImmutableContainerNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeIdentifier(SWITCH_FEATURES_QNAME)) + .withChild(capabilities).build(); + + // Create a leaf list with numbers + final LeafSetEntryNode five = + ImmutableLeafSetEntryNodeBuilder + .create() + .withNodeIdentifier( + (new YangInstanceIdentifier.NodeWithValue(QName.create( + TEST_QNAME, "number"), 5))).withValue(5).build(); + final LeafSetEntryNode fifteen = + ImmutableLeafSetEntryNodeBuilder + .create() + .withNodeIdentifier( + (new YangInstanceIdentifier.NodeWithValue(QName.create( + TEST_QNAME, "number"), 15))).withValue(15).build(); + final LeafSetNode numbers = + ImmutableLeafSetNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeIdentifier(QName.create( + TEST_QNAME, "number"))).withChild(five).withChild(fifteen) + .build(); + + + // Create augmentations + MapEntryNode mapEntry = createAugmentedListEntry(1, "First Test"); + + // Create a bits leaf NormalizedNodeAttrBuilder> - myBits = Builders.leafBuilder().withNodeIdentifier( - new YangInstanceIdentifier.NodeIdentifier( - QName.create(TEST_QNAME, "my-bits"))).withValue( - ImmutableSet.of("foo", "bar")); + myBits = Builders.leafBuilder().withNodeIdentifier( + new YangInstanceIdentifier.NodeIdentifier( + QName.create(TEST_QNAME, "my-bits"))).withValue( + ImmutableSet.of("foo", "bar")); // Create the document - return ImmutableContainerNodeBuilder - .create() - .withNodeIdentifier( - new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME)) - .withChild(myBits.build()) - .withChild(ImmutableNodes.leafNode(DESC_QNAME, DESC)) - .withChild(ImmutableNodes.leafNode(POINTER_QNAME, "pointer")) - .withChild( - ImmutableNodes.leafNode(SOME_REF_QNAME, YangInstanceIdentifier - .builder().build())) - .withChild(ImmutableNodes.leafNode(MYIDENTITY_QNAME, DESC_QNAME)) - - // .withChild(augmentationNode) - .withChild(shoes) - .withChild(numbers) - .withChild(switchFeatures) - .withChild( - mapNodeBuilder(AUGMENTED_LIST_QNAME).withChild(mapEntry).build()) - .withChild( - mapNodeBuilder(OUTER_LIST_QNAME) - .withChild(mapEntry(OUTER_LIST_QNAME, ID_QNAME, ONE_ID)) - .withChild(BAR_NODE).build()).build(); + return ImmutableContainerNodeBuilder + .create() + .withNodeIdentifier( + new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME)) + .withChild(myBits.build()) + .withChild(ImmutableNodes.leafNode(DESC_QNAME, DESC)) + .withChild(ImmutableNodes.leafNode(POINTER_QNAME, "pointer")) + .withChild( + ImmutableNodes.leafNode(SOME_REF_QNAME, YangInstanceIdentifier + .builder().build())) + .withChild(ImmutableNodes.leafNode(MYIDENTITY_QNAME, DESC_QNAME)) + + // .withChild(augmentationNode) + .withChild(shoes) + .withChild(numbers) + .withChild(switchFeatures) + .withChild( + mapNodeBuilder(AUGMENTED_LIST_QNAME).withChild(mapEntry).build()) + .withChild( + mapNodeBuilder(OUTER_LIST_QNAME) + .withChild(mapEntry(OUTER_LIST_QNAME, ID_QNAME, ONE_ID)) + .withChild(BAR_NODE).build()); + } + public static ContainerNode createTestContainer() { + return createBaseTestContainerBuilder().build(); } public static MapEntryNode createAugmentedListEntry(int id, String name) { diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/xml/codec/XmlUtilsTest.java b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/xml/codec/XmlUtilsTest.java index 0688bfbc5c..2574bd681e 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/xml/codec/XmlUtilsTest.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/xml/codec/XmlUtilsTest.java @@ -8,11 +8,16 @@ package org.opendaylight.controller.xml.codec; - import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.io.ByteSource; -import junit.framework.Assert; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import javax.xml.parsers.DocumentBuilderFactory; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; @@ -27,15 +32,6 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; -import javax.xml.parsers.DocumentBuilderFactory; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - - public class XmlUtilsTest { private static final DocumentBuilderFactory BUILDERFACTORY; @@ -85,13 +81,13 @@ public class XmlUtilsTest { @Test public void testInputXmlToCompositeNode() { CompositeNode node = XmlUtils.inputXmlToCompositeNode(testRpc.getQName(), XML_CONTENT, schema); - ImmutableList input = (ImmutableList)node.getValue().get(0).getValue(); - SimpleNode firstNode = input.get(0); + ImmutableList> input = (ImmutableList>)node.getValue().get(0).getValue(); + SimpleNode firstNode = input.get(0); Assert.assertEquals("id", firstNode.getNodeType().getLocalName()); Assert.assertEquals("flowid", firstNode.getValue()); - SimpleNode secondNode = input.get(1); + SimpleNode secondNode = input.get(1); Assert.assertEquals("flow", secondNode.getNodeType().getLocalName()); YangInstanceIdentifier instance = (YangInstanceIdentifier) secondNode.getValue(); @@ -108,7 +104,7 @@ public class XmlUtilsTest { @Test public void testInputCompositeNodeToXML() { CompositeNode input = XmlUtils.inputXmlToCompositeNode(testRpc.getQName(), XML_CONTENT, schema); - List> childNodes = new ArrayList(); + List> childNodes = new ArrayList<>(); childNodes.add(input); QName rpcQName = schema.getOperations().iterator().next().getQName(); CompositeNode node = new ImmutableCompositeNode(rpcQName, input.getValue(), ModifyAction.REPLACE); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/test/resources/odl-datastore-test.yang b/opendaylight/md-sal/sal-clustering-commons/src/test/resources/odl-datastore-test.yang index 246cc682cd..a1fbc1fdad 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/test/resources/odl-datastore-test.yang +++ b/opendaylight/md-sal/sal-clustering-commons/src/test/resources/odl-datastore-test.yang @@ -107,6 +107,10 @@ module odl-datastore-test { } } + leaf some-binary-data { + type binary; + } + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-distributed-datastore/pom.xml index d7e7d56d49..bd42a9cdd9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/pom.xml @@ -80,7 +80,6 @@ org.opendaylight.controller sal-inmemory-datastore - 1.2.0-SNAPSHOT @@ -131,7 +130,6 @@ org.opendaylight.controller sal-clustering-commons - 1.2.0-SNAPSHOT @@ -164,7 +162,6 @@ org.slf4j slf4j-simple - ${slf4j.version} test diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java index 1a0a5dd659..061e1ab448 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java @@ -13,12 +13,6 @@ import com.google.common.base.Preconditions; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigObject; -import org.opendaylight.controller.cluster.datastore.shardstrategy.DefaultShardStrategy; -import org.opendaylight.controller.cluster.datastore.shardstrategy.ModuleShardStrategy; -import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.File; import java.util.ArrayList; import java.util.Collections; @@ -27,6 +21,11 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.opendaylight.controller.cluster.datastore.shardstrategy.DefaultShardStrategy; +import org.opendaylight.controller.cluster.datastore.shardstrategy.ModuleShardStrategy; +import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ConfigurationImpl implements Configuration { @@ -40,15 +39,15 @@ public class ConfigurationImpl implements Configuration { // Look up maps to speed things up // key = memberName, value = list of shardNames - private Map> memberShardNames = new HashMap<>(); + private final Map> memberShardNames = new HashMap<>(); // key = shardName, value = list of replicaNames (replicaNames are the same as memberNames) - private Map> shardReplicaNames = new HashMap<>(); + private final Map> shardReplicaNames = new HashMap<>(); - public ConfigurationImpl(String moduleShardsConfigPath, + public ConfigurationImpl(final String moduleShardsConfigPath, - String modulesConfigPath){ + final String modulesConfigPath){ Preconditions.checkNotNull(moduleShardsConfigPath, "moduleShardsConfigPath should not be null"); Preconditions.checkNotNull(modulesConfigPath, "modulesConfigPath should not be null"); @@ -80,7 +79,7 @@ public class ConfigurationImpl implements Configuration { readModules(modulesConfig); } - @Override public List getMemberShardNames(String memberName){ + @Override public List getMemberShardNames(final String memberName){ Preconditions.checkNotNull(memberName, "memberName should not be null"); @@ -88,7 +87,7 @@ public class ConfigurationImpl implements Configuration { return memberShardNames.get(memberName); } - List shards = new ArrayList(); + List shards = new ArrayList<>(); for(ModuleShard ms : moduleShards){ for(Shard s : ms.getShards()){ for(String m : s.getReplicas()){ @@ -105,7 +104,7 @@ public class ConfigurationImpl implements Configuration { } - @Override public Optional getModuleNameFromNameSpace(String nameSpace) { + @Override public Optional getModuleNameFromNameSpace(final String nameSpace) { Preconditions.checkNotNull(nameSpace, "nameSpace should not be null"); @@ -125,7 +124,7 @@ public class ConfigurationImpl implements Configuration { return map; } - @Override public List getShardNamesFromModuleName(String moduleName) { + @Override public List getShardNamesFromModuleName(final String moduleName) { Preconditions.checkNotNull(moduleName, "moduleName should not be null"); @@ -139,10 +138,10 @@ public class ConfigurationImpl implements Configuration { } } - return Collections.EMPTY_LIST; + return Collections.emptyList(); } - @Override public List getMembersFromShardName(String shardName) { + @Override public List getMembersFromShardName(final String shardName) { Preconditions.checkNotNull(shardName, "shardName should not be null"); @@ -159,8 +158,8 @@ public class ConfigurationImpl implements Configuration { } } } - shardReplicaNames.put(shardName, Collections.EMPTY_LIST); - return Collections.EMPTY_LIST; + shardReplicaNames.put(shardName, Collections.emptyList()); + return Collections.emptyList(); } @Override public Set getAllShardNames() { @@ -175,7 +174,7 @@ public class ConfigurationImpl implements Configuration { - private void readModules(Config modulesConfig) { + private void readModules(final Config modulesConfig) { List modulesConfigObjectList = modulesConfig.getObjectList("modules"); @@ -186,7 +185,7 @@ public class ConfigurationImpl implements Configuration { } } - private void readModuleShards(Config moduleShardsConfig) { + private void readModuleShards(final Config moduleShardsConfig) { List moduleShardsConfigObjectList = moduleShardsConfig.getObjectList("module-shards"); @@ -214,7 +213,7 @@ public class ConfigurationImpl implements Configuration { private final String moduleName; private final List shards; - public ModuleShard(String moduleName, List shards) { + public ModuleShard(final String moduleName, final List shards) { this.moduleName = moduleName; this.shards = shards; } @@ -232,7 +231,7 @@ public class ConfigurationImpl implements Configuration { private final String name; private final List replicas; - Shard(String name, List replicas) { + Shard(final String name, final List replicas) { this.name = name; this.replicas = replicas; } @@ -252,7 +251,7 @@ public class ConfigurationImpl implements Configuration { private final String nameSpace; private final ShardStrategy shardStrategy; - Module(String name, String nameSpace, String shardStrategy) { + Module(final String name, final String nameSpace, final String shardStrategy) { this.name = name; this.nameSpace = nameSpace; if(ModuleShardStrategy.NAME.equals(shardStrategy)){ @@ -280,11 +279,11 @@ public class ConfigurationImpl implements Configuration { private final ConfigObject configObject; - ConfigObjectWrapper(ConfigObject configObject){ + ConfigObjectWrapper(final ConfigObject configObject){ this.configObject = configObject; } - public String stringValue(String name){ + public String stringValue(final String name){ return configObject.get(name).unwrapped().toString(); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java index 342611298c..a8d7d22105 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistration.java @@ -53,6 +53,7 @@ public class DataChangeListenerRegistration extends AbstractUntypedActor { private static class DataChangeListenerRegistrationCreator implements Creator { + private static final long serialVersionUID = 1L; final ListenerRegistration>> registration; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxy.java index b2ae060c3d..06f3afc57c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxy.java @@ -8,12 +8,10 @@ package org.opendaylight.controller.cluster.datastore; -import java.util.concurrent.TimeUnit; import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.PoisonPill; import akka.dispatch.OnComplete; -import akka.util.Timeout; import org.opendaylight.controller.cluster.datastore.exceptions.LocalShardNotFoundException; import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistration; import org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListener; @@ -42,8 +40,6 @@ public class DataChangeListenerRegistrationProxy implements ListenerRegistration private static final Logger LOG = LoggerFactory.getLogger(DataChangeListenerRegistrationProxy.class); - public static final Timeout REGISTER_TIMEOUT = new Timeout(5, TimeUnit.MINUTES); - private volatile ActorSelection listenerRegistrationActor; private final AsyncDataChangeListener> listener; private ActorRef dataChangeListenerActor; @@ -99,7 +95,7 @@ public class DataChangeListenerRegistrationProxy implements ListenerRegistration dataChangeListenerActor = actorContext.getActorSystem().actorOf( DataChangeListener.props(listener)); - Future findFuture = actorContext.findLocalShardAsync(shardName, REGISTER_TIMEOUT); + Future findFuture = actorContext.findLocalShardAsync(shardName); findFuture.onComplete(new OnComplete() { @Override public void onComplete(Throwable failure, ActorRef shard) { @@ -121,7 +117,7 @@ public class DataChangeListenerRegistrationProxy implements ListenerRegistration Future future = actorContext.executeOperationAsync(shard, new RegisterChangeListener(path, dataChangeListenerActor.path(), scope), - REGISTER_TIMEOUT); + actorContext.getDatastoreContext().getShardInitializationTimeout()); future.onComplete(new OnComplete(){ @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java index 722e23046e..2048bde613 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java @@ -8,11 +8,15 @@ package org.opendaylight.controller.cluster.datastore; +import org.opendaylight.controller.cluster.datastore.config.ConfigurationReader; +import org.opendaylight.controller.cluster.datastore.config.FileConfigurationReader; import org.opendaylight.controller.cluster.raft.ConfigParams; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStoreConfigProperties; +import akka.util.Timeout; import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; + import java.util.concurrent.TimeUnit; /** @@ -29,11 +33,17 @@ public class DatastoreContext { private final ConfigParams shardRaftConfig; private final int shardTransactionCommitTimeoutInSeconds; private final int shardTransactionCommitQueueCapacity; + private final Timeout shardInitializationTimeout; + private final Timeout shardLeaderElectionTimeout; + private final boolean persistent; + private final ConfigurationReader configurationReader; private DatastoreContext(InMemoryDOMDataStoreConfigProperties dataStoreProperties, ConfigParams shardRaftConfig, String dataStoreMXBeanType, int operationTimeoutInSeconds, Duration shardTransactionIdleTimeout, int shardTransactionCommitTimeoutInSeconds, - int shardTransactionCommitQueueCapacity) { + int shardTransactionCommitQueueCapacity, Timeout shardInitializationTimeout, + Timeout shardLeaderElectionTimeout, + boolean persistent, ConfigurationReader configurationReader) { this.dataStoreProperties = dataStoreProperties; this.shardRaftConfig = shardRaftConfig; this.dataStoreMXBeanType = dataStoreMXBeanType; @@ -41,6 +51,10 @@ public class DatastoreContext { this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; this.shardTransactionCommitTimeoutInSeconds = shardTransactionCommitTimeoutInSeconds; this.shardTransactionCommitQueueCapacity = shardTransactionCommitQueueCapacity; + this.shardInitializationTimeout = shardInitializationTimeout; + this.shardLeaderElectionTimeout = shardLeaderElectionTimeout; + this.persistent = persistent; + this.configurationReader = configurationReader; } public static Builder newBuilder() { @@ -75,6 +89,22 @@ public class DatastoreContext { return shardTransactionCommitQueueCapacity; } + public Timeout getShardInitializationTimeout() { + return shardInitializationTimeout; + } + + public Timeout getShardLeaderElectionTimeout() { + return shardLeaderElectionTimeout; + } + + public boolean isPersistent() { + return persistent; + } + + public ConfigurationReader getConfigurationReader() { + return configurationReader; + } + public static class Builder { private InMemoryDOMDataStoreConfigProperties dataStoreProperties; private Duration shardTransactionIdleTimeout = Duration.create(10, TimeUnit.MINUTES); @@ -85,6 +115,10 @@ public class DatastoreContext { private int shardSnapshotBatchCount = 20000; private int shardHeartbeatIntervalInMillis = 500; private int shardTransactionCommitQueueCapacity = 20000; + private Timeout shardInitializationTimeout = new Timeout(5, TimeUnit.MINUTES); + private Timeout shardLeaderElectionTimeout = new Timeout(30, TimeUnit.SECONDS); + private boolean persistent = true; + private ConfigurationReader configurationReader = new FileConfigurationReader(); public Builder shardTransactionIdleTimeout(Duration shardTransactionIdleTimeout) { this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; @@ -131,6 +165,27 @@ public class DatastoreContext { return this; } + public Builder shardInitializationTimeout(long timeout, TimeUnit unit) { + this.shardInitializationTimeout = new Timeout(timeout, unit); + return this; + } + + public Builder shardLeaderElectionTimeout(long timeout, TimeUnit unit) { + this.shardLeaderElectionTimeout = new Timeout(timeout, unit); + return this; + } + + public Builder configurationReader(ConfigurationReader configurationReader){ + this.configurationReader = configurationReader; + return this; + } + + + public Builder persistent(boolean persistent){ + this.persistent = persistent; + return this; + } + public DatastoreContext build() { DefaultConfigParamsImpl raftConfig = new DefaultConfigParamsImpl(); raftConfig.setHeartBeatInterval(new FiniteDuration(shardHeartbeatIntervalInMillis, @@ -140,7 +195,9 @@ public class DatastoreContext { return new DatastoreContext(dataStoreProperties, raftConfig, dataStoreMXBeanType, operationTimeoutInSeconds, shardTransactionIdleTimeout, - shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity); + shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity, + shardInitializationTimeout, shardLeaderElectionTimeout, + persistent, configurationReader); } } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java index 2c73807dca..930c5f7257 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java @@ -53,9 +53,8 @@ public class DistributedDataStore implements DOMStore, SchemaContextListener, Au actorContext = new ActorContext(actorSystem, actorSystem.actorOf( ShardManager.props(type, cluster, configuration, datastoreContext) - .withMailbox(ActorContext.MAILBOX), shardManagerId ), cluster, configuration); - - actorContext.setOperationTimeout(datastoreContext.getOperationTimeoutInSeconds()); + .withMailbox(ActorContext.MAILBOX), shardManagerId ), + cluster, configuration, datastoreContext); } public DistributedDataStore(ActorContext actorContext) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java index a6f187d065..004faf2de1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java @@ -11,27 +11,26 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorSystem; import akka.actor.Props; import akka.osgi.BundleDelegatingClassLoader; -import com.google.common.base.Preconditions; -import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; +import org.opendaylight.controller.cluster.datastore.config.ConfigurationReader; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory; import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.osgi.framework.BundleContext; -import java.io.File; import java.util.concurrent.atomic.AtomicReference; public class DistributedDataStoreFactory { - public static final String AKKA_CONF_PATH = "./configuration/initial/akka.conf"; public static final String ACTOR_SYSTEM_NAME = "opendaylight-cluster-data"; + public static final String CONFIGURATION_NAME = "odl-cluster-data"; - private static AtomicReference actorSystem = new AtomicReference<>(); + + private static AtomicReference persistentActorSystem = new AtomicReference<>(); public static DistributedDataStore createInstance(String name, SchemaService schemaService, DatastoreContext datastoreContext, BundleContext bundleContext) { - ActorSystem actorSystem = getOrCreateInstance(bundleContext); + ActorSystem actorSystem = getOrCreateInstance(bundleContext, datastoreContext.getConfigurationReader()); Configuration config = new ConfigurationImpl("module-shards.conf", "modules.conf"); final DistributedDataStore dataStore = new DistributedDataStore(actorSystem, name, new ClusterWrapperImpl(actorSystem), @@ -42,27 +41,26 @@ public class DistributedDataStoreFactory { return dataStore; } - synchronized private static final ActorSystem getOrCreateInstance(final BundleContext bundleContext) { + synchronized private static final ActorSystem getOrCreateInstance(final BundleContext bundleContext, ConfigurationReader configurationReader) { + + AtomicReference actorSystemReference = persistentActorSystem; + String configurationName = CONFIGURATION_NAME; + String actorSystemName = ACTOR_SYSTEM_NAME; - if (actorSystem.get() != null){ - return actorSystem.get(); + if (actorSystemReference.get() != null){ + return actorSystemReference.get(); } + // Create an OSGi bundle classloader for actor system BundleDelegatingClassLoader classLoader = new BundleDelegatingClassLoader(bundleContext.getBundle(), Thread.currentThread().getContextClassLoader()); - ActorSystem system = ActorSystem.create(ACTOR_SYSTEM_NAME, - ConfigFactory.load(readAkkaConfiguration()).getConfig(CONFIGURATION_NAME), classLoader); + ActorSystem system = ActorSystem.create(actorSystemName, + ConfigFactory.load(configurationReader.read()).getConfig(configurationName), classLoader); system.actorOf(Props.create(TerminationMonitor.class), "termination-monitor"); - actorSystem.set(system); + actorSystemReference.set(system); return system; } - - private static final Config readAkkaConfiguration() { - File defaultConfigFile = new File(AKKA_CONF_PATH); - Preconditions.checkState(defaultConfigFile.exists(), "akka.conf is missing"); - return ConfigFactory.parseFile(defaultConfigFile); - } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java index 789d51a19f..4b130950f2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java @@ -27,9 +27,19 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Nonnull; +import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.common.actor.CommonConfig; import org.opendaylight.controller.cluster.common.actor.MeteringBehavior; import org.opendaylight.controller.cluster.datastore.ShardCommitCoordinator.CohortEntry; +import org.opendaylight.controller.cluster.datastore.compat.BackwardsCompatibleThreePhaseCommitCohort; +import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException; import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; import org.opendaylight.controller.cluster.datastore.identifiers.ShardTransactionIdentifier; import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardMBeanFactory; @@ -75,14 +85,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; -import javax.annotation.Nonnull; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; - /** * A Shard represents a portion of the logical data tree
    *

    @@ -103,10 +105,6 @@ public class Shard extends RaftActor { private final LoggingAdapter LOG = Logging.getLogger(getContext().system(), this); - // By default persistent will be true and can be turned off using the system - // property shard.persistent - private final boolean persistent; - /// The name of this shard private final ShardIdentifier name; @@ -119,6 +117,8 @@ public class Shard extends RaftActor { private final DatastoreContext datastoreContext; + private final DataPersistenceProvider dataPersistenceProvider; + private SchemaContext schemaContext; private ActorRef createSnapshotTransaction; @@ -147,12 +147,9 @@ public class Shard extends RaftActor { this.name = name; this.datastoreContext = datastoreContext; this.schemaContext = schemaContext; + this.dataPersistenceProvider = (datastoreContext.isPersistent()) ? new PersistentDataProvider() : new NonPersistentRaftDataProvider(); - String setting = System.getProperty("shard.persistent"); - - this.persistent = !"false".equals(setting); - - LOG.info("Shard created : {} persistent : {}", name, persistent); + LOG.info("Shard created : {} persistent : {}", name, datastoreContext.isPersistent()); store = InMemoryDOMDataStoreFactory.create(name.toString(), null, datastoreContext.getDataStoreProperties()); @@ -210,7 +207,7 @@ public class Shard extends RaftActor { } @Override - public void onReceiveRecover(Object message) { + public void onReceiveRecover(Object message) throws Exception { if(LOG.isDebugEnabled()) { LOG.debug("onReceiveRecover: Received message {} from {}", message.getClass().toString(), @@ -229,7 +226,7 @@ public class Shard extends RaftActor { } @Override - public void onReceiveCommand(Object message) { + public void onReceiveCommand(Object message) throws Exception { if(LOG.isDebugEnabled()) { LOG.debug("onReceiveCommand: Received message {} from {}", message, getSender()); } @@ -307,12 +304,8 @@ public class Shard extends RaftActor { // currently uses a same thread executor anyway. cohortEntry.getCohort().preCommit().get(); - if(persistent) { - Shard.this.persistData(getSender(), transactionID, - new CompositeModificationPayload(cohortEntry.getModification().toSerializable())); - } else { - Shard.this.finishCommit(getSender(), transactionID); - } + Shard.this.persistData(getSender(), transactionID, + new CompositeModificationPayload(cohortEntry.getModification().toSerializable())); } catch (InterruptedException | ExecutionException e) { LOG.error(e, "An exception occurred while preCommitting transaction {}", cohortEntry.getTransactionID()); @@ -381,7 +374,8 @@ public class Shard extends RaftActor { } private void handleForwardedReadyTransaction(ForwardedReadyTransaction ready) { - LOG.debug("Readying transaction {}", ready.getTransactionID()); + LOG.debug("Readying transaction {}, client version {}", ready.getTransactionID(), + ready.getTxnClientVersion()); // This message is forwarded by the ShardTransaction on ready. We cache the cohort in the // commitCoordinator in preparation for the subsequent three phase commit initiated by @@ -389,12 +383,22 @@ public class Shard extends RaftActor { commitCoordinator.transactionReady(ready.getTransactionID(), ready.getCohort(), ready.getModification()); - // Return our actor path as we'll handle the three phase commit. - ReadyTransactionReply readyTransactionReply = - new ReadyTransactionReply(Serialization.serializedActorPath(self())); - getSender().tell( - ready.isReturnSerialized() ? readyTransactionReply.toSerializable() : readyTransactionReply, - getSelf()); + // Return our actor path as we'll handle the three phase commit, except if the Tx client + // version < 1 (Helium-1 version). This means the Tx was initiated by a base Helium version + // node. In that case, the subsequent 3-phase commit messages won't contain the + // transactionId so to maintain backwards compatibility, we create a separate cohort actor + // to provide the compatible behavior. + ActorRef replyActorPath = self(); + if(ready.getTxnClientVersion() < CreateTransaction.HELIUM_1_VERSION) { + LOG.debug("Creating BackwardsCompatibleThreePhaseCommitCohort"); + replyActorPath = getContext().actorOf(BackwardsCompatibleThreePhaseCommitCohort.props( + ready.getTransactionID())); + } + + ReadyTransactionReply readyTransactionReply = new ReadyTransactionReply( + Serialization.serializedActorPath(replyActorPath)); + getSender().tell(ready.isReturnSerialized() ? readyTransactionReply.toSerializable() : + readyTransactionReply, getSelf()); } private void handleAbortTransaction(AbortTransaction abort) { @@ -442,9 +446,9 @@ public class Shard extends RaftActor { } else if (getLeader() != null) { getLeader().forward(message, getContext()); } else { - getSender().tell(new akka.actor.Status.Failure(new IllegalStateException( + getSender().tell(new akka.actor.Status.Failure(new NoShardLeaderException( "Could not find shard leader so transaction cannot be created. This typically happens" + - " when system is coming up or recovering and a leader is being elected. Try again" + + " when the system is coming up or recovering and a leader is being elected. Try again" + " later.")), getSelf()); } } @@ -472,10 +476,8 @@ public class Shard extends RaftActor { } } - private ActorRef createTypedTransactionActor( - int transactionType, - ShardTransactionIdentifier transactionId, - String transactionChainId ) { + private ActorRef createTypedTransactionActor(int transactionType, + ShardTransactionIdentifier transactionId, String transactionChainId, int clientVersion ) { DOMStoreTransactionFactory factory = store; @@ -488,8 +490,8 @@ public class Shard extends RaftActor { } } - if(this.schemaContext == null){ - throw new NullPointerException("schemaContext should not be null"); + if(this.schemaContext == null) { + throw new IllegalStateException("SchemaContext is not set"); } if (transactionType == TransactionProxy.TransactionType.READ_ONLY.ordinal()) { @@ -499,7 +501,8 @@ public class Shard extends RaftActor { return getContext().actorOf( ShardTransaction.props(factory.newReadOnlyTransaction(), getSelf(), schemaContext,datastoreContext, shardMBean, - transactionId.getRemoteTransactionId()), transactionId.toString()); + transactionId.getRemoteTransactionId(), clientVersion), + transactionId.toString()); } else if (transactionType == TransactionProxy.TransactionType.READ_WRITE.ordinal()) { @@ -508,7 +511,8 @@ public class Shard extends RaftActor { return getContext().actorOf( ShardTransaction.props(factory.newReadWriteTransaction(), getSelf(), schemaContext, datastoreContext, shardMBean, - transactionId.getRemoteTransactionId()), transactionId.toString()); + transactionId.getRemoteTransactionId(), clientVersion), + transactionId.toString()); } else if (transactionType == TransactionProxy.TransactionType.WRITE_ONLY.ordinal()) { @@ -518,7 +522,8 @@ public class Shard extends RaftActor { return getContext().actorOf( ShardTransaction.props(factory.newWriteOnlyTransaction(), getSelf(), schemaContext, datastoreContext, shardMBean, - transactionId.getRemoteTransactionId()), transactionId.toString()); + transactionId.getRemoteTransactionId(), clientVersion), + transactionId.toString()); } else { throw new IllegalArgumentException( "Shard="+name + ":CreateTransaction message has unidentified transaction type=" @@ -527,27 +532,32 @@ public class Shard extends RaftActor { } private void createTransaction(CreateTransaction createTransaction) { - createTransaction(createTransaction.getTransactionType(), - createTransaction.getTransactionId(), createTransaction.getTransactionChainId()); + try { + ActorRef transactionActor = createTransaction(createTransaction.getTransactionType(), + createTransaction.getTransactionId(), createTransaction.getTransactionChainId(), + createTransaction.getVersion()); + + getSender().tell(new CreateTransactionReply(Serialization.serializedActorPath(transactionActor), + createTransaction.getTransactionId()).toSerializable(), getSelf()); + } catch (Exception e) { + getSender().tell(new akka.actor.Status.Failure(e), getSelf()); + } } - private ActorRef createTransaction(int transactionType, String remoteTransactionId, String transactionChainId) { + private ActorRef createTransaction(int transactionType, String remoteTransactionId, + String transactionChainId, int clientVersion) { ShardTransactionIdentifier transactionId = ShardTransactionIdentifier.builder() .remoteTransactionId(remoteTransactionId) .build(); + if(LOG.isDebugEnabled()) { LOG.debug("Creating transaction : {} ", transactionId); } - ActorRef transactionActor = - createTypedTransactionActor(transactionType, transactionId, transactionChainId); - getSender() - .tell(new CreateTransactionReply( - Serialization.serializedActorPath(transactionActor), - remoteTransactionId).toSerializable(), - getSelf()); + ActorRef transactionActor = createTypedTransactionActor(transactionType, transactionId, + transactionChainId, clientVersion); return transactionActor; } @@ -606,7 +616,7 @@ public class Shard extends RaftActor { LOG.debug("registerDataChangeListener sending reply, listenerRegistrationPath = {} ", listenerRegistration.path()); - getSender().tell(new RegisterChangeListenerReply(listenerRegistration.path()),getSelf()); + getSender().tell(new RegisterChangeListenerReply(listenerRegistration.path()), getSelf()); } private ListenerRegistration { private static final long serialVersionUID = 1L; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java index e861165c6b..88f818f0fa 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java @@ -26,6 +26,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.common.collect.Lists; +import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActorWithMetering; import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; import org.opendaylight.controller.cluster.datastore.identifiers.ShardManagerIdentifier; @@ -44,6 +45,7 @@ import org.opendaylight.controller.cluster.datastore.messages.UpdateSchemaContex import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.duration.Duration; + import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; @@ -91,6 +93,8 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { private final Collection knownModules = new HashSet<>(128); + private final DataPersistenceProvider dataPersistenceProvider; + /** * @param type defines the kind of data that goes into shards created by this shard manager. Examples of type would be * configuration or operational @@ -102,6 +106,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { this.cluster = Preconditions.checkNotNull(cluster, "cluster should not be null"); this.configuration = Preconditions.checkNotNull(configuration, "configuration should not be null"); this.datastoreContext = datastoreContext; + this.dataPersistenceProvider = createDataPersistenceProvider(datastoreContext.isPersistent()); // Subscribe this actor to cluster member events cluster.subscribeToMemberEvents(getSelf()); @@ -109,6 +114,10 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { createLocalShards(); } + protected DataPersistenceProvider createDataPersistenceProvider(boolean persistent) { + return (persistent) ? new PersistentDataProvider() : new NonPersistentDataProvider(); + } + public static Props props(final String type, final ClusterWrapper cluster, final Configuration configuration, @@ -170,18 +179,27 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { @Override protected void handleRecover(Object message) throws Exception { - if(message instanceof SchemaContextModules){ - SchemaContextModules msg = (SchemaContextModules) message; - knownModules.clear(); - knownModules.addAll(msg.getModules()); - } else if(message instanceof RecoveryFailure){ - RecoveryFailure failure = (RecoveryFailure) message; - LOG.error(failure.cause(), "Recovery failed"); - } else if(message instanceof RecoveryCompleted){ - LOG.info("Recovery complete : {}", persistenceId()); - - // Delete all the messages from the akka journal except the last one - deleteMessages(lastSequenceNr() - 1); + if(dataPersistenceProvider.isRecoveryApplicable()) { + if (message instanceof SchemaContextModules) { + SchemaContextModules msg = (SchemaContextModules) message; + knownModules.clear(); + knownModules.addAll(msg.getModules()); + } else if (message instanceof RecoveryFailure) { + RecoveryFailure failure = (RecoveryFailure) message; + LOG.error(failure.cause(), "Recovery failed"); + } else if (message instanceof RecoveryCompleted) { + LOG.info("Recovery complete : {}", persistenceId()); + + // Delete all the messages from the akka journal except the last one + deleteMessages(lastSequenceNr() - 1); + } + } else { + if (message instanceof RecoveryCompleted) { + LOG.info("Recovery complete : {}", persistenceId()); + + // Delete all the messages from the akka journal + deleteMessages(lastSequenceNr()); + } } } @@ -262,15 +280,15 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { knownModules.clear(); knownModules.addAll(newModules); - persist(new SchemaContextModules(newModules), new Procedure() { + dataPersistenceProvider.persist(new SchemaContextModules(newModules), new Procedure() { @Override public void apply(SchemaContextModules param) throws Exception { LOG.info("Sending new SchemaContext to Shards"); for (ShardInformation info : localShards.values()) { - if(info.getActor() == null) { + if (info.getActor() == null) { info.setActor(getContext().actorOf(Shard.props(info.getShardId(), - info.getPeerAddresses(), datastoreContext, schemaContext), + info.getPeerAddresses(), datastoreContext, schemaContext), info.getShardId().toString())); } else { info.getActor().tell(message, getSelf()); @@ -430,6 +448,11 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { return knownModules; } + @VisibleForTesting + DataPersistenceProvider getDataPersistenceProvider() { + return dataPersistenceProvider; + } + private class ShardInformation { private final ShardIdentifier shardId; private final String shardName; @@ -533,6 +556,7 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { } static class SchemaContextModules implements Serializable { + private static final long serialVersionUID = 1L; private final Set modules; SchemaContextModules(Set modules){ diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java index d12e9997bb..9d8f57252a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java @@ -26,8 +26,9 @@ public class ShardReadTransaction extends ShardTransaction { private final DOMStoreReadTransaction transaction; public ShardReadTransaction(DOMStoreReadTransaction transaction, ActorRef shardActor, - SchemaContext schemaContext, ShardStats shardStats, String transactionID) { - super(shardActor, schemaContext, shardStats, transactionID); + SchemaContext schemaContext, ShardStats shardStats, String transactionID, + int txnClientVersion) { + super(shardActor, schemaContext, shardStats, transactionID, txnClientVersion); this.transaction = transaction; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java index b1fd02d217..e558677ebb 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java @@ -26,8 +26,9 @@ public class ShardReadWriteTransaction extends ShardWriteTransaction { private final DOMStoreReadWriteTransaction transaction; public ShardReadWriteTransaction(DOMStoreReadWriteTransaction transaction, ActorRef shardActor, - SchemaContext schemaContext, ShardStats shardStats, String transactionID) { - super(transaction, shardActor, schemaContext, shardStats, transactionID); + SchemaContext schemaContext, ShardStats shardStats, String transactionID, + int txnClientVersion) { + super(transaction, shardActor, schemaContext, shardStats, transactionID, txnClientVersion); this.transaction = transaction; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java index 32de47f451..59bb4bfd77 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java @@ -57,26 +57,29 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; */ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering { + protected static final boolean SERIALIZED_REPLY = true; + private final ActorRef shardActor; private final SchemaContext schemaContext; private final ShardStats shardStats; private final String transactionID; - protected static final boolean SERIALIZED_REPLY = true; + private final int txnClientVersion; protected ShardTransaction(ActorRef shardActor, SchemaContext schemaContext, - ShardStats shardStats, String transactionID) { + ShardStats shardStats, String transactionID, int txnClientVersion) { super("shard-tx"); //actor name override used for metering. This does not change the "real" actor name this.shardActor = shardActor; this.schemaContext = schemaContext; this.shardStats = shardStats; this.transactionID = transactionID; + this.txnClientVersion = txnClientVersion; } public static Props props(DOMStoreTransaction transaction, ActorRef shardActor, SchemaContext schemaContext,DatastoreContext datastoreContext, ShardStats shardStats, - String transactionID) { + String transactionID, int txnClientVersion) { return Props.create(new ShardTransactionCreator(transaction, shardActor, schemaContext, - datastoreContext, shardStats, transactionID)); + datastoreContext, shardStats, transactionID, txnClientVersion)); } protected abstract DOMStoreTransaction getDOMStoreTransaction(); @@ -93,6 +96,10 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering return schemaContext; } + protected int getTxnClientVersion() { + return txnClientVersion; + } + @Override public void handleReceive(Object message) throws Exception { if (message.getClass().equals(CloseTransaction.SERIALIZABLE_CLASS)) { @@ -169,16 +176,18 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering final DatastoreContext datastoreContext; final ShardStats shardStats; final String transactionID; + final int txnClientVersion; ShardTransactionCreator(DOMStoreTransaction transaction, ActorRef shardActor, SchemaContext schemaContext, DatastoreContext datastoreContext, - ShardStats shardStats, String transactionID) { + ShardStats shardStats, String transactionID, int txnClientVersion) { this.transaction = transaction; this.shardActor = shardActor; this.shardStats = shardStats; this.schemaContext = schemaContext; this.datastoreContext = datastoreContext; this.transactionID = transactionID; + this.txnClientVersion = txnClientVersion; } @Override @@ -186,13 +195,13 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering ShardTransaction tx; if(transaction instanceof DOMStoreReadWriteTransaction) { tx = new ShardReadWriteTransaction((DOMStoreReadWriteTransaction)transaction, - shardActor, schemaContext, shardStats, transactionID); + shardActor, schemaContext, shardStats, transactionID, txnClientVersion); } else if(transaction instanceof DOMStoreReadTransaction) { tx = new ShardReadTransaction((DOMStoreReadTransaction)transaction, shardActor, - schemaContext, shardStats, transactionID); + schemaContext, shardStats, transactionID, txnClientVersion); } else { tx = new ShardWriteTransaction((DOMStoreWriteTransaction)transaction, - shardActor, schemaContext, shardStats, transactionID); + shardActor, schemaContext, shardStats, transactionID, txnClientVersion); } tx.getContext().setReceiveTimeout(datastoreContext.getShardTransactionIdleTimeout()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java index 943a82f6f9..78c6a558f4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java @@ -63,19 +63,22 @@ public class ShardTransactionChain extends AbstractUntypedActor { return getContext().actorOf( ShardTransaction.props( chain.newReadOnlyTransaction(), getShardActor(), schemaContext, datastoreContext, shardStats, - createTransaction.getTransactionId()), transactionName); + createTransaction.getTransactionId(), + createTransaction.getVersion()), transactionName); } else if (createTransaction.getTransactionType() == TransactionProxy.TransactionType.READ_WRITE.ordinal()) { return getContext().actorOf( ShardTransaction.props( chain.newReadWriteTransaction(), getShardActor(), schemaContext, datastoreContext, shardStats, - createTransaction.getTransactionId()), transactionName); + createTransaction.getTransactionId(), + createTransaction.getVersion()), transactionName); } else if (createTransaction.getTransactionType() == TransactionProxy.TransactionType.WRITE_ONLY.ordinal()) { return getContext().actorOf( ShardTransaction.props( chain.newWriteOnlyTransaction(), getShardActor(), schemaContext, datastoreContext, shardStats, - createTransaction.getTransactionId()), transactionName); + createTransaction.getTransactionId(), + createTransaction.getVersion()), transactionName); } else { throw new IllegalArgumentException ( "CreateTransaction message has unidentified transaction type=" + diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java index b0eaf98d59..44f2c7bd0a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java @@ -42,8 +42,9 @@ public class ShardWriteTransaction extends ShardTransaction { private final DOMStoreWriteTransaction transaction; public ShardWriteTransaction(DOMStoreWriteTransaction transaction, ActorRef shardActor, - SchemaContext schemaContext, ShardStats shardStats, String transactionID) { - super(shardActor, schemaContext, shardStats, transactionID); + SchemaContext schemaContext, ShardStats shardStats, String transactionID, + int txnClientVersion) { + super(shardActor, schemaContext, shardStats, transactionID, txnClientVersion); this.transaction = transaction; } @@ -144,8 +145,8 @@ public class ShardWriteTransaction extends ShardTransaction { DOMStoreThreePhaseCommitCohort cohort = transaction.ready(); - getShardActor().forward(new ForwardedReadyTransaction(transactionID, cohort, modification, - returnSerialized), getContext()); + getShardActor().forward(new ForwardedReadyTransaction(transactionID, getTxnClientVersion(), + cohort, modification, returnSerialized), getContext()); // The shard will handle the commit from here so we're no longer needed - self-destruct. getSelf().tell(PoisonPill.getInstance(), getSelf()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxy.java index b467ee4ddb..87959efe8a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxy.java @@ -9,71 +9,209 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorSelection; -import akka.dispatch.Futures; +import akka.dispatch.OnComplete; +import com.google.common.base.Preconditions; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionChain; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.md.sal.common.api.data.TransactionChainClosedException; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; -import scala.concurrent.Await; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import scala.concurrent.Future; - -import java.util.Collections; -import java.util.List; +import scala.concurrent.Promise; /** * TransactionChainProxy acts as a proxy for a DOMStoreTransactionChain created on a remote shard */ -public class TransactionChainProxy implements DOMStoreTransactionChain{ +public class TransactionChainProxy implements DOMStoreTransactionChain { + + private static final Logger LOG = LoggerFactory.getLogger(TransactionChainProxy.class); + + private interface State { + boolean isReady(); + + List> getPreviousReadyFutures(); + } + + private static class Allocated implements State { + private final ChainedTransactionProxy transaction; + + Allocated(ChainedTransactionProxy transaction) { + this.transaction = transaction; + } + + @Override + public boolean isReady() { + return transaction.isReady(); + } + + @Override + public List> getPreviousReadyFutures() { + return transaction.getReadyFutures(); + } + } + + private static abstract class AbstractDefaultState implements State { + @Override + public List> getPreviousReadyFutures() { + return Collections.emptyList(); + } + } + + private static final State IDLE_STATE = new AbstractDefaultState() { + @Override + public boolean isReady() { + return true; + } + }; + + private static final State CLOSED_STATE = new AbstractDefaultState() { + @Override + public boolean isReady() { + throw new TransactionChainClosedException("Transaction chain has been closed"); + } + }; + + private static final AtomicInteger counter = new AtomicInteger(0); + private final ActorContext actorContext; private final String transactionChainId; - private volatile List> cohortFutures = Collections.emptyList(); + private volatile State currentState = IDLE_STATE; public TransactionChainProxy(ActorContext actorContext) { this.actorContext = actorContext; - transactionChainId = actorContext.getCurrentMemberName() + "-" + System.currentTimeMillis(); + transactionChainId = actorContext.getCurrentMemberName() + "-txn-chain-" + counter.incrementAndGet(); + } + + public String getTransactionChainId() { + return transactionChainId; } @Override public DOMStoreReadTransaction newReadOnlyTransaction() { - return new TransactionProxy(actorContext, - TransactionProxy.TransactionType.READ_ONLY, this); + State localState = currentState; + checkReadyState(localState); + + return new ChainedTransactionProxy(actorContext, TransactionProxy.TransactionType.READ_ONLY, + transactionChainId, localState.getPreviousReadyFutures()); } @Override public DOMStoreReadWriteTransaction newReadWriteTransaction() { - return new TransactionProxy(actorContext, - TransactionProxy.TransactionType.READ_WRITE, this); + return allocateWriteTransaction(TransactionProxy.TransactionType.READ_WRITE); } @Override public DOMStoreWriteTransaction newWriteOnlyTransaction() { - return new TransactionProxy(actorContext, - TransactionProxy.TransactionType.WRITE_ONLY, this); + return allocateWriteTransaction(TransactionProxy.TransactionType.WRITE_ONLY); } @Override public void close() { + currentState = CLOSED_STATE; + // Send a close transaction chain request to each and every shard actorContext.broadcast(new CloseTransactionChain(transactionChainId)); } - public String getTransactionChainId() { - return transactionChainId; + private ChainedTransactionProxy allocateWriteTransaction(TransactionProxy.TransactionType type) { + State localState = currentState; + + checkReadyState(localState); + + // Pass the ready Futures from the previous Tx. + ChainedTransactionProxy txProxy = new ChainedTransactionProxy(actorContext, type, + transactionChainId, localState.getPreviousReadyFutures()); + + currentState = new Allocated(txProxy); + + return txProxy; } - public void onTransactionReady(List> cohortFutures){ - this.cohortFutures = cohortFutures; + private void checkReadyState(State state) { + Preconditions.checkState(state.isReady(), "Previous transaction is not ready yet"); } - public void waitTillCurrentTransactionReady(){ - try { - Await.result(Futures - .sequence(this.cohortFutures, actorContext.getActorSystem().dispatcher()), - actorContext.getOperationDuration()); - } catch (Exception e) { - throw new IllegalStateException("Failed when waiting for transaction on a chain to become ready", e); + private static class ChainedTransactionProxy extends TransactionProxy { + + /** + * Stores the ready Futures from the previous Tx in the chain. + */ + private final List> previousReadyFutures; + + /** + * Stores the ready Futures from this transaction when it is readied. + */ + private volatile List> readyFutures; + + private ChainedTransactionProxy(ActorContext actorContext, TransactionType transactionType, + String transactionChainId, List> previousReadyFutures) { + super(actorContext, transactionType, transactionChainId); + this.previousReadyFutures = previousReadyFutures; + } + + List> getReadyFutures() { + return readyFutures; + } + + boolean isReady() { + return readyFutures != null; + } + + @Override + protected void onTransactionReady(List> readyFutures) { + LOG.debug("onTransactionReady {} pending readyFutures size {} chain {}", getIdentifier(), + readyFutures.size(), getTransactionChainId()); + this.readyFutures = readyFutures; + } + + /** + * This method is overridden to ensure the previous Tx's ready operations complete + * before we create the next shard Tx in the chain to avoid creation failures if the + * previous Tx's ready operations haven't completed yet. + */ + @Override + protected Future sendCreateTransaction(final ActorSelection shard, + final Object serializedCreateMessage) { + + // Check if there are any previous ready Futures, otherwise let the super class handle it. + if(previousReadyFutures.isEmpty()) { + return super.sendCreateTransaction(shard, serializedCreateMessage); + } + + // Combine the ready Futures into 1. + Future> combinedFutures = akka.dispatch.Futures.sequence( + previousReadyFutures, getActorContext().getActorSystem().dispatcher()); + + // Add a callback for completion of the combined Futures. + final Promise createTxPromise = akka.dispatch.Futures.promise(); + OnComplete> onComplete = new OnComplete>() { + @Override + public void onComplete(Throwable failure, Iterable notUsed) { + if(failure != null) { + // A Ready Future failed so fail the returned Promise. + createTxPromise.failure(failure); + } else { + LOG.debug("Previous Tx readied - sending CreateTransaction for {} on chain {}", + getIdentifier(), getTransactionChainId()); + + // Send the CreateTx message and use the resulting Future to complete the + // returned Promise. + createTxPromise.completeWith(getActorContext().executeOperationAsync(shard, + serializedCreateMessage)); + } + } + }; + + combinedFutures.onComplete(onComplete, getActorContext().getActorSystem().dispatcher()); + + return createTxPromise.future(); } } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java index 715f48c349..443e0af9e0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorSelection; +import akka.dispatch.Mapper; import akka.dispatch.OnComplete; - import com.google.common.annotations.VisibleForTesting; import com.google.common.base.FinalizablePhantomReference; import com.google.common.base.FinalizableReferenceQueue; @@ -18,10 +18,18 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.SettableFuture; - -import org.opendaylight.controller.cluster.datastore.exceptions.PrimaryNotFoundException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicLong; +import javax.annotation.concurrent.GuardedBy; +import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException; import org.opendaylight.controller.cluster.datastore.identifiers.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction; import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; @@ -46,17 +54,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import scala.Function1; import scala.concurrent.Future; -import scala.runtime.AbstractFunction1; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicLong; +import scala.concurrent.Promise; +import scala.concurrent.duration.FiniteDuration; /** * TransactionProxy acts as a proxy for one or more transactions that were created on a remote shard @@ -72,18 +72,14 @@ import java.util.concurrent.atomic.AtomicLong; */ public class TransactionProxy implements DOMStoreReadWriteTransaction { - private final TransactionChainProxy transactionChainProxy; - - - - public enum TransactionType { + public static enum TransactionType { READ_ONLY, WRITE_ONLY, READ_WRITE } - static Function1 SAME_FAILURE_TRANSFORMER = new AbstractFunction1< - Throwable, Throwable>() { + static final Mapper SAME_FAILURE_TRANSFORMER = + new Mapper() { @Override public Throwable apply(Throwable failure) { return failure; @@ -92,9 +88,13 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private static final AtomicLong counter = new AtomicLong(); - private static final Logger - LOG = LoggerFactory.getLogger(TransactionProxy.class); + private static final Logger LOG = LoggerFactory.getLogger(TransactionProxy.class); + /** + * Time interval in between transaction create retries. + */ + private static final FiniteDuration CREATE_TX_TRY_INTERVAL = + FiniteDuration.create(1, TimeUnit.SECONDS); /** * Used to enqueue the PhantomReferences for read-only TransactionProxy instances. The @@ -157,7 +157,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { for(ActorSelection actor : remoteTransactionActors) { LOG.trace("Sending CloseTransaction to {}", actor); actorContext.sendOperationAsync(actor, - new CloseTransaction().toSerializable()); + new CloseTransaction().toSerializable()); } } } @@ -173,36 +173,31 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private List remoteTransactionActors; private AtomicBoolean remoteTransactionActorsMB; - private final Map remoteTransactionPaths = new HashMap<>(); + /** + * Stores the create transaction results per shard. + */ + private final Map txFutureCallbackMap = new HashMap<>(); private final TransactionType transactionType; private final ActorContext actorContext; private final TransactionIdentifier identifier; + private final String transactionChainId; private final SchemaContext schemaContext; private boolean inReadyState; public TransactionProxy(ActorContext actorContext, TransactionType transactionType) { - this(actorContext, transactionType, null); - } - - @VisibleForTesting - List> getRecordedOperationFutures() { - List> recordedOperationFutures = Lists.newArrayList(); - for(TransactionContext transactionContext : remoteTransactionPaths.values()) { - recordedOperationFutures.addAll(transactionContext.getRecordedOperationFutures()); - } - - return recordedOperationFutures; + this(actorContext, transactionType, ""); } - public TransactionProxy(ActorContext actorContext, TransactionType transactionType, TransactionChainProxy transactionChainProxy) { + public TransactionProxy(ActorContext actorContext, TransactionType transactionType, + String transactionChainId) { this.actorContext = Preconditions.checkNotNull(actorContext, "actorContext should not be null"); this.transactionType = Preconditions.checkNotNull(transactionType, "transactionType should not be null"); this.schemaContext = Preconditions.checkNotNull(actorContext.getSchemaContext(), "schemaContext should not be null"); - this.transactionChainProxy = transactionChainProxy; + this.transactionChainId = transactionChainId; String memberName = actorContext.getCurrentMemberName(); if(memberName == null){ @@ -224,9 +219,33 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { new TransactionProxyCleanupPhantomReference(this); phantomReferenceCache.put(cleanup, cleanup); } - if(LOG.isDebugEnabled()) { - LOG.debug("Created txn {} of type {}", identifier, transactionType); + + LOG.debug("Created txn {} of type {} on chain {}", identifier, transactionType, transactionChainId); + } + + @VisibleForTesting + List> getRecordedOperationFutures() { + List> recordedOperationFutures = Lists.newArrayList(); + for(TransactionFutureCallback txFutureCallback : txFutureCallbackMap.values()) { + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + recordedOperationFutures.addAll(transactionContext.getRecordedOperationFutures()); + } + } + + return recordedOperationFutures; + } + + @VisibleForTesting + boolean hasTransactionContext() { + for(TransactionFutureCallback txFutureCallback : txFutureCallbackMap.values()) { + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + return true; + } } + + return false; } @Override @@ -236,26 +255,82 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { Preconditions.checkState(transactionType != TransactionType.WRITE_ONLY, "Read operation on write-only transaction is not allowed"); - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} read {}", identifier, path); + LOG.debug("Tx {} read {}", identifier, path); + + TransactionFutureCallback txFutureCallback = getOrCreateTxFutureCallback(path); + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + + CheckedFuture>, ReadFailedException> future; + if(transactionContext != null) { + future = transactionContext.readData(path); + } else { + // The shard Tx hasn't been created yet so add the Tx operation to the Tx Future + // callback to be executed after the Tx is created. + final SettableFuture>> proxyFuture = SettableFuture.create(); + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + Futures.addCallback(transactionContext.readData(path), + new FutureCallback>>() { + @Override + public void onSuccess(Optional> data) { + proxyFuture.set(data); + } + + @Override + public void onFailure(Throwable t) { + proxyFuture.setException(t); + } + }); + } + }); + + future = MappingCheckedFuture.create(proxyFuture, ReadFailedException.MAPPER); } - createTransactionIfMissing(actorContext, path); - return transactionContext(path).readData(path); + return future; } @Override - public CheckedFuture exists(YangInstanceIdentifier path) { + public CheckedFuture exists(final YangInstanceIdentifier path) { Preconditions.checkState(transactionType != TransactionType.WRITE_ONLY, "Exists operation on write-only transaction is not allowed"); - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} exists {}", identifier, path); + LOG.debug("Tx {} exists {}", identifier, path); + + TransactionFutureCallback txFutureCallback = getOrCreateTxFutureCallback(path); + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + + CheckedFuture future; + if(transactionContext != null) { + future = transactionContext.dataExists(path); + } else { + // The shard Tx hasn't been created yet so add the Tx operation to the Tx Future + // callback to be executed after the Tx is created. + final SettableFuture proxyFuture = SettableFuture.create(); + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + Futures.addCallback(transactionContext.dataExists(path), + new FutureCallback() { + @Override + public void onSuccess(Boolean exists) { + proxyFuture.set(exists); + } + + @Override + public void onFailure(Throwable t) { + proxyFuture.setException(t); + } + }); + } + }); + + future = MappingCheckedFuture.create(proxyFuture, ReadFailedException.MAPPER); } - createTransactionIfMissing(actorContext, path); - return transactionContext(path).dataExists(path); + return future; } private void checkModificationState() { @@ -266,41 +341,72 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { } @Override - public void write(YangInstanceIdentifier path, NormalizedNode data) { + public void write(final YangInstanceIdentifier path, final NormalizedNode data) { checkModificationState(); - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} write {}", identifier, path); - } - createTransactionIfMissing(actorContext, path); + LOG.debug("Tx {} write {}", identifier, path); - transactionContext(path).writeData(path, data); + TransactionFutureCallback txFutureCallback = getOrCreateTxFutureCallback(path); + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + transactionContext.writeData(path, data); + } else { + // The shard Tx hasn't been created yet so add the Tx operation to the Tx Future + // callback to be executed after the Tx is created. + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + transactionContext.writeData(path, data); + } + }); + } } @Override - public void merge(YangInstanceIdentifier path, NormalizedNode data) { + public void merge(final YangInstanceIdentifier path, final NormalizedNode data) { checkModificationState(); - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} merge {}", identifier, path); - } - createTransactionIfMissing(actorContext, path); + LOG.debug("Tx {} merge {}", identifier, path); - transactionContext(path).mergeData(path, data); + TransactionFutureCallback txFutureCallback = getOrCreateTxFutureCallback(path); + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + transactionContext.mergeData(path, data); + } else { + // The shard Tx hasn't been created yet so add the Tx operation to the Tx Future + // callback to be executed after the Tx is created. + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + transactionContext.mergeData(path, data); + } + }); + } } @Override - public void delete(YangInstanceIdentifier path) { + public void delete(final YangInstanceIdentifier path) { checkModificationState(); - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} delete {}", identifier, path); - } - createTransactionIfMissing(actorContext, path); - transactionContext(path).deleteData(path); + LOG.debug("Tx {} delete {}", identifier, path); + + TransactionFutureCallback txFutureCallback = getOrCreateTxFutureCallback(path); + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + transactionContext.deleteData(path); + } else { + // The shard Tx hasn't been created yet so add the Tx operation to the Tx Future + // callback to be executed after the Tx is created. + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + transactionContext.deleteData(path); + } + }); + } } @Override @@ -310,29 +416,60 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { inReadyState = true; - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} Trying to get {} transactions ready for commit", identifier, - remoteTransactionPaths.size()); - } + LOG.debug("Tx {} Readying {} transactions for commit", identifier, + txFutureCallbackMap.size()); + List> cohortFutures = Lists.newArrayList(); - for(TransactionContext transactionContext : remoteTransactionPaths.values()) { + for(TransactionFutureCallback txFutureCallback : txFutureCallbackMap.values()) { + + LOG.debug("Tx {} Readying transaction for shard {} chain {}", identifier, + txFutureCallback.getShardName(), transactionChainId); - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} Readying transaction for shard {}", identifier, - transactionContext.getShardName()); + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + cohortFutures.add(transactionContext.readyTransaction()); + } else { + // The shard Tx hasn't been created yet so create a promise to ready the Tx later + // after it's created. + final Promise cohortPromise = akka.dispatch.Futures.promise(); + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + cohortPromise.completeWith(transactionContext.readyTransaction()); + } + }); + + cohortFutures.add(cohortPromise.future()); } - cohortFutures.add(transactionContext.readyTransaction()); } - if(transactionChainProxy != null){ - transactionChainProxy.onTransactionReady(cohortFutures); - } + onTransactionReady(cohortFutures); return new ThreePhaseCommitCohortProxy(actorContext, cohortFutures, identifier.toString()); } + /** + * Method for derived classes to be notified when the transaction has been readied. + * + * @param cohortFutures the cohort Futures for each shard transaction. + */ + protected void onTransactionReady(List> cohortFutures) { + } + + /** + * Method called to send a CreateTransaction message to a shard. + * + * @param shard the shard actor to send to + * @param serializedCreateMessage the serialized message to send + * @return the response Future + */ + protected Future sendCreateTransaction(ActorSelection shard, + Object serializedCreateMessage) { + return actorContext.executeOperationAsync(shard, serializedCreateMessage); + } + @Override public Object getIdentifier() { return this.identifier; @@ -340,11 +477,21 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public void close() { - for(TransactionContext transactionContext : remoteTransactionPaths.values()) { - transactionContext.closeTransaction(); + for(TransactionFutureCallback txFutureCallback : txFutureCallbackMap.values()) { + TransactionContext transactionContext = txFutureCallback.getTransactionContext(); + if(transactionContext != null) { + transactionContext.closeTransaction(); + } else { + txFutureCallback.addTxOperationOnComplete(new TransactionOperation() { + @Override + public void invoke(TransactionContext transactionContext) { + transactionContext.closeTransaction(); + } + }); + } } - remoteTransactionPaths.clear(); + txFutureCallbackMap.clear(); if(transactionType == TransactionType.READ_ONLY) { remoteTransactionActors.clear(); @@ -352,94 +499,225 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { } } - private TransactionContext transactionContext(YangInstanceIdentifier path){ + private String shardNameFromIdentifier(YangInstanceIdentifier path){ + return ShardStrategyFactory.getStrategy(path).findShard(path); + } + + private TransactionFutureCallback getOrCreateTxFutureCallback(YangInstanceIdentifier path) { String shardName = shardNameFromIdentifier(path); - return remoteTransactionPaths.get(shardName); + TransactionFutureCallback txFutureCallback = txFutureCallbackMap.get(shardName); + if(txFutureCallback == null) { + Future findPrimaryFuture = actorContext.findPrimaryShardAsync(shardName); + + final TransactionFutureCallback newTxFutureCallback = + new TransactionFutureCallback(shardName); + + txFutureCallback = newTxFutureCallback; + txFutureCallbackMap.put(shardName, txFutureCallback); + + findPrimaryFuture.onComplete(new OnComplete() { + @Override + public void onComplete(Throwable failure, ActorSelection primaryShard) { + if(failure != null) { + newTxFutureCallback.onComplete(failure, null); + } else { + newTxFutureCallback.setPrimaryShard(primaryShard); + } + } + }, actorContext.getActorSystem().dispatcher()); + } + + return txFutureCallback; } - private String shardNameFromIdentifier(YangInstanceIdentifier path){ - return ShardStrategyFactory.getStrategy(path).findShard(path); + public String getTransactionChainId() { + return transactionChainId; + } + + protected ActorContext getActorContext() { + return actorContext; } - private void createTransactionIfMissing(ActorContext actorContext, - YangInstanceIdentifier path) { + /** + * Interface for a transaction operation to be invoked later. + */ + private static interface TransactionOperation { + void invoke(TransactionContext transactionContext); + } + + /** + * Implements a Future OnComplete callback for a CreateTransaction message. This class handles + * retries, up to a limit, if the shard doesn't have a leader yet. This is done by scheduling a + * retry task after a short delay. + *

    + * The end result from a completed CreateTransaction message is a TransactionContext that is + * used to perform transaction operations. Transaction operations that occur before the + * CreateTransaction completes are cache and executed once the CreateTransaction completes, + * successfully or not. + */ + private class TransactionFutureCallback extends OnComplete { + + /** + * The list of transaction operations to execute once the CreateTransaction completes. + */ + @GuardedBy("txOperationsOnComplete") + private final List txOperationsOnComplete = Lists.newArrayList(); + + /** + * The TransactionContext resulting from the CreateTransaction reply. + */ + private volatile TransactionContext transactionContext; + + /** + * The target primary shard. + */ + private volatile ActorSelection primaryShard; + + private volatile int createTxTries = (int) (actorContext.getDatastoreContext(). + getShardLeaderElectionTimeout().duration().toMillis() / + CREATE_TX_TRY_INTERVAL.toMillis()); + + private final String shardName; + + TransactionFutureCallback(String shardName) { + this.shardName = shardName; + } + + String getShardName() { + return shardName; + } - if(transactionChainProxy != null){ - transactionChainProxy.waitTillCurrentTransactionReady(); + TransactionContext getTransactionContext() { + return transactionContext; } - String shardName = ShardStrategyFactory.getStrategy(path).findShard(path); - TransactionContext transactionContext = - remoteTransactionPaths.get(shardName); + /** + * Sets the target primary shard and initiates a CreateTransaction try. + */ + void setPrimaryShard(ActorSelection primaryShard) { + LOG.debug("Tx {} Primary shard found - trying create transaction", identifier); - if (transactionContext != null) { - // A transaction already exists with that shard - return; + this.primaryShard = primaryShard; + tryCreateTransaction(); } - try { - Optional primaryShard = actorContext.findPrimaryShard(shardName); - if (!primaryShard.isPresent()) { - throw new PrimaryNotFoundException("Primary could not be found for shard " + shardName); + /** + * Adds a TransactionOperation to be executed after the CreateTransaction completes. + */ + void addTxOperationOnComplete(TransactionOperation operation) { + synchronized(txOperationsOnComplete) { + if(transactionContext == null) { + LOG.debug("Tx {} Adding operation on complete {}", identifier); + + txOperationsOnComplete.add(operation); + } else { + operation.invoke(transactionContext); + } } + } - Object response = actorContext.executeOperation(primaryShard.get(), - new CreateTransaction(identifier.toString(), this.transactionType.ordinal(), - getTransactionChainId()).toSerializable()); - if (response.getClass().equals(CreateTransactionReply.SERIALIZABLE_CLASS)) { - CreateTransactionReply reply = - CreateTransactionReply.fromSerializable(response); + /** + * Performs a CreateTransaction try async. + */ + private void tryCreateTransaction() { + Future createTxFuture = sendCreateTransaction(primaryShard, + new CreateTransaction(identifier.toString(), + TransactionProxy.this.transactionType.ordinal(), + getTransactionChainId()).toSerializable()); - String transactionPath = reply.getTransactionPath(); + createTxFuture.onComplete(this, actorContext.getActorSystem().dispatcher()); + } - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} Received transaction path = {}", identifier, transactionPath); + @Override + public void onComplete(Throwable failure, Object response) { + if(failure instanceof NoShardLeaderException) { + // There's no leader for the shard yet - schedule and try again, unless we're out + // of retries. Note: createTxTries is volatile as it may be written by different + // threads however not concurrently, therefore decrementing it non-atomically here + // is ok. + if(--createTxTries > 0) { + LOG.debug("Tx {} Shard {} has no leader yet - scheduling create Tx retry", + identifier, shardName); + + actorContext.getActorSystem().scheduler().scheduleOnce(CREATE_TX_TRY_INTERVAL, + new Runnable() { + @Override + public void run() { + tryCreateTransaction(); + } + }, actorContext.getActorSystem().dispatcher()); + return; } - ActorSelection transactionActor = actorContext.actorSelection(transactionPath); - - if (transactionType == TransactionType.READ_ONLY) { - // Add the actor to the remoteTransactionActors list for access by the - // cleanup PhantonReference. - remoteTransactionActors.add(transactionActor); + } - // Write to the memory barrier volatile to publish the above update to the - // remoteTransactionActors list for thread visibility. - remoteTransactionActorsMB.set(true); + // Create the TransactionContext from the response or failure and execute delayed + // TransactionOperations. This entire section is done atomically (ie synchronized) with + // respect to #addTxOperationOnComplete to handle timing issues and ensure no + // TransactionOperation is missed and that they are processed in the order they occurred. + synchronized(txOperationsOnComplete) { + // Store the new TransactionContext locally until we've completed invoking the + // TransactionOperations. This avoids thread timing issues which could cause + // out-of-order TransactionOperations. Eg, on a modification operation, if the + // TransactionContext is non-null, then we directly call the TransactionContext. + // However, at the same time, the code may be executing the cached + // TransactionOperations. So to avoid thus timing, we don't publish the + // TransactionContext until after we've executed all cached TransactionOperations. + TransactionContext localTransactionContext; + if(failure != null) { + LOG.debug("Tx {} Creating NoOpTransaction because of error: {}", identifier, + failure.getMessage()); + + localTransactionContext = new NoOpTransactionContext(failure, identifier); + } else if (response.getClass().equals(CreateTransactionReply.SERIALIZABLE_CLASS)) { + localTransactionContext = createValidTransactionContext( + CreateTransactionReply.fromSerializable(response)); + } else { + IllegalArgumentException exception = new IllegalArgumentException(String.format( + "Invalid reply type %s for CreateTransaction", response.getClass())); + + localTransactionContext = new NoOpTransactionContext(exception, identifier); } - // TxActor is always created where the leader of the shard is. - // Check if TxActor is created in the same node - boolean isTxActorLocal = actorContext.isLocalPath(transactionPath); + for(TransactionOperation oper: txOperationsOnComplete) { + oper.invoke(localTransactionContext); + } - transactionContext = new TransactionContextImpl(shardName, transactionPath, - transactionActor, identifier, actorContext, schemaContext, isTxActorLocal); + txOperationsOnComplete.clear(); - remoteTransactionPaths.put(shardName, transactionContext); - } else { - throw new IllegalArgumentException(String.format( - "Invalid reply type {} for CreateTransaction", response.getClass())); - } - } catch (Exception e) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} Creating NoOpTransaction because of : {}", identifier, e.getMessage()); + // We're done invoking the TransactionOperations so we can now publish the + // TransactionContext. + transactionContext = localTransactionContext; } - remoteTransactionPaths - .put(shardName, new NoOpTransactionContext(shardName, e, identifier)); } - } - public String getTransactionChainId() { - if(transactionChainProxy == null){ - return ""; + private TransactionContext createValidTransactionContext(CreateTransactionReply reply) { + String transactionPath = reply.getTransactionPath(); + + LOG.debug("Tx {} Received transaction actor path {}", identifier, transactionPath); + + ActorSelection transactionActor = actorContext.actorSelection(transactionPath); + + if (transactionType == TransactionType.READ_ONLY) { + // Add the actor to the remoteTransactionActors list for access by the + // cleanup PhantonReference. + remoteTransactionActors.add(transactionActor); + + // Write to the memory barrier volatile to publish the above update to the + // remoteTransactionActors list for thread visibility. + remoteTransactionActorsMB.set(true); + } + + // TxActor is always created where the leader of the shard is. + // Check if TxActor is created in the same node + boolean isTxActorLocal = actorContext.isLocalPath(transactionPath); + + return new TransactionContextImpl(transactionPath, transactionActor, identifier, + actorContext, schemaContext, isTxActorLocal, reply.getVersion()); } - return transactionChainProxy.getTransactionChainId(); } - private interface TransactionContext { - String getShardName(); - void closeTransaction(); Future readyTransaction(); @@ -461,19 +739,12 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private static abstract class AbstractTransactionContext implements TransactionContext { protected final TransactionIdentifier identifier; - protected final String shardName; protected final List> recordedOperationFutures = Lists.newArrayList(); - AbstractTransactionContext(String shardName, TransactionIdentifier identifier) { - this.shardName = shardName; + AbstractTransactionContext(TransactionIdentifier identifier) { this.identifier = identifier; } - @Override - public String getShardName() { - return shardName; - } - @Override public List> getRecordedOperationFutures() { return recordedOperationFutures; @@ -485,19 +756,21 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private final ActorContext actorContext; private final SchemaContext schemaContext; - private final String actorPath; + private final String transactionPath; private final ActorSelection actor; private final boolean isTxActorLocal; + private final int remoteTransactionVersion; - private TransactionContextImpl(String shardName, String actorPath, - ActorSelection actor, TransactionIdentifier identifier, ActorContext actorContext, - SchemaContext schemaContext, boolean isTxActorLocal) { - super(shardName, identifier); - this.actorPath = actorPath; + private TransactionContextImpl(String transactionPath, ActorSelection actor, TransactionIdentifier identifier, + ActorContext actorContext, SchemaContext schemaContext, + boolean isTxActorLocal, int remoteTransactionVersion) { + super(identifier); + this.transactionPath = transactionPath; this.actor = actor; this.actorContext = actorContext; this.schemaContext = schemaContext; this.isTxActorLocal = isTxActorLocal; + this.remoteTransactionVersion = remoteTransactionVersion; } private ActorSelection getActor() { @@ -506,18 +779,16 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public void closeTransaction() { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} closeTransaction called", identifier); - } + LOG.debug("Tx {} closeTransaction called", identifier); + actorContext.sendOperationAsync(getActor(), new CloseTransaction().toSerializable()); } @Override public Future readyTransaction() { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readyTransaction called with {} previous recorded operations pending", + LOG.debug("Tx {} readyTransaction called with {} previous recorded operations pending", identifier, recordedOperationFutures.size()); - } + // Send the ReadyTransaction message to the Tx actor. ReadyTransaction readyTransaction = new ReadyTransaction(); @@ -540,13 +811,12 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { // Transform the combined Future into a Future that returns the cohort actor path from // the ReadyTransactionReply. That's the end result of the ready operation. - return combinedFutures.transform(new AbstractFunction1, ActorSelection>() { + return combinedFutures.transform(new Mapper, ActorSelection>() { @Override - public ActorSelection apply(Iterable notUsed) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readyTransaction: pending recorded operations succeeded", + public ActorSelection checkedApply(Iterable notUsed) { + LOG.debug("Tx {} readyTransaction: pending recorded operations succeeded", identifier); - } + // At this point all the Futures succeeded and we need to extract the cohort // actor path from the ReadyTransactionReply. For the recorded operations, they // don't return any data so we're only interested that they completed @@ -561,7 +831,20 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { } else if(serializedReadyReply.getClass().equals(ReadyTransactionReply.SERIALIZABLE_CLASS)) { ReadyTransactionReply reply = ReadyTransactionReply.fromSerializable(serializedReadyReply); - return actorContext.actorSelection(reply.getCohortPath()); + String cohortPath = reply.getCohortPath(); + + // In Helium we used to return the local path of the actor which represented + // a remote ThreePhaseCommitCohort. The local path would then be converted to + // a remote path using this resolvePath method. To maintain compatibility with + // a Helium node we need to continue to do this conversion. + // At some point in the future when upgrades from Helium are not supported + // we could remove this code to resolvePath and just use the cohortPath as the + // resolved cohortPath + if(TransactionContextImpl.this.remoteTransactionVersion < CreateTransaction.HELIUM_1_VERSION) { + cohortPath = actorContext.resolvePath(transactionPath, cohortPath); + } + + return actorContext.actorSelection(cohortPath); } else { // Throwing an exception here will fail the Future. @@ -574,9 +857,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public void deleteData(YangInstanceIdentifier path) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} deleteData called path = {}", identifier, path); - } + LOG.debug("Tx {} deleteData called path = {}", identifier, path); DeleteData deleteData = new DeleteData(path); recordedOperationFutures.add(actorContext.executeOperationAsync(getActor(), @@ -585,9 +866,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public void mergeData(YangInstanceIdentifier path, NormalizedNode data) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} mergeData called path = {}", identifier, path); - } + LOG.debug("Tx {} mergeData called path = {}", identifier, path); MergeData mergeData = new MergeData(path, data, schemaContext); recordedOperationFutures.add(actorContext.executeOperationAsync(getActor(), @@ -596,9 +875,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public void writeData(YangInstanceIdentifier path, NormalizedNode data) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} writeData called path = {}", identifier, path); - } + LOG.debug("Tx {} writeData called path = {}", identifier, path); WriteData writeData = new WriteData(path, data, schemaContext); recordedOperationFutures.add(actorContext.executeOperationAsync(getActor(), @@ -609,9 +886,8 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { public CheckedFuture>, ReadFailedException> readData( final YangInstanceIdentifier path) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readData called path = {}", identifier, path); - } + LOG.debug("Tx {} readData called path = {}", identifier, path); + final SettableFuture>> returnFuture = SettableFuture.create(); // If there were any previous recorded put/merge/delete operation reply Futures then we @@ -621,10 +897,9 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { if(recordedOperationFutures.isEmpty()) { finishReadData(path, returnFuture); } else { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readData: verifying {} previous recorded operations", + LOG.debug("Tx {} readData: verifying {} previous recorded operations", identifier, recordedOperationFutures.size()); - } + // Note: we make a copy of recordedOperationFutures to be on the safe side in case // Futures#sequence accesses the passed List on a different thread, as // recordedOperationFutures is not synchronized. @@ -638,10 +913,8 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { public void onComplete(Throwable failure, Iterable notUsed) throws Throwable { if(failure != null) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readData: a recorded operation failed: {}", + LOG.debug("Tx {} readData: a recorded operation failed: {}", identifier, failure); - } returnFuture.setException(new ReadFailedException( "The read could not be performed because a previous put, merge," + "or delete operation failed", failure)); @@ -660,23 +933,18 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private void finishReadData(final YangInstanceIdentifier path, final SettableFuture>> returnFuture) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} finishReadData called path = {}", identifier, path); - } + LOG.debug("Tx {} finishReadData called path = {}", identifier, path); + OnComplete onComplete = new OnComplete() { @Override public void onComplete(Throwable failure, Object readResponse) throws Throwable { if(failure != null) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} read operation failed: {}", identifier, failure); - } + LOG.debug("Tx {} read operation failed: {}", identifier, failure); returnFuture.setException(new ReadFailedException( "Error reading data for path " + path, failure)); } else { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} read operation succeeded", identifier, failure); - } + LOG.debug("Tx {} read operation succeeded", identifier, failure); if (readResponse instanceof ReadDataReply) { ReadDataReply reply = (ReadDataReply) readResponse; @@ -705,9 +973,8 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { public CheckedFuture dataExists( final YangInstanceIdentifier path) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} dataExists called path = {}", identifier, path); - } + LOG.debug("Tx {} dataExists called path = {}", identifier, path); + final SettableFuture returnFuture = SettableFuture.create(); // If there were any previous recorded put/merge/delete operation reply Futures then we @@ -718,10 +985,9 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { if(recordedOperationFutures.isEmpty()) { finishDataExists(path, returnFuture); } else { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} dataExists: verifying {} previous recorded operations", + LOG.debug("Tx {} dataExists: verifying {} previous recorded operations", identifier, recordedOperationFutures.size()); - } + // Note: we make a copy of recordedOperationFutures to be on the safe side in case // Futures#sequence accesses the passed List on a different thread, as // recordedOperationFutures is not synchronized. @@ -734,10 +1000,8 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { public void onComplete(Throwable failure, Iterable notUsed) throws Throwable { if(failure != null) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} dataExists: a recorded operation failed: {}", + LOG.debug("Tx {} dataExists: a recorded operation failed: {}", identifier, failure); - } returnFuture.setException(new ReadFailedException( "The data exists could not be performed because a previous " + "put, merge, or delete operation failed", failure)); @@ -756,22 +1020,17 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private void finishDataExists(final YangInstanceIdentifier path, final SettableFuture returnFuture) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} finishDataExists called path = {}", identifier, path); - } + LOG.debug("Tx {} finishDataExists called path = {}", identifier, path); + OnComplete onComplete = new OnComplete() { @Override public void onComplete(Throwable failure, Object response) throws Throwable { if(failure != null) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} dataExists operation failed: {}", identifier, failure); - } + LOG.debug("Tx {} dataExists operation failed: {}", identifier, failure); returnFuture.setException(new ReadFailedException( "Error checking data exists for path " + path, failure)); } else { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} dataExists operation succeeded", identifier, failure); - } + LOG.debug("Tx {} dataExists operation succeeded", identifier, failure); if (response instanceof DataExistsReply) { returnFuture.set(Boolean.valueOf(((DataExistsReply) response).exists())); @@ -799,66 +1058,51 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private final Logger LOG = LoggerFactory.getLogger(NoOpTransactionContext.class); - private final Exception failure; + private final Throwable failure; - public NoOpTransactionContext(String shardName, Exception failure, - TransactionIdentifier identifier){ - super(shardName, identifier); + public NoOpTransactionContext(Throwable failure, TransactionIdentifier identifier){ + super(identifier); this.failure = failure; } @Override public void closeTransaction() { - if(LOG.isDebugEnabled()) { - LOG.debug("NoOpTransactionContext {} closeTransaction called", identifier); - } + LOG.debug("NoOpTransactionContext {} closeTransaction called", identifier); } @Override public Future readyTransaction() { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readyTransaction called", identifier); - } + LOG.debug("Tx {} readyTransaction called", identifier); return akka.dispatch.Futures.failed(failure); } @Override public void deleteData(YangInstanceIdentifier path) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} deleteData called path = {}", identifier, path); - } + LOG.debug("Tx {} deleteData called path = {}", identifier, path); } @Override public void mergeData(YangInstanceIdentifier path, NormalizedNode data) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} mergeData called path = {}", identifier, path); - } + LOG.debug("Tx {} mergeData called path = {}", identifier, path); } @Override public void writeData(YangInstanceIdentifier path, NormalizedNode data) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} writeData called path = {}", identifier, path); - } + LOG.debug("Tx {} writeData called path = {}", identifier, path); } @Override public CheckedFuture>, ReadFailedException> readData( - YangInstanceIdentifier path) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} readData called path = {}", identifier, path); - } + YangInstanceIdentifier path) { + LOG.debug("Tx {} readData called path = {}", identifier, path); return Futures.immediateFailedCheckedFuture(new ReadFailedException( "Error reading data for path " + path, failure)); } @Override public CheckedFuture dataExists( - YangInstanceIdentifier path) { - if(LOG.isDebugEnabled()) { - LOG.debug("Tx {} dataExists called path = {}", identifier, path); - } + YangInstanceIdentifier path) { + LOG.debug("Tx {} dataExists called path = {}", identifier, path); return Futures.immediateFailedCheckedFuture(new ReadFailedException( "Error checking exists for path " + path, failure)); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/compat/BackwardsCompatibleThreePhaseCommitCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/compat/BackwardsCompatibleThreePhaseCommitCohort.java new file mode 100644 index 0000000000..30ab97ceb1 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/compat/BackwardsCompatibleThreePhaseCommitCohort.java @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2014 Brocade Communications 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.cluster.datastore.compat; + +import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor; +import org.opendaylight.controller.cluster.datastore.messages.AbortTransaction; +import org.opendaylight.controller.cluster.datastore.messages.CanCommitTransaction; +import org.opendaylight.controller.cluster.datastore.messages.CommitTransaction; +import org.opendaylight.controller.cluster.datastore.messages.PreCommitTransaction; +import org.opendaylight.controller.cluster.datastore.messages.PreCommitTransactionReply; +import akka.actor.PoisonPill; +import akka.actor.Props; +import akka.event.Logging; +import akka.event.LoggingAdapter; +import akka.japi.Creator; + +/** + * An actor to maintain backwards compatibility for the base Helium version where the 3-phase commit + * messages don't contain the transactionId. This actor just forwards a new message containing the + * transactionId to the parent Shard. + * + * @author Thomas Pantelis + */ +public class BackwardsCompatibleThreePhaseCommitCohort extends AbstractUntypedActor { + + private final LoggingAdapter LOG = Logging.getLogger(getContext().system(), this); + + private final String transactionId; + + private BackwardsCompatibleThreePhaseCommitCohort(String transactionId) { + this.transactionId = transactionId; + } + + @Override + public void handleReceive(Object message) throws Exception { + if(message.getClass().equals(CanCommitTransaction.SERIALIZABLE_CLASS)) { + LOG.debug("BackwardsCompatibleThreePhaseCommitCohort CanCommitTransaction"); + + getContext().parent().forward(new CanCommitTransaction(transactionId).toSerializable(), + getContext()); + } else if(message.getClass().equals(PreCommitTransaction.SERIALIZABLE_CLASS)) { + LOG.debug("BackwardsCompatibleThreePhaseCommitCohort PreCommitTransaction"); + + // The Shard doesn't need the PreCommitTransaction message so just return the reply here. + getSender().tell(new PreCommitTransactionReply().toSerializable(), self()); + } else if(message.getClass().equals(CommitTransaction.SERIALIZABLE_CLASS)) { + LOG.debug("BackwardsCompatibleThreePhaseCommitCohort CommitTransaction"); + + getContext().parent().forward(new CommitTransaction(transactionId).toSerializable(), + getContext()); + + // We're done now - we can self-destruct + self().tell(PoisonPill.getInstance(), self()); + } else if(message.getClass().equals(AbortTransaction.SERIALIZABLE_CLASS)) { + LOG.debug("BackwardsCompatibleThreePhaseCommitCohort AbortTransaction"); + + getContext().parent().forward(new AbortTransaction(transactionId).toSerializable(), + getContext()); + self().tell(PoisonPill.getInstance(), self()); + } + } + + public static Props props(String transactionId) { + return Props.create(new BackwardsCompatibleThreePhaseCommitCohortCreator(transactionId)); + } + + private static class BackwardsCompatibleThreePhaseCommitCohortCreator + implements Creator { + private static final long serialVersionUID = 1L; + + private final String transactionId; + + BackwardsCompatibleThreePhaseCommitCohortCreator(String transactionId) { + this.transactionId = transactionId; + } + + @Override + public BackwardsCompatibleThreePhaseCommitCohort create() throws Exception { + return new BackwardsCompatibleThreePhaseCommitCohort(transactionId); + } + } +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationReader.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationReader.java new file mode 100644 index 0000000000..12afdbd21b --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ConfigurationReader.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2014 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.cluster.datastore.config; + +import com.typesafe.config.Config; + +public interface ConfigurationReader { + Config read(); +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileConfigurationReader.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileConfigurationReader.java new file mode 100644 index 0000000000..fb84734119 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileConfigurationReader.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2014 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.cluster.datastore.config; + +import com.google.common.base.Preconditions; +import com.typesafe.config.Config; +import com.typesafe.config.ConfigFactory; + +import java.io.File; + +public class FileConfigurationReader implements ConfigurationReader{ + + public static final String AKKA_CONF_PATH = "./configuration/initial/akka.conf"; + + @Override + public Config read() { + File defaultConfigFile = new File(AKKA_CONF_PATH); + Preconditions.checkState(defaultConfigFile.exists(), "akka.conf is missing"); + return ConfigFactory.parseFile(defaultConfigFile); + + } +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ResourceConfigurationReader.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ResourceConfigurationReader.java new file mode 100644 index 0000000000..df17f97a4e --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ResourceConfigurationReader.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2014 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.cluster.datastore.config; + +import com.typesafe.config.Config; +import com.typesafe.config.ConfigFactory; + +public class ResourceConfigurationReader implements ConfigurationReader { + @Override + public Config read() { + return ConfigFactory.load(); + } +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NoShardLeaderException.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NoShardLeaderException.java new file mode 100644 index 0000000000..b205b0fe78 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NoShardLeaderException.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2014 Brocade Communications 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.cluster.datastore.exceptions; + +/** + * Exception indicating a shard has no current leader. + * + * @author Thomas Pantelis + */ +public class NoShardLeaderException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public NoShardLeaderException(String message){ + super(message); + } +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NotInitializedException.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NotInitializedException.java index 302d684322..839cce63e5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NotInitializedException.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NotInitializedException.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.cluster.datastore.exceptions; public class NotInitializedException extends RuntimeException { + private static final long serialVersionUID = 1L; public NotInitializedException(String message) { super(message); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/PrimaryNotFoundException.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/PrimaryNotFoundException.java index 7b07053fd9..c98e2bd384 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/PrimaryNotFoundException.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/PrimaryNotFoundException.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.datastore.exceptions; public class PrimaryNotFoundException extends RuntimeException { + private static final long serialVersionUID = 1L; public PrimaryNotFoundException(String message){ super(message); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/TimeoutException.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/TimeoutException.java index 472cd38734..5590877aa7 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/TimeoutException.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/TimeoutException.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.datastore.exceptions; public class TimeoutException extends RuntimeException { + private static final long serialVersionUID = 1L; public TimeoutException(String message, Exception e){ super(message, e); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/UnknownMessageException.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/UnknownMessageException.java index f4f2524a8d..bd804b8dde 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/UnknownMessageException.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/UnknownMessageException.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.datastore.exceptions; public class UnknownMessageException extends Exception { + private static final long serialVersionUID = 1L; private final Object message; public UnknownMessageException(Object message) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorInitialized.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorInitialized.java index b034f87d1c..71d5a48291 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorInitialized.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorInitialized.java @@ -10,4 +10,5 @@ package org.opendaylight.controller.cluster.datastore.messages; import java.io.Serializable; public class ActorInitialized implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorNotInitialized.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorNotInitialized.java index de25ef9ecc..576010f916 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorNotInitialized.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorNotInitialized.java @@ -10,4 +10,5 @@ package org.opendaylight.controller.cluster.datastore.messages; import java.io.Serializable; public class ActorNotInitialized implements Serializable { + private static final long serialVersionUID = 1L; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java index 9c8909c2dd..4d121bae0a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java @@ -11,12 +11,12 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.cohort3pc.ThreePhaseCommitCohortMessages; public class CanCommitTransactionReply implements SerializableMessage { - public static Class SERIALIZABLE_CLASS = + public static final Class SERIALIZABLE_CLASS = ThreePhaseCommitCohortMessages.CanCommitTransactionReply.class; private final Boolean canCommit; - public CanCommitTransactionReply(Boolean canCommit) { + public CanCommitTransactionReply(final Boolean canCommit) { this.canCommit = canCommit; } @@ -29,7 +29,7 @@ public class CanCommitTransactionReply implements SerializableMessage { return ThreePhaseCommitCohortMessages.CanCommitTransactionReply.newBuilder().setCanCommit(canCommit).build(); } - public static CanCommitTransactionReply fromSerializable(Object message) { + public static CanCommitTransactionReply fromSerializable(final Object message) { return new CanCommitTransactionReply( ((ThreePhaseCommitCohortMessages.CanCommitTransactionReply) message).getCanCommit()); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistration.java index a54ee6209c..f711d6f7b5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistration.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.registration.ListenerRegistrationMessages; public class CloseDataChangeListenerRegistration implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = ListenerRegistrationMessages.CloseDataChangeListenerRegistration.class; + public static final Class SERIALIZABLE_CLASS = + ListenerRegistrationMessages.CloseDataChangeListenerRegistration.class; @Override public Object toSerializable() { return ListenerRegistrationMessages.CloseDataChangeListenerRegistration.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistrationReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistrationReply.java index faf73c87eb..9d8225c23a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistrationReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseDataChangeListenerRegistrationReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.registration.ListenerRegistrationMessages; public class CloseDataChangeListenerRegistrationReply implements SerializableMessage{ - public static Class SERIALIZABLE_CLASS = ListenerRegistrationMessages.CloseDataChangeListenerRegistrationReply.class; + public static final Class SERIALIZABLE_CLASS = + ListenerRegistrationMessages.CloseDataChangeListenerRegistrationReply.class; @Override public Object toSerializable() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java index 451e39cf6a..c73111f2db 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class CloseTransaction implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.CloseTransaction.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.CloseTransaction.class; @Override public Object toSerializable() { return ShardTransactionMessages.CloseTransaction.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java index 74de6c5aea..7db39b77a3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java @@ -11,11 +11,11 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionChainMessages; public class CloseTransactionChain implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = + public static final Class SERIALIZABLE_CLASS = ShardTransactionChainMessages.CloseTransactionChain.class; private final String transactionChainId; - public CloseTransactionChain(String transactionChainId){ + public CloseTransactionChain(final String transactionChainId){ this.transactionChainId = transactionChainId; } @@ -25,7 +25,7 @@ public class CloseTransactionChain implements SerializableMessage { .setTransactionChainId(transactionChainId).build(); } - public static CloseTransactionChain fromSerializable(Object message){ + public static CloseTransactionChain fromSerializable(final Object message){ ShardTransactionChainMessages.CloseTransactionChain closeTransactionChain = (ShardTransactionChainMessages.CloseTransactionChain) message; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChainReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChainReply.java index 23699b7be6..c001ae185a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChainReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChainReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionChainMessages; public class CloseTransactionChainReply implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = ShardTransactionChainMessages.CloseTransactionChainReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionChainMessages.CloseTransactionChainReply.class; @Override public Object toSerializable() { return ShardTransactionChainMessages.CloseTransactionChainReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java index 666d182aaf..124eeb2235 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class CloseTransactionReply implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.CloseTransactionReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.CloseTransactionReply.class; @Override public Object toSerializable() { return ShardTransactionMessages.CloseTransactionReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java index 361d406ac8..bf82e66036 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java @@ -13,24 +13,33 @@ import org.opendaylight.controller.protobuff.messages.transaction.ShardTransacti public class CreateTransaction implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.CreateTransaction.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.CreateTransaction.class; + + public static final int HELIUM_1_VERSION = 1; + public static final int CURRENT_VERSION = HELIUM_1_VERSION; + private final String transactionId; private final int transactionType; private final String transactionChainId; + private final int version; public CreateTransaction(String transactionId, int transactionType) { this(transactionId, transactionType, ""); } public CreateTransaction(String transactionId, int transactionType, String transactionChainId) { + this(transactionId, transactionType, transactionChainId, CURRENT_VERSION); + } + private CreateTransaction(String transactionId, int transactionType, String transactionChainId, + int version) { this.transactionId = transactionId; this.transactionType = transactionType; this.transactionChainId = transactionChainId; - + this.version = version; } - public String getTransactionId() { return transactionId; } @@ -39,19 +48,25 @@ public class CreateTransaction implements SerializableMessage { return transactionType; } + public int getVersion() { + return version; + } + @Override public Object toSerializable() { return ShardTransactionMessages.CreateTransaction.newBuilder() .setTransactionId(transactionId) .setTransactionType(transactionType) - .setTransactionChainId(transactionChainId).build(); + .setTransactionChainId(transactionChainId) + .setMessageVersion(version).build(); } public static CreateTransaction fromSerializable(Object message) { ShardTransactionMessages.CreateTransaction createTransaction = (ShardTransactionMessages.CreateTransaction) message; return new CreateTransaction(createTransaction.getTransactionId(), - createTransaction.getTransactionType(), createTransaction.getTransactionChainId()); + createTransaction.getTransactionType(), createTransaction.getTransactionChainId(), + createTransaction.getMessageVersion()); } public String getTransactionChainId() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java index 096d131d5a..83e68c9cb4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java @@ -12,16 +12,25 @@ import org.opendaylight.controller.protobuff.messages.transaction.ShardTransacti public class CreateTransactionReply implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.CreateTransactionReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.CreateTransactionReply.class; private final String transactionPath; private final String transactionId; + private final int version; - public CreateTransactionReply(String transactionPath, - String transactionId) { + public CreateTransactionReply(final String transactionPath, + final String transactionId) { + this(transactionPath, transactionId, CreateTransaction.CURRENT_VERSION); + } + + public CreateTransactionReply(final String transactionPath, + final String transactionId, final int version) { this.transactionPath = transactionPath; this.transactionId = transactionId; + this.version = version; } + public String getTransactionPath() { return transactionPath; } @@ -30,16 +39,22 @@ public class CreateTransactionReply implements SerializableMessage { return transactionId; } + public int getVersion() { + return version; + } + + @Override public Object toSerializable(){ return ShardTransactionMessages.CreateTransactionReply.newBuilder() .setTransactionActorPath(transactionPath) .setTransactionId(transactionId) + .setMessageVersion(version) .build(); } - public static CreateTransactionReply fromSerializable(Object serializable){ + public static CreateTransactionReply fromSerializable(final Object serializable){ ShardTransactionMessages.CreateTransactionReply o = (ShardTransactionMessages.CreateTransactionReply) serializable; - return new CreateTransactionReply(o.getTransactionActorPath(), o.getTransactionId()); + return new CreateTransactionReply(o.getTransactionActorPath(), o.getTransactionId(), o.getMessageVersion()); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataChangedReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataChangedReply.java index cffe985d18..e10a407292 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataChangedReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataChangedReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.datachange.notification.DataChangeListenerMessages; public class DataChangedReply implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = DataChangeListenerMessages.DataChangedReply.class; + public static final Class SERIALIZABLE_CLASS = + DataChangeListenerMessages.DataChangedReply.class; @Override public Object toSerializable() { return DataChangeListenerMessages.DataChangedReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java index d52daabd84..84b8df1676 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java @@ -14,11 +14,12 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class DataExists implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.DataExists.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.DataExists.class; private final YangInstanceIdentifier path; - public DataExists(YangInstanceIdentifier path) { + public DataExists(final YangInstanceIdentifier path) { this.path = path; } @@ -32,7 +33,7 @@ public class DataExists implements SerializableMessage{ InstanceIdentifierUtils.toSerializable(path)).build(); } - public static DataExists fromSerializable(Object serializable){ + public static DataExists fromSerializable(final Object serializable){ ShardTransactionMessages.DataExists o = (ShardTransactionMessages.DataExists) serializable; return new DataExists(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments())); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java index 04fafa10e2..24ca646454 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java @@ -11,13 +11,12 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class DataExistsReply implements SerializableMessage{ - - - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.DataExistsReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.DataExistsReply.class; private final boolean exists; - public DataExistsReply(boolean exists) { + public DataExistsReply(final boolean exists) { this.exists = exists; } @@ -30,7 +29,7 @@ public class DataExistsReply implements SerializableMessage{ .setExists(exists).build(); } - public static DataExistsReply fromSerializable(Object serializable){ + public static DataExistsReply fromSerializable(final Object serializable){ ShardTransactionMessages.DataExistsReply o = (ShardTransactionMessages.DataExistsReply) serializable; return new DataExistsReply(o.getExists()); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java index 6d3051c8c7..81bc1026e4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java @@ -14,11 +14,11 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class DeleteData implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.DeleteData.class; + public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.DeleteData.class; private final YangInstanceIdentifier path; - public DeleteData(YangInstanceIdentifier path) { + public DeleteData(final YangInstanceIdentifier path) { this.path = path; } @@ -31,7 +31,7 @@ public class DeleteData implements SerializableMessage { .setInstanceIdentifierPathArguments(InstanceIdentifierUtils.toSerializable(path)).build(); } - public static DeleteData fromSerializable(Object serializable){ + public static DeleteData fromSerializable(final Object serializable){ ShardTransactionMessages.DeleteData o = (ShardTransactionMessages.DeleteData) serializable; return new DeleteData(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments())); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteDataReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteDataReply.java index 8e2a7b7295..2e02664e1d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteDataReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteDataReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class DeleteDataReply implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.DeleteDataReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.DeleteDataReply.class; @Override public Object toSerializable() { return ShardTransactionMessages.DeleteDataReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ForwardedReadyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ForwardedReadyTransaction.java index 180108f218..38886c9a58 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ForwardedReadyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ForwardedReadyTransaction.java @@ -20,14 +20,16 @@ public class ForwardedReadyTransaction { private final DOMStoreThreePhaseCommitCohort cohort; private final Modification modification; private final boolean returnSerialized; + private final int txnClientVersion; - public ForwardedReadyTransaction(String transactionID, DOMStoreThreePhaseCommitCohort cohort, - Modification modification, boolean returnSerialized) { + public ForwardedReadyTransaction(String transactionID, int txnClientVersion, + DOMStoreThreePhaseCommitCohort cohort, Modification modification, + boolean returnSerialized) { this.transactionID = transactionID; this.cohort = cohort; this.modification = modification; this.returnSerialized = returnSerialized; - + this.txnClientVersion = txnClientVersion; } public String getTransactionID() { @@ -45,4 +47,8 @@ public class ForwardedReadyTransaction { public boolean isReturnSerialized() { return returnSerialized; } + + public int getTxnClientVersion() { + return txnClientVersion; + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/MergeDataReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/MergeDataReply.java index 81b1c3bbb1..92d6d72847 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/MergeDataReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/MergeDataReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class MergeDataReply implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.MergeDataReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.MergeDataReply.class; @Override public Object toSerializable() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransaction.java index dae4cec3c3..3cec7e74a6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransaction.java @@ -12,7 +12,8 @@ import org.opendaylight.controller.protobuff.messages.cohort3pc.ThreePhaseCommit public class PreCommitTransaction implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ThreePhaseCommitCohortMessages.PreCommitTransaction.class; + public static final Class SERIALIZABLE_CLASS = + ThreePhaseCommitCohortMessages.PreCommitTransaction.class; @Override public Object toSerializable() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransactionReply.java index fc07bfcb4b..d158049409 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PreCommitTransactionReply.java @@ -12,7 +12,8 @@ import org.opendaylight.controller.protobuff.messages.cohort3pc.ThreePhaseCommit public class PreCommitTransactionReply implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ThreePhaseCommitCohortMessages.PreCommitTransactionReply.class; + public static final Class SERIALIZABLE_CLASS = + ThreePhaseCommitCohortMessages.PreCommitTransactionReply.class; @Override public Object toSerializable() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryFound.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryFound.java index a2f6701524..a5565020ed 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryFound.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryFound.java @@ -10,10 +10,10 @@ package org.opendaylight.controller.cluster.datastore.messages; public class PrimaryFound implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = PrimaryFound.class; + public static final Class SERIALIZABLE_CLASS = PrimaryFound.class; private final String primaryPath; - public PrimaryFound(String primaryPath) { + public PrimaryFound(final String primaryPath) { this.primaryPath = primaryPath; } @@ -22,13 +22,19 @@ public class PrimaryFound implements SerializableMessage { } @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } PrimaryFound that = (PrimaryFound) o; - if (!primaryPath.equals(that.primaryPath)) return false; + if (!primaryPath.equals(that.primaryPath)) { + return false; + } return true; } @@ -51,7 +57,7 @@ public class PrimaryFound implements SerializableMessage { return this; } - public static PrimaryFound fromSerializable(Object message){ + public static PrimaryFound fromSerializable(final Object message){ return (PrimaryFound) message; } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryNotFound.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryNotFound.java index 731a5364db..b47c91b6e5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryNotFound.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/PrimaryNotFound.java @@ -11,11 +11,11 @@ package org.opendaylight.controller.cluster.datastore.messages; import com.google.common.base.Preconditions; public class PrimaryNotFound implements SerializableMessage { - public static final Class SERIALIZABLE_CLASS = PrimaryNotFound.class; + public static final Class SERIALIZABLE_CLASS = PrimaryNotFound.class; private final String shardName; - public PrimaryNotFound(String shardName){ + public PrimaryNotFound(final String shardName){ Preconditions.checkNotNull(shardName, "shardName should not be null"); @@ -23,13 +23,19 @@ public class PrimaryNotFound implements SerializableMessage { } @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } PrimaryNotFound that = (PrimaryNotFound) o; - if (shardName != null ? !shardName.equals(that.shardName) : that.shardName != null) return false; + if (shardName != null ? !shardName.equals(that.shardName) : that.shardName != null) { + return false; + } return true; } @@ -44,7 +50,7 @@ public class PrimaryNotFound implements SerializableMessage { return this; } - public static PrimaryNotFound fromSerializable(Object message){ + public static PrimaryNotFound fromSerializable(final Object message){ return (PrimaryNotFound) message; } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java index d743d99fcc..a8a3e7d071 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java @@ -13,10 +13,11 @@ import org.opendaylight.controller.protobuff.messages.transaction.ShardTransacti import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class ReadData { - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.ReadData.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.ReadData.class; private final YangInstanceIdentifier path; - public ReadData(YangInstanceIdentifier path) { + public ReadData(final YangInstanceIdentifier path) { this.path = path; } @@ -30,7 +31,7 @@ public class ReadData { .build(); } - public static ReadData fromSerializable(Object serializable){ + public static ReadData fromSerializable(final Object serializable){ ShardTransactionMessages.ReadData o = (ShardTransactionMessages.ReadData) serializable; return new ReadData(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments())); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransaction.java index 3a51d9850b..581caefd04 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransaction.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class ReadyTransaction implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.ReadyTransaction.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.ReadyTransaction.class; @Override public Object toSerializable() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java index eee489177a..282e23ed3b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java @@ -17,7 +17,6 @@ public class ReadyTransactionReply implements SerializableMessage { private final String cohortPath; public ReadyTransactionReply(String cohortPath) { - this.cohortPath = cohortPath; } @@ -27,8 +26,9 @@ public class ReadyTransactionReply implements SerializableMessage { @Override public ShardTransactionMessages.ReadyTransactionReply toSerializable() { - return ShardTransactionMessages.ReadyTransactionReply.newBuilder(). - setActorPath(cohortPath).build(); + return ShardTransactionMessages.ReadyTransactionReply.newBuilder() + .setActorPath(cohortPath) + .build(); } public static ReadyTransactionReply fromSerializable(Object serializable) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListenerReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListenerReply.java index 8d980d283d..bbfbbaa80b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListenerReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListenerReply.java @@ -13,10 +13,11 @@ import akka.actor.ActorSystem; import org.opendaylight.controller.protobuff.messages.registration.ListenerRegistrationMessages; public class RegisterChangeListenerReply implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ListenerRegistrationMessages.RegisterChangeListenerReply.class; + public static final Class SERIALIZABLE_CLASS = + ListenerRegistrationMessages.RegisterChangeListenerReply.class; private final ActorPath listenerRegistrationPath; - public RegisterChangeListenerReply(ActorPath listenerRegistrationPath) { + public RegisterChangeListenerReply(final ActorPath listenerRegistrationPath) { this.listenerRegistrationPath = listenerRegistrationPath; } @@ -30,7 +31,7 @@ public class RegisterChangeListenerReply implements SerializableMessage{ .setListenerRegistrationPath(listenerRegistrationPath.toString()).build(); } - public static RegisterChangeListenerReply fromSerializable(ActorSystem actorSystem,Object serializable){ + public static RegisterChangeListenerReply fromSerializable(final ActorSystem actorSystem,final Object serializable){ ListenerRegistrationMessages.RegisterChangeListenerReply o = (ListenerRegistrationMessages.RegisterChangeListenerReply) serializable; return new RegisterChangeListenerReply( actorSystem.actorFor(o.getListenerRegistrationPath()).path() diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataReply.java index 5404fb6510..876105de18 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataReply.java @@ -11,7 +11,8 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class WriteDataReply implements SerializableMessage{ - public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.WriteDataReply.class; + public static final Class SERIALIZABLE_CLASS = + ShardTransactionMessages.WriteDataReply.class; @Override public Object toSerializable() { return ShardTransactionMessages.WriteDataReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MergeModification.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MergeModification.java index 24c4c6c50a..2f9d77660a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MergeModification.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MergeModification.java @@ -20,18 +20,19 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; * MergeModification stores all the parameters required to merge data into the specified path */ public class MergeModification extends WriteModification { + private static final long serialVersionUID = 1L; - public MergeModification(YangInstanceIdentifier path, NormalizedNode data, - SchemaContext schemaContext) { + public MergeModification(final YangInstanceIdentifier path, final NormalizedNode data, + final SchemaContext schemaContext) { super(path, data, schemaContext); } @Override - public void apply(DOMStoreWriteTransaction transaction) { + public void apply(final DOMStoreWriteTransaction transaction) { transaction.merge(path, data); } - public static MergeModification fromSerializable(Object serializable, SchemaContext schemaContext) { + public static MergeModification fromSerializable(final Object serializable, final SchemaContext schemaContext) { PersistentMessages.Modification o = (PersistentMessages.Modification) serializable; Decoded decoded = new NormalizedNodeToNodeCodec(schemaContext).decode(o.getPath(), o.getData()); return new MergeModification(decoded.getDecodedPath(), decoded.getDecodedNode(), schemaContext); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/WriteModification.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/WriteModification.java index 53cc35a88b..b2964086fd 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/WriteModification.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/WriteModification.java @@ -21,22 +21,22 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; * WriteModification stores all the parameters required to write data to the specified path */ public class WriteModification extends AbstractModification { - - protected final NormalizedNode data; + private static final long serialVersionUID = 1L; + protected final NormalizedNode data; private final SchemaContext schemaContext; - public WriteModification(YangInstanceIdentifier path, NormalizedNode data, SchemaContext schemaContext) { + public WriteModification(final YangInstanceIdentifier path, final NormalizedNode data, final SchemaContext schemaContext) { super(path); this.data = data; this.schemaContext = schemaContext; } @Override - public void apply(DOMStoreWriteTransaction transaction) { + public void apply(final DOMStoreWriteTransaction transaction) { transaction.write(path, data); } - public NormalizedNode getData() { + public NormalizedNode getData() { return data; } @@ -51,7 +51,7 @@ public class WriteModification extends AbstractModification { .build(); } - public static WriteModification fromSerializable(Object serializable, SchemaContext schemaContext) { + public static WriteModification fromSerializable(final Object serializable, final SchemaContext schemaContext) { PersistentMessages.Modification o = (PersistentMessages.Modification) serializable; Decoded decoded = new NormalizedNodeToNodeCodec(schemaContext).decode(o.getPath(), o.getData()); return new WriteModification(decoded.getDecodedPath(), decoded.getDecodedNode(), schemaContext); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java index f4ab8fab6f..62fb65482b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactory.java @@ -10,26 +10,25 @@ package org.opendaylight.controller.cluster.datastore.shardstrategy; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import org.opendaylight.controller.cluster.datastore.Configuration; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.opendaylight.controller.cluster.datastore.Configuration; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class ShardStrategyFactory { private static Map moduleNameToStrategyMap = - new ConcurrentHashMap(); + new ConcurrentHashMap<>(); private static final String UNKNOWN_MODULE_NAME = "unknown"; private static Configuration configuration; - public static void setConfiguration(Configuration configuration){ + public static void setConfiguration(final Configuration configuration){ ShardStrategyFactory.configuration = configuration; moduleNameToStrategyMap = configuration.getModuleNameToShardStrategyMap(); } - public static ShardStrategy getStrategy(YangInstanceIdentifier path) { + public static ShardStrategy getStrategy(final YangInstanceIdentifier path) { Preconditions.checkState(configuration != null, "configuration should not be missing"); Preconditions.checkNotNull(path, "path should not be null"); @@ -44,7 +43,7 @@ public class ShardStrategyFactory { } - private static String getModuleName(YangInstanceIdentifier path) { + private static String getModuleName(final YangInstanceIdentifier path) { String namespace = path.getPathArguments().iterator().next().getNodeType().getNamespace().toASCIIString(); Optional optional = diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ActorContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ActorContext.java index 0a1e80b0cb..904dcdf439 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ActorContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ActorContext.java @@ -14,13 +14,16 @@ import akka.actor.ActorSelection; import akka.actor.ActorSystem; import akka.actor.PoisonPill; import akka.dispatch.Mapper; +import akka.pattern.AskTimeoutException; import akka.util.Timeout; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import org.opendaylight.controller.cluster.datastore.ClusterWrapper; import org.opendaylight.controller.cluster.datastore.Configuration; +import org.opendaylight.controller.cluster.datastore.DatastoreContext; import org.opendaylight.controller.cluster.datastore.exceptions.LocalShardNotFoundException; import org.opendaylight.controller.cluster.datastore.exceptions.NotInitializedException; +import org.opendaylight.controller.cluster.datastore.exceptions.PrimaryNotFoundException; import org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException; import org.opendaylight.controller.cluster.datastore.exceptions.UnknownMessageException; import org.opendaylight.controller.cluster.datastore.messages.ActorNotInitialized; @@ -29,6 +32,7 @@ import org.opendaylight.controller.cluster.datastore.messages.FindPrimary; import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound; import org.opendaylight.controller.cluster.datastore.messages.LocalShardNotFound; import org.opendaylight.controller.cluster.datastore.messages.PrimaryFound; +import org.opendaylight.controller.cluster.datastore.messages.PrimaryNotFound; import org.opendaylight.controller.cluster.datastore.messages.UpdateSchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; @@ -50,25 +54,55 @@ public class ActorContext { private static final Logger LOG = LoggerFactory.getLogger(ActorContext.class); - private static final FiniteDuration DEFAULT_OPER_DURATION = Duration.create(5, TimeUnit.SECONDS); - public static final String MAILBOX = "bounded-mailbox"; + private static final Mapper FIND_PRIMARY_FAILURE_TRANSFORMER = + new Mapper() { + @Override + public Throwable apply(Throwable failure) { + Throwable actualFailure = failure; + if(failure instanceof AskTimeoutException) { + // A timeout exception most likely means the shard isn't initialized. + actualFailure = new NotInitializedException( + "Timed out trying to find the primary shard. Most likely cause is the " + + "shard is not initialized yet."); + } + + return actualFailure; + } + }; + private final ActorSystem actorSystem; private final ActorRef shardManager; private final ClusterWrapper clusterWrapper; private final Configuration configuration; + private final DatastoreContext datastoreContext; private volatile SchemaContext schemaContext; - private FiniteDuration operationDuration = DEFAULT_OPER_DURATION; - private Timeout operationTimeout = new Timeout(operationDuration); + private final FiniteDuration operationDuration; + private final Timeout operationTimeout; + + public ActorContext(ActorSystem actorSystem, ActorRef shardManager, + ClusterWrapper clusterWrapper, Configuration configuration) { + this(actorSystem, shardManager, clusterWrapper, configuration, + DatastoreContext.newBuilder().build()); + } public ActorContext(ActorSystem actorSystem, ActorRef shardManager, - ClusterWrapper clusterWrapper, - Configuration configuration) { + ClusterWrapper clusterWrapper, Configuration configuration, + DatastoreContext datastoreContext) { this.actorSystem = actorSystem; this.shardManager = shardManager; this.clusterWrapper = clusterWrapper; this.configuration = configuration; + this.datastoreContext = datastoreContext; + + operationDuration = Duration.create(datastoreContext.getOperationTimeoutInSeconds(), + TimeUnit.SECONDS); + operationTimeout = new Timeout(operationDuration); + } + + public DatastoreContext getDatastoreContext() { + return datastoreContext; } public ActorSystem getActorSystem() { @@ -95,11 +129,6 @@ public class ActorContext { } } - public void setOperationTimeout(int timeoutInSeconds) { - operationDuration = Duration.create(timeoutInSeconds, TimeUnit.SECONDS); - operationTimeout = new Timeout(operationDuration); - } - public SchemaContext getSchemaContext() { return schemaContext; } @@ -118,6 +147,34 @@ public class ActorContext { return Optional.of(actorSystem.actorSelection(path)); } + public Future findPrimaryShardAsync(final String shardName) { + Future future = executeOperationAsync(shardManager, + new FindPrimary(shardName, true).toSerializable(), + datastoreContext.getShardInitializationTimeout()); + + return future.transform(new Mapper() { + @Override + public ActorSelection checkedApply(Object response) throws Exception { + if(response.getClass().equals(PrimaryFound.SERIALIZABLE_CLASS)) { + PrimaryFound found = PrimaryFound.fromSerializable(response); + + LOG.debug("Primary found {}", found.getPrimaryPath()); + return actorSystem.actorSelection(found.getPrimaryPath()); + } else if(response instanceof ActorNotInitialized) { + throw new NotInitializedException( + String.format("Found primary shard %s but it's not initialized yet. " + + "Please try again later", shardName)); + } else if(response instanceof PrimaryNotFound) { + throw new PrimaryNotFoundException( + String.format("No primary shard found for %S.", shardName)); + } + + throw new UnknownMessageException(String.format( + "FindPrimary returned unkown response: %s", response)); + } + }, FIND_PRIMARY_FAILURE_TRANSFORMER, getActorSystem().dispatcher()); + } + /** * Finds a local shard given its shard name and return it's ActorRef * @@ -143,9 +200,9 @@ public class ActorContext { * * @param shardName the name of the local shard that needs to be found */ - public Future findLocalShardAsync( final String shardName, Timeout timeout) { + public Future findLocalShardAsync( final String shardName) { Future future = executeOperationAsync(shardManager, - new FindLocalShard(shardName, true), timeout); + new FindLocalShard(shardName, true), datastoreContext.getShardInitializationTimeout()); return future.map(new Mapper() { @Override @@ -238,15 +295,28 @@ public class ActorContext { * * @param actor the ActorSelection * @param message the message to send + * @param timeout the operation timeout * @return a Future containing the eventual result */ - public Future executeOperationAsync(ActorSelection actor, Object message) { + public Future executeOperationAsync(ActorSelection actor, Object message, + Timeout timeout) { Preconditions.checkArgument(actor != null, "actor must not be null"); Preconditions.checkArgument(message != null, "message must not be null"); LOG.debug("Sending message {} to {}", message.getClass().toString(), actor.toString()); - return ask(actor, message, operationTimeout); + return ask(actor, message, timeout); + } + + /** + * Execute an operation on a remote actor asynchronously. + * + * @param actor the ActorSelection + * @param message the message to send + * @return a Future containing the eventual result + */ + public Future executeOperationAsync(ActorSelection actor, Object message) { + return executeOperationAsync(actor, message, operationTimeout); } /** @@ -325,4 +395,28 @@ public class ActorContext { return hostPort1.equals(hostPort2); } + + /** + * @deprecated This method is present only to support backward compatibility with Helium and should not be + * used any further + * + * + * @param primaryPath + * @param localPathOfRemoteActor + * @return + */ + @Deprecated + public String resolvePath(final String primaryPath, + final String localPathOfRemoteActor) { + StringBuilder builder = new StringBuilder(); + String[] primaryPathElements = primaryPath.split("/"); + builder.append(primaryPathElements[0]).append("//") + .append(primaryPathElements[1]).append(primaryPathElements[2]); + String[] remotePathElements = localPathOfRemoteActor.split("/"); + for (int i = 3; i < remotePathElements.length; i++) { + builder.append("/").append(remotePathElements[i]); + } + + return builder.toString(); + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java index de33f55b96..2f3fbdcef1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedConfigDataStoreProviderModule.java @@ -54,10 +54,15 @@ public class DistributedConfigDataStoreProviderModule extends getValue().intValue()) .shardSnapshotBatchCount(props.getShardSnapshotBatchCount().getValue().intValue()) .shardHeartbeatIntervalInMillis(props.getShardHearbeatIntervalInMillis().getValue()) + .shardInitializationTimeout(props.getShardInitializationTimeoutInSeconds().getValue(), + TimeUnit.SECONDS) + .shardLeaderElectionTimeout(props.getShardLeaderElectionTimeoutInSeconds().getValue(), + TimeUnit.SECONDS) .shardTransactionCommitTimeoutInSeconds( props.getShardTransactionCommitTimeoutInSeconds().getValue().intValue()) .shardTransactionCommitQueueCapacity( props.getShardTransactionCommitQueueCapacity().getValue().intValue()) + .persistent(props.getPersistent().booleanValue()) .build(); return DistributedDataStoreFactory.createInstance("config", getConfigSchemaServiceDependency(), diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java index ee1859d9ca..ecb3a91017 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java @@ -54,10 +54,15 @@ public class DistributedOperationalDataStoreProviderModule extends getValue().intValue()) .shardSnapshotBatchCount(props.getShardSnapshotBatchCount().getValue().intValue()) .shardHeartbeatIntervalInMillis(props.getShardHearbeatIntervalInMillis().getValue()) + .shardInitializationTimeout(props.getShardInitializationTimeoutInSeconds().getValue(), + TimeUnit.SECONDS) + .shardLeaderElectionTimeout(props.getShardLeaderElectionTimeoutInSeconds().getValue(), + TimeUnit.SECONDS) .shardTransactionCommitTimeoutInSeconds( props.getShardTransactionCommitTimeoutInSeconds().getValue().intValue()) .shardTransactionCommitQueueCapacity( props.getShardTransactionCommitQueueCapacity().getValue().intValue()) + .persistent(props.getPersistent().booleanValue()) .build(); return DistributedDataStoreFactory.createInstance("operational", diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang b/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang index 167d530d18..995e98f38f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/yang/distributed-datastore-provider.yang @@ -121,6 +121,21 @@ module distributed-datastore-provider { description "The maximum allowed capacity for each shard's transaction commit queue."; } + leaf shard-initialization-timeout-in-seconds { + default 300; // 5 minutes + type non-zero-uint32-type; + description "The maximum amount of time to wait for a shard to initialize from persistence + on startup before failing an operation (eg transaction create and change + listener registration)."; + } + + leaf shard-leader-election-timeout-in-seconds { + default 30; + type non-zero-uint32-type; + description "The maximum amount of time to wait for a shard to elect a leader before failing + an operation (eg transaction create)."; + } + leaf enable-metric-capture { default false; type boolean; @@ -132,6 +147,12 @@ module distributed-datastore-provider { type non-zero-uint32-type; description "Max queue size that an actor's mailbox can reach"; } + + leaf persistent { + default true; + type boolean; + description "Enable or disable data persistence"; + } } // Augments the 'configuration' choice node under modules/module. diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ConfigurationImplTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ConfigurationImplTest.java index 8c253596b8..afc060318c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ConfigurationImplTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ConfigurationImplTest.java @@ -1,17 +1,15 @@ package org.opendaylight.controller.cluster.datastore; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import com.typesafe.config.ConfigFactory; -import junit.framework.Assert; -import org.junit.BeforeClass; -import org.junit.Test; - import java.io.File; import java.util.List; import java.util.Set; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; public class ConfigurationImplTest { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java index c79d762035..55250dd5e9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java @@ -3,6 +3,11 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; import akka.actor.Props; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.messages.DataChanged; @@ -17,18 +22,12 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - public class DataChangeListenerProxyTest extends AbstractActorTest { private static class MockDataChangedEvent implements AsyncDataChangeEvent> { - Map> createdData = new HashMap(); - Map> updatedData = new HashMap(); - Map> originalData = new HashMap(); + Map> createdData = new HashMap<>(); + Map> updatedData = new HashMap<>(); + Map> originalData = new HashMap<>(); @@ -88,7 +87,7 @@ public class DataChangeListenerProxyTest extends AbstractActorTest { Assert.assertTrue(messages instanceof List); - List listMessages = (List) messages; + List listMessages = (List) messages; Assert.assertEquals(1, listMessages.size()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java index c27993f97b..9ac30095a5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java @@ -204,8 +204,7 @@ public class DataChangeListenerRegistrationProxyTest extends AbstractActorTest { doReturn(mockActorSystem).when(actorContext).getActorSystem(); doReturn(duration("5 seconds")).when(actorContext).getOperationDuration(); - doReturn(Futures.successful(getRef())).when(actorContext).findLocalShardAsync(eq(shardName), - any(Timeout.class)); + doReturn(Futures.successful(getRef())).when(actorContext).findLocalShardAsync(eq(shardName)); doReturn(Futures.failed(new RuntimeException("mock"))). when(actorContext).executeOperationAsync(any(ActorRef.class), any(Object.class), any(Timeout.class)); @@ -228,12 +227,12 @@ public class DataChangeListenerRegistrationProxyTest extends AbstractActorTest { final DataChangeListenerRegistrationProxy proxy = new DataChangeListenerRegistrationProxy( shardName, actorContext, mockListener); + doReturn(DatastoreContext.newBuilder().build()).when(actorContext).getDatastoreContext(); doReturn(getSystem()).when(actorContext).getActorSystem(); doReturn(getSystem().actorSelection(getRef().path())). when(actorContext).actorSelection(getRef().path()); doReturn(duration("5 seconds")).when(actorContext).getOperationDuration(); - doReturn(Futures.successful(getRef())).when(actorContext).findLocalShardAsync(eq(shardName), - any(Timeout.class)); + doReturn(Futures.successful(getRef())).when(actorContext).findLocalShardAsync(eq(shardName)); Answer> answer = new Answer>() { @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java index 101a73782b..d5a12c73c5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerTest.java @@ -4,6 +4,7 @@ import akka.actor.ActorRef; import akka.actor.DeadLetter; import akka.actor.Props; import akka.testkit.JavaTestKit; +import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import org.opendaylight.controller.cluster.datastore.messages.DataChanged; @@ -70,19 +71,25 @@ public class DataChangeListenerTest extends AbstractActorTest { final Props props = DataChangeListener.props(mockListener); final ActorRef subject = getSystem().actorOf(props, "testDataChangedWithNoSender"); - // Let the DataChangeListener know that notifications should be enabled - subject.tell(new EnableNotification(true), ActorRef.noSender()); + getSystem().eventStream().subscribe(getRef(), DeadLetter.class); subject.tell(new DataChanged(CompositeModel.createTestContext(), mockChangeEvent), ActorRef.noSender()); - getSystem().eventStream().subscribe(getRef(), DeadLetter.class); - new Within(duration("1 seconds")) { - @Override - protected void run() { - expectNoMsg(); + // Make sure no DataChangedReply is sent to DeadLetters. + while(true) { + DeadLetter deadLetter; + try { + deadLetter = expectMsgClass(duration("1 seconds"), DeadLetter.class); + } catch (AssertionError e) { + // Timed out - got no DeadLetter - this is good + break; } - }; + + // We may get DeadLetters for other messages we don't care about. + Assert.assertFalse("Unexpected DataChangedReply", + deadLetter.message() instanceof DataChangedReply); + } }}; } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java index 1cc7ae8ad0..9f5aded352 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java @@ -1,14 +1,26 @@ package org.opendaylight.controller.cluster.datastore; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.PoisonPill; import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Uninterruptibles; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import org.junit.Test; +import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException; +import org.opendaylight.controller.cluster.datastore.exceptions.NotInitializedException; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory; +import org.opendaylight.controller.cluster.datastore.utils.InMemoryJournal; import org.opendaylight.controller.cluster.datastore.utils.MockClusterWrapper; import org.opendaylight.controller.cluster.datastore.utils.MockDataChangeListener; import org.opendaylight.controller.md.cluster.datastore.model.CarsModel; @@ -16,6 +28,8 @@ import org.opendaylight.controller.md.cluster.datastore.model.PeopleModel; import org.opendaylight.controller.md.cluster.datastore.model.SchemaContextHelper; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; +import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.controller.md.sal.common.api.data.TransactionChainClosedException; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; @@ -23,16 +37,18 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import java.util.concurrent.TimeUnit; public class DistributedDataStoreIntegrationTest extends AbstractActorTest { + private final DatastoreContext.Builder datastoreContextBuilder = + DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100); + @Test public void testWriteTransactionWithSingleShard() throws Exception{ - System.setProperty("shard.persistent", "true"); new IntegrationTestKit(getSystem()) {{ DistributedDataStore dataStore = setupDistributedDataStore("transactionIntegrationTest", "test-1"); @@ -49,7 +65,6 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { @Test public void testWriteTransactionWithMultipleShards() throws Exception{ - System.setProperty("shard.persistent", "true"); new IntegrationTestKit(getSystem()) {{ DistributedDataStore dataStore = setupDistributedDataStore("testWriteTransactionWithMultipleShards", "cars-1", "people-1"); @@ -67,12 +82,9 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { DOMStoreThreePhaseCommitCohort cohort = writeTx.ready(); - Boolean canCommit = cohort.canCommit().get(5, TimeUnit.SECONDS); - assertEquals("canCommit", true, canCommit); - cohort.preCommit().get(5, TimeUnit.SECONDS); - cohort.commit().get(5, TimeUnit.SECONDS); + doCommit(cohort); - // 5. Verify the data in the store + // Verify the data in the store DOMStoreReadTransaction readTx = dataStore.newReadOnlyTransaction(); @@ -95,7 +107,7 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { DistributedDataStore dataStore = setupDistributedDataStore("testReadWriteTransaction", "test-1"); - // 1. Create a read-write Tx + // 1. Create a read-write Tx DOMStoreReadWriteTransaction readWriteTx = dataStore.newReadWriteTransaction(); assertNotNull("newReadWriteTransaction returned null", readWriteTx); @@ -121,10 +133,7 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { // 5. Commit the Tx - Boolean canCommit = cohort.canCommit().get(5, TimeUnit.SECONDS); - assertEquals("canCommit", true, canCommit); - cohort.preCommit().get(5, TimeUnit.SECONDS); - cohort.commit().get(5, TimeUnit.SECONDS); + doCommit(cohort); // 6. Verify the data in the store @@ -138,6 +147,381 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { }}; } + @Test + public void testTransactionWritesWithShardNotInitiallyReady() throws Exception{ + new IntegrationTestKit(getSystem()) {{ + String testName = "testTransactionWritesWithShardNotInitiallyReady"; + String shardName = "test-1"; + + // Setup the InMemoryJournal to block shard recovery to ensure the shard isn't + // initialized until we create and submit the write the Tx. + String persistentID = String.format("member-1-shard-%s-%s", shardName, testName); + CountDownLatch blockRecoveryLatch = new CountDownLatch(1); + InMemoryJournal.addBlockReadMessagesLatch(persistentID, blockRecoveryLatch); + + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); + + // Create the write Tx + + final DOMStoreWriteTransaction writeTx = dataStore.newWriteOnlyTransaction(); + assertNotNull("newReadWriteTransaction returned null", writeTx); + + // Do some modification operations and ready the Tx on a separate thread. + + final YangInstanceIdentifier listEntryPath = YangInstanceIdentifier.builder( + TestModel.OUTER_LIST_PATH).nodeWithKey(TestModel.OUTER_LIST_QNAME, + TestModel.ID_QNAME, 1).build(); + + final AtomicReference txCohort = new AtomicReference<>(); + final AtomicReference caughtEx = new AtomicReference<>(); + final CountDownLatch txReady = new CountDownLatch(1); + Thread txThread = new Thread() { + @Override + public void run() { + try { + writeTx.write(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + writeTx.merge(TestModel.OUTER_LIST_PATH, ImmutableNodes.mapNodeBuilder( + TestModel.OUTER_LIST_QNAME).build()); + + writeTx.write(listEntryPath, ImmutableNodes.mapEntry( + TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 1)); + + writeTx.delete(listEntryPath); + + txCohort.set(writeTx.ready()); + } catch(Exception e) { + caughtEx.set(e); + return; + } finally { + txReady.countDown(); + } + } + }; + + txThread.start(); + + // Wait for the Tx operations to complete. + + boolean done = Uninterruptibles.awaitUninterruptibly(txReady, 5, TimeUnit.SECONDS); + if(caughtEx.get() != null) { + throw caughtEx.get(); + } + + assertEquals("Tx ready", true, done); + + // At this point the Tx operations should be waiting for the shard to initialize so + // trigger the latch to let the shard recovery to continue. + + blockRecoveryLatch.countDown(); + + // Wait for the Tx commit to complete. + + doCommit(txCohort.get()); + + // Verify the data in the store + + DOMStoreReadTransaction readTx = dataStore.newReadOnlyTransaction(); + + Optional> optional = readTx.read(TestModel.TEST_PATH). + get(5, TimeUnit.SECONDS); + assertEquals("isPresent", true, optional.isPresent()); + + optional = readTx.read(TestModel.OUTER_LIST_PATH).get(5, TimeUnit.SECONDS); + assertEquals("isPresent", true, optional.isPresent()); + + optional = readTx.read(listEntryPath).get(5, TimeUnit.SECONDS); + assertEquals("isPresent", false, optional.isPresent()); + + cleanup(dataStore); + }}; + } + + @Test + public void testTransactionReadsWithShardNotInitiallyReady() throws Exception{ + new IntegrationTestKit(getSystem()) {{ + String testName = "testTransactionReadsWithShardNotInitiallyReady"; + String shardName = "test-1"; + + // Setup the InMemoryJournal to block shard recovery to ensure the shard isn't + // initialized until we create the Tx. + String persistentID = String.format("member-1-shard-%s-%s", shardName, testName); + CountDownLatch blockRecoveryLatch = new CountDownLatch(1); + InMemoryJournal.addBlockReadMessagesLatch(persistentID, blockRecoveryLatch); + + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); + + // Create the read-write Tx + + final DOMStoreReadWriteTransaction readWriteTx = dataStore.newReadWriteTransaction(); + assertNotNull("newReadWriteTransaction returned null", readWriteTx); + + // Do some reads on the Tx on a separate thread. + + final AtomicReference> txExistsFuture = + new AtomicReference<>(); + final AtomicReference>, ReadFailedException>> + txReadFuture = new AtomicReference<>(); + final AtomicReference caughtEx = new AtomicReference<>(); + final CountDownLatch txReadsDone = new CountDownLatch(1); + Thread txThread = new Thread() { + @Override + public void run() { + try { + readWriteTx.write(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + txExistsFuture.set(readWriteTx.exists(TestModel.TEST_PATH)); + + txReadFuture.set(readWriteTx.read(TestModel.TEST_PATH)); + } catch(Exception e) { + caughtEx.set(e); + return; + } finally { + txReadsDone.countDown(); + } + } + }; + + txThread.start(); + + // Wait for the Tx operations to complete. + + boolean done = Uninterruptibles.awaitUninterruptibly(txReadsDone, 5, TimeUnit.SECONDS); + if(caughtEx.get() != null) { + throw caughtEx.get(); + } + + assertEquals("Tx reads done", true, done); + + // At this point the Tx operations should be waiting for the shard to initialize so + // trigger the latch to let the shard recovery to continue. + + blockRecoveryLatch.countDown(); + + // Wait for the reads to complete and verify. + + assertEquals("exists", true, txExistsFuture.get().checkedGet(5, TimeUnit.SECONDS)); + assertEquals("read", true, txReadFuture.get().checkedGet(5, TimeUnit.SECONDS).isPresent()); + + readWriteTx.close(); + + cleanup(dataStore); + }}; + } + + @Test(expected=NotInitializedException.class) + public void testTransactionCommitFailureWithShardNotInitialized() throws Throwable{ + new IntegrationTestKit(getSystem()) {{ + String testName = "testTransactionCommitFailureWithShardNotInitialized"; + String shardName = "test-1"; + + // Set the shard initialization timeout low for the test. + + datastoreContextBuilder.shardInitializationTimeout(300, TimeUnit.MILLISECONDS); + + // Setup the InMemoryJournal to block shard recovery indefinitely. + + String persistentID = String.format("member-1-shard-%s-%s", shardName, testName); + CountDownLatch blockRecoveryLatch = new CountDownLatch(1); + InMemoryJournal.addBlockReadMessagesLatch(persistentID, blockRecoveryLatch); + + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); + + // Create the write Tx + + final DOMStoreWriteTransaction writeTx = dataStore.newWriteOnlyTransaction(); + assertNotNull("newReadWriteTransaction returned null", writeTx); + + // Do some modifications and ready the Tx on a separate thread. + + final AtomicReference txCohort = new AtomicReference<>(); + final AtomicReference caughtEx = new AtomicReference<>(); + final CountDownLatch txReady = new CountDownLatch(1); + Thread txThread = new Thread() { + @Override + public void run() { + try { + writeTx.write(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + txCohort.set(writeTx.ready()); + } catch(Exception e) { + caughtEx.set(e); + return; + } finally { + txReady.countDown(); + } + } + }; + + txThread.start(); + + // Wait for the Tx operations to complete. + + boolean done = Uninterruptibles.awaitUninterruptibly(txReady, 5, TimeUnit.SECONDS); + if(caughtEx.get() != null) { + throw caughtEx.get(); + } + + assertEquals("Tx ready", true, done); + + // Wait for the commit to complete. Since the shard never initialized, the Tx should + // have timed out and throw an appropriate exception cause. + + try { + txCohort.get().canCommit().get(5, TimeUnit.SECONDS); + } catch(ExecutionException e) { + throw e.getCause(); + } finally { + blockRecoveryLatch.countDown(); + cleanup(dataStore); + } + }}; + } + + @Test(expected=NotInitializedException.class) + public void testTransactionReadFailureWithShardNotInitialized() throws Throwable{ + new IntegrationTestKit(getSystem()) {{ + String testName = "testTransactionReadFailureWithShardNotInitialized"; + String shardName = "test-1"; + + // Set the shard initialization timeout low for the test. + + datastoreContextBuilder.shardInitializationTimeout(300, TimeUnit.MILLISECONDS); + + // Setup the InMemoryJournal to block shard recovery indefinitely. + + String persistentID = String.format("member-1-shard-%s-%s", shardName, testName); + CountDownLatch blockRecoveryLatch = new CountDownLatch(1); + InMemoryJournal.addBlockReadMessagesLatch(persistentID, blockRecoveryLatch); + + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); + + // Create the read-write Tx + + final DOMStoreReadWriteTransaction readWriteTx = dataStore.newReadWriteTransaction(); + assertNotNull("newReadWriteTransaction returned null", readWriteTx); + + // Do a read on the Tx on a separate thread. + + final AtomicReference>, ReadFailedException>> + txReadFuture = new AtomicReference<>(); + final AtomicReference caughtEx = new AtomicReference<>(); + final CountDownLatch txReadDone = new CountDownLatch(1); + Thread txThread = new Thread() { + @Override + public void run() { + try { + readWriteTx.write(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + txReadFuture.set(readWriteTx.read(TestModel.TEST_PATH)); + + readWriteTx.close(); + } catch(Exception e) { + caughtEx.set(e); + return; + } finally { + txReadDone.countDown(); + } + } + }; + + txThread.start(); + + // Wait for the Tx operations to complete. + + boolean done = Uninterruptibles.awaitUninterruptibly(txReadDone, 5, TimeUnit.SECONDS); + if(caughtEx.get() != null) { + throw caughtEx.get(); + } + + assertEquals("Tx read done", true, done); + + // Wait for the read to complete. Since the shard never initialized, the Tx should + // have timed out and throw an appropriate exception cause. + + try { + txReadFuture.get().checkedGet(5, TimeUnit.SECONDS); + } catch(ReadFailedException e) { + throw e.getCause(); + } finally { + blockRecoveryLatch.countDown(); + cleanup(dataStore); + } + }}; + } + + @Test(expected=NoShardLeaderException.class) + public void testTransactionCommitFailureWithNoShardLeader() throws Throwable{ + new IntegrationTestKit(getSystem()) {{ + String testName = "testTransactionCommitFailureWithNoShardLeader"; + String shardName = "test-1"; + + // We don't want the shard to become the leader so prevent shard election from completing + // by setting the election timeout, which is based on the heartbeat interval, really high. + + datastoreContextBuilder.shardHeartbeatIntervalInMillis(30000); + + // Set the leader election timeout low for the test. + + datastoreContextBuilder.shardLeaderElectionTimeout(1, TimeUnit.MILLISECONDS); + + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); + + // Create the write Tx. + + final DOMStoreWriteTransaction writeTx = dataStore.newWriteOnlyTransaction(); + assertNotNull("newReadWriteTransaction returned null", writeTx); + + // Do some modifications and ready the Tx on a separate thread. + + final AtomicReference txCohort = new AtomicReference<>(); + final AtomicReference caughtEx = new AtomicReference<>(); + final CountDownLatch txReady = new CountDownLatch(1); + Thread txThread = new Thread() { + @Override + public void run() { + try { + writeTx.write(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + txCohort.set(writeTx.ready()); + } catch(Exception e) { + caughtEx.set(e); + return; + } finally { + txReady.countDown(); + } + } + }; + + txThread.start(); + + // Wait for the Tx operations to complete. + + boolean done = Uninterruptibles.awaitUninterruptibly(txReady, 5, TimeUnit.SECONDS); + if(caughtEx.get() != null) { + throw caughtEx.get(); + } + + assertEquals("Tx ready", true, done); + + // Wait for the commit to complete. Since no shard leader was elected in time, the Tx + // should have timed out and throw an appropriate exception cause. + + try { + txCohort.get().canCommit().get(5, TimeUnit.SECONDS); + } catch(ExecutionException e) { + throw e.getCause(); + } finally { + cleanup(dataStore); + } + }}; + } + @Test public void testTransactionAbort() throws Exception{ System.setProperty("shard.persistent", "true"); @@ -165,10 +549,8 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { @Test public void testTransactionChain() throws Exception{ - System.setProperty("shard.persistent", "true"); new IntegrationTestKit(getSystem()) {{ - DistributedDataStore dataStore = - setupDistributedDataStore("transactionChainIntegrationTest", "test-1"); + DistributedDataStore dataStore = setupDistributedDataStore("testTransactionChain", "test-1"); // 1. Create a Tx chain and write-only Tx @@ -179,27 +561,127 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { // 2. Write some data - NormalizedNode containerNode = ImmutableNodes.containerNode(TestModel.TEST_QNAME); - writeTx.write(TestModel.TEST_PATH, containerNode); + NormalizedNode testNode = ImmutableNodes.containerNode(TestModel.TEST_QNAME); + writeTx.write(TestModel.TEST_PATH, testNode); // 3. Ready the Tx for commit - DOMStoreThreePhaseCommitCohort cohort = writeTx.ready(); + final DOMStoreThreePhaseCommitCohort cohort1 = writeTx.ready(); + + // 4. Commit the Tx on another thread that first waits for the second read Tx. + + final CountDownLatch continueCommit1 = new CountDownLatch(1); + final CountDownLatch commit1Done = new CountDownLatch(1); + final AtomicReference commit1Error = new AtomicReference<>(); + new Thread() { + @Override + public void run() { + try { + continueCommit1.await(); + doCommit(cohort1); + } catch (Exception e) { + commit1Error.set(e); + } finally { + commit1Done.countDown(); + } + } + }.start(); - // 4. Commit the Tx + // 5. Create a new read Tx from the chain to read and verify the data from the first + // Tx is visible after being readied. - Boolean canCommit = cohort.canCommit().get(5, TimeUnit.SECONDS); - assertEquals("canCommit", true, canCommit); - cohort.preCommit().get(5, TimeUnit.SECONDS); - cohort.commit().get(5, TimeUnit.SECONDS); + DOMStoreReadTransaction readTx = txChain.newReadOnlyTransaction(); + Optional> optional = readTx.read(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS); + assertEquals("isPresent", true, optional.isPresent()); + assertEquals("Data node", testNode, optional.get()); - // 5. Verify the data in the store + // 6. Create a new RW Tx from the chain, write more data, and ready it - DOMStoreReadTransaction readTx = txChain.newReadOnlyTransaction(); + DOMStoreReadWriteTransaction rwTx = txChain.newReadWriteTransaction(); + MapNode outerNode = ImmutableNodes.mapNodeBuilder(TestModel.OUTER_LIST_QNAME).build(); + rwTx.write(TestModel.OUTER_LIST_PATH, outerNode); - Optional> optional = readTx.read(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS); + DOMStoreThreePhaseCommitCohort cohort2 = rwTx.ready(); + + // 7. Create a new read Tx from the chain to read the data from the last RW Tx to + // verify it is visible. + + readTx = txChain.newReadWriteTransaction(); + optional = readTx.read(TestModel.OUTER_LIST_PATH).get(5, TimeUnit.SECONDS); assertEquals("isPresent", true, optional.isPresent()); - assertEquals("Data node", containerNode, optional.get()); + assertEquals("Data node", outerNode, optional.get()); + + // 8. Wait for the 2 commits to complete and close the chain. + + continueCommit1.countDown(); + Uninterruptibles.awaitUninterruptibly(commit1Done, 5, TimeUnit.SECONDS); + + if(commit1Error.get() != null) { + throw commit1Error.get(); + } + + doCommit(cohort2); + + txChain.close(); + + // 9. Create a new read Tx from the data store and verify committed data. + + readTx = dataStore.newReadOnlyTransaction(); + optional = readTx.read(TestModel.OUTER_LIST_PATH).get(5, TimeUnit.SECONDS); + assertEquals("isPresent", true, optional.isPresent()); + assertEquals("Data node", outerNode, optional.get()); + + cleanup(dataStore); + }}; + } + + @Test + public void testCreateChainedTransactionsInQuickSuccession() throws Exception{ + new IntegrationTestKit(getSystem()) {{ + DistributedDataStore dataStore = setupDistributedDataStore( + "testCreateChainedTransactionsInQuickSuccession", "test-1"); + + DOMStoreTransactionChain txChain = dataStore.createTransactionChain(); + + NormalizedNode testNode = ImmutableNodes.containerNode(TestModel.TEST_QNAME); + + int nTxs = 20; + List cohorts = new ArrayList<>(nTxs); + for(int i = 0; i < nTxs; i++) { + DOMStoreReadWriteTransaction rwTx = txChain.newReadWriteTransaction(); + + rwTx.merge(TestModel.TEST_PATH, testNode); + + cohorts.add(rwTx.ready()); + + } + + for(DOMStoreThreePhaseCommitCohort cohort: cohorts) { + doCommit(cohort); + } + + txChain.close(); + + cleanup(dataStore); + }}; + } + + @Test + public void testCreateChainedTransactionAfterEmptyTxReadied() throws Exception{ + new IntegrationTestKit(getSystem()) {{ + DistributedDataStore dataStore = setupDistributedDataStore( + "testCreateChainedTransactionAfterEmptyTxReadied", "test-1"); + + DOMStoreTransactionChain txChain = dataStore.createTransactionChain(); + + DOMStoreReadWriteTransaction rwTx1 = txChain.newReadWriteTransaction(); + + rwTx1.ready(); + + DOMStoreReadWriteTransaction rwTx2 = txChain.newReadWriteTransaction(); + + Optional> optional = rwTx2.read(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS); + assertEquals("isPresent", false, optional.isPresent()); txChain.close(); @@ -207,13 +689,52 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { }}; } + @Test + public void testCreateChainedTransactionWhenPreviousNotReady() throws Throwable { + new IntegrationTestKit(getSystem()) {{ + DistributedDataStore dataStore = setupDistributedDataStore( + "testCreateChainedTransactionWhenPreviousNotReady", "test-1"); + + final DOMStoreTransactionChain txChain = dataStore.createTransactionChain(); + + DOMStoreWriteTransaction writeTx = txChain.newWriteOnlyTransaction(); + assertNotNull("newWriteOnlyTransaction returned null", writeTx); + + writeTx.write(TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + // Try to create another Tx of each type - each should fail b/c the previous Tx wasn't + // readied. + + assertExceptionOnTxChainCreates(txChain, IllegalStateException.class); + }}; + } + + @Test + public void testCreateChainedTransactionAfterClose() throws Throwable { + new IntegrationTestKit(getSystem()) {{ + DistributedDataStore dataStore = setupDistributedDataStore( + "testCreateChainedTransactionAfterClose", "test-1"); + + DOMStoreTransactionChain txChain = dataStore.createTransactionChain(); + + txChain.close(); + + // Try to create another Tx of each type - should fail b/c the previous Tx was closed. + + assertExceptionOnTxChainCreates(txChain, TransactionChainClosedException.class); + }}; + } + @Test public void testChangeListenerRegistration() throws Exception{ new IntegrationTestKit(getSystem()) {{ DistributedDataStore dataStore = setupDistributedDataStore("testChangeListenerRegistration", "test-1"); - MockDataChangeListener listener = new MockDataChangeListener(3); + testWriteTransaction(dataStore, TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + + MockDataChangeListener listener = new MockDataChangeListener(1); ListenerRegistration listenerReg = dataStore.registerChangeListener(TestModel.TEST_PATH, listener, @@ -221,8 +742,13 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { assertNotNull("registerChangeListener returned null", listenerReg); - testWriteTransaction(dataStore, TestModel.TEST_PATH, - ImmutableNodes.containerNode(TestModel.TEST_QNAME)); + // Wait for the initial notification + + listener.waitForChangeEvents(TestModel.TEST_PATH); + + listener.reset(2); + + // Write 2 updates. testWriteTransaction(dataStore, TestModel.OUTER_LIST_PATH, ImmutableNodes.mapNodeBuilder(TestModel.OUTER_LIST_QNAME).build()); @@ -232,7 +758,9 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { testWriteTransaction(dataStore, listPath, ImmutableNodes.mapEntry(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 1)); - listener.waitForChangeEvents(TestModel.TEST_PATH, TestModel.OUTER_LIST_PATH, listPath ); + // Wait for the 2 updates. + + listener.waitForChangeEvents(TestModel.OUTER_LIST_PATH, listPath); listenerReg.close(); @@ -253,31 +781,37 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { } DistributedDataStore setupDistributedDataStore(String typeName, String... shardNames) { + return setupDistributedDataStore(typeName, true, shardNames); + } + + DistributedDataStore setupDistributedDataStore(String typeName, boolean waitUntilLeader, + String... shardNames) { MockClusterWrapper cluster = new MockClusterWrapper(); Configuration config = new ConfigurationImpl("module-shards.conf", "modules.conf"); ShardStrategyFactory.setConfiguration(config); - DatastoreContext datastoreContext = DatastoreContext.newBuilder().build(); + DatastoreContext datastoreContext = datastoreContextBuilder.build(); DistributedDataStore dataStore = new DistributedDataStore(getSystem(), typeName, cluster, config, datastoreContext); SchemaContext schemaContext = SchemaContextHelper.full(); dataStore.onGlobalContextUpdated(schemaContext); - for(String shardName: shardNames) { - ActorRef shard = null; - for(int i = 0; i < 20 * 5 && shard == null; i++) { - Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - Optional shardReply = dataStore.getActorContext().findLocalShard(shardName); - if(shardReply.isPresent()) { - shard = shardReply.get(); + if(waitUntilLeader) { + for(String shardName: shardNames) { + ActorRef shard = null; + for(int i = 0; i < 20 * 5 && shard == null; i++) { + Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); + Optional shardReply = dataStore.getActorContext().findLocalShard(shardName); + if(shardReply.isPresent()) { + shard = shardReply.get(); + } } - } - assertNotNull("Shard was not created", shard); + assertNotNull("Shard was not created", shard); - System.out.println("!!!!!!shard: "+shard.path().toString()); - waitUntilLeader(shard); + waitUntilLeader(shard); + } } return dataStore; @@ -301,10 +835,7 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { // 4. Commit the Tx - Boolean canCommit = cohort.canCommit().get(5, TimeUnit.SECONDS); - assertEquals("canCommit", true, canCommit); - cohort.preCommit().get(5, TimeUnit.SECONDS); - cohort.commit().get(5, TimeUnit.SECONDS); + doCommit(cohort); // 5. Verify the data in the store @@ -315,9 +846,53 @@ public class DistributedDataStoreIntegrationTest extends AbstractActorTest { assertEquals("Data node", nodeToWrite, optional.get()); } + void doCommit(final DOMStoreThreePhaseCommitCohort cohort) throws Exception { + Boolean canCommit = cohort.canCommit().get(5, TimeUnit.SECONDS); + assertEquals("canCommit", true, canCommit); + cohort.preCommit().get(5, TimeUnit.SECONDS); + cohort.commit().get(5, TimeUnit.SECONDS); + } + void cleanup(DistributedDataStore dataStore) { dataStore.getActorContext().getShardManager().tell(PoisonPill.getInstance(), null); } + + void assertExceptionOnCall(Callable callable, Class expType) + throws Exception { + try { + callable.call(); + fail("Expected " + expType.getSimpleName()); + } catch(Exception e) { + assertEquals("Exception type", expType, e.getClass()); + } + } + + void assertExceptionOnTxChainCreates(final DOMStoreTransactionChain txChain, + Class expType) throws Exception { + assertExceptionOnCall(new Callable() { + @Override + public Void call() throws Exception { + txChain.newWriteOnlyTransaction(); + return null; + } + }, expType); + + assertExceptionOnCall(new Callable() { + @Override + public Void call() throws Exception { + txChain.newReadWriteTransaction(); + return null; + } + }, expType); + + assertExceptionOnCall(new Callable() { + @Override + public Void call() throws Exception { + txChain.newReadOnlyTransaction(); + return null; + } + }, expType); + } } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java index c04dcf1534..e70d79c61a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java @@ -2,18 +2,19 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; import akka.actor.Props; +import akka.japi.Creator; import akka.pattern.Patterns; import akka.persistence.RecoveryCompleted; import akka.testkit.JavaTestKit; import akka.testkit.TestActorRef; import akka.util.Timeout; -import akka.japi.Creator; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import com.google.common.util.concurrent.Uninterruptibles; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; import org.opendaylight.controller.cluster.datastore.messages.ActorInitialized; import org.opendaylight.controller.cluster.datastore.messages.ActorNotInitialized; @@ -33,6 +34,7 @@ import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.Await; import scala.concurrent.Future; + import java.net.URI; import java.util.Collection; import java.util.HashSet; @@ -40,7 +42,9 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; + import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -347,6 +351,80 @@ public class ShardManagerTest extends AbstractActorTest { }}; } + @Test + public void testRecoveryApplicable(){ + new JavaTestKit(getSystem()) { + { + final Props persistentProps = ShardManager.props(shardMrgIDSuffix, + new MockClusterWrapper(), + new MockConfiguration(), + DatastoreContext.newBuilder().persistent(true).build()); + final TestActorRef persistentShardManager = + TestActorRef.create(getSystem(), persistentProps); + + DataPersistenceProvider dataPersistenceProvider1 = persistentShardManager.underlyingActor().getDataPersistenceProvider(); + + assertTrue("Recovery Applicable", dataPersistenceProvider1.isRecoveryApplicable()); + + final Props nonPersistentProps = ShardManager.props(shardMrgIDSuffix, + new MockClusterWrapper(), + new MockConfiguration(), + DatastoreContext.newBuilder().persistent(false).build()); + final TestActorRef nonPersistentShardManager = + TestActorRef.create(getSystem(), nonPersistentProps); + + DataPersistenceProvider dataPersistenceProvider2 = nonPersistentShardManager.underlyingActor().getDataPersistenceProvider(); + + assertFalse("Recovery Not Applicable", dataPersistenceProvider2.isRecoveryApplicable()); + + + }}; + + } + + @Test + public void testOnUpdateSchemaContextUpdateKnownModulesCallsDataPersistenceProvider() + throws Exception { + final CountDownLatch persistLatch = new CountDownLatch(1); + final Creator creator = new Creator() { + private static final long serialVersionUID = 1L; + @Override + public ShardManager create() throws Exception { + return new ShardManager(shardMrgIDSuffix, new MockClusterWrapper(), new MockConfiguration(), DatastoreContext.newBuilder().build()) { + @Override + protected DataPersistenceProvider createDataPersistenceProvider(boolean persistent) { + DataPersistenceProviderMonitor dataPersistenceProviderMonitor + = new DataPersistenceProviderMonitor(); + dataPersistenceProviderMonitor.setPersistLatch(persistLatch); + return dataPersistenceProviderMonitor; + } + }; + } + }; + + new JavaTestKit(getSystem()) {{ + + final TestActorRef shardManager = + TestActorRef.create(getSystem(), Props.create(new DelegatingShardManagerCreator(creator))); + + ModuleIdentifier foo = mock(ModuleIdentifier.class); + when(foo.getNamespace()).thenReturn(new URI("foo")); + + Set moduleIdentifierSet = new HashSet<>(); + moduleIdentifierSet.add(foo); + + SchemaContext schemaContext = mock(SchemaContext.class); + when(schemaContext.getAllModuleIdentifiers()).thenReturn(moduleIdentifierSet); + + shardManager.underlyingActor().onReceiveCommand(new UpdateSchemaContext(schemaContext)); + + assertEquals("Persisted", true, + Uninterruptibles.awaitUninterruptibly(persistLatch, 5, TimeUnit.SECONDS)); + + }}; + } + + private static class TestShardManager extends ShardManager { private final CountDownLatch recoveryComplete = new CountDownLatch(1); @@ -387,4 +465,18 @@ public class ShardManagerTest extends AbstractActorTest { } } + + private static class DelegatingShardManagerCreator implements Creator { + private static final long serialVersionUID = 1L; + private Creator delegate; + + public DelegatingShardManagerCreator(Creator delegate) { + this.delegate = delegate; + } + + @Override + public ShardManager create() throws Exception { + return delegate.create(); + } + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTest.java index 03a18ea6c3..e5b5643297 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTest.java @@ -1,5 +1,16 @@ package org.opendaylight.controller.cluster.datastore; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.mock; +import static org.opendaylight.controller.cluster.datastore.messages.CreateTransaction.CURRENT_VERSION; import akka.actor.ActorRef; import akka.actor.PoisonPill; import akka.actor.Props; @@ -16,6 +27,16 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.Uninterruptibles; +import java.io.IOException; +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -79,25 +100,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.FiniteDuration; -import java.io.IOException; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.inOrder; + public class ShardTest extends AbstractActorTest { @@ -114,8 +117,6 @@ public class ShardTest extends AbstractActorTest { @Before public void setUp() { - System.setProperty("shard.persistent", "false"); - InMemorySnapshotStore.clear(); InMemoryJournal.clear(); } @@ -187,7 +188,7 @@ public class ShardTest extends AbstractActorTest { return new Shard(shardID, Collections.emptyMap(), dataStoreContext, SCHEMA_CONTEXT) { @Override - public void onReceiveCommand(final Object message) { + public void onReceiveCommand(final Object message) throws Exception { if(message instanceof ElectionTimeout && firstElectionTimeout) { // Got the first ElectionTimeout. We don't forward it to the // base Shard yet until we've sent the RegisterChangeListener @@ -305,8 +306,9 @@ public class ShardTest extends AbstractActorTest { }}; } + @SuppressWarnings("serial") @Test - public void testPeerAddressResolved(){ + public void testPeerAddressResolved() throws Exception { new ShardTestKit(getSystem()) {{ final CountDownLatch recoveryComplete = new CountDownLatch(1); class TestShard extends Shard { @@ -352,7 +354,7 @@ public class ShardTest extends AbstractActorTest { } @Test - public void testApplySnapshot() throws ExecutionException, InterruptedException { + public void testApplySnapshot() throws Exception { TestActorRef shard = TestActorRef.create(getSystem(), newShardProps(), "testApplySnapshot"); @@ -506,7 +508,7 @@ public class ShardTest extends AbstractActorTest { shard.tell(PoisonPill.getInstance(), ActorRef.noSender()); } - private CompositeModificationPayload newPayload(Modification... mods) { + private CompositeModificationPayload newPayload(final Modification... mods) { MutableCompositeModification compMod = new MutableCompositeModification(); for(Modification mod: mods) { compMod.addModification(mod); @@ -515,15 +517,15 @@ public class ShardTest extends AbstractActorTest { return new CompositeModificationPayload(compMod.toSerializable()); } - private DOMStoreThreePhaseCommitCohort setupMockWriteTransaction(String cohortName, - InMemoryDOMDataStore dataStore, YangInstanceIdentifier path, NormalizedNode data, - MutableCompositeModification modification) { + private DOMStoreThreePhaseCommitCohort setupMockWriteTransaction(final String cohortName, + final InMemoryDOMDataStore dataStore, final YangInstanceIdentifier path, final NormalizedNode data, + final MutableCompositeModification modification) { return setupMockWriteTransaction(cohortName, dataStore, path, data, modification, null); } - private DOMStoreThreePhaseCommitCohort setupMockWriteTransaction(String cohortName, - InMemoryDOMDataStore dataStore, YangInstanceIdentifier path, NormalizedNode data, - MutableCompositeModification modification, + private DOMStoreThreePhaseCommitCohort setupMockWriteTransaction(final String cohortName, + final InMemoryDOMDataStore dataStore, final YangInstanceIdentifier path, final NormalizedNode data, + final MutableCompositeModification modification, final Function> preCommit) { DOMStoreWriteTransaction tx = dataStore.newWriteOnlyTransaction(); @@ -533,14 +535,14 @@ public class ShardTest extends AbstractActorTest { doAnswer(new Answer>() { @Override - public ListenableFuture answer(InvocationOnMock invocation) { + public ListenableFuture answer(final InvocationOnMock invocation) { return realCohort.canCommit(); } }).when(cohort).canCommit(); doAnswer(new Answer>() { @Override - public ListenableFuture answer(InvocationOnMock invocation) throws Throwable { + public ListenableFuture answer(final InvocationOnMock invocation) throws Throwable { if(preCommit != null) { return preCommit.apply(realCohort); } else { @@ -551,14 +553,14 @@ public class ShardTest extends AbstractActorTest { doAnswer(new Answer>() { @Override - public ListenableFuture answer(InvocationOnMock invocation) throws Throwable { + public ListenableFuture answer(final InvocationOnMock invocation) throws Throwable { return realCohort.commit(); } }).when(cohort).commit(); doAnswer(new Answer>() { @Override - public ListenableFuture answer(InvocationOnMock invocation) throws Throwable { + public ListenableFuture answer(final InvocationOnMock invocation) throws Throwable { return realCohort.abort(); } }).when(cohort).abort(); @@ -571,7 +573,6 @@ public class ShardTest extends AbstractActorTest { @SuppressWarnings({ "unchecked" }) @Test public void testConcurrentThreePhaseCommits() throws Throwable { - System.setProperty("shard.persistent", "true"); new ShardTestKit(getSystem()) {{ final TestActorRef shard = TestActorRef.create(getSystem(), newShardProps().withDispatcher(Dispatchers.DefaultDispatcherId()), @@ -610,7 +611,8 @@ public class ShardTest extends AbstractActorTest { // Simulate the ForwardedReadyTransaction message for the first Tx that would be sent // by the ShardTransaction. - shard.tell(new ForwardedReadyTransaction(transactionID1, cohort1, modification1, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID1, CURRENT_VERSION, + cohort1, modification1, true), getRef()); ReadyTransactionReply readyReply = ReadyTransactionReply.fromSerializable( expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS)); assertEquals("Cohort path", shard.path().toString(), readyReply.getCohortPath()); @@ -624,10 +626,12 @@ public class ShardTest extends AbstractActorTest { // Send the ForwardedReadyTransaction for the next 2 Tx's. - shard.tell(new ForwardedReadyTransaction(transactionID2, cohort2, modification2, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID2, CURRENT_VERSION, + cohort2, modification2, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); - shard.tell(new ForwardedReadyTransaction(transactionID3, cohort3, modification3, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID3, CURRENT_VERSION, + cohort3, modification3, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // Send the CanCommitTransaction message for the next 2 Tx's. These should get queued and @@ -653,12 +657,12 @@ public class ShardTest extends AbstractActorTest { class OnFutureComplete extends OnComplete { private final Class expRespType; - OnFutureComplete(Class expRespType) { + OnFutureComplete(final Class expRespType) { this.expRespType = expRespType; } @Override - public void onComplete(Throwable error, Object resp) { + public void onComplete(final Throwable error, final Object resp) { if(error != null) { caughtEx.set(new AssertionError(getClass().getSimpleName() + " failure", error)); } else { @@ -671,7 +675,7 @@ public class ShardTest extends AbstractActorTest { } } - void onSuccess(Object resp) throws Exception { + void onSuccess(final Object resp) throws Exception { } } @@ -681,7 +685,7 @@ public class ShardTest extends AbstractActorTest { } @Override - public void onComplete(Throwable error, Object resp) { + public void onComplete(final Throwable error, final Object resp) { super.onComplete(error, resp); commitLatch.countDown(); } @@ -690,13 +694,13 @@ public class ShardTest extends AbstractActorTest { class OnCanCommitFutureComplete extends OnFutureComplete { private final String transactionID; - OnCanCommitFutureComplete(String transactionID) { + OnCanCommitFutureComplete(final String transactionID) { super(CanCommitTransactionReply.SERIALIZABLE_CLASS); this.transactionID = transactionID; } @Override - void onSuccess(Object resp) throws Exception { + void onSuccess(final Object resp) throws Exception { CanCommitTransactionReply canCommitReply = CanCommitTransactionReply.fromSerializable(resp); assertEquals("Can commit", true, canCommitReply.getCanCommit()); @@ -791,10 +795,12 @@ public class ShardTest extends AbstractActorTest { // Simulate the ForwardedReadyTransaction messages that would be sent // by the ShardTransaction. - shard.tell(new ForwardedReadyTransaction(transactionID1, cohort1, modification1, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID1, CURRENT_VERSION, + cohort1, modification1, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); - shard.tell(new ForwardedReadyTransaction(transactionID2, cohort2, modification2, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID2, CURRENT_VERSION, + cohort2, modification2, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // Send the CanCommitTransaction message for the first Tx. @@ -821,7 +827,7 @@ public class ShardTest extends AbstractActorTest { final CountDownLatch latch = new CountDownLatch(1); canCommitFuture.onComplete(new OnComplete() { @Override - public void onComplete(Throwable t, Object resp) { + public void onComplete(final Throwable t, final Object resp) { latch.countDown(); } }, getSystem().dispatcher()); @@ -858,7 +864,8 @@ public class ShardTest extends AbstractActorTest { // Simulate the ForwardedReadyTransaction messages that would be sent // by the ShardTransaction. - shard.tell(new ForwardedReadyTransaction(transactionID, cohort, modification, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID, CURRENT_VERSION, + cohort, modification, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // Send the CanCommitTransaction message. @@ -901,7 +908,8 @@ public class ShardTest extends AbstractActorTest { // Simulate the ForwardedReadyTransaction messages that would be sent // by the ShardTransaction. - shard.tell(new ForwardedReadyTransaction(transactionID, cohort, modification, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID, CURRENT_VERSION, + cohort, modification, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // Send the CanCommitTransaction message. @@ -915,7 +923,6 @@ public class ShardTest extends AbstractActorTest { @Test public void testAbortBeforeFinishCommit() throws Throwable { - System.setProperty("shard.persistent", "true"); new ShardTestKit(getSystem()) {{ final TestActorRef shard = TestActorRef.create(getSystem(), newShardProps().withDispatcher(Dispatchers.DefaultDispatcherId()), @@ -940,7 +947,7 @@ public class ShardTest extends AbstractActorTest { new AbortTransaction(transactionID).toSerializable(), timeout); abortFuture.onComplete(new OnComplete() { @Override - public void onComplete(Throwable e, Object resp) { + public void onComplete(final Throwable e, final Object resp) { abortComplete.countDown(); } }, getSystem().dispatcher()); @@ -954,7 +961,8 @@ public class ShardTest extends AbstractActorTest { TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME), modification, preCommit); - shard.tell(new ForwardedReadyTransaction(transactionID, cohort, modification, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID, CURRENT_VERSION, + cohort, modification, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); shard.tell(new CanCommitTransaction(transactionID).toSerializable(), getRef()); @@ -1018,10 +1026,12 @@ public class ShardTest extends AbstractActorTest { // Ready the Tx's - shard.tell(new ForwardedReadyTransaction(transactionID1, cohort1, modification1, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID1, CURRENT_VERSION, + cohort1, modification1, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); - shard.tell(new ForwardedReadyTransaction(transactionID2, cohort2, modification2, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID2, CURRENT_VERSION, + cohort2, modification2, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // canCommit 1st Tx. We don't send the commit so it should timeout. @@ -1080,13 +1090,16 @@ public class ShardTest extends AbstractActorTest { // Ready the Tx's - shard.tell(new ForwardedReadyTransaction(transactionID1, cohort1, modification1, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID1, CURRENT_VERSION, + cohort1, modification1, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); - shard.tell(new ForwardedReadyTransaction(transactionID2, cohort2, modification2, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID2, CURRENT_VERSION, + cohort2, modification2, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); - shard.tell(new ForwardedReadyTransaction(transactionID3, cohort3, modification3, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID3, CURRENT_VERSION, + cohort3, modification3, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // canCommit 1st Tx. @@ -1149,10 +1162,12 @@ public class ShardTest extends AbstractActorTest { // Simulate the ForwardedReadyTransaction messages that would be sent // by the ShardTransaction. - shard.tell(new ForwardedReadyTransaction(transactionID1, cohort1, modification1, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID1, CURRENT_VERSION, + cohort1, modification1, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); - shard.tell(new ForwardedReadyTransaction(transactionID2, cohort2, modification2, true), getRef()); + shard.tell(new ForwardedReadyTransaction(transactionID2, CURRENT_VERSION, + cohort2, modification2, true), getRef()); expectMsgClass(duration, ReadyTransactionReply.SERIALIZABLE_CLASS); // Send the CanCommitTransaction message for the first Tx. @@ -1179,7 +1194,7 @@ public class ShardTest extends AbstractActorTest { final CountDownLatch latch = new CountDownLatch(1); canCommitFuture.onComplete(new OnComplete() { @Override - public void onComplete(Throwable t, Object resp) { + public void onComplete(final Throwable t, final Object resp) { latch.countDown(); } }, getSystem().dispatcher()); @@ -1196,6 +1211,19 @@ public class ShardTest extends AbstractActorTest { @Test public void testCreateSnapshot() throws IOException, InterruptedException { + testCreateSnapshot(true, "testCreateSnapshot"); + } + + @Test + public void testCreateSnapshotWithNonPersistentData() throws IOException, InterruptedException { + testCreateSnapshot(false, "testCreateSnapshotWithNonPersistentData"); + } + + @SuppressWarnings("serial") + public void testCreateSnapshot(final boolean persistent, final String shardActorName) throws IOException, InterruptedException { + final DatastoreContext dataStoreContext = DatastoreContext.newBuilder(). + shardJournalRecoveryLogBatchSize(3).shardSnapshotBatchCount(5000).persistent(persistent).build(); + new ShardTestKit(getSystem()) {{ final AtomicReference latch = new AtomicReference<>(new CountDownLatch(1)); Creator creator = new Creator() { @@ -1204,8 +1232,8 @@ public class ShardTest extends AbstractActorTest { return new Shard(shardID, Collections.emptyMap(), dataStoreContext, SCHEMA_CONTEXT) { @Override - public void saveSnapshot(Object snapshot) { - super.saveSnapshot(snapshot); + protected void commitSnapshot(final long sequenceNumber) { + super.commitSnapshot(sequenceNumber); latch.get().countDown(); } }; @@ -1213,7 +1241,7 @@ public class ShardTest extends AbstractActorTest { }; TestActorRef shard = TestActorRef.create(getSystem(), - Props.create(new DelegatingShardCreator(creator)), "testCreateSnapshot"); + Props.create(new DelegatingShardCreator(creator)), shardActorName); waitUntilLeader(shard); @@ -1247,7 +1275,7 @@ public class ShardTest extends AbstractActorTest { commitTransaction(putTransaction); - NormalizedNode expected = readStore(store); + NormalizedNode expected = readStore(store); DOMStoreWriteTransaction writeTransaction = store.newWriteOnlyTransaction(); @@ -1256,13 +1284,48 @@ public class ShardTest extends AbstractActorTest { commitTransaction(writeTransaction); - NormalizedNode actual = readStore(store); + NormalizedNode actual = readStore(store); assertEquals(expected, actual); } - private NormalizedNode readStore(InMemoryDOMDataStore store) throws ReadFailedException { + @Test + public void testRecoveryApplicable(){ + + final DatastoreContext persistentContext = DatastoreContext.newBuilder(). + shardJournalRecoveryLogBatchSize(3).shardSnapshotBatchCount(5000).persistent(true).build(); + + final Props persistentProps = Shard.props(shardID, Collections.emptyMap(), + persistentContext, SCHEMA_CONTEXT); + + final DatastoreContext nonPersistentContext = DatastoreContext.newBuilder(). + shardJournalRecoveryLogBatchSize(3).shardSnapshotBatchCount(5000).persistent(false).build(); + + final Props nonPersistentProps = Shard.props(shardID, Collections.emptyMap(), + nonPersistentContext, SCHEMA_CONTEXT); + + new ShardTestKit(getSystem()) {{ + TestActorRef shard1 = TestActorRef.create(getSystem(), + persistentProps, "testPersistence1"); + + assertTrue("Recovery Applicable", shard1.underlyingActor().getDataPersistenceProvider().isRecoveryApplicable()); + + shard1.tell(PoisonPill.getInstance(), ActorRef.noSender()); + + TestActorRef shard2 = TestActorRef.create(getSystem(), + nonPersistentProps, "testPersistence2"); + + assertFalse("Recovery Not Applicable", shard2.underlyingActor().getDataPersistenceProvider().isRecoveryApplicable()); + + shard2.tell(PoisonPill.getInstance(), ActorRef.noSender()); + + }}; + + } + + + private NormalizedNode readStore(final InMemoryDOMDataStore store) throws ReadFailedException { DOMStoreReadTransaction transaction = store.newReadOnlyTransaction(); CheckedFuture>, ReadFailedException> read = transaction.read(YangInstanceIdentifier.builder().build()); @@ -1276,7 +1339,7 @@ public class ShardTest extends AbstractActorTest { return normalizedNode; } - private void commitTransaction(DOMStoreWriteTransaction transaction) { + private void commitTransaction(final DOMStoreWriteTransaction transaction) { DOMStoreThreePhaseCommitCohort commitCohort = transaction.ready(); ListenableFuture future = commitCohort.preCommit(); @@ -1292,13 +1355,13 @@ public class ShardTest extends AbstractActorTest { return new AsyncDataChangeListener>() { @Override public void onDataChanged( - AsyncDataChangeEvent> change) { + final AsyncDataChangeEvent> change) { } }; } - private NormalizedNode readStore(TestActorRef shard, YangInstanceIdentifier id) + static NormalizedNode readStore(final TestActorRef shard, final YangInstanceIdentifier id) throws ExecutionException, InterruptedException { DOMStoreReadTransaction transaction = shard.underlyingActor().getDataStore().newReadOnlyTransaction(); @@ -1313,7 +1376,7 @@ public class ShardTest extends AbstractActorTest { return node; } - private void writeToStore(TestActorRef shard, YangInstanceIdentifier id, NormalizedNode node) + private void writeToStore(final TestActorRef shard, final YangInstanceIdentifier id, final NormalizedNode node) throws ExecutionException, InterruptedException { DOMStoreWriteTransaction transaction = shard.underlyingActor().getDataStore().newWriteOnlyTransaction(); @@ -1324,10 +1387,11 @@ public class ShardTest extends AbstractActorTest { commitCohort.commit().get(); } + @SuppressWarnings("serial") private static final class DelegatingShardCreator implements Creator { private final Creator delegate; - DelegatingShardCreator(Creator delegate) { + DelegatingShardCreator(final Creator delegate) { this.delegate = delegate; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTestKit.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTestKit.java index d08258a2a0..fa15db6949 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTestKit.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTestKit.java @@ -7,21 +7,22 @@ */ package org.opendaylight.controller.cluster.datastore; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; +import akka.actor.ActorRef; +import akka.actor.ActorSystem; +import akka.pattern.Patterns; +import akka.testkit.JavaTestKit; +import akka.util.Timeout; +import com.google.common.util.concurrent.Uninterruptibles; import org.junit.Assert; import org.opendaylight.controller.cluster.raft.client.messages.FindLeader; import org.opendaylight.controller.cluster.raft.client.messages.FindLeaderReply; -import com.google.common.util.concurrent.Uninterruptibles; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; -import akka.actor.ActorRef; -import akka.actor.ActorSystem; -import akka.pattern.Patterns; -import akka.testkit.JavaTestKit; -import akka.util.Timeout; + +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; class ShardTestKit extends JavaTestKit { @@ -29,7 +30,7 @@ class ShardTestKit extends JavaTestKit { super(actorSystem); } - protected void waitForLogMessage(final Class logLevel, ActorRef subject, String logMessage){ + protected void waitForLogMessage(final Class logLevel, ActorRef subject, String logMessage){ // Wait for a specific log message to show up final boolean result = new JavaTestKit.EventFilter(logLevel @@ -67,4 +68,5 @@ class ShardTestKit extends JavaTestKit { Assert.fail("Leader not found for shard " + shard.path()); } + } \ No newline at end of file diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java index 6375e3c7fb..5781c19b25 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java @@ -16,10 +16,13 @@ import akka.pattern.AskTimeoutException; import akka.testkit.TestActorRef; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; +import java.util.Collections; +import java.util.concurrent.TimeUnit; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStats; +import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; import org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeSerializer; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; @@ -32,8 +35,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; -import java.util.Collections; -import java.util.concurrent.TimeUnit; /** * Covers negative test cases @@ -65,7 +66,7 @@ public class ShardTransactionFailureTest extends AbstractActorTest { } private ActorRef createShard(){ - return getSystem().actorOf(Shard.props(SHARD_IDENTIFIER, Collections.EMPTY_MAP, datastoreContext, + return getSystem().actorOf(Shard.props(SHARD_IDENTIFIER, Collections.emptyMap(), datastoreContext, TestModel.createTestContext())); } @@ -75,7 +76,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, @@ -104,7 +106,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, @@ -133,7 +136,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, @@ -162,7 +166,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newWriteOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, @@ -194,7 +199,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, @@ -231,7 +237,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, "testNegativeMergeTransactionReady"); @@ -263,7 +270,8 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef subject = TestActorRef .create(getSystem(), props, diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionHeliumBackwardsCompatibilityTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionHeliumBackwardsCompatibilityTest.java new file mode 100644 index 0000000000..af07aeebcf --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionHeliumBackwardsCompatibilityTest.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2014 Brocade Communications 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.cluster.datastore; + +import java.util.Collections; +import org.junit.Assert; +import org.junit.Test; +import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; +import org.opendaylight.controller.cluster.datastore.messages.AbortTransactionReply; +import org.opendaylight.controller.cluster.datastore.messages.CanCommitTransactionReply; +import org.opendaylight.controller.cluster.datastore.messages.CommitTransactionReply; +import org.opendaylight.controller.cluster.datastore.messages.PreCommitTransactionReply; +import org.opendaylight.controller.cluster.datastore.messages.ReadyTransaction; +import org.opendaylight.controller.cluster.datastore.messages.ReadyTransactionReply; +import org.opendaylight.controller.cluster.datastore.messages.WriteData; +import org.opendaylight.controller.cluster.datastore.messages.WriteDataReply; +import org.opendaylight.controller.md.cluster.datastore.model.TestModel; +import org.opendaylight.controller.protobuff.messages.cohort3pc.ThreePhaseCommitCohortMessages; +import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; +import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages.CreateTransactionReply; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import scala.concurrent.duration.FiniteDuration; +import akka.actor.ActorRef; +import akka.actor.ActorSelection; +import akka.actor.PoisonPill; +import akka.actor.Props; +import akka.dispatch.Dispatchers; +import akka.testkit.TestActorRef; + +/** + * Tests backwards compatibility support from Helium-1 to Helium. + * + * In Helium-1, the 3-phase commit support was moved from the ThreePhaseCommitCohort actor to the + * Shard. As a consequence, a new transactionId field was added to the CanCommitTransaction, + * CommitTransaction and AbortTransaction messages. With a base Helium version node, these messages + * would be sans transactionId so this test verifies the Shard handles that properly. + * + * @author Thomas Pantelis + */ +public class ShardTransactionHeliumBackwardsCompatibilityTest extends AbstractActorTest { + + @Test + public void testTransactionCommit() throws Exception { + new ShardTestKit(getSystem()) {{ + SchemaContext schemaContext = TestModel.createTestContext(); + Props shardProps = Shard.props(ShardIdentifier.builder().memberName("member-1"). + shardName("inventory").type("config").build(), + Collections.emptyMap(), + DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100).build(), + schemaContext).withDispatcher(Dispatchers.DefaultDispatcherId()); + + final TestActorRef shard = TestActorRef.create(getSystem(), shardProps, + "testTransactionCommit"); + + waitUntilLeader(shard); + + // Send CreateTransaction message with no messages version + + String transactionID = "txn-1"; + shard.tell(ShardTransactionMessages.CreateTransaction.newBuilder() + .setTransactionId(transactionID) + .setTransactionType(TransactionProxy.TransactionType.WRITE_ONLY.ordinal()) + .setTransactionChainId("").build(), getRef()); + + final FiniteDuration duration = duration("5 seconds"); + + CreateTransactionReply reply = expectMsgClass(duration, CreateTransactionReply.class); + + ActorSelection txActor = getSystem().actorSelection(reply.getTransactionActorPath()); + + // Write data to the Tx + + txActor.tell(new WriteData(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME), schemaContext), getRef()); + + expectMsgClass(duration, WriteDataReply.class); + + // Ready the Tx + + txActor.tell(new ReadyTransaction().toSerializable(), getRef()); + + ReadyTransactionReply readyReply = ReadyTransactionReply.fromSerializable(expectMsgClass( + duration, ReadyTransactionReply.SERIALIZABLE_CLASS)); + + ActorSelection cohortActor = getSystem().actorSelection(readyReply.getCohortPath()); + + // Send the CanCommitTransaction message with no transactionId. + + cohortActor.tell(ThreePhaseCommitCohortMessages.CanCommitTransaction.newBuilder().build(), + getRef()); + + expectMsgClass(duration, CanCommitTransactionReply.SERIALIZABLE_CLASS); + + // Send the PreCommitTransaction message with no transactionId. + + cohortActor.tell(ThreePhaseCommitCohortMessages.PreCommitTransaction.newBuilder().build(), + getRef()); + + expectMsgClass(duration, PreCommitTransactionReply.SERIALIZABLE_CLASS); + + // Send the CommitTransaction message with no transactionId. + + cohortActor.tell(ThreePhaseCommitCohortMessages.CommitTransaction.newBuilder().build(), + getRef()); + + expectMsgClass(duration, CommitTransactionReply.SERIALIZABLE_CLASS); + + NormalizedNode node = ShardTest.readStore(shard, TestModel.TEST_PATH); + Assert.assertNotNull("Data not found in store", node); + + shard.tell(PoisonPill.getInstance(), ActorRef.noSender()); + }}; + } + + @Test + public void testTransactionAbort() throws Exception { + new ShardTestKit(getSystem()) {{ + SchemaContext schemaContext = TestModel.createTestContext(); + Props shardProps = Shard.props(ShardIdentifier.builder().memberName("member-1"). + shardName("inventory").type("config").build(), + Collections.emptyMap(), + DatastoreContext.newBuilder().shardHeartbeatIntervalInMillis(100).build(), + schemaContext).withDispatcher(Dispatchers.DefaultDispatcherId()); + + final TestActorRef shard = TestActorRef.create(getSystem(), shardProps, + "testTransactionAbort"); + + waitUntilLeader(shard); + + // Send CreateTransaction message with no messages version + + String transactionID = "txn-1"; + shard.tell(ShardTransactionMessages.CreateTransaction.newBuilder() + .setTransactionId(transactionID) + .setTransactionType(TransactionProxy.TransactionType.WRITE_ONLY.ordinal()) + .setTransactionChainId("").build(), getRef()); + + final FiniteDuration duration = duration("5 seconds"); + + CreateTransactionReply reply = expectMsgClass(duration, CreateTransactionReply.class); + + ActorSelection txActor = getSystem().actorSelection(reply.getTransactionActorPath()); + + // Write data to the Tx + + txActor.tell(new WriteData(TestModel.TEST_PATH, + ImmutableNodes.containerNode(TestModel.TEST_QNAME), schemaContext), getRef()); + + expectMsgClass(duration, WriteDataReply.class); + + // Ready the Tx + + txActor.tell(new ReadyTransaction().toSerializable(), getRef()); + + ReadyTransactionReply readyReply = ReadyTransactionReply.fromSerializable(expectMsgClass( + duration, ReadyTransactionReply.SERIALIZABLE_CLASS)); + + ActorSelection cohortActor = getSystem().actorSelection(readyReply.getCohortPath()); + + // Send the CanCommitTransaction message with no transactionId. + + cohortActor.tell(ThreePhaseCommitCohortMessages.CanCommitTransaction.newBuilder().build(), + getRef()); + + expectMsgClass(duration, CanCommitTransactionReply.SERIALIZABLE_CLASS); + + // Send the AbortTransaction message with no transactionId. + + cohortActor.tell(ThreePhaseCommitCohortMessages.AbortTransaction.newBuilder().build(), + getRef()); + + expectMsgClass(duration, AbortTransactionReply.SERIALIZABLE_CLASS); + + shard.tell(PoisonPill.getInstance(), ActorRef.noSender()); + }}; + } +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java index 793df8e0ca..4ccc9430ac 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java @@ -1,5 +1,9 @@ package org.opendaylight.controller.cluster.datastore; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import akka.actor.ActorRef; import akka.actor.Props; import akka.actor.Terminated; @@ -7,6 +11,8 @@ import akka.testkit.JavaTestKit; import akka.testkit.TestActorRef; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; +import java.util.Collections; +import java.util.concurrent.TimeUnit; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.ShardWriteTransaction.GetCompositeModificationReply; @@ -15,6 +21,7 @@ import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStats; import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction; import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionReply; +import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; import org.opendaylight.controller.cluster.datastore.messages.DataExists; import org.opendaylight.controller.cluster.datastore.messages.DataExistsReply; import org.opendaylight.controller.cluster.datastore.messages.DeleteData; @@ -39,12 +46,6 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.duration.Duration; -import java.util.Collections; -import java.util.concurrent.TimeUnit; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; public class ShardTransactionTest extends AbstractActorTest { private static ListeningExecutorService storeExecutor = @@ -70,7 +71,7 @@ public class ShardTransactionTest extends AbstractActorTest { private ActorRef createShard(){ return getSystem().actorOf(Shard.props(SHARD_IDENTIFIER, - Collections.EMPTY_MAP, datastoreContext, TestModel.createTestContext())); + Collections.emptyMap(), datastoreContext, TestModel.createTestContext())); } @Test @@ -78,12 +79,14 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); Props props = ShardTransaction.props(store.newReadOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveReadData(getSystem().actorOf(props, "testReadDataRO")); props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveReadData(getSystem().actorOf(props, "testReadDataRW")); } @@ -114,13 +117,15 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); Props props = ShardTransaction.props( store.newReadOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveReadDataWhenDataNotFound(getSystem().actorOf( props, "testReadDataWhenDataNotFoundRO")); props = ShardTransaction.props( store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveReadDataWhenDataNotFound(getSystem().actorOf( props, "testReadDataWhenDataNotFoundRW")); @@ -150,12 +155,14 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); Props props = ShardTransaction.props(store.newReadOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveDataExistsPositive(getSystem().actorOf(props, "testDataExistsPositiveRO")); props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveDataExistsPositive(getSystem().actorOf(props, "testDataExistsPositiveRW")); } @@ -183,12 +190,14 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); Props props = ShardTransaction.props(store.newReadOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveDataExistsNegative(getSystem().actorOf(props, "testDataExistsNegativeRO")); props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); testOnReceiveDataExistsNegative(getSystem().actorOf(props, "testDataExistsNegativeRW")); } @@ -228,7 +237,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newWriteOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testWriteData"); transaction.tell(new WriteData(TestModel.TEST_PATH, @@ -254,7 +264,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testMergeData"); transaction.tell(new MergeData(TestModel.TEST_PATH, @@ -279,7 +290,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props( store.newWriteOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testDeleteData"); transaction.tell(new DeleteData(TestModel.TEST_PATH).toSerializable(), getRef()); @@ -301,7 +313,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props( store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testReadyTransaction"); watch(transaction); @@ -318,7 +331,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props( store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testReadyTransaction2"); watch(transaction); @@ -339,7 +353,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testCloseTransaction"); watch(transaction); @@ -355,7 +370,8 @@ public class ShardTransactionTest extends AbstractActorTest { public void testNegativePerformingWriteOperationOnReadTransaction() throws Exception { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadOnlyTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final TestActorRef transaction = TestActorRef.apply(props,getSystem()); transaction.receive(new DeleteData(TestModel.TEST_PATH).toSerializable(), ActorRef.noSender()); @@ -370,7 +386,8 @@ public class ShardTransactionTest extends AbstractActorTest { new JavaTestKit(getSystem()) {{ final ActorRef shard = createShard(); final Props props = ShardTransaction.props(store.newReadWriteTransaction(), shard, - testSchemaContext, datastoreContext, shardStats, "txn"); + testSchemaContext, datastoreContext, shardStats, "txn", + CreateTransaction.CURRENT_VERSION); final ActorRef transaction = getSystem().actorOf(props, "testShardTransactionInactivity"); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java index 4cca1bf9ad..ce0547c388 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionChainProxyTest.java @@ -10,6 +10,11 @@ package org.opendaylight.controller.cluster.datastore; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -20,12 +25,6 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - public class TransactionChainProxyTest { ActorContext actorContext = mock(ActorContext.class); SchemaContext schemaContext = mock(SchemaContext.class); @@ -68,4 +67,12 @@ public class TransactionChainProxyTest { verify(context, times(1)).broadcast(anyObject()); } + + @Test + public void testTransactionChainsHaveUniqueId(){ + TransactionChainProxy one = new TransactionChainProxy(mock(ActorContext.class)); + TransactionChainProxy two = new TransactionChainProxy(mock(ActorContext.class)); + + Assert.assertNotEquals(one.getTransactionChainId(), two.getTransactionChainId()); + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java index f2b849122a..b77b0b65cf 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java @@ -5,9 +5,15 @@ import akka.actor.ActorSelection; import akka.actor.ActorSystem; import akka.actor.Props; import akka.dispatch.Futures; +import akka.testkit.JavaTestKit; import com.google.common.base.Optional; +import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.CheckedFuture; +import com.typesafe.config.Config; +import com.typesafe.config.ConfigFactory; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.mockito.ArgumentMatcher; import org.mockito.Mock; @@ -44,6 +50,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; +import java.io.IOException; import java.util.List; import java.util.concurrent.TimeUnit; import static org.junit.Assert.assertEquals; @@ -54,7 +61,6 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.argThat; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.isA; import static org.mockito.Mockito.times; @@ -64,7 +70,7 @@ import static org.opendaylight.controller.cluster.datastore.TransactionProxy.Tra import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.WRITE_ONLY; @SuppressWarnings("resource") -public class TransactionProxyTest extends AbstractActorTest { +public class TransactionProxyTest { @SuppressWarnings("serial") static class TestException extends RuntimeException { @@ -74,6 +80,8 @@ public class TransactionProxyTest extends AbstractActorTest { CheckedFuture invoke(TransactionProxy proxy) throws Exception; } + private static ActorSystem system; + private final Configuration configuration = new MockConfiguration(); @Mock @@ -86,20 +94,44 @@ public class TransactionProxyTest extends AbstractActorTest { String memberName = "mock-member"; + @BeforeClass + public static void setUpClass() throws IOException { + + Config config = ConfigFactory.parseMap(ImmutableMap.builder(). + put("akka.actor.default-dispatcher.type", + "akka.testkit.CallingThreadDispatcherConfigurator").build()). + withFallback(ConfigFactory.load()); + system = ActorSystem.create("test", config); + } + + @AfterClass + public static void tearDownClass() throws IOException { + JavaTestKit.shutdownActorSystem(system); + system = null; + } + @Before public void setUp(){ MockitoAnnotations.initMocks(this); schemaContext = TestModel.createTestContext(); + DatastoreContext dataStoreContext = DatastoreContext.newBuilder().build(); + doReturn(getSystem()).when(mockActorContext).getActorSystem(); doReturn(memberName).when(mockActorContext).getCurrentMemberName(); doReturn(schemaContext).when(mockActorContext).getSchemaContext(); doReturn(mockClusterWrapper).when(mockActorContext).getClusterWrapper(); + doReturn(mockClusterWrapper).when(mockActorContext).getClusterWrapper(); + doReturn(dataStoreContext).when(mockActorContext).getDatastoreContext(); ShardStrategyFactory.setConfiguration(configuration); } + private ActorSystem getSystem() { + return system; + } + private CreateTransaction eqCreateTransaction(final String memberName, final TransactionType type) { ArgumentMatcher matcher = new ArgumentMatcher() { @@ -306,22 +338,24 @@ public class TransactionProxyTest extends AbstractActorTest { return getSystem().actorSelection(actorRef.path()); } - private CreateTransactionReply createTransactionReply(ActorRef actorRef){ + private CreateTransactionReply createTransactionReply(ActorRef actorRef, int transactionVersion){ return CreateTransactionReply.newBuilder() .setTransactionActorPath(actorRef.path().toString()) - .setTransactionId("txn-1").build(); + .setTransactionId("txn-1") + .setMessageVersion(transactionVersion) + .build(); } - private ActorRef setupActorContextWithInitialCreateTransaction(ActorSystem actorSystem, TransactionType type) { + private ActorRef setupActorContextWithInitialCreateTransaction(ActorSystem actorSystem, TransactionType type, int transactionVersion) { ActorRef actorRef = actorSystem.actorOf(Props.create(DoNothingActor.class)); doReturn(actorSystem.actorSelection(actorRef.path())). when(mockActorContext).actorSelection(actorRef.path().toString()); - doReturn(Optional.of(actorSystem.actorSelection(actorRef.path()))). - when(mockActorContext).findPrimaryShard(eq(DefaultShardStrategy.DEFAULT_SHARD)); + doReturn(Futures.successful(actorSystem.actorSelection(actorRef.path()))). + when(mockActorContext).findPrimaryShardAsync(eq(DefaultShardStrategy.DEFAULT_SHARD)); - doReturn(createTransactionReply(actorRef)).when(mockActorContext). - executeOperation(eq(actorSystem.actorSelection(actorRef.path())), + doReturn(Futures.successful(createTransactionReply(actorRef, transactionVersion))).when(mockActorContext). + executeOperationAsync(eq(actorSystem.actorSelection(actorRef.path())), eqCreateTransaction(memberName, type)); doReturn(false).when(mockActorContext).isLocalPath(actorRef.path().toString()); @@ -329,6 +363,11 @@ public class TransactionProxyTest extends AbstractActorTest { return actorRef; } + private ActorRef setupActorContextWithInitialCreateTransaction(ActorSystem actorSystem, TransactionType type) { + return setupActorContextWithInitialCreateTransaction(actorSystem, type, CreateTransaction.CURRENT_VERSION); + } + + private void propagateReadFailedExceptionCause(CheckedFuture future) throws Throwable { @@ -372,7 +411,7 @@ public class TransactionProxyTest extends AbstractActorTest { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.successful(new Object())).when(mockActorContext). - executeOperationAsync(any(ActorSelection.class), any()); + executeOperationAsync(eq(actorSelection(actorRef)), eqSerializedReadData()); TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY); @@ -385,7 +424,7 @@ public class TransactionProxyTest extends AbstractActorTest { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.failed(new TestException())).when(mockActorContext). - executeOperationAsync(any(ActorSelection.class), any()); + executeOperationAsync(eq(actorSelection(actorRef)), eqSerializedReadData()); TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY); @@ -398,12 +437,14 @@ public class TransactionProxyTest extends AbstractActorTest { ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class)); if (exToThrow instanceof PrimaryNotFoundException) { - doReturn(Optional.absent()).when(mockActorContext).findPrimaryShard(anyString()); + doReturn(Futures.failed(exToThrow)).when(mockActorContext).findPrimaryShardAsync(anyString()); } else { - doReturn(Optional.of(getSystem().actorSelection(actorRef.path()))). - when(mockActorContext).findPrimaryShard(anyString()); + doReturn(Futures.successful(getSystem().actorSelection(actorRef.path()))). + when(mockActorContext).findPrimaryShardAsync(anyString()); } - doThrow(exToThrow).when(mockActorContext).executeOperation(any(ActorSelection.class), any()); + + doReturn(Futures.failed(exToThrow)).when(mockActorContext).executeOperationAsync( + any(ActorSelection.class), any()); TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY); @@ -499,6 +540,24 @@ public class TransactionProxyTest extends AbstractActorTest { transactionProxy.read(TestModel.TEST_PATH); } + @Test(expected=IllegalArgumentException.class) + public void testInvalidCreateTransactionReply() throws Throwable { + ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class)); + + doReturn(getSystem().actorSelection(actorRef.path())).when(mockActorContext). + actorSelection(actorRef.path().toString()); + + doReturn(Futures.successful(getSystem().actorSelection(actorRef.path()))). + when(mockActorContext).findPrimaryShardAsync(eq(DefaultShardStrategy.DEFAULT_SHARD)); + + doReturn(Futures.successful(new Object())).when(mockActorContext).executeOperationAsync( + eq(getSystem().actorSelection(actorRef.path())), eqCreateTransaction(memberName, READ_ONLY)); + + TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY); + + propagateReadFailedExceptionCause(transactionProxy.read(TestModel.TEST_PATH)); + } + @Test public void testExists() throws Exception { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); @@ -536,7 +595,7 @@ public class TransactionProxyTest extends AbstractActorTest { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.successful(new Object())).when(mockActorContext). - executeOperationAsync(any(ActorSelection.class), any()); + executeOperationAsync(eq(actorSelection(actorRef)), eqSerializedDataExists()); TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY); @@ -549,7 +608,7 @@ public class TransactionProxyTest extends AbstractActorTest { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.failed(new TestException())).when(mockActorContext). - executeOperationAsync(any(ActorSelection.class), any()); + executeOperationAsync(eq(actorSelection(actorRef)), eqSerializedDataExists()); TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY); @@ -693,8 +752,7 @@ public class TransactionProxyTest extends AbstractActorTest { doReturn(mergeSerializedDataReply()).when(mockActorContext).executeOperationAsync( eq(actorSelection(actorRef)), eqSerializedMergeData(nodeToWrite)); - TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, - WRITE_ONLY); + TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, WRITE_ONLY); transactionProxy.merge(TestModel.TEST_PATH, nodeToWrite); @@ -784,6 +842,47 @@ public class TransactionProxyTest extends AbstractActorTest { verifyCohortFutures(proxy, getSystem().actorSelection(actorRef.path())); } + @SuppressWarnings("unchecked") + @Test + public void testReadyForwardCompatibility() throws Exception { + ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_WRITE, 0); + + NormalizedNode nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME); + + doReturn(readSerializedDataReply(null)).when(mockActorContext).executeOperationAsync( + eq(actorSelection(actorRef)), eqSerializedReadData()); + + doReturn(writeSerializedDataReply()).when(mockActorContext).executeOperationAsync( + eq(actorSelection(actorRef)), eqSerializedWriteData(nodeToWrite)); + + doReturn(readySerializedTxReply(actorRef.path().toString())).when(mockActorContext).executeOperationAsync( + eq(actorSelection(actorRef)), isA(ReadyTransaction.SERIALIZABLE_CLASS)); + + doReturn(actorRef.path().toString()).when(mockActorContext).resolvePath(eq(actorRef.path().toString()), + eq(actorRef.path().toString())); + + TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, + READ_WRITE); + + transactionProxy.read(TestModel.TEST_PATH); + + transactionProxy.write(TestModel.TEST_PATH, nodeToWrite); + + DOMStoreThreePhaseCommitCohort ready = transactionProxy.ready(); + + assertTrue(ready instanceof ThreePhaseCommitCohortProxy); + + ThreePhaseCommitCohortProxy proxy = (ThreePhaseCommitCohortProxy) ready; + + verifyRecordingOperationFutures(transactionProxy.getRecordedOperationFutures(), + WriteDataReply.SERIALIZABLE_CLASS); + + verifyCohortFutures(proxy, getSystem().actorSelection(actorRef.path())); + + verify(mockActorContext).resolvePath(eq(actorRef.path().toString()), + eq(actorRef.path().toString())); + } + @SuppressWarnings("unchecked") @Test public void testReadyWithRecordingOperationFailure() throws Exception { @@ -815,10 +914,10 @@ public class TransactionProxyTest extends AbstractActorTest { ThreePhaseCommitCohortProxy proxy = (ThreePhaseCommitCohortProxy) ready; + verifyCohortFutures(proxy, TestException.class); + verifyRecordingOperationFutures(transactionProxy.getRecordedOperationFutures(), MergeDataReply.SERIALIZABLE_CLASS, TestException.class); - - verifyCohortFutures(proxy, TestException.class); } @SuppressWarnings("unchecked") @@ -855,9 +954,8 @@ public class TransactionProxyTest extends AbstractActorTest { @Test public void testReadyWithInitialCreateTransactionFailure() throws Exception { - doReturn(Optional.absent()).when(mockActorContext).findPrimaryShard(anyString()); -// doThrow(new PrimaryNotFoundException("mock")).when(mockActorContext).executeShardOperation( -// anyString(), any()); + doReturn(Futures.failed(new PrimaryNotFoundException("mock"))).when( + mockActorContext).findPrimaryShardAsync(anyString()); TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, WRITE_ONLY); @@ -958,8 +1056,8 @@ public class TransactionProxyTest extends AbstractActorTest { doReturn(actorSystem.actorSelection(shardActorRef.path())). when(mockActorContext).actorSelection(shardActorRef.path().toString()); - doReturn(Optional.of(actorSystem.actorSelection(shardActorRef.path()))). - when(mockActorContext).findPrimaryShard(eq(DefaultShardStrategy.DEFAULT_SHARD)); + doReturn(Futures.successful(actorSystem.actorSelection(shardActorRef.path()))). + when(mockActorContext).findPrimaryShardAsync(eq(DefaultShardStrategy.DEFAULT_SHARD)); String actorPath = "akka.tcp://system@127.0.0.1:2550/user/tx-actor"; CreateTransactionReply createTransactionReply = CreateTransactionReply.newBuilder() @@ -967,8 +1065,8 @@ public class TransactionProxyTest extends AbstractActorTest { .setTransactionActorPath(actorPath) .build(); - doReturn(createTransactionReply).when(mockActorContext). - executeOperation(eq(actorSystem.actorSelection(shardActorRef.path())), + doReturn(Futures.successful(createTransactionReply)).when(mockActorContext). + executeOperationAsync(eq(actorSystem.actorSelection(shardActorRef.path())), eqCreateTransaction(memberName, READ_ONLY)); doReturn(true).when(mockActorContext).isLocalPath(actorPath); @@ -1013,8 +1111,8 @@ public class TransactionProxyTest extends AbstractActorTest { doReturn(actorSystem.actorSelection(shardActorRef.path())). when(mockActorContext).actorSelection(shardActorRef.path().toString()); - doReturn(Optional.of(actorSystem.actorSelection(shardActorRef.path()))). - when(mockActorContext).findPrimaryShard(eq(DefaultShardStrategy.DEFAULT_SHARD)); + doReturn(Futures.successful(actorSystem.actorSelection(shardActorRef.path()))). + when(mockActorContext).findPrimaryShardAsync(eq(DefaultShardStrategy.DEFAULT_SHARD)); String actorPath = "akka.tcp://system@127.0.0.1:2550/user/tx-actor"; CreateTransactionReply createTransactionReply = CreateTransactionReply.newBuilder() @@ -1022,8 +1120,8 @@ public class TransactionProxyTest extends AbstractActorTest { .setTransactionActorPath(actorPath) .build(); - doReturn(createTransactionReply).when(mockActorContext). - executeOperation(eq(actorSystem.actorSelection(shardActorRef.path())), + doReturn(Futures.successful(createTransactionReply)).when(mockActorContext). + executeOperationAsync(eq(actorSystem.actorSelection(shardActorRef.path())), eqCreateTransaction(memberName, WRITE_ONLY)); doReturn(true).when(mockActorContext).isLocalPath(actorPath); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java index d3ba9b1c15..c065782af5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/DefaultShardStrategyTest.java @@ -1,6 +1,6 @@ package org.opendaylight.controller.cluster.datastore.shardstrategy; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ModuleShardStrategyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ModuleShardStrategyTest.java index 3394cdc959..b895b75fcd 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ModuleShardStrategyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ModuleShardStrategyTest.java @@ -1,5 +1,6 @@ package org.opendaylight.controller.cluster.datastore.shardstrategy; +import static org.junit.Assert.assertEquals; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; @@ -10,8 +11,6 @@ import org.opendaylight.controller.md.cluster.datastore.model.CarsModel; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import static junit.framework.Assert.assertEquals; - public class ModuleShardStrategyTest { @Rule public ExpectedException expectedEx = ExpectedException.none(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactoryTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactoryTest.java index ab74ba811a..10e832780d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactoryTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/shardstrategy/ShardStrategyFactoryTest.java @@ -1,5 +1,7 @@ package org.opendaylight.controller.cluster.datastore.shardstrategy; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; @@ -9,9 +11,6 @@ import org.opendaylight.controller.md.cluster.datastore.model.CarsModel; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; - public class ShardStrategyFactoryTest { @Rule diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java index 60f9a2d9dc..39d337e91b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java @@ -2,6 +2,7 @@ package org.opendaylight.controller.cluster.datastore.utils; import akka.actor.ActorRef; import akka.actor.ActorSelection; +import akka.actor.ActorSystem; import akka.actor.Props; import akka.actor.UntypedActor; import akka.japi.Creator; @@ -17,7 +18,9 @@ import org.opendaylight.controller.cluster.datastore.messages.LocalShardNotFound import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; + import java.util.concurrent.TimeUnit; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; @@ -182,4 +185,51 @@ public class ActorContextTest extends AbstractActorTest{ clusterWrapper.setSelfAddress("akka.tcp://system@127.0.0.1:2551/"); assertEquals(false, actorContext.isLocalPath("akka.tcp://system@127.0.0.1:2550/")); } + + @Test + public void testResolvePathForRemoteActor() { + ActorContext actorContext = + new ActorContext(mock(ActorSystem.class), mock(ActorRef.class), mock( + ClusterWrapper.class), + mock(Configuration.class)); + + String actual = actorContext.resolvePath( + "akka.tcp://system@127.0.0.1:2550/user/shardmanager/shard", + "akka://system/user/shardmanager/shard/transaction"); + + String expected = "akka.tcp://system@127.0.0.1:2550/user/shardmanager/shard/transaction"; + + assertEquals(expected, actual); + } + + @Test + public void testResolvePathForLocalActor() { + ActorContext actorContext = + new ActorContext(getSystem(), mock(ActorRef.class), mock(ClusterWrapper.class), + mock(Configuration.class)); + + String actual = actorContext.resolvePath( + "akka://system/user/shardmanager/shard", + "akka://system/user/shardmanager/shard/transaction"); + + String expected = "akka://system/user/shardmanager/shard/transaction"; + + assertEquals(expected, actual); + } + + @Test + public void testResolvePathForRemoteActorWithProperRemoteAddress() { + ActorContext actorContext = + new ActorContext(getSystem(), mock(ActorRef.class), mock(ClusterWrapper.class), + mock(Configuration.class)); + + String actual = actorContext.resolvePath( + "akka.tcp://system@7.0.0.1:2550/user/shardmanager/shard", + "akka.tcp://system@7.0.0.1:2550/user/shardmanager/shard/transaction"); + + String expected = "akka.tcp://system@7.0.0.1:2550/user/shardmanager/shard/transaction"; + + assertEquals(expected, actual); + } + } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemoryJournal.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemoryJournal.java index 3486753082..f340d1c305 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemoryJournal.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemoryJournal.java @@ -32,6 +32,8 @@ public class InMemoryJournal extends AsyncWriteJournal { private static final Map deleteMessagesCompleteLatches = new ConcurrentHashMap<>(); + private static final Map blockReadMessagesLatches = new ConcurrentHashMap<>(); + public static void addEntry(String persistenceId, long sequenceNr, Object data) { Map journal = journals.get(persistenceId); if(journal == null) { @@ -62,12 +64,21 @@ public class InMemoryJournal extends AsyncWriteJournal { deleteMessagesCompleteLatches.put(persistenceId, new CountDownLatch(1)); } + public static void addBlockReadMessagesLatch(String persistenceId, CountDownLatch latch) { + blockReadMessagesLatches.put(persistenceId, latch); + } + @Override public Future doAsyncReplayMessages(final String persistenceId, long fromSequenceNr, long toSequenceNr, long max, final Procedure replayCallback) { return Futures.future(new Callable() { @Override public Void call() throws Exception { + CountDownLatch blockLatch = blockReadMessagesLatches.remove(persistenceId); + if(blockLatch != null) { + Uninterruptibles.awaitUninterruptibly(blockLatch); + } + Map journal = journals.get(persistenceId); if(journal == null) { return null; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockConfiguration.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockConfiguration.java index 06c5767bd0..4ef7d65857 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockConfiguration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockConfiguration.java @@ -9,43 +9,42 @@ package org.opendaylight.controller.cluster.datastore.utils; import com.google.common.base.Optional; -import org.opendaylight.controller.cluster.datastore.Configuration; -import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; - import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; +import org.opendaylight.controller.cluster.datastore.Configuration; +import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; public class MockConfiguration implements Configuration{ - @Override public List getMemberShardNames(String memberName) { + @Override public List getMemberShardNames(final String memberName) { return Arrays.asList("default"); } @Override public Optional getModuleNameFromNameSpace( - String nameSpace) { + final String nameSpace) { return Optional.absent(); } @Override public Map getModuleNameToShardStrategyMap() { - return Collections.EMPTY_MAP; + return Collections.emptyMap(); } @Override public List getShardNamesFromModuleName( - String moduleName) { - return Collections.EMPTY_LIST; + final String moduleName) { + return Collections.emptyList(); } - @Override public List getMembersFromShardName(String shardName) { + @Override public List getMembersFromShardName(final String shardName) { if("default".equals(shardName)) { return Arrays.asList("member-1", "member-2"); } else if("astronauts".equals(shardName)){ return Arrays.asList("member-2", "member-3"); } - return Collections.EMPTY_LIST; + return Collections.emptyList(); } @Override public Set getAllShardNames() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataChangeListener.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataChangeListener.java index f2f49d1bf3..efd58620a2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataChangeListener.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataChangeListener.java @@ -9,6 +9,10 @@ package org.opendaylight.controller.cluster.datastore.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import com.google.common.collect.Lists; +import com.google.common.util.concurrent.Uninterruptibles; +import java.util.Collections; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -16,8 +20,6 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import com.google.common.collect.Lists; -import com.google.common.util.concurrent.Uninterruptibles; /** * A mock DataChangeListener implementation. @@ -27,14 +29,21 @@ import com.google.common.util.concurrent.Uninterruptibles; public class MockDataChangeListener implements AsyncDataChangeListener> { - private final List>> - changeList = Lists.newArrayList(); - private final CountDownLatch changeLatch; - private final int expChangeEventCount; + private final List>> changeList = + Collections.synchronizedList(Lists.>>newArrayList()); + + private volatile CountDownLatch changeLatch; + private int expChangeEventCount; public MockDataChangeListener(int expChangeEventCount) { + reset(expChangeEventCount); + } + + public void reset(int expChangeEventCount) { changeLatch = new CountDownLatch(expChangeEventCount); this.expChangeEventCount = expChangeEventCount; + changeList.clear(); } @Override @@ -44,8 +53,11 @@ public class MockDataChangeListener implements } public void waitForChangeEvents(YangInstanceIdentifier... expPaths) { - assertEquals("Change notifications complete", true, - Uninterruptibles.awaitUninterruptibly(changeLatch, 5, TimeUnit.SECONDS)); + boolean done = Uninterruptibles.awaitUninterruptibly(changeLatch, 5, TimeUnit.SECONDS); + if(!done) { + fail(String.format("Missing change notifications. Expected: %d. Actual: %d", + expChangeEventCount, (expChangeEventCount - changeLatch.getCount()))); + } for(int i = 0; i < expPaths.length; i++) { assertTrue(String.format("Change %d does not contain %s", (i+1), expPaths[i]), diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java index 3bad468950..a2c44b0630 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java @@ -11,13 +11,12 @@ package org.opendaylight.controller.cluster.datastore.utils; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; -import junit.framework.Assert; - import java.util.List; +import org.junit.Assert; public class TestUtils { - public static void assertFirstSentMessage(ActorSystem actorSystem, ActorRef actorRef, Class clazz){ + public static void assertFirstSentMessage(final ActorSystem actorSystem, final ActorRef actorRef, final Class clazz){ ActorContext testContext = new ActorContext(actorSystem, actorSystem.actorOf( Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration()); Object messages = testContext @@ -27,7 +26,7 @@ public class TestUtils { Assert.assertTrue(messages instanceof List); - List listMessages = (List) messages; + List listMessages = (List) messages; Assert.assertEquals(1, listMessages.size()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/CarsModel.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/CarsModel.java index 6860872b75..93b552a6da 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/CarsModel.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/CarsModel.java @@ -31,7 +31,7 @@ public class CarsModel { public static final QName CAR_PRICE_QNAME = QName.create(CAR_QNAME, "price"); - public static NormalizedNode create(){ + public static NormalizedNode create(){ // Create a list builder CollectionNodeBuilder cars = @@ -63,7 +63,7 @@ public class CarsModel { } - public static NormalizedNode emptyContainer(){ + public static NormalizedNode emptyContainer(){ return ImmutableContainerNodeBuilder.create() .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(BASE_QNAME)) .build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/PeopleModel.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/PeopleModel.java index e637920e78..a7cb14f0b3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/PeopleModel.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/PeopleModel.java @@ -30,7 +30,7 @@ public class PeopleModel { - public static NormalizedNode create(){ + public static NormalizedNode create(){ // Create a list builder CollectionNodeBuilder cars = @@ -62,7 +62,7 @@ public class PeopleModel { } - public static NormalizedNode emptyContainer(){ + public static NormalizedNode emptyContainer(){ return ImmutableContainerNodeBuilder.create() .withNodeIdentifier( new YangInstanceIdentifier.NodeIdentifier(BASE_QNAME)) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SampleModelsTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SampleModelsTest.java index 2300f9d130..b814bc392e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SampleModelsTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SampleModelsTest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.md.cluster.datastore.model; -import junit.framework.Assert; +import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec; import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages; diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataBroker.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataBroker.java index fdb864059f..4632ed8a6f 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataBroker.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataBroker.java @@ -14,7 +14,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** - * Data Broker which provides data transaction and data change listener fuctionality + * Data Broker which provides data transaction and data change listener functionality * using {@link NormalizedNode} data format. * * This interface is type capture of generic interfaces and returns type captures diff --git a/opendaylight/md-sal/sal-dom-broker/pom.xml b/opendaylight/md-sal/sal-dom-broker/pom.xml index dc20296ff5..264709f687 100644 --- a/opendaylight/md-sal/sal-dom-broker/pom.xml +++ b/opendaylight/md-sal/sal-dom-broker/pom.xml @@ -45,8 +45,6 @@ org.opendaylight.controller sal-inmemory-datastore - 1.2.0-SNAPSHOT - org.opendaylight.yangtools @@ -74,7 +72,6 @@ org.slf4j slf4j-simple - ${slf4j.version} test diff --git a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointManagerTest.java b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointManagerTest.java index 05c4793218..e876ccb306 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointManagerTest.java +++ b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointManagerTest.java @@ -8,14 +8,14 @@ package org.opendaylight.controller.sal.dom.broker; -import static junit.framework.Assert.fail; +import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; - +import com.google.common.base.Optional; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -36,8 +36,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Optional; - public class BackwardsCompatibleMountPointManagerTest { private static final Logger log = LoggerFactory.getLogger(BackwardsCompatibleMountPointManagerTest.class); @@ -106,7 +104,7 @@ public class BackwardsCompatibleMountPointManagerTest { private DOMMountPoint mockMountPoint() { final DOMMountPoint mock = mock(DOMMountPoint.class); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override public Object answer(final InvocationOnMock invocation) throws Throwable { return Optional.of(mock(((Class) invocation.getArguments()[0]))); diff --git a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointTest.java b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointTest.java index 91ae0c24dd..f1b7261bcb 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointTest.java +++ b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/sal/dom/broker/BackwardsCompatibleMountPointTest.java @@ -8,15 +8,14 @@ package org.opendaylight.controller.sal.dom.broker; -import static junit.framework.Assert.fail; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; - import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.AbstractMap; @@ -38,6 +37,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Deprecated public class BackwardsCompatibleMountPointTest { private static final Logger log = LoggerFactory.getLogger(BackwardsCompatibleMountPointManagerTest.class); @@ -139,7 +139,7 @@ public class BackwardsCompatibleMountPointTest { private DataNormalizer mockNormalizer() throws DataNormalizationException { final DataNormalizer mock = mock(DataNormalizer.class); - doReturn(new AbstractMap.SimpleEntry>(id, normalizedNode) {}) + doReturn(new AbstractMap.SimpleEntry>(id, normalizedNode)) .when(mock).toNormalized(any(YangInstanceIdentifier.class), any(CompositeNode.class)); doReturn(compositeNode).when(mock).toLegacy(any(YangInstanceIdentifier.class), any(NormalizedNode.class)); doReturn(id).when(mock).toLegacy(any(YangInstanceIdentifier.class)); @@ -147,7 +147,7 @@ public class BackwardsCompatibleMountPointTest { } private NormalizedNode mockNormalizedNode() { - final NormalizedNode mock = mock(NormalizedNode.class); + final NormalizedNode mock = mock(NormalizedNode.class); doReturn("mockNormalizedNode").when(mock).toString(); return mock; } diff --git a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataBroker.java b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataBroker.java new file mode 100644 index 0000000000..e42cf10f7e --- /dev/null +++ b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataBroker.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.spi; + +import com.google.common.collect.ForwardingObject; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; + +/** + * Utility {@link DOMDataBroker} implementation which forwards all interface + * method invocation to a delegate instance. + */ +public abstract class ForwardingDOMDataBroker extends ForwardingObject implements DOMDataBroker { + @Override + protected abstract @Nonnull DOMDataBroker delegate(); + + @Override + public ListenerRegistration registerDataChangeListener(final LogicalDatastoreType store, + final YangInstanceIdentifier path, final DOMDataChangeListener listener, + final DataChangeScope triggeringScope) { + return delegate().registerDataChangeListener(store, path, listener, triggeringScope); + } + + @Override + public DOMDataReadOnlyTransaction newReadOnlyTransaction() { + return delegate().newReadOnlyTransaction(); + } + + @Override + public DOMDataReadWriteTransaction newReadWriteTransaction() { + return delegate().newReadWriteTransaction(); + } + + @Override + public DOMDataWriteTransaction newWriteOnlyTransaction() { + return delegate().newWriteOnlyTransaction(); + } + + @Override + public DOMTransactionChain createTransactionChain(final TransactionChainListener listener) { + return delegate().createTransactionChain(listener); + } +} diff --git a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataReadOnlyTransaction.java b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataReadOnlyTransaction.java new file mode 100644 index 0000000000..dcec6c3fab --- /dev/null +++ b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataReadOnlyTransaction.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.spi; + +import com.google.common.base.Optional; +import com.google.common.collect.ForwardingObject; +import com.google.common.util.concurrent.CheckedFuture; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +/** + * Utility {@link DOMDataReadOnlyTransaction} implementation which forwards all interface + * method invocation to a delegate instance. + */ +public abstract class ForwardingDOMDataReadOnlyTransaction extends ForwardingObject implements DOMDataReadOnlyTransaction { + @Override + protected abstract @Nonnull DOMDataReadOnlyTransaction delegate(); + + @Override + public CheckedFuture>, ReadFailedException> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + return delegate().read(store, path); + } + + @Override + public CheckedFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + return delegate().exists(store, path); + } + + @Override + public Object getIdentifier() { + return delegate().getIdentifier(); + } + + @Override + public void close() { + delegate().close(); + } +} diff --git a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataReadWriteTransaction.java b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataReadWriteTransaction.java new file mode 100644 index 0000000000..923bef76f3 --- /dev/null +++ b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataReadWriteTransaction.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.spi; + +import com.google.common.base.Optional; +import com.google.common.collect.ForwardingObject; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ListenableFuture; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +/** + * Utility {@link DOMDataReadWriteTransaction} implementation which forwards all interface + * method invocation to a delegate instance. + */ +public abstract class ForwardingDOMDataReadWriteTransaction extends ForwardingObject implements DOMDataReadWriteTransaction { + @Override + protected abstract @Nonnull DOMDataReadWriteTransaction delegate(); + + @Override + public CheckedFuture>, ReadFailedException> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + return delegate().read(store, path); + } + + @Override + public CheckedFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + return delegate().exists(store, path); + } + + @Override + public Object getIdentifier() { + return delegate().getIdentifier(); + } + + @Override + public void put(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { + delegate().put(store, path, data); + } + + @Override + public void merge(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { + delegate().merge(store, path, data); + } + + @Override + public boolean cancel() { + return delegate().cancel(); + } + + @Override + public void delete(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + delegate().delete(store, path); + } + + @Override + public CheckedFuture submit() { + return delegate().submit(); + } + + @Override + @Deprecated + public ListenableFuture> commit() { + return delegate().commit(); + } +} diff --git a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataWriteTransaction.java b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataWriteTransaction.java new file mode 100644 index 0000000000..2afb4786ce --- /dev/null +++ b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMDataWriteTransaction.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.spi; + +import com.google.common.collect.ForwardingObject; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ListenableFuture; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.common.api.TransactionStatus; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +/** + * Utility {@link DOMDataWriteTransaction} implementation which forwards all interface + * method invocation to a delegate instance. + */ +public abstract class ForwardingDOMDataWriteTransaction extends ForwardingObject implements DOMDataWriteTransaction { + @Override + protected abstract @Nonnull DOMDataWriteTransaction delegate(); + + @Override + public Object getIdentifier() { + return delegate().getIdentifier(); + } + + @Override + public void put(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { + delegate().put(store, path, data); + } + + @Override + public void merge(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { + delegate().merge(store, path, data); + } + + @Override + public boolean cancel() { + return delegate().cancel(); + } + + @Override + public void delete(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + delegate().delete(store, path); + } + + @Override + public CheckedFuture submit() { + return delegate().submit(); + } + + @Override + @Deprecated + public ListenableFuture> commit() { + return delegate().commit(); + } +} diff --git a/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMTransactionChain.java b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMTransactionChain.java new file mode 100644 index 0000000000..e709e6713a --- /dev/null +++ b/opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/md/sal/dom/spi/ForwardingDOMTransactionChain.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.spi; + +import com.google.common.collect.ForwardingObject; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; + +/** + * Utility {@link DOMTransactionChain} implementation which forwards all interface + * method invocation to a delegate instance. + */ +public abstract class ForwardingDOMTransactionChain extends ForwardingObject implements DOMTransactionChain { + @Override + protected abstract @Nonnull DOMTransactionChain delegate(); + + @Override + public void close() { + delegate().close(); + } + + @Override + public DOMDataReadOnlyTransaction newReadOnlyTransaction() { + return delegate().newReadOnlyTransaction(); + } + + @Override + public DOMDataReadWriteTransaction newReadWriteTransaction() { + return delegate().newReadWriteTransaction(); + } + + @Override + public DOMDataWriteTransaction newWriteOnlyTransaction() { + return delegate().newWriteOnlyTransaction(); + } +} diff --git a/opendaylight/md-sal/sal-dom-xsql-config/pom.xml b/opendaylight/md-sal/sal-dom-xsql-config/pom.xml index e8919d0ee1..d2d864cd4f 100644 --- a/opendaylight/md-sal/sal-dom-xsql-config/pom.xml +++ b/opendaylight/md-sal/sal-dom-xsql-config/pom.xml @@ -15,7 +15,6 @@ 1.2.0-SNAPSHOT sal-dom-xsql-config - org.opendaylight.controller Configuration files for md-sal jar diff --git a/opendaylight/md-sal/sal-dom-xsql/pom.xml b/opendaylight/md-sal/sal-dom-xsql/pom.xml index f5898a2bb9..c7fd20248d 100644 --- a/opendaylight/md-sal/sal-dom-xsql/pom.xml +++ b/opendaylight/md-sal/sal-dom-xsql/pom.xml @@ -35,7 +35,6 @@ org.opendaylight.controller yang-jmx-generator-plugin - ${config.version} org.opendaylight.yangtools diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java index ecea744d14..ad4bd46d71 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java @@ -349,7 +349,7 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { JDBCResultSet rs = new JDBCResultSet(sql); try { int count = 0; - jdbcServer.execute(rs, this); + JDBCServer.execute(rs, this); boolean isFirst = true; int loc = rs.getFields().size() - 1; int totalWidth = 0; diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java index 7b51d03a97..867c7a47b5 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java @@ -163,23 +163,23 @@ public class XSQLBluePrint implements DatabaseMetaData, Serializable { return cacheLoadedSuccessfuly; } - private static Map> superClassMap = new HashMap>(); + private static Map, Set>> superClassMap = new HashMap<>(); - public static Set getInheritance(Class myObjectClass, - Class returnType) { + public static Set> getInheritance(Class myObjectClass, + Class returnType) { if (returnType != null && myObjectClass.equals(returnType)) { - return new HashSet(); + return new HashSet<>(); } - Set result = superClassMap.get(myObjectClass); + Set> result = superClassMap.get(myObjectClass); if (result != null) { return result; } - result = new HashSet(); + result = new HashSet<>(); superClassMap.put(myObjectClass, result); if (returnType != null) { if (!returnType.equals(myObjectClass)) { - Class mySuperClass = myObjectClass.getSuperclass(); + Class mySuperClass = myObjectClass.getSuperclass(); while (mySuperClass != null) { result.add(mySuperClass); mySuperClass = mySuperClass.getSuperclass(); @@ -190,11 +190,11 @@ public class XSQLBluePrint implements DatabaseMetaData, Serializable { return result; } - public static Set collectInterfaces(Class cls) { - Set result = new HashSet(); - Class myInterfaces[] = cls.getInterfaces(); + public static Set> collectInterfaces(Class cls) { + Set> result = new HashSet<>(); + Class myInterfaces[] = cls.getInterfaces(); if (myInterfaces != null) { - for (Class in : myInterfaces) { + for (Class in : myInterfaces) { result.add(in); result.addAll(collectInterfaces(in)); } @@ -213,20 +213,20 @@ public class XSQLBluePrint implements DatabaseMetaData, Serializable { map.put(blNode.getBluePrintNodeName(), blNode); } - public Class getGenericType(ParameterizedType type) { + public Class getGenericType(ParameterizedType type) { Type[] typeArguments = type.getActualTypeArguments(); for (Type typeArgument : typeArguments) { if (typeArgument instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType) typeArgument; - return (Class) pType.getRawType(); + return (Class) pType.getRawType(); } else if (typeArgument instanceof Class) { - return (Class) typeArgument; + return (Class) typeArgument; } } return null; } - public Class getMethodReturnTypeFromGeneric(Method m) { + public Class getMethodReturnTypeFromGeneric(Method m) { Type rType = m.getGenericReturnType(); if (rType instanceof ParameterizedType) { return getGenericType((ParameterizedType) rType); diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintNode.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintNode.java index 8d905f2081..8e9ed3a26b 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintNode.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintNode.java @@ -85,7 +85,7 @@ public class XSQLBluePrintNode implements Serializable { this.children.add(ch); } - public boolean isModelChild(Class p) { + public boolean isModelChild(Class p) { if (this.relations.size() == 0) { return false; } @@ -227,7 +227,7 @@ public class XSQLBluePrintNode implements Serializable { return "Unknown"; } - public Class getInterface() { + public Class getInterface() { return this.myInterface; } diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintRelation.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintRelation.java index 1cb3aa5559..38a96dc457 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintRelation.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintRelation.java @@ -80,20 +80,20 @@ public class XSQLBluePrintRelation implements Serializable { } } - public List execute(Object o) { - List result = new LinkedList(); + public List execute(Object o) { + List result = new LinkedList<>(); if (o == null) { return null; } if (Set.class.isAssignableFrom(o.getClass())) { - Set lst = (Set) o; + Set lst = (Set) o; for (Object oo : lst) { addToResult(result, execute(oo)); } return result; } else if (List.class.isAssignableFrom(o.getClass())) { - List lst = (List) o; + List lst = (List) o; for (Object oo : lst) { addToResult(result, execute(oo)); } @@ -111,17 +111,17 @@ public class XSQLBluePrintRelation implements Serializable { return result; } - public static void addToResult(List result, Object o) { + private static void addToResult(List result, Object o) { if (o == null) { return; } if (Set.class.isAssignableFrom(o.getClass())) { - Set lst = (Set) o; + Set lst = (Set) o; for (Object oo : lst) { result.add(oo); } } else if (List.class.isAssignableFrom(o.getClass())) { - List lst = (List) o; + List lst = (List) o; for (Object oo : lst) { result.add(oo); } diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLColumn.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLColumn.java index 4c6cca7fa6..c1404d58e6 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLColumn.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLColumn.java @@ -2,11 +2,13 @@ package org.opendaylight.controller.md.sal.dom.xsql; import java.io.Serializable; -public class XSQLColumn implements Serializable, Comparable { +public class XSQLColumn implements Serializable, Comparable { + private static final long serialVersionUID = 4854919735031714751L; + private String name = null; private String tableName = null; private int charWidth = -1; - private Class type = null; + private Class type = null; private transient Object bluePrintNode = null; private String origName = null; private String origTableName = null; diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLODLUtils.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLODLUtils.java index 6a27230664..17b8ae5f29 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLODLUtils.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLODLUtils.java @@ -32,7 +32,7 @@ public class XSQLODLUtils { types.put(Status.class, Status.class); } - public static boolean isColumnType(Class cls) { + public static boolean isColumnType(Class cls) { return types.containsKey(cls); } @@ -229,7 +229,7 @@ public class XSQLODLUtils { return "NULL"; } - public static Class getTypeForODLColumn(Object odlNode){ + public static Class getTypeForODLColumn(Object odlNode){ Object type = get(odlNode,"type"); if(type instanceof Uint32 || type instanceof Uint64){ return long.class; diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCCommand.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCCommand.java index 019711157c..ba0626fdfe 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCCommand.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCCommand.java @@ -6,6 +6,8 @@ import java.util.Map; import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint; public class JDBCCommand implements Serializable { + private static final long serialVersionUID = 1L; + public int type = 0; public static final int TYPE_EXECUTE_QUERY = 1; public static final int TYPE_QUERY_REPLY = 2; diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java index 021f6ee19b..5abe8a3165 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java @@ -127,7 +127,7 @@ public class JDBCResultSet implements Serializable, ResultSet, return 1; } - public int isObjectFitCriteria(Object element, Class cls) { + public int isObjectFitCriteria(Object element, Class cls) { Map> tblCriteria = criteria.get(cls .getName()); if (tblCriteria == null) { @@ -207,7 +207,7 @@ public class JDBCResultSet implements Serializable, ResultSet, } } - public void addRecord(ArrayList hierarchy) { + public void addRecord(ArrayList hierarchy) { Map rec = new HashMap(); for (int i = hierarchy.size() - 1; i >= 0; i--) { Object element = hierarchy.get(i); diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCStatement.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCStatement.java index b71b015351..27e2196970 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCStatement.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCStatement.java @@ -89,7 +89,7 @@ public class JDBCStatement implements PreparedStatement { return true; } - public void addRecord(ArrayList hierarchy) { + public void addRecord(ArrayList hierarchy) { rs.addRecord(hierarchy); } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java index 5e61dfb028..fccbd71570 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java @@ -29,6 +29,7 @@ import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils; import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; +import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -77,11 +78,16 @@ public class NetconfMessageTransformer implements MessageTransformer schemaForRpc = NetconfMessageTransformUtil.findSchemaForRpc(rpc, schemaContext.get()); + if(schemaForRpc.isPresent()) { + final DataNodeContainer schemaForGetConfig = NetconfMessageTransformUtil.createSchemaForRpc(schemaForRpc.get()); + w3cPayload = XmlDocumentUtils.toDocument(rpcPayload, schemaForGetConfig, codecProvider); + } else { + w3cPayload = toRpcRequestWithoutSchema(rpcPayload, codecProvider); + } } } else { - w3cPayload = XmlDocumentUtils.toDocument(rpcPayload, codecProvider); + w3cPayload = toRpcRequestWithoutSchema(rpcPayload, codecProvider); } } catch (final UnsupportedDataTypeException e) { throw new IllegalArgumentException("Unable to create message", e); @@ -90,6 +96,10 @@ public class NetconfMessageTransformer implements MessageTransformer toRpcResult(final NetconfMessage message, final QName rpc) { if(schemaContext.isPresent()) { diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java index 893a45aaa2..efc020ecd0 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/util/NetconfMessageTransformUtil.java @@ -7,14 +7,6 @@ */ package org.opendaylight.controller.sal.connect.netconf.util; -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; -import com.google.common.collect.Sets; - import java.net.URI; import java.util.ArrayList; import java.util.Collections; @@ -33,9 +25,9 @@ import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcError.ErrorSeverity; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.api.SimpleNode; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl; import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode; import org.opendaylight.yangtools.yang.data.impl.NodeFactory; @@ -43,10 +35,20 @@ import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl; import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.w3c.dom.Document; import org.w3c.dom.Element; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; + public class NetconfMessageTransformUtil { public static final String MESSAGE_ID_ATTR = "message-id"; @@ -117,7 +119,7 @@ public class NetconfMessageTransformUtil { static Node toNode(final YangInstanceIdentifier.NodeIdentifierWithPredicates argument, final Node node) { final List> list = new ArrayList<>(); for (final Map.Entry arg : argument.getKeyValues().entrySet()) { - list.add(new SimpleNodeTOImpl(arg.getKey(), null, arg.getValue())); + list.add(new SimpleNodeTOImpl<>(arg.getKey(), null, arg.getValue())); } if (node != null) { list.add(node); @@ -325,6 +327,20 @@ public class NetconfMessageTransformUtil { return new NodeContainerProxy(NETCONF_RPC_QNAME, Sets.newHashSet(editConfigProxy)); } + + public static Optional findSchemaForRpc(final QName rpcName, final SchemaContext schemaContext) { + Preconditions.checkNotNull(rpcName); + Preconditions.checkNotNull(schemaContext); + + for (final RpcDefinition rpcDefinition : schemaContext.getOperations()) { + if(rpcDefinition.getQName().equals(rpcName)) { + return Optional.of(rpcDefinition); + } + } + + return Optional.absent(); + } + /** * Creates artificial schema node for schema defined rpc. This artificial schema looks like: *
    @@ -340,13 +356,9 @@ public class NetconfMessageTransformUtil {
          * This makes the translation of schema defined rpc request
          * to xml use schema which is crucial for some types of nodes e.g. identity-ref.
          */
    -    public static DataNodeContainer createSchemaForRpc(final QName rpcName, final SchemaContext schemaContext) {
    -        Preconditions.checkNotNull(rpcName);
    -        Preconditions.checkNotNull(schemaContext);
    -
    -        final NodeContainerProxy rpcBodyProxy = new NodeContainerProxy(rpcName, schemaContext.getChildNodes());
    +    public static DataNodeContainer createSchemaForRpc(final RpcDefinition rpcDefinition) {
    +        final NodeContainerProxy rpcBodyProxy = new NodeContainerProxy(rpcDefinition.getQName(), rpcDefinition.getInput().getChildNodes());
             return new NodeContainerProxy(NETCONF_RPC_QNAME, Sets.newHashSet(rpcBodyProxy));
    -
         }
     
         public static CompositeNodeTOImpl wrap(final QName name, final Node node) {
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java
    index 218ec0be8d..cbddac2caf 100644
    --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfDeviceTest.java
    @@ -17,7 +17,6 @@ import static org.mockito.Mockito.mock;
     import static org.mockito.Mockito.timeout;
     import static org.mockito.Mockito.times;
     import static org.mockito.Mockito.verify;
    -
     import com.google.common.base.Optional;
     import com.google.common.collect.HashMultimap;
     import com.google.common.collect.Lists;
    @@ -134,7 +133,7 @@ public class NetconfDeviceTest {
     
             // Make fallback attempt to fail due to empty resolved sources
             final MissingSchemaSourceException schemaResolutionException = new MissingSchemaSourceException("fail first", TEST_SID);
    -        doAnswer(new Answer() {
    +        doAnswer(new Answer() {
                 @Override
                 public Object answer(final InvocationOnMock invocation) throws Throwable {
                     if(((Collection) invocation.getArguments()[0]).size() == 2) {
    @@ -158,7 +157,7 @@ public class NetconfDeviceTest {
     
         private SchemaSourceRegistry getSchemaRegistry() {
             final SchemaSourceRegistry mock = mock(SchemaSourceRegistry.class);
    -        final SchemaSourceRegistration mockReg = mock(SchemaSourceRegistration.class);
    +        final SchemaSourceRegistration mockReg = mock(SchemaSourceRegistration.class);
             doNothing().when(mockReg).close();
             doReturn(mockReg).when(mock).registerSchemaSource(any(org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider.class), any(PotentialSchemaSource.class));
             return mock;
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemasTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemasTest.java
    index 3f9c8caa0e..ccae5d4be8 100644
    --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemasTest.java
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemasTest.java
    @@ -2,7 +2,7 @@ package org.opendaylight.controller.sal.connect.netconf;
     
     import static org.junit.Assert.assertEquals;
     import static org.junit.Assert.assertThat;
    -import static org.junit.matchers.JUnitMatchers.hasItem;
    +import static org.hamcrest.CoreMatchers.hasItem;
     
     import java.util.Set;
     import org.junit.Test;
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToNotificationTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToNotificationTest.java
    index 127b0cbfcd..5d19188b12 100644
    --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToNotificationTest.java
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToNotificationTest.java
    @@ -1,14 +1,12 @@
     package org.opendaylight.controller.sal.connect.netconf;
     
    -import static junit.framework.Assert.assertEquals;
    -import static junit.framework.Assert.assertNotNull;
    -import static junit.framework.Assert.assertTrue;
    -
    +import static org.junit.Assert.assertEquals;
    +import static org.junit.Assert.assertNotNull;
    +import static org.junit.Assert.assertTrue;
     import java.io.InputStream;
     import java.util.Collections;
     import java.util.List;
     import java.util.Set;
    -
     import javax.xml.parsers.DocumentBuilderFactory;
     import org.junit.Before;
     import org.junit.Test;
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java
    index e744e11bc9..3425739afd 100644
    --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/NetconfToRpcRequestTest.java
    @@ -1,21 +1,23 @@
     package org.opendaylight.controller.sal.connect.netconf;
     
    -import static junit.framework.Assert.assertEquals;
    -import static junit.framework.Assert.assertNotNull;
    -import static junit.framework.Assert.assertTrue;
    +import static org.junit.Assert.assertEquals;
    +import static org.junit.Assert.assertNotNull;
    +import static org.junit.Assert.assertTrue;
     
     import java.io.InputStream;
     import java.util.Collections;
     import java.util.List;
     import java.util.Set;
    -
     import org.junit.BeforeClass;
     import org.junit.Test;
     import org.opendaylight.controller.netconf.api.NetconfMessage;
    +import org.opendaylight.controller.netconf.util.xml.XmlUtil;
     import org.opendaylight.controller.sal.connect.netconf.schema.mapping.NetconfMessageTransformer;
     import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil;
     import org.opendaylight.yangtools.yang.common.QName;
    +import org.opendaylight.yangtools.yang.common.RpcResult;
     import org.opendaylight.yangtools.yang.data.api.CompositeNode;
    +import org.opendaylight.yangtools.yang.data.api.Node;
     import org.opendaylight.yangtools.yang.data.impl.ImmutableCompositeNode;
     import org.opendaylight.yangtools.yang.data.impl.util.CompositeNodeBuilder;
     import org.opendaylight.yangtools.yang.model.api.Module;
    @@ -251,39 +253,21 @@ public class NetconfToRpcRequestTest {
     
             final org.w3c.dom.Node streamName = subscribeName.getFirstChild();
             assertEquals(streamName.getLocalName(), "stream-name");
    +
         }
     
         @Test
    -    public void testNoSchemaContextToRpcRequest() throws Exception {
    -        final String exampleNamespace = "http://example.net/me/my-own/1.0";
    -        final String exampleRevision = "2014-07-22";
    -        final QName myOwnMethodRpcQName = QName.create(exampleNamespace, exampleRevision, "my-own-method");
    -
    -        final CompositeNodeBuilder rootBuilder = ImmutableCompositeNode.builder();
    -        rootBuilder.setQName(myOwnMethodRpcQName);
    -
    -        final CompositeNodeBuilder inputBuilder = ImmutableCompositeNode.builder();
    -        inputBuilder.setQName(QName.create(exampleNamespace, exampleRevision, "input"));
    -        inputBuilder.addLeaf(QName.create(exampleNamespace, exampleRevision, "my-first-parameter"), "14");
    -        inputBuilder.addLeaf(QName.create(exampleNamespace, exampleRevision, "another-parameter"), "fred");
    -
    -        rootBuilder.add(inputBuilder.toInstance());
    -        final ImmutableCompositeNode root = rootBuilder.toInstance();
    -
    -        final NetconfMessage message = messageTransformer.toRpcRequest(myOwnMethodRpcQName, root);
    -        assertNotNull(message);
    -
    -        final Document xmlDoc = message.getDocument();
    -        final org.w3c.dom.Node rpcChild = xmlDoc.getFirstChild();
    -        assertEquals(rpcChild.getLocalName(), "rpc");
    -
    -        final org.w3c.dom.Node myOwnMethodNode = rpcChild.getFirstChild();
    -        assertEquals(myOwnMethodNode.getLocalName(), "my-own-method");
    -
    -        final org.w3c.dom.Node firstParamNode = myOwnMethodNode.getFirstChild();
    -        assertEquals(firstParamNode.getLocalName(), "my-first-parameter");
    -
    -        final org.w3c.dom.Node secParamNode = firstParamNode.getNextSibling();
    -        assertEquals(secParamNode.getLocalName(), "another-parameter");
    +    public void testRpcResponse() throws Exception {
    +        final NetconfMessage response = new NetconfMessage(XmlUtil.readXmlToDocument(
    +                "\n" +
    +                "" +
    +                "module schema" +
    +                "\n" +
    +                "\n"
    +        ));
    +        final RpcResult compositeNodeRpcResult = messageTransformer.toRpcResult(response, SUBSCRIBE_RPC_NAME);
    +        final Node dataNode = compositeNodeRpcResult.getResult().getValue().get(0);
    +        assertEquals("module schema", dataNode.getValue());
         }
    +
     }
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfSessionCapabilitiesTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfSessionCapabilitiesTest.java
    index 80bb08f5af..ae7d9c28ac 100644
    --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfSessionCapabilitiesTest.java
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfSessionCapabilitiesTest.java
    @@ -1,12 +1,12 @@
     package org.opendaylight.controller.sal.connect.netconf.listener;
     
    +import static org.hamcrest.CoreMatchers.hasItem;
     import static org.junit.Assert.assertEquals;
     import static org.junit.Assert.assertThat;
     
     import com.google.common.collect.Lists;
     import java.util.List;
     import org.junit.Test;
    -import org.junit.matchers.JUnitMatchers;
     import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil;
     import org.opendaylight.yangtools.yang.common.QName;
     
    @@ -35,12 +35,12 @@ public class NetconfSessionCapabilitiesTest {
             final NetconfSessionCapabilities merged = sessionCaps1.replaceModuleCaps(sessionCaps2);
             assertCaps(merged, 2, 2 + 1 /*Preserved monitoring*/);
             for (final QName qName : sessionCaps2.getModuleBasedCaps()) {
    -            assertThat(merged.getModuleBasedCaps(), JUnitMatchers.hasItem(qName));
    +            assertThat(merged.getModuleBasedCaps(), hasItem(qName));
             }
    -        assertThat(merged.getModuleBasedCaps(), JUnitMatchers.hasItem(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING));
    +        assertThat(merged.getModuleBasedCaps(), hasItem(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING));
     
    -        assertThat(merged.getNonModuleCaps(), JUnitMatchers.hasItem("urn:ietf:params:netconf:base:1.0"));
    -        assertThat(merged.getNonModuleCaps(), JUnitMatchers.hasItem("urn:ietf:params:netconf:capability:rollback-on-error:1.0"));
    +        assertThat(merged.getNonModuleCaps(), hasItem("urn:ietf:params:netconf:base:1.0"));
    +        assertThat(merged.getNonModuleCaps(), hasItem("urn:ietf:params:netconf:capability:rollback-on-error:1.0"));
         }
     
         @Test
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java
    index a65e426d59..0607e4b6da 100644
    --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java
    @@ -1,6 +1,6 @@
     package org.opendaylight.controller.sal.connect.netconf.sal.tx;
     
    -import static junit.framework.Assert.fail;
    +import static org.junit.Assert.fail;
     import static org.mockito.Matchers.any;
     import static org.mockito.Matchers.eq;
     import static org.mockito.Mockito.doReturn;
    diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java
    new file mode 100644
    index 0000000000..5a2c97c549
    --- /dev/null
    +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java
    @@ -0,0 +1,72 @@
    +/*
    + * Copyright (c) 2014 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.sal.connect.netconf.schema.mapping;
    +
    +import static org.junit.Assert.assertEquals;
    +import static org.junit.Assert.assertNotNull;
    +import static org.junit.Assert.assertThat;
    +import static org.junit.Assert.assertTrue;
    +
    +import java.io.InputStream;
    +import java.util.Collections;
    +import java.util.List;
    +import java.util.Set;
    +import org.hamcrest.CoreMatchers;
    +import org.junit.Test;
    +import org.opendaylight.controller.netconf.api.NetconfMessage;
    +import org.opendaylight.controller.netconf.util.xml.XmlUtil;
    +import org.opendaylight.controller.sal.connect.netconf.NetconfToRpcRequestTest;
    +import org.opendaylight.yangtools.yang.common.QName;
    +import org.opendaylight.yangtools.yang.common.RpcResult;
    +import org.opendaylight.yangtools.yang.data.api.CompositeNode;
    +import org.opendaylight.yangtools.yang.data.api.Node;
    +import org.opendaylight.yangtools.yang.data.impl.NodeFactory;
    +import org.opendaylight.yangtools.yang.model.api.Module;
    +import org.opendaylight.yangtools.yang.model.api.SchemaContext;
    +import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
    +
    +public class NetconfMessageTransformerTest {
    +
    +    private static final QName COMMIT_Q_NAME = QName.create("namespace", "2012-12-12", "commit");
    +
    +    @Test
    +    public void testToRpcRequestNoSchemaForRequest() throws Exception {
    +        final NetconfMessageTransformer netconfMessageTransformer = getTransformer();
    +        final NetconfMessage netconfMessage = netconfMessageTransformer.toRpcRequest(COMMIT_Q_NAME,
    +                NodeFactory.createImmutableCompositeNode(COMMIT_Q_NAME, null, Collections.>emptyList()));
    +        assertThat(XmlUtil.toString(netconfMessage.getDocument()), CoreMatchers.containsString(""
    +        ));
    +        final RpcResult compositeNodeRpcResult = netconfMessageTransformer.toRpcResult(response, COMMIT_Q_NAME);
    +        assertTrue(compositeNodeRpcResult.isSuccessful());
    +        assertEquals("ok", compositeNodeRpcResult.getResult().getValue().get(0).getKey().getLocalName());
    +    }
    +
    +    public SchemaContext getSchema() {
    +        final List modelsToParse = Collections
    +                .singletonList(NetconfToRpcRequestTest.class.getResourceAsStream("/schemas/rpc-notification-subscription.yang"));
    +        final YangParserImpl parser = new YangParserImpl();
    +        final Set configModules = parser.parseYangModelsFromStreams(modelsToParse);
    +        final SchemaContext cfgCtx = parser.resolveSchemaContext(configModules);
    +        assertNotNull(cfgCtx);
    +        return cfgCtx;
    +    }
    +}
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/pom.xml b/opendaylight/md-sal/sal-remoterpc-connector/pom.xml
    index d16f67209f..ec5bb215bf 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/pom.xml
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/pom.xml
    @@ -136,7 +136,6 @@
           
           org.slf4j
           slf4j-simple
    -      ${slf4j.version}
           test
         
           
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcManager.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcManager.java
    index 4ae9c2e4d0..a840712999 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcManager.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcManager.java
    @@ -65,6 +65,7 @@ public class RpcManager extends AbstractUntypedActor {
                                 final Broker.ProviderSession brokerSession,
                                 final RpcProvisionRegistry rpcProvisionRegistry) {
         return Props.create(new Creator() {
    +      private static final long serialVersionUID = 1L;
           @Override
           public RpcManager create() throws Exception {
             return new RpcManager(schemaContext, brokerSession, rpcProvisionRegistry);
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/ExecuteRpc.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/ExecuteRpc.java
    index 522dd44f5b..4bb5258b40 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/ExecuteRpc.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/ExecuteRpc.java
    @@ -14,6 +14,7 @@ import org.opendaylight.yangtools.yang.common.QName;
     import java.io.Serializable;
     
     public class ExecuteRpc implements Serializable {
    +  private static final long serialVersionUID = 1L;
     
       private final String inputCompositeNode;
       private final QName rpc;
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/InvokeRpc.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/InvokeRpc.java
    index 59d09fc41b..652569b7ba 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/InvokeRpc.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/InvokeRpc.java
    @@ -15,6 +15,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
     import java.io.Serializable;
     
     public class InvokeRpc implements Serializable {
    +  private static final long serialVersionUID = 1L;
     
       private final QName rpc;
       private final YangInstanceIdentifier identifier;
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/RpcResponse.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/RpcResponse.java
    index 17766f15b9..387cb90112 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/RpcResponse.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/messages/RpcResponse.java
    @@ -7,11 +7,10 @@
      */
     package org.opendaylight.controller.remote.rpc.messages;
     
    -
    -
     import java.io.Serializable;
     
     public class RpcResponse implements Serializable {
    +  private static final long serialVersionUID = 1L;
       private final String resultCompositeNode;
     
       public RpcResponse(final String resultCompositeNode) {
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java
    index d21d05d7fe..fe8c463d2e 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java
    @@ -18,6 +18,7 @@ import java.util.HashMap;
     import java.util.Map;
     
     public class RoutingTable implements Copier, Serializable {
    +    private static final long serialVersionUID = 1L;
     
         private Map, Long> table = new HashMap<>();
         private ActorRef router;
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketImpl.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketImpl.java
    index 4dac456dc4..01c77f1f08 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketImpl.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/BucketImpl.java
    @@ -10,6 +10,7 @@ package org.opendaylight.controller.remote.rpc.registry.gossip;
     import java.io.Serializable;
     
     public class BucketImpl> implements Bucket, Serializable {
    +    private static final long serialVersionUID = 1L;
     
         private Long version = System.currentTimeMillis();
     
    diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/Messages.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/Messages.java
    index bf8b20213b..4e8f2c61c9 100644
    --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/Messages.java
    +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/gossip/Messages.java
    @@ -29,9 +29,12 @@ public class Messages {
     
         public static class BucketStoreMessages{
     
    -        public static class GetLocalBucket implements Serializable{}
    +        public static class GetLocalBucket implements Serializable {
    +            private static final long serialVersionUID = 1L;
    +        }
     
             public static class ContainsBucket implements Serializable {
    +            private static final long serialVersionUID = 1L;
                 final private Bucket bucket;
     
                 public ContainsBucket(Bucket bucket){
    @@ -46,20 +49,25 @@ public class Messages {
             }
     
             public static class UpdateBucket extends ContainsBucket implements Serializable {
    +            private static final long serialVersionUID = 1L;
                 public UpdateBucket(Bucket bucket){
                     super(bucket);
                 }
             }
     
             public static class GetLocalBucketReply extends ContainsBucket implements Serializable {
    +            private static final long serialVersionUID = 1L;
                 public GetLocalBucketReply(Bucket bucket){
                     super(bucket);
                 }
             }
     
    -        public static class GetAllBuckets implements Serializable{}
    +        public static class GetAllBuckets implements Serializable {
    +            private static final long serialVersionUID = 1L;
    +        }
     
             public static class GetBucketsByMembers implements Serializable{
    +            private static final long serialVersionUID = 1L;
                 private Set
    members; public GetBucketsByMembers(Set
    members){ @@ -73,6 +81,7 @@ public class Messages { } public static class ContainsBuckets implements Serializable{ + private static final long serialVersionUID = 1L; private Map buckets; public ContainsBuckets(Map buckets){ @@ -94,20 +103,25 @@ public class Messages { } public static class GetAllBucketsReply extends ContainsBuckets implements Serializable{ + private static final long serialVersionUID = 1L; public GetAllBucketsReply(Map buckets) { super(buckets); } } public static class GetBucketsByMembersReply extends ContainsBuckets implements Serializable{ + private static final long serialVersionUID = 1L; public GetBucketsByMembersReply(Map buckets) { super(buckets); } } - public static class GetBucketVersions implements Serializable{} + public static class GetBucketVersions implements Serializable { + private static final long serialVersionUID = 1L; + } public static class ContainsBucketVersions implements Serializable{ + private static final long serialVersionUID = 1L; Map versions; public ContainsBucketVersions(Map versions) { @@ -123,12 +137,14 @@ public class Messages { } public static class GetBucketVersionsReply extends ContainsBucketVersions implements Serializable{ + private static final long serialVersionUID = 1L; public GetBucketVersionsReply(Map versions) { super(versions); } } public static class UpdateRemoteBuckets extends ContainsBuckets implements Serializable{ + private static final long serialVersionUID = 1L; public UpdateRemoteBuckets(Map buckets) { super(buckets); } @@ -136,11 +152,16 @@ public class Messages { } public static class GossiperMessages{ - public static class Tick implements Serializable {} + public static class Tick implements Serializable { + private static final long serialVersionUID = 1L; + } - public static final class GossipTick extends Tick {} + public static final class GossipTick extends Tick { + private static final long serialVersionUID = 1L; + } public static final class GossipStatus extends ContainsBucketVersions implements Serializable{ + private static final long serialVersionUID = 1L; private Address from; public GossipStatus(Address from, Map versions) { @@ -154,6 +175,7 @@ public class Messages { } public static final class GossipEnvelope extends ContainsBuckets implements Serializable { + private static final long serialVersionUID = 1L; private final Address from; private final Address to; diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/utils/ConditionalProbe.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/utils/ConditionalProbe.java index 13cec54175..dde1861a06 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/utils/ConditionalProbe.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/utils/ConditionalProbe.java @@ -15,10 +15,10 @@ import org.slf4j.LoggerFactory; public class ConditionalProbe { private final ActorRef actorRef; - private final Predicate predicate; + private final Predicate predicate; Logger log = LoggerFactory.getLogger(ConditionalProbe.class); - public ConditionalProbe(ActorRef actorRef, Predicate predicate) { + public ConditionalProbe(ActorRef actorRef, Predicate predicate) { this.actorRef = actorRef; this.predicate = predicate; } diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java index f6f720eed0..ee96cb897f 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java @@ -200,11 +200,11 @@ public class RpcRegistryTest { Messages.BucketStoreMessages.UpdateRemoteBuckets.class); } - private JavaTestKit createProbeForMessage(ActorSystem node, ActorPath subjectPath, final Class clazz) { + private JavaTestKit createProbeForMessage(ActorSystem node, ActorPath subjectPath, final Class clazz) { final JavaTestKit probe = new JavaTestKit(node); ConditionalProbe conditionalProbe = - new ConditionalProbe(probe.getRef(), new Predicate() { + new ConditionalProbe(probe.getRef(), new Predicate() { @Override public boolean apply(@Nullable Object input) { if (input != null) diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/gossip/GossiperTest.java b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/gossip/GossiperTest.java index e61b54f067..cf42ebf1cc 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/gossip/GossiperTest.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/gossip/GossiperTest.java @@ -71,7 +71,7 @@ public class GossiperTest { @Test public void testReceiveGossipTick_WhenNoRemoteMemberShouldIgnore(){ - mockGossiper.setClusterMembers(Collections.EMPTY_LIST); + mockGossiper.setClusterMembers(Collections.
    emptyList()); doNothing().when(mockGossiper).getLocalStatusAndSendTo(any(Address.class)); mockGossiper.receiveGossipTick(); verify(mockGossiper, times(0)).getLocalStatusAndSendTo(any(Address.class)); diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/utils/LatestEntryRoutingLogicTest.java b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/utils/LatestEntryRoutingLogicTest.java index cd031a1d0a..f74bfc3cff 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/utils/LatestEntryRoutingLogicTest.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/utils/LatestEntryRoutingLogicTest.java @@ -8,14 +8,13 @@ package org.opendaylight.controller.remote.rpc.utils; - +import static org.junit.Assert.assertTrue; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.japi.Pair; import akka.testkit.JavaTestKit; import akka.testkit.TestProbe; import com.typesafe.config.ConfigFactory; -import junit.framework.Assert; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -23,7 +22,6 @@ import org.junit.Test; import java.util.ArrayList; import java.util.List; - public class LatestEntryRoutingLogicTest { static ActorSystem system; @@ -52,6 +50,6 @@ public class LatestEntryRoutingLogicTest { pairList.add(new Pair(actor2, 3000L)); pairList.add(new Pair(actor3, 2000L)); RoutingLogic logic = new LatestEntryRoutingLogic(pairList); - Assert.assertTrue(logic.select().equals(actor2)); + assertTrue(logic.select().equals(actor2)); } } diff --git a/opendaylight/md-sal/sal-rest-docgen/pom.xml b/opendaylight/md-sal/sal-rest-docgen/pom.xml index 5abb4f8910..3d3c52d7d1 100644 --- a/opendaylight/md-sal/sal-rest-docgen/pom.xml +++ b/opendaylight/md-sal/sal-rest-docgen/pom.xml @@ -10,10 +10,6 @@ sal-rest-docgen bundle - - 3.0.4.Final - - com.fasterxml.jackson.core @@ -42,7 +38,6 @@ org.jboss.resteasy jaxrs-api - ${jaxrs-api.version} diff --git a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java index 9a1816b90e..9442ca0c07 100644 --- a/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java +++ b/opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/DocProvider.java @@ -70,7 +70,7 @@ public class DocProvider implements BundleActivator, ServiceTrackerCustomizer
    (context, Broker.class, this); brokerServiceTracker.open(); } diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java index 9165281f9d..02c5137fe9 100644 --- a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java +++ b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorTest.java @@ -14,7 +14,6 @@ import java.util.Map.Entry; import java.util.Set; import java.util.TreeSet; import javax.ws.rs.core.UriInfo; -import junit.framework.Assert; import org.json.JSONException; import org.json.JSONObject; import org.junit.After; @@ -205,7 +204,7 @@ public class ApiDocGeneratorTest { if (m.getKey().getAbsolutePath().endsWith("toaster.yang")) { ApiDeclaration doc = generator.getSwaggerDocSpec(m.getValue(), "http://localhost:8080/restconf", "", schemaContext); - Assert.assertNotNull(doc); + assertNotNull(doc); // testing bugs.opendaylight.org bug 1290. UnionType model type. String jsonString = doc.getModels().toString(); diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java index c08f329f0d..192836e9fa 100644 --- a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java +++ b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/impl/NotificationServiceImpl.java @@ -39,7 +39,7 @@ public class NotificationServiceImpl implements NotificationService { notifications.add(new QName(notificationType.toString())); String notificationStreamName = RemoteStreamTools.createNotificationStream(salRemoteService, notifications); final Map desiredEventStream = RemoteStreamTools.createEventStream(restconfClientContext, notificationStreamName); - RemoteNotificationListener remoteNotificationListener = new RemoteNotificationListener(listener); + RemoteNotificationListener remoteNotificationListener = new RemoteNotificationListener(listener); final ListenerRegistration listenerRegistration = restconfClientContext.getEventStreamContext(desiredEventStream.get(desiredEventStream.get(notificationStreamName))) .registerNotificationListener(remoteNotificationListener); diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java index 895a5030e9..82fa2ae2e9 100644 --- a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java +++ b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/RemoteNotificationListener.java @@ -8,15 +8,16 @@ package org.opendaylight.controller.sal.restconf.broker.listeners; import org.opendaylight.controller.sal.binding.api.NotificationListener; +import org.opendaylight.yangtools.yang.binding.Notification; -public class RemoteNotificationListener implements org.opendaylight.yangtools.yang.binding.NotificationListener { +public class RemoteNotificationListener implements org.opendaylight.yangtools.yang.binding.NotificationListener { - org.opendaylight.controller.sal.binding.api.NotificationListener listener; + NotificationListener listener; - public RemoteNotificationListener(NotificationListener listener){ + public RemoteNotificationListener(NotificationListener listener){ this.listener = listener; } - public NotificationListener getListener(){ + public NotificationListener getListener() { return this.listener; } diff --git a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java index 16ca0aee93..3c4bbba4a4 100644 --- a/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java +++ b/opendaylight/md-sal/sal-restconf-broker/src/main/java/org/opendaylight/controller/sal/restconf/broker/listeners/SalNotificationListener.java @@ -11,14 +11,14 @@ import org.opendaylight.controller.sal.binding.api.NotificationListener; import org.opendaylight.yangtools.yang.binding.Notification; -public class SalNotificationListener implements NotificationListener { - private NotificationListener notificationListener; +public class SalNotificationListener implements NotificationListener { + private NotificationListener notificationListener; - public SalNotificationListener( NotificationListener notificationListener){ + public SalNotificationListener( NotificationListener notificationListener){ this.notificationListener = notificationListener; } @Override public void onNotification(Notification notification) { - this.notificationListener.onNotification(notification); + this.notificationListener.onNotification((T)notification); } } diff --git a/opendaylight/md-sal/samples/l2switch/implementation/pom.xml b/opendaylight/md-sal/samples/l2switch/implementation/pom.xml deleted file mode 100644 index a0e119b49c..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - 4.0.0 - - org.opendaylight.controller.samples - sal-samples - 1.2.0-SNAPSHOT - ../.. - - org.opendaylight.controller.samples.l2switch.md - l2switch-impl - bundle - - - org.opendaylight.controller - sal - - - - org.opendaylight.controller - sal-binding-api - - - org.opendaylight.controller.model - model-flow-service - - - - org.opendaylight.controller.model - model-inventory - - - org.opendaylight.controller.model - model-topology - - - org.opendaylight.controller.samples.l2switch.md - l2switch-model - ${project.version} - - - org.opendaylight.controller.thirdparty - net.sf.jung2 - - - org.opendaylight.yangtools - yang-binding - - - org.opendaylight.yangtools - yang-common - - - junit - junit - test - - - org.mockito - mockito-all - test - - - - - - - org.apache.felix - maven-bundle-plugin - true - - - - org.opendaylight.controller.sample.l2switch.md.L2SwitchProvider - - ${project.build.directory}/META-INF - - - - - diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/L2SwitchProvider.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/L2SwitchProvider.java deleted file mode 100644 index d123456262..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/L2SwitchProvider.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md; - -import org.opendaylight.controller.sample.l2switch.md.addresstracker.AddressTracker; -import org.opendaylight.controller.sample.l2switch.md.flow.FlowWriterService; -import org.opendaylight.controller.sample.l2switch.md.flow.FlowWriterServiceImpl; -import org.opendaylight.controller.sample.l2switch.md.inventory.InventoryService; -import org.opendaylight.controller.sample.l2switch.md.packet.PacketHandler; -import org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphDijkstra; -import org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService; -import org.opendaylight.controller.sample.l2switch.md.topology.TopologyLinkDataChangeHandler; -import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareConsumer; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; -import org.opendaylight.controller.sal.binding.api.NotificationService; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.binding.NotificationListener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * L2SwitchProvider serves as the Activator for our L2Switch OSGI bundle. - */ -public class L2SwitchProvider extends AbstractBindingAwareConsumer - implements AutoCloseable { - - private final static Logger _logger = LoggerFactory.getLogger(L2SwitchProvider.class); - - private ListenerRegistration listenerRegistration; - private AddressTracker addressTracker; - private TopologyLinkDataChangeHandler topologyLinkDataChangeHandler; - - - /** - * Setup the L2Switch. - * @param consumerContext The context of the L2Switch. - */ - @Override - public void onSessionInitialized(BindingAwareBroker.ConsumerContext consumerContext) { - DataBrokerService dataService = consumerContext.getSALService(DataBrokerService.class); - addressTracker = new AddressTracker(dataService); - - NetworkGraphService networkGraphService = new NetworkGraphDijkstra(); - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataService, networkGraphService); - - NotificationService notificationService = - consumerContext.getSALService(NotificationService.class); - PacketProcessingService packetProcessingService = - consumerContext.getRpcService(PacketProcessingService.class); - PacketHandler packetHandler = new PacketHandler(); - packetHandler.setAddressTracker(addressTracker); - packetHandler.setFlowWriterService(flowWriterService); - packetHandler.setPacketProcessingService(packetProcessingService); - packetHandler.setInventoryService(new InventoryService(dataService)); - - this.listenerRegistration = notificationService.registerNotificationListener(packetHandler); - this.topologyLinkDataChangeHandler = new TopologyLinkDataChangeHandler(dataService, networkGraphService); - topologyLinkDataChangeHandler.registerAsDataChangeListener(); - } - - /** - * Cleanup the L2Switch. - * @throws Exception occurs when the NotificationListener is closed - */ - @Override - public void close() throws Exception { - if (listenerRegistration != null) - listenerRegistration.close(); - } -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/addresstracker/AddressTracker.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/addresstracker/AddressTracker.java deleted file mode 100644 index ae5f03110c..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/addresstracker/AddressTracker.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.addresstracker; - -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.address.tracker.rev140402.L2Addresses; -import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.address.tracker.rev140402.l2.addresses.L2Address; -import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.address.tracker.rev140402.l2.addresses.L2AddressBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.address.tracker.rev140402.l2.addresses.L2AddressKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.concurrent.Future; - -/** - * AddressTracker manages the MD-SAL data tree for L2Address (mac, node connector pairings) information. - */ -public class AddressTracker { - - private final static Logger _logger = LoggerFactory.getLogger(AddressTracker.class); - private DataBrokerService dataService; - - /** - * Construct an AddressTracker with the specified inputs - * @param dataService The DataBrokerService for the AddressTracker - */ - public AddressTracker(DataBrokerService dataService) { - this.dataService = dataService; - } - - /** - * Get all the L2 Addresses in the MD-SAL data tree - * @return All the L2 Addresses in the MD-SAL data tree - */ - public L2Addresses getAddresses() { - return (L2Addresses)dataService.readOperationalData(InstanceIdentifier.builder(L2Addresses.class).toInstance()); - } - - /** - * Get a specific L2 Address in the MD-SAL data tree - * @param macAddress A MacAddress associated with an L2 Address object - * @return The L2 Address corresponding to the specified macAddress - */ - public L2Address getAddress(MacAddress macAddress) { - return (L2Address) dataService.readOperationalData(createPath(macAddress)); - } - - /** - * Add L2 Address into the MD-SAL data tree - * @param macAddress The MacAddress of the new L2Address object - * @param nodeConnectorRef The NodeConnectorRef of the new L2Address object - * @return Future containing the result of the add operation - */ - public Future> addAddress(MacAddress macAddress, NodeConnectorRef nodeConnectorRef) { - if(macAddress == null || nodeConnectorRef == null) { - return null; - } - - // Create L2Address - final L2AddressBuilder builder = new L2AddressBuilder(); - builder.setKey(new L2AddressKey(macAddress)) - .setMac(macAddress) - .setNodeConnectorRef(nodeConnectorRef); - - // Add L2Address to MD-SAL data tree - final DataModificationTransaction it = dataService.beginTransaction(); - it.putOperationalData(createPath(macAddress), builder.build()); - return it.commit(); - } - - /** - * Remove L2Address from the MD-SAL data tree - * @param macAddress The MacAddress of an L2Address object - * @return Future containing the result of the remove operation - */ - public Future> removeHost(MacAddress macAddress) { - final DataModificationTransaction it = dataService.beginTransaction(); - it.removeOperationalData(createPath(macAddress)); - return it.commit(); - } - - /** - * Create InstanceIdentifier path for an L2Address in the MD-SAL data tree - * @param macAddress The MacAddress of an L2Address object - * @return InstanceIdentifier of the L2Address corresponding to the specified macAddress - */ - private InstanceIdentifier createPath(MacAddress macAddress) { - return InstanceIdentifier.builder(L2Addresses.class) - .child(L2Address.class, new L2AddressKey(macAddress)).toInstance(); - } -} \ No newline at end of file diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterService.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterService.java deleted file mode 100644 index 2d5149e492..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterService.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.flow; - -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; - -/** - * Service that adds packet forwarding flows to configuration data store. - */ -public interface FlowWriterService { - - /** - * Writes a flow that forwards packets to destPort if destination mac in packet is destMac and - * source Mac in packet is sourceMac. If sourceMac is null then flow would not set any source mac, - * resulting in all packets with destMac being forwarded to destPort. - * - * @param sourceMac - * @param destMac - * @param destNodeConnectorRef - */ - public void addMacToMacFlow(MacAddress sourceMac, MacAddress destMac, NodeConnectorRef destNodeConnectorRef); - - /** - * Writes mac-to-mac flow on all ports that are in the path between given source and destination ports. - * It uses path provided by NetworkGraphService{@link org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService} to find a links{@link org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link} - * between given ports. And then writes appropriate flow on each port that is covered in that path. - * - * @param sourceMac - * @param sourceNodeConnectorRef - * @param destMac - * @param destNodeConnectorRef - */ - public void addMacToMacFlowsUsingShortestPath(MacAddress sourceMac, NodeConnectorRef sourceNodeConnectorRef, MacAddress destMac, NodeConnectorRef destNodeConnectorRef); - - -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterServiceImpl.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterServiceImpl.java deleted file mode 100644 index fccda9d578..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterServiceImpl.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.flow; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; - -import org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService; -import org.opendaylight.controller.sample.l2switch.md.util.InstanceIdentifierUtils; -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowCookie; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.FlowModFlags; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatch; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.math.BigInteger; -import java.util.List; -import java.util.concurrent.Future; -import java.util.concurrent.atomic.AtomicLong; - -/** - * Implementation of FlowWriterService{@link org.opendaylight.controller.sample.l2switch.md.flow.FlowWriterService}, - * that builds required flow and writes to configuration data store using provided DataBrokerService - * {@link org.opendaylight.controller.sal.binding.api.data.DataBrokerService} - */ -public class FlowWriterServiceImpl implements FlowWriterService { - private static final Logger _logger = LoggerFactory.getLogger(FlowWriterServiceImpl.class); - private final DataBrokerService dataBrokerService; - private final NetworkGraphService networkGraphService; - private AtomicLong flowIdInc = new AtomicLong(); - private AtomicLong flowCookieInc = new AtomicLong(0x2a00000000000000L); - - - public FlowWriterServiceImpl(DataBrokerService dataBrokerService, NetworkGraphService networkGraphService) { - Preconditions.checkNotNull(dataBrokerService, "dataBrokerService should not be null."); - Preconditions.checkNotNull(networkGraphService, "networkGraphService should not be null."); - this.dataBrokerService = dataBrokerService; - this.networkGraphService = networkGraphService; - } - - /** - * Writes a flow that forwards packets to destPort if destination mac in packet is destMac and - * source Mac in packet is sourceMac. If sourceMac is null then flow would not set any source mac, - * resulting in all packets with destMac being forwarded to destPort. - * - * @param sourceMac - * @param destMac - * @param destNodeConnectorRef - */ - @Override - public void addMacToMacFlow(MacAddress sourceMac, MacAddress destMac, NodeConnectorRef destNodeConnectorRef) { - - Preconditions.checkNotNull(destMac, "Destination mac address should not be null."); - Preconditions.checkNotNull(destNodeConnectorRef, "Destination port should not be null."); - - - // do not add flow if both macs are same. - if(sourceMac != null && destMac.equals(sourceMac)) { - _logger.info("In addMacToMacFlow: No flows added. Source and Destination mac are same."); - return; - } - - // get flow table key - TableKey flowTableKey = new TableKey((short) 0); //TODO: Hard coded Table Id 0, need to get it from Configuration data. - - //build a flow path based on node connector to program flow - InstanceIdentifier flowPath = buildFlowPath(destNodeConnectorRef, flowTableKey); - - // build a flow that target given mac id - Flow flowBody = createMacToMacFlow(flowTableKey.getId(), 0, sourceMac, destMac, destNodeConnectorRef); - - // commit the flow in config data - writeFlowToConfigData(flowPath, flowBody); - } - - /** - * Writes mac-to-mac flow on all ports that are in the path between given source and destination ports. - * It uses path provided by NetworkGraphService - * {@link org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService} to find a links - * {@link org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link} - * between given ports. And then writes appropriate flow on each port that is covered in that path. - * - * @param sourceMac - * @param sourceNodeConnectorRef - * @param destMac - * @param destNodeConnectorRef - */ - @Override - public void addMacToMacFlowsUsingShortestPath(MacAddress sourceMac, - NodeConnectorRef sourceNodeConnectorRef, - MacAddress destMac, - NodeConnectorRef destNodeConnectorRef) { - Preconditions.checkNotNull(sourceMac, "Source mac address should not be null."); - Preconditions.checkNotNull(sourceNodeConnectorRef, "Source port should not be null."); - Preconditions.checkNotNull(destMac, "Destination mac address should not be null."); - Preconditions.checkNotNull(destNodeConnectorRef, "Destination port should not be null."); - - if(sourceNodeConnectorRef.equals(destNodeConnectorRef)) { - _logger.info("In addMacToMacFlowsUsingShortestPath: No flows added. Source and Destination ports are same."); - return; - - } - NodeId sourceNodeId = new NodeId(sourceNodeConnectorRef.getValue().firstKeyOf(Node.class, NodeKey.class).getId().getValue()); - NodeId destNodeId = new NodeId(destNodeConnectorRef.getValue().firstKeyOf(Node.class, NodeKey.class).getId().getValue()); - - // add destMac-To-sourceMac flow on source port - addMacToMacFlow(destMac, sourceMac, sourceNodeConnectorRef); - - // add sourceMac-To-destMac flow on destination port - addMacToMacFlow(sourceMac, destMac, destNodeConnectorRef); - - if(!sourceNodeId.equals(destNodeId)) { - List linksInBeween = networkGraphService.getPath(sourceNodeId, destNodeId); - - if(linksInBeween != null) { - // assumes the list order is maintained and starts with link that has source as source node - for(Link link : linksInBeween) { - // add sourceMac-To-destMac flow on source port - addMacToMacFlow(sourceMac, destMac, getSourceNodeConnectorRef(link)); - - // add destMac-To-sourceMac flow on destination port - addMacToMacFlow(destMac, sourceMac, getDestNodeConnectorRef(link)); - } - } - } - } - - private NodeConnectorRef getSourceNodeConnectorRef(Link link) { - InstanceIdentifier nodeConnectorInstanceIdentifier - = InstanceIdentifierUtils.createNodeConnectorIdentifier( - link.getSource().getSourceNode().getValue(), - link.getSource().getSourceTp().getValue()); - return new NodeConnectorRef(nodeConnectorInstanceIdentifier); - } - - private NodeConnectorRef getDestNodeConnectorRef(Link link) { - InstanceIdentifier nodeConnectorInstanceIdentifier - = InstanceIdentifierUtils.createNodeConnectorIdentifier( - link.getDestination().getDestNode().getValue(), - link.getDestination().getDestTp().getValue()); - - return new NodeConnectorRef(nodeConnectorInstanceIdentifier); - } - - /** - * @param nodeConnectorRef - * @return - */ - private InstanceIdentifier buildFlowPath(NodeConnectorRef nodeConnectorRef, TableKey flowTableKey) { - - // generate unique flow key - FlowId flowId = new FlowId(String.valueOf(flowIdInc.getAndIncrement())); - FlowKey flowKey = new FlowKey(flowId); - - return InstanceIdentifierUtils.generateFlowInstanceIdentifier(nodeConnectorRef, flowTableKey, flowKey); - } - - /** - * @param tableId - * @param priority - * @param sourceMac - * @param destMac - * @param destPort - * @return {@link org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder} - * builds flow that forwards all packets with destMac to given port - */ - private Flow createMacToMacFlow(Short tableId, int priority, - MacAddress sourceMac, MacAddress destMac, NodeConnectorRef destPort) { - - // start building flow - FlowBuilder macToMacFlow = new FlowBuilder() // - .setTableId(tableId) // - .setFlowName("mac2mac"); - - // use its own hash code for id. - macToMacFlow.setId(new FlowId(Long.toString(macToMacFlow.hashCode()))); - - // create a match that has mac to mac ethernet match - EthernetMatchBuilder ethernetMatchBuilder = new EthernetMatchBuilder() // - .setEthernetDestination(new EthernetDestinationBuilder() // - .setAddress(destMac) // - .build()); - // set source in the match only if present - if(sourceMac != null) { - ethernetMatchBuilder.setEthernetSource(new EthernetSourceBuilder() - .setAddress(sourceMac) - .build()); - } - EthernetMatch ethernetMatch = ethernetMatchBuilder.build(); - Match match = new MatchBuilder() - .setEthernetMatch(ethernetMatch) - .build(); - - - Uri destPortUri = destPort.getValue().firstKeyOf(NodeConnector.class, NodeConnectorKey.class).getId(); - - Action outputToControllerAction = new ActionBuilder() // - .setOrder(0) - .setAction(new OutputActionCaseBuilder() // - .setOutputAction(new OutputActionBuilder() // - .setMaxLength(new Integer(0xffff)) // - .setOutputNodeConnector(destPortUri) // - .build()) // - .build()) // - .build(); - - // Create an Apply Action - ApplyActions applyActions = new ApplyActionsBuilder().setAction(ImmutableList.of(outputToControllerAction)) - .build(); - - // Wrap our Apply Action in an Instruction - Instruction applyActionsInstruction = new InstructionBuilder() // - .setOrder(0) - .setInstruction(new ApplyActionsCaseBuilder()// - .setApplyActions(applyActions) // - .build()) // - .build(); - - // Put our Instruction in a list of Instructions - macToMacFlow - .setMatch(match) // - .setInstructions(new InstructionsBuilder() // - .setInstruction(ImmutableList.of(applyActionsInstruction)) // - .build()) // - .setPriority(priority) // - .setBufferId(0L) // - .setHardTimeout(0) // - .setIdleTimeout(0) // - .setCookie(new FlowCookie(BigInteger.valueOf(flowCookieInc.getAndIncrement()))) - .setFlags(new FlowModFlags(false, false, false, false, false)); - - return macToMacFlow.build(); - } - - /** - * Starts and commits data change transaction which - * modifies provided flow path with supplied body. - * - * @param flowPath - * @param flowBody - * @return transaction commit - */ - private Future> writeFlowToConfigData(InstanceIdentifier flowPath, - Flow flowBody) { - DataModificationTransaction addFlowTransaction = dataBrokerService.beginTransaction(); - addFlowTransaction.putConfigurationData(flowPath, flowBody); - return addFlowTransaction.commit(); - } -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java deleted file mode 100644 index 1ec65e8f81..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.inventory; - -import org.opendaylight.controller.sample.l2switch.md.util.InstanceIdentifierUtils; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * InventoryService provides functions related to Nodes & NodeConnectors. - */ -public class InventoryService { - private DataBrokerService dataService; - // Key: SwitchId, Value: NodeConnectorRef that corresponds to NC between controller & switch - private HashMap controllerSwitchConnectors; - - /** - * Construct an InventoryService object with the specified inputs. - * @param dataService The DataBrokerService associated with the InventoryService. - */ - public InventoryService(DataBrokerService dataService) { - this.dataService = dataService; - controllerSwitchConnectors = new HashMap(); - } - - public HashMap getControllerSwitchConnectors() { - return controllerSwitchConnectors; - } - - // ToDo: Improve performance for thousands of switch ports - /** - * Get the External NodeConnectors of the network, which are the NodeConnectors connected to hosts. - * @return The list of external node connectors. - */ - public List getExternalNodeConnectors() { - // External NodeConnectors = All - Internal - ArrayList externalNodeConnectors = new ArrayList(); - Set internalNodeConnectors = new HashSet<>(); - - // Read Topology -- find list of switch-to-switch internal node connectors - NetworkTopology networkTopology = - (NetworkTopology)dataService.readOperationalData( - InstanceIdentifier.builder(NetworkTopology.class).toInstance()); - - for (Topology topology : networkTopology.getTopology()) { - Topology completeTopology = - (Topology)dataService.readOperationalData( - InstanceIdentifierUtils.generateTopologyInstanceIdentifier( - topology.getTopologyId().getValue())); - - for (Link link : completeTopology.getLink()) { - internalNodeConnectors.add(link.getDestination().getDestTp().getValue()); - internalNodeConnectors.add(link.getSource().getSourceTp().getValue()); - } - } - - // Read Inventory -- contains list of all nodeConnectors - InstanceIdentifier.InstanceIdentifierBuilder nodesInsIdBuilder = InstanceIdentifier.builder(Nodes.class); - Nodes nodes = (Nodes)dataService.readOperationalData(nodesInsIdBuilder.toInstance()); - if (nodes != null) { - for (Node node : nodes.getNode()) { - Node completeNode = (Node)dataService.readOperationalData(InstanceIdentifierUtils.createNodePath(node.getId())); - for (NodeConnector nodeConnector : completeNode.getNodeConnector()) { - // NodeConnector isn't switch-to-switch, so it must be controller-to-switch (internal) or external - if (!internalNodeConnectors.contains(nodeConnector.getId().getValue())) { - NodeConnectorRef ncRef = new NodeConnectorRef( - InstanceIdentifier.builder(Nodes.class).child(Node.class, node.getKey()) - .child(NodeConnector.class, nodeConnector.getKey()).toInstance()); - - // External node connectors have "-" in their name for mininet, i.e. "s1-eth1" - if (nodeConnector.getAugmentation(FlowCapableNodeConnector.class).getName().contains("-")) { - externalNodeConnectors.add(ncRef); - } - // Controller-to-switch internal node connectors - else { - controllerSwitchConnectors.put(node.getId().getValue(), ncRef); - } - } - } - } - } - - return externalNodeConnectors; - } -} \ No newline at end of file diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java deleted file mode 100644 index b4ea94242c..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.packet; - -import org.opendaylight.controller.sample.l2switch.md.addresstracker.AddressTracker; -import org.opendaylight.controller.sample.l2switch.md.flow.FlowWriterService; -import org.opendaylight.controller.sample.l2switch.md.inventory.InventoryService; -import org.opendaylight.controller.sample.l2switch.md.util.InstanceIdentifierUtils; -import org.opendaylight.controller.sal.packet.Ethernet; -import org.opendaylight.controller.sal.packet.LLDP; -import org.opendaylight.controller.sal.packet.LinkEncap; -import org.opendaylight.controller.sal.packet.Packet; -import org.opendaylight.controller.sal.packet.RawPacket; -import org.opendaylight.controller.sal.utils.HexEncode; -import org.opendaylight.controller.sal.utils.NetUtils; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.address.tracker.rev140402.l2.addresses.L2Address; -import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingListener; -import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived; -import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.HashMap; -import java.util.List; - -/** - * PacketHandler examines Ethernet packets to find L2Addresses (mac, nodeConnector) pairings - * of the sender and learns them. - * It also forwards the data packets appropriately dependending upon whether it knows about the - * target or not. - */ -public class PacketHandler implements PacketProcessingListener { - - private final static Logger _logger = LoggerFactory.getLogger(PacketHandler.class); - - private PacketProcessingService packetProcessingService; - private AddressTracker addressTracker; - private FlowWriterService flowWriterService; - private InventoryService inventoryService; - - public void setAddressTracker(AddressTracker addressTracker) { - this.addressTracker = addressTracker; - } - - public void setPacketProcessingService(PacketProcessingService packetProcessingService) { - this.packetProcessingService = packetProcessingService; - } - - public void setFlowWriterService(FlowWriterService flowWriterService) { - this.flowWriterService = flowWriterService; - } - - public void setInventoryService(InventoryService inventoryService) { - this.inventoryService = inventoryService; - } - - /** - * The handler function for all incoming packets. - * @param packetReceived The incoming packet. - */ - @Override - public void onPacketReceived(PacketReceived packetReceived) { - - if(packetReceived == null) return; - - try { - byte[] payload = packetReceived.getPayload(); - RawPacket rawPacket = new RawPacket(payload); - NodeConnectorRef ingress = packetReceived.getIngress(); - - Packet packet = decodeDataPacket(rawPacket); - - if(!(packet instanceof Ethernet)) return; - - handleEthernetPacket(packet, ingress); - - } catch(Exception e) { - _logger.error("Failed to handle packet {}", packetReceived, e); - } - } - - /** - * The handler function for Ethernet packets. - * @param packet The incoming Ethernet packet. - * @param ingress The NodeConnector where the Ethernet packet came from. - */ - private void handleEthernetPacket(Packet packet, NodeConnectorRef ingress) { - byte[] srcMac = ((Ethernet) packet).getSourceMACAddress(); - byte[] destMac = ((Ethernet) packet).getDestinationMACAddress(); - - if (srcMac == null || srcMac.length == 0) return; - - Object enclosedPacket = packet.getPayload(); - - if (enclosedPacket instanceof LLDP) - return; // LLDP packets are handled by OpenFlowPlugin - - // get l2address by src mac - // if unknown, add l2address - MacAddress srcMacAddress = toMacAddress(srcMac); - L2Address src = addressTracker.getAddress(srcMacAddress); - boolean isSrcKnown = (src != null); - if (!isSrcKnown) { - addressTracker.addAddress(srcMacAddress, ingress); - } - - // get host by dest mac - // if known set dest known to true - MacAddress destMacAddress = toMacAddress(destMac); - L2Address dest = addressTracker.getAddress(destMacAddress); - boolean isDestKnown = (dest != null); - - byte[] payload = packet.getRawPayload(); - // if (src and dest known) - // sendpacket to dest and add src<->dest flow - if(isSrcKnown & isDestKnown) { - flowWriterService.addMacToMacFlowsUsingShortestPath(srcMacAddress, src.getNodeConnectorRef(), - destMacAddress, dest.getNodeConnectorRef()); - sendPacketOut(payload, getControllerNodeConnector(dest.getNodeConnectorRef()), dest.getNodeConnectorRef()); - } else { - // if (dest unknown) - // sendpacket to external links minus ingress - floodExternalPorts(payload, ingress); - } - } - - /** - * Floods the specified payload on external ports, which are ports not connected to switches. - * @param payload The payload to be flooded. - * @param ingress The NodeConnector where the payload came from. - */ - private void floodExternalPorts(byte[] payload, NodeConnectorRef ingress) { - List externalPorts = inventoryService.getExternalNodeConnectors(); - externalPorts.remove(ingress); - - for (NodeConnectorRef egress : externalPorts) { - sendPacketOut(payload, getControllerNodeConnector(egress), egress); - } - } - - /** - * Sends the specified packet on the specified port. - * @param payload The payload to be sent. - * @param ingress The NodeConnector where the payload came from. - * @param egress The NodeConnector where the payload will go. - */ - private void sendPacketOut(byte[] payload, NodeConnectorRef ingress, NodeConnectorRef egress) { - if (ingress == null || egress == null) return; - InstanceIdentifier egressNodePath = InstanceIdentifierUtils.getNodePath(egress.getValue()); - TransmitPacketInput input = new TransmitPacketInputBuilder() // - .setPayload(payload) // - .setNode(new NodeRef(egressNodePath)) // - .setEgress(egress) // - .setIngress(ingress) // - .build(); - packetProcessingService.transmitPacket(input); - } - - /** - * Decodes an incoming packet. - * @param raw The raw packet to be decoded. - * @return The decoded form of the raw packet. - */ - private Packet decodeDataPacket(RawPacket raw) { - if(raw == null) { - return null; - } - byte[] data = raw.getPacketData(); - if(data.length <= 0) { - return null; - } - if(raw.getEncap().equals(LinkEncap.ETHERNET)) { - Ethernet res = new Ethernet(); - try { - res.deserialize(data, 0, data.length * NetUtils.NumBitsInAByte); - res.setRawPayload(raw.getPacketData()); - } catch(Exception e) { - _logger.warn("Failed to decode packet: {}", e.getMessage()); - } - return res; - } - return null; - } - - /** - * Creates a MacAddress object out of a byte array. - * @param dataLinkAddress The byte-array form of a MacAddress - * @return MacAddress of the specified dataLinkAddress. - */ - private MacAddress toMacAddress(byte[] dataLinkAddress) { - return new MacAddress(HexEncode.bytesToHexStringFormat(dataLinkAddress)); - } - - /** - * Gets the NodeConnector that connects the controller & switch for a specified switch port/node connector. - * @param nodeConnectorRef The nodeConnector of a switch. - * @return The NodeConnector that that connects the controller & switch. - */ - private NodeConnectorRef getControllerNodeConnector(NodeConnectorRef nodeConnectorRef) { - NodeConnectorRef controllerSwitchNodeConnector = null; - HashMap controllerSwitchConnectors = inventoryService.getControllerSwitchConnectors(); - InstanceIdentifier nodePath = InstanceIdentifierUtils.getNodePath(nodeConnectorRef.getValue()); - if (nodePath != null) { - NodeKey nodeKey = InstanceIdentifierUtils.getNodeKey(nodePath); - if (nodeKey != null) { - controllerSwitchNodeConnector = controllerSwitchConnectors.get(nodeKey.getId().getValue()); - } - } - return controllerSwitchNodeConnector; - } -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphDijkstra.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphDijkstra.java deleted file mode 100644 index a90ac5a007..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphDijkstra.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.topology; - -import com.google.common.base.Preconditions; -import edu.uci.ics.jung.algorithms.shortestpath.DijkstraShortestPath; -import edu.uci.ics.jung.graph.DirectedSparseGraph; -import edu.uci.ics.jung.graph.Graph; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; - -/** - * Implementation of NetworkGraphService{@link org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService}. - * It uses Jung graph library internally to maintain a graph and optimum way to return shortest path using - * Dijkstra algorithm. - */ -public class NetworkGraphDijkstra implements NetworkGraphService { - - private static final Logger _logger = LoggerFactory.getLogger(NetworkGraphDijkstra.class); - - DijkstraShortestPath shortestPath = null; - Graph networkGraph = null; - - /** - * Adds links to existing graph or creates new directed graph with given links if graph was not initialized. - * @param links - */ - @Override - public synchronized void addLinks(List links) { - if(links == null || links.isEmpty()) { - _logger.info("In addLinks: No link added as links is null or empty."); - return; - } - - if(networkGraph == null) { - networkGraph = new DirectedSparseGraph<>(); - } - - for(Link link : links) { - NodeId sourceNodeId = link.getSource().getSourceNode(); - NodeId destinationNodeId = link.getDestination().getDestNode(); - networkGraph.addVertex(sourceNodeId); - networkGraph.addVertex(destinationNodeId); - networkGraph.addEdge(link, sourceNodeId, destinationNodeId); - } - if(shortestPath == null) { - shortestPath = new DijkstraShortestPath<>(networkGraph); - } else { - shortestPath.reset(); - } - } - - /** - * removes links from existing graph. - * @param links - */ - @Override - public synchronized void removeLinks(List links) { - Preconditions.checkNotNull(networkGraph, "Graph is not initialized, add links first."); - - if(links == null || links.isEmpty()) { - _logger.info("In removeLinks: No link removed as links is null or empty."); - return; - } - - for(Link link : links) { - networkGraph.removeEdge(link); - } - - if(shortestPath == null) { - shortestPath = new DijkstraShortestPath<>(networkGraph); - } else { - shortestPath.reset(); - } - } - - /** - * returns a path between 2 nodes. Uses Dijkstra's algorithm to return shortest path. - * @param sourceNodeId - * @param destinationNodeId - * @return - */ - @Override - public synchronized List getPath(NodeId sourceNodeId, NodeId destinationNodeId) { - Preconditions.checkNotNull(shortestPath, "Graph is not initialized, add links first."); - - if(sourceNodeId == null || destinationNodeId == null) { - _logger.info("In getPath: returning null, as sourceNodeId or destinationNodeId is null."); - return null; - } - - return shortestPath.getPath(sourceNodeId, destinationNodeId); - } - - /** - * Clears the prebuilt graph, in case same service instance is required to process a new graph. - */ - @Override - public synchronized void clear() { - networkGraph = null; - shortestPath = null; - } -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphService.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphService.java deleted file mode 100644 index 173be342c4..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphService.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.topology; - -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; - -import java.util.List; - -/** - * Service that allows to build a network graph using Topology links - * {@link org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link} - * and exposes operation that can be performed on such graph. - */ -public interface NetworkGraphService { - - /** - * Adds links to existing graph or creates new graph with given links if graph was not initialized. - * @param links - */ - public void addLinks(List links); - - /** - * removes links from existing graph. - * @param links - */ - public void removeLinks(List links); - - /** - * returns a path between 2 nodes. Implementation should ideally return shortest path. - * @param sourceNodeId - * @param destinationNodeId - * @return - */ - public List getPath(NodeId sourceNodeId, NodeId destinationNodeId); - - /** - * Clears the prebuilt graph, in case same service instance is required to process a new graph. - */ - public void clear(); -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/TopologyLinkDataChangeHandler.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/TopologyLinkDataChangeHandler.java deleted file mode 100644 index 254ebf8b4a..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/topology/TopologyLinkDataChangeHandler.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.topology; - -import com.google.common.base.Preconditions; -import org.opendaylight.controller.sample.l2switch.md.util.InstanceIdentifierUtils; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * Listens to data change events on topology links - * {@link org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link} - * and maintains a topology graph using provided NetworkGraphService - * {@link org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService}. - * It refreshes the graph after a delay(default 10 sec) to accommodate burst of change events if they come in bulk. - * This is to avoid continuous refresh of graph on a series of change events in short time. - */ -public class TopologyLinkDataChangeHandler implements DataChangeListener { - private static final Logger _logger = LoggerFactory.getLogger(TopologyLinkDataChangeHandler.class); - private static final String DEFAULT_TOPOLOGY_ID = "flow:1"; - - private boolean networkGraphRefreshScheduled = false; - private final ScheduledExecutorService networkGraphRefreshScheduler = Executors.newScheduledThreadPool(1); - private final long DEFAULT_GRAPH_REFRESH_DELAY = 10; - private final long graphRefreshDelayInSec; - - private final NetworkGraphService networkGraphService; - private final DataBrokerService dataBrokerService; - - /** - * Uses default delay to refresh topology graph if this constructor is used. - * @param dataBrokerService - * @param networkGraphService - */ - public TopologyLinkDataChangeHandler(DataBrokerService dataBrokerService, NetworkGraphService networkGraphService) { - Preconditions.checkNotNull(dataBrokerService, "dataBrokerService should not be null."); - Preconditions.checkNotNull(networkGraphService, "networkGraphService should not be null."); - this.dataBrokerService = dataBrokerService; - this.networkGraphService = networkGraphService; - this.graphRefreshDelayInSec = DEFAULT_GRAPH_REFRESH_DELAY; - } - - /** - * - * @param dataBrokerService - * @param networkGraphService - * @param graphRefreshDelayInSec - */ - public TopologyLinkDataChangeHandler(DataBrokerService dataBrokerService, NetworkGraphService networkGraphService, - long graphRefreshDelayInSec) { - Preconditions.checkNotNull(dataBrokerService, "dataBrokerService should not be null."); - Preconditions.checkNotNull(networkGraphService, "networkGraphService should not be null."); - this.dataBrokerService = dataBrokerService; - this.networkGraphService = networkGraphService; - this.graphRefreshDelayInSec = graphRefreshDelayInSec; - } - - /** - * Based on if links have been added or removed in topology data store, schedules a refresh of network graph. - * @param dataChangeEvent - */ - @Override - public void onDataChanged(DataChangeEvent, DataObject> dataChangeEvent) { - if(dataChangeEvent == null) { - _logger.info("In onDataChanged: No Processing done as dataChangeEvent is null."); - } - Map, DataObject> linkOriginalData = dataChangeEvent.getOriginalOperationalData(); - Map, DataObject> linkUpdatedData = dataChangeEvent.getUpdatedOperationalData(); - // change this logic, once MD-SAL start populating DeletedOperationData Set - if(linkOriginalData != null && linkUpdatedData != null - && (linkOriginalData.size() != 0 || linkUpdatedData.size() != 0) - && !networkGraphRefreshScheduled) { - networkGraphRefreshScheduled = linkOriginalData.size() != linkUpdatedData.size(); - if(networkGraphRefreshScheduled) { - networkGraphRefreshScheduler.schedule(new NetworkGraphRefresher(), graphRefreshDelayInSec, TimeUnit.SECONDS); - } - } - - } - - /** - * Registers as a data listener to receive changes done to - * {@link org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link} - * under {@link org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology} - * operation data root. - */ - - public void registerAsDataChangeListener() { - InstanceIdentifier linkInstance = InstanceIdentifier.builder(NetworkTopology.class) - .child(Topology.class, new TopologyKey(new TopologyId(DEFAULT_TOPOLOGY_ID))).child(Link.class).toInstance(); - dataBrokerService.registerDataChangeListener(linkInstance, this); - } - - /** - * - */ - private class NetworkGraphRefresher implements Runnable { - /** - * - */ - @Override - public void run() { - networkGraphRefreshScheduled = false; - //TODO: it should refer to changed links only from DataChangeEvent above. - List links = getLinksFromTopology(DEFAULT_TOPOLOGY_ID); - networkGraphService.clear();// can remove this once changed links are addressed - if(links != null && !links.isEmpty()) { - networkGraphService.addLinks(links); - } - } - - /** - * @param topologyId - * @return - */ - private List getLinksFromTopology(String topologyId) { - InstanceIdentifier topologyInstanceIdentifier = InstanceIdentifierUtils.generateTopologyInstanceIdentifier(topologyId); - Topology topology = (Topology) dataBrokerService.readOperationalData(topologyInstanceIdentifier); - return topology.getLink(); - } - } -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/util/InstanceIdentifierUtils.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/util/InstanceIdentifierUtils.java deleted file mode 100644 index c2be488d93..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/util/InstanceIdentifierUtils.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2014 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.sample.l2switch.md.util; - -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -/* InstanceIdentifierUtils provides utility functions related to InstanceIdentifiers. - */ -public final class InstanceIdentifierUtils { - - private InstanceIdentifierUtils() { - throw new UnsupportedOperationException("Utility class should never be instantiated"); - } - - /** - * Creates an Instance Identifier (path) for node with specified id - * - * @param nodeId - * @return - */ - public static final InstanceIdentifier createNodePath(final NodeId nodeId) { - return InstanceIdentifier.builder(Nodes.class) // - .child(Node.class, new NodeKey(nodeId)) // - .build(); - } - - /** - * Shorten's node child path to node path. - * - * @param nodeChild child of node, from which we want node path. - * @return - */ - public static final InstanceIdentifier getNodePath(final InstanceIdentifier nodeChild) { - return nodeChild.firstIdentifierOf(Node.class); - } - - - /** - * Creates a table path by appending table specific location to node path - * - * @param nodePath - * @param tableKey - * @return - */ - public static final InstanceIdentifier createTablePath(final InstanceIdentifier nodePath, final TableKey tableKey) { - return nodePath.builder() - .augmentation(FlowCapableNode.class) - .child(Table.class, tableKey) - .build(); - } - - /** - * Creates a path for particular flow, by appending flow-specific information - * to table path. - * - * @param table - * @param flowKey - * @return - */ - public static InstanceIdentifier createFlowPath(final InstanceIdentifier
    table, final FlowKey flowKey) { - return table.child(Flow.class, flowKey); - } - - /** - * Extract table id from table path. - * - * @param tablePath - * @return - */ - public static Short getTableId(final InstanceIdentifier
    tablePath) { - return tablePath.firstKeyOf(Table.class, TableKey.class).getId(); - } - - /** - * Extracts NodeConnectorKey from node connector path. - */ - public static NodeConnectorKey getNodeConnectorKey(final InstanceIdentifier nodeConnectorPath) { - return nodeConnectorPath.firstKeyOf(NodeConnector.class, NodeConnectorKey.class); - } - - /** - * Extracts NodeKey from node path. - */ - public static NodeKey getNodeKey(final InstanceIdentifier nodePath) { - return nodePath.firstKeyOf(Node.class, NodeKey.class); - } - - - // - public static final InstanceIdentifier createNodeConnectorIdentifier(final String nodeIdValue, - final String nodeConnectorIdValue) { - return createNodePath(new NodeId(nodeIdValue)) - .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId(nodeConnectorIdValue))); - } - - /** - * @param nodeConnectorRef - * @return - */ - public static InstanceIdentifier generateNodeInstanceIdentifier(final NodeConnectorRef nodeConnectorRef) { - return nodeConnectorRef.getValue().firstIdentifierOf(Node.class); - } - - /** - * @param nodeConnectorRef - * @param flowTableKey - * @return - */ - public static InstanceIdentifier
    generateFlowTableInstanceIdentifier(final NodeConnectorRef nodeConnectorRef, final TableKey flowTableKey) { - return generateNodeInstanceIdentifier(nodeConnectorRef).builder() - .augmentation(FlowCapableNode.class) - .child(Table.class, flowTableKey) - .build(); - } - - /** - * @param nodeConnectorRef - * @param flowTableKey - * @param flowKey - * @return - */ - public static InstanceIdentifier generateFlowInstanceIdentifier(final NodeConnectorRef nodeConnectorRef, - final TableKey flowTableKey, - final FlowKey flowKey) { - return generateFlowTableInstanceIdentifier(nodeConnectorRef, flowTableKey).child(Flow.class, flowKey); - } - - public static InstanceIdentifier generateTopologyInstanceIdentifier(final String topologyId) { - return InstanceIdentifier.builder(NetworkTopology.class) - .child(Topology.class, new TopologyKey(new TopologyId(topologyId))) - .build(); - } -} - diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterServiceImplTest.java b/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterServiceImplTest.java deleted file mode 100644 index 50f74cc33f..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/flow/FlowWriterServiceImplTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Copyright (c) 2014 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.sample.l2switch.md.flow; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; -import org.opendaylight.controller.sample.l2switch.md.topology.NetworkGraphService; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -/** - */ -public class FlowWriterServiceImplTest { - private DataBrokerService dataBrokerService; - private NodeConnectorRef srcNodeConnectorRef; - private NodeConnectorRef destNodeConnectorRef; - private MacAddress destMacAddress; - private MacAddress srcMacAddress; - private DataModificationTransaction dataModificationTransaction; - private NetworkGraphService networkGraphService; - - @Before - public void init() { - dataBrokerService = mock(DataBrokerService.class); - networkGraphService = mock(NetworkGraphService.class); - //build source node connector ref - InstanceIdentifier srcNodesInstanceIdentifier = InstanceIdentifier.create(Nodes.class); - InstanceIdentifier srcNodeInstanceIdentifier = srcNodesInstanceIdentifier - .child(Node.class, new NodeKey(new NodeId("openflow:1"))); - InstanceIdentifier srcNodeConnectorInstanceIdentifier = srcNodeInstanceIdentifier - .child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("openflow:1:2"))); - srcNodeConnectorRef = new NodeConnectorRef(srcNodeConnectorInstanceIdentifier); - - //build dest node connector ref - InstanceIdentifier nodesInstanceIdentifier - = InstanceIdentifier.builder(Nodes.class) - .build(); - InstanceIdentifier nodeInstanceIdentifier = - nodesInstanceIdentifier.child(Node.class, new NodeKey(new NodeId("openflow:2"))); - InstanceIdentifier nodeConnectorInstanceIdentifier = - nodeInstanceIdentifier.child(NodeConnector.class, new NodeConnectorKey(new NodeConnectorId("openflow:2:2"))); - destNodeConnectorRef = new NodeConnectorRef(nodeConnectorInstanceIdentifier); - destMacAddress = new MacAddress("00:0a:95:9d:68:16"); - srcMacAddress = new MacAddress("00:0a:95:8c:97:24"); - dataModificationTransaction = mock(DataModificationTransaction.class); - when(dataBrokerService.beginTransaction()).thenReturn(dataModificationTransaction); - } - - @Test - public void testFlowWriterServiceImpl_NPEWhenDataBrokerServiceIsNull() throws Exception { - try { - new FlowWriterServiceImpl(null, networkGraphService); - fail("Expected null pointer exception."); - } catch(NullPointerException npe) { - assertEquals("dataBrokerService should not be null.", npe.getMessage()); - } - } - - @Test - public void testAddMacToMacFlow_NPEWhenNullSourceMacDestMacAndNodeConnectorRef() throws Exception { - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataBrokerService, networkGraphService); - try { - flowWriterService.addMacToMacFlow(null, null, null); - fail("Expected null pointer exception."); - } catch(NullPointerException npe) { - assertEquals("Destination mac address should not be null.", npe.getMessage()); - } - } - - @Test - public void testAddMacToMacFlow_NPEWhenSourceMacNullMac() throws Exception { - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataBrokerService, networkGraphService); - try { - flowWriterService.addMacToMacFlow(null, null, destNodeConnectorRef); - fail("Expected null pointer exception."); - } catch(NullPointerException npe) { - assertEquals("Destination mac address should not be null.", npe.getMessage()); - } - } - - @Test - public void testAddMacToMacFlow_NPEWhenNullSourceMacNodeConnectorRef() throws Exception { - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataBrokerService, networkGraphService); - try { - flowWriterService.addMacToMacFlow(null, destMacAddress, null); - fail("Expected null pointer exception."); - } catch(NullPointerException npe) { - assertEquals("Destination port should not be null.", npe.getMessage()); - } - } - - @Test - public void testAddMacToMacFlow_WhenNullSourceMac() throws Exception { - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataBrokerService, networkGraphService); - flowWriterService.addMacToMacFlow(null, destMacAddress, destNodeConnectorRef); - verify(dataBrokerService, times(1)).beginTransaction(); - verify(dataModificationTransaction, times(1)).commit(); - } - - @Test - public void testAddMacToMacFlow_WhenSrcAndDestMacAreSame() throws Exception { - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataBrokerService, networkGraphService); - flowWriterService.addMacToMacFlow(new MacAddress(destMacAddress.getValue()), destMacAddress, destNodeConnectorRef); - verify(dataBrokerService, never()).beginTransaction(); - verify(dataModificationTransaction, never()).commit(); - - } - - @Test - public void testAddMacToMacFlow_SunnyDay() throws Exception { - FlowWriterService flowWriterService = new FlowWriterServiceImpl(dataBrokerService, networkGraphService); - flowWriterService.addMacToMacFlow(srcMacAddress, destMacAddress, destNodeConnectorRef); - verify(dataBrokerService, times(1)).beginTransaction(); - verify(dataModificationTransaction, times(1)).commit(); - } - -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphDijkstraTest.java b/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphDijkstraTest.java deleted file mode 100644 index 3669a5c979..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/topology/NetworkGraphDijkstraTest.java +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Copyright (c) 2014 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.sample.l2switch.md.topology; - -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Destination; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.link.attributes.Source; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; - -import java.util.ArrayList; -import java.util.List; - -import static junit.framework.Assert.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - */ -public class NetworkGraphDijkstraTest { - Link link1, link2, link3, link4, link5, link6, link7, link8, link9, link10,link11,link12; - Destination dest1, dest2, dest3, dest4, dest5, dest6,dest7,dest8,dest9,dest10,dest11,dest12; - Source src1, src2, src3, src4, src5, src6,src7,src8,src9,src10,src11,src12; - NodeId nodeId1 = new NodeId("openflow:1"); - NodeId nodeId2 = new NodeId("openflow:2"); - NodeId nodeId3 = new NodeId("openflow:3"); - NodeId nodeId4 = new NodeId("openflow:4"); - NodeId nodeId5 = new NodeId("openflow:5"); - NodeId nodeId6 = new NodeId("openflow:6"); - NodeId nodeId7 = new NodeId("openflow:7"); - List links = new ArrayList<>(); - - @Before - public void init() { - link1 = mock(Link.class); - link2 = mock(Link.class); - link3 = mock(Link.class); - link4 = mock(Link.class); - link5 = mock(Link.class); - link6 = mock(Link.class); - link7 = mock(Link.class); - link8 = mock(Link.class); - link9 = mock(Link.class); - link10 = mock(Link.class); - link11 = mock(Link.class); - link12 = mock(Link.class); - dest1 = mock(Destination.class); - dest2 = mock(Destination.class); - dest3 = mock(Destination.class); - dest4 = mock(Destination.class); - dest5 = mock(Destination.class); - dest6 = mock(Destination.class); - dest7 = mock(Destination.class); - dest8 = mock(Destination.class); - dest9 = mock(Destination.class); - dest10 = mock(Destination.class); - dest11 = mock(Destination.class); - dest12 = mock(Destination.class); - src1 = mock(Source.class); - src2 = mock(Source.class); - src3 = mock(Source.class); - src4 = mock(Source.class); - src5 = mock(Source.class); - src6 = mock(Source.class); - src7 = mock(Source.class); - src8 = mock(Source.class); - src9 = mock(Source.class); - src10 = mock(Source.class); - src11 = mock(Source.class); - src12 = mock(Source.class); - when(link1.getSource()).thenReturn(src1); - when(link2.getSource()).thenReturn(src2); - when(link3.getSource()).thenReturn(src3); - when(link4.getSource()).thenReturn(src4); - when(link5.getSource()).thenReturn(src5); - when(link6.getSource()).thenReturn(src6); - when(link7.getSource()).thenReturn(src7); - when(link8.getSource()).thenReturn(src8); - when(link9.getSource()).thenReturn(src9); - when(link10.getSource()).thenReturn(src10); - when(link11.getSource()).thenReturn(src11); - when(link12.getSource()).thenReturn(src12); - when(link1.getDestination()).thenReturn(dest1); - when(link2.getDestination()).thenReturn(dest2); - when(link3.getDestination()).thenReturn(dest3); - when(link4.getDestination()).thenReturn(dest4); - when(link5.getDestination()).thenReturn(dest5); - when(link6.getDestination()).thenReturn(dest6); - when(link7.getDestination()).thenReturn(dest7); - when(link8.getDestination()).thenReturn(dest8); - when(link9.getDestination()).thenReturn(dest9); - when(link10.getDestination()).thenReturn(dest10); - when(link11.getDestination()).thenReturn(dest11); - when(link12.getDestination()).thenReturn(dest12); - when(src1.getSourceNode()).thenReturn(nodeId1); - when(dest1.getDestNode()).thenReturn(nodeId2); - when(src2.getSourceNode()).thenReturn(nodeId2); - when(dest2.getDestNode()).thenReturn(nodeId1); - when(src3.getSourceNode()).thenReturn(nodeId1); - when(dest3.getDestNode()).thenReturn(nodeId3); - when(src4.getSourceNode()).thenReturn(nodeId3); - when(dest4.getDestNode()).thenReturn(nodeId1); - when(src5.getSourceNode()).thenReturn(nodeId2); - when(dest5.getDestNode()).thenReturn(nodeId4); - when(src6.getSourceNode()).thenReturn(nodeId4); - when(dest6.getDestNode()).thenReturn(nodeId2); - when(src7.getSourceNode()).thenReturn(nodeId2); - when(dest7.getDestNode()).thenReturn(nodeId5); - when(src8.getSourceNode()).thenReturn(nodeId5); - when(dest8.getDestNode()).thenReturn(nodeId2); - when(src9.getSourceNode()).thenReturn(nodeId6); - when(dest9.getDestNode()).thenReturn(nodeId3); - when(src10.getSourceNode()).thenReturn(nodeId3); - when(dest10.getDestNode()).thenReturn(nodeId6); - when(src11.getSourceNode()).thenReturn(nodeId7); - when(dest11.getDestNode()).thenReturn(nodeId3); - when(src12.getSourceNode()).thenReturn(nodeId3); - when(dest12.getDestNode()).thenReturn(nodeId7); - links.add(link1); - links.add(link2); - links.add(link3); - links.add(link4); - links.add(link5); - links.add(link6); - links.add(link7); - links.add(link8); - links.add(link9); - links.add(link10); - links.add(link11); - links.add(link12); - - } - - @Test - public void testAddLinksAndGetPath() throws Exception { - NetworkGraphService networkGraphService = new NetworkGraphDijkstra(); - networkGraphService.addLinks(links); - List path = networkGraphService.getPath(nodeId2, nodeId3); - assertEquals("path size is not as expected.", 2, path.size()); - assertEquals("link source is not as expected.", nodeId2, path.get(0).getSource().getSourceNode()); - assertEquals("link destination is not as expected.", nodeId1, path.get(0).getDestination().getDestNode()); - path = networkGraphService.getPath(nodeId3, nodeId2); - assertEquals("path size is not as expected.", 2, path.size()); - assertEquals("link source is not as expected.", nodeId3, path.get(0).getSource().getSourceNode()); - assertEquals("link destination is not as expected.", nodeId1, path.get(0).getDestination().getDestNode()); - - path = networkGraphService.getPath(nodeId4, nodeId6); - assertEquals("path size is not as expected.", 4, path.size()); - assertEquals("link source is not as expected.", nodeId4, path.get(0).getSource().getSourceNode()); - assertEquals("link destination is not as expected.", nodeId2, path.get(0).getDestination().getDestNode()); - } -} diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/topology/TopologyLinkDataChangeHandlerTest.java b/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/topology/TopologyLinkDataChangeHandlerTest.java deleted file mode 100644 index 9ecd25651a..0000000000 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/test/java/org/opendaylight/controller/sample/l2switch/md/topology/TopologyLinkDataChangeHandlerTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (c) 2014 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.sample.l2switch.md.topology; - -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.sample.l2switch.md.util.InstanceIdentifierUtils; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -/** - */ -public class TopologyLinkDataChangeHandlerTest { - NetworkGraphService networkGraphService; - DataBrokerService dataBrokerService; - DataChangeEvent dataChangeEvent; - Topology topology; - Link link; - - @Before - public void init() { - networkGraphService = mock(NetworkGraphService.class); - dataBrokerService = mock(DataBrokerService.class); - dataChangeEvent = mock(DataChangeEvent.class); - link = mock(Link.class); - topology = mock(Topology.class); - } - - @Test - public void testOnDataChange() throws Exception { - TopologyLinkDataChangeHandler topologyLinkDataChangeHandler = new TopologyLinkDataChangeHandler(dataBrokerService, networkGraphService, 2); - Map, DataObject> original = new HashMap, DataObject>(); - InstanceIdentifier instanceIdentifier = InstanceIdentifierUtils.generateTopologyInstanceIdentifier("flow:1"); - DataObject dataObject = mock(DataObject.class); - Map, DataObject> updated = new HashMap, DataObject>(); - updated.put(instanceIdentifier, dataObject); - when(dataChangeEvent.getUpdatedOperationalData()).thenReturn(updated); - when(dataChangeEvent.getOriginalOperationalData()).thenReturn(original); - List links = new ArrayList<>(); - links.add(link); - when(dataBrokerService.readOperationalData(instanceIdentifier)).thenReturn(topology); - when(topology.getLink()).thenReturn(links); - - topologyLinkDataChangeHandler.onDataChanged(dataChangeEvent); - Thread.sleep(2100); - verify(networkGraphService, times(1)).addLinks(links); - } -} diff --git a/opendaylight/md-sal/samples/l2switch/model/pom.xml b/opendaylight/md-sal/samples/l2switch/model/pom.xml deleted file mode 100644 index fa35c1f6cd..0000000000 --- a/opendaylight/md-sal/samples/l2switch/model/pom.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - 4.0.0 - - org.opendaylight.controller.samples - sal-samples - 1.2.0-SNAPSHOT - ../.. - - org.opendaylight.controller.samples.l2switch.md - l2switch-model - bundle - - - - org.opendaylight.controller.model - model-inventory - - - org.opendaylight.yangtools - yang-binding - - - org.opendaylight.yangtools - yang-common - - - org.opendaylight.yangtools.model - ietf-yang-types - - - - - - - org.apache.felix - maven-bundle-plugin - true - - - ${project.groupId}.${project.artifactId} - org.opendaylight.yangtools.yang.binding.annotations, * - ${project.basedir}/META-INF - - - - - org.opendaylight.yangtools - yang-maven-plugin - ${yangtools.version} - - - org.opendaylight.yangtools - maven-sal-api-gen-plugin - ${yangtools.version} - jar - - - org.opendaylight.yangtools - yang-binding - ${yangtools.version} - jar - - - - - - generate-sources - - - src/main/yang - - - org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl - ${salGeneratorPath} - - - org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl - target/site/models - - - org.opendaylight.yangtools.yang.wadl.generator.maven.WadlGenerator - target/site/models - - - true - - - - - - - - diff --git a/opendaylight/md-sal/samples/l2switch/model/src/main/yang/l2-address-tracker.yang b/opendaylight/md-sal/samples/l2switch/model/src/main/yang/l2-address-tracker.yang deleted file mode 100644 index d694c6883d..0000000000 --- a/opendaylight/md-sal/samples/l2switch/model/src/main/yang/l2-address-tracker.yang +++ /dev/null @@ -1,45 +0,0 @@ -module l2-address-tracker { - yang-version 1; - namespace "urn:opendaylight:l2-address-tracker"; - prefix l2-address-tracker; - - import ietf-yang-types { - prefix yang; - revision-date 2010-09-24; - } - import opendaylight-inventory { - prefix inv; - revision-date 2013-08-19; - } - - organization "Cisco Systems Inc"; - contact - "Alex Fan "; - description - "YANG version of the L2 Address Tracker Data Model"; - - revision 2014-04-02 { - description - "L2 Address Tracker module draft."; - } - - grouping l2-address { - leaf mac { - type yang:mac-address; - mandatory true; - description - "the mac address of the host."; - } - leaf node-connector-ref { - type inv:node-connector-ref; - } - } - - container l2-addresses { - config false; - list l2-address { - key "mac"; - uses l2-address; - } - } -} \ No newline at end of file diff --git a/opendaylight/md-sal/samples/l2switch/pom.xml b/opendaylight/md-sal/samples/l2switch/pom.xml deleted file mode 100644 index 6a715c74ab..0000000000 --- a/opendaylight/md-sal/samples/l2switch/pom.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - 4.0.0 - - - org.opendaylight.controller.samples - sal-samples - 1.2.0-SNAPSHOT - - - l2switch.aggregator - org.opendaylight.controller.samples.l2switch - 1.1.0-SNAPSHOT - pom - - - model - implementation - - - diff --git a/opendaylight/md-sal/samples/pom.xml b/opendaylight/md-sal/samples/pom.xml index 6070c72472..378b03318a 100644 --- a/opendaylight/md-sal/samples/pom.xml +++ b/opendaylight/md-sal/samples/pom.xml @@ -16,7 +16,6 @@ toaster-consumer toaster-provider toaster-config - l2switch clustering-test-app diff --git a/opendaylight/md-sal/statistics-manager/pom.xml b/opendaylight/md-sal/statistics-manager/pom.xml index 1a443177c6..eb6c51b351 100644 --- a/opendaylight/md-sal/statistics-manager/pom.xml +++ b/opendaylight/md-sal/statistics-manager/pom.xml @@ -45,7 +45,6 @@ org.slf4j slf4j-log4j12 - ${slf4j.version} test diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatAbstractListenCommit.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatAbstractListenCommit.java index 6db73d5ddc..10bfcba678 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatAbstractListenCommit.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatAbstractListenCommit.java @@ -123,6 +123,8 @@ public abstract class StatAbstractListenCommit Optional readLatestConfiguration(final InstanceIdentifier path) { diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java index 0f8030f620..ca0e5b20ed 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java @@ -124,6 +124,7 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { @Override public void close() throws Exception { + LOG.info("StatisticsManager close called"); finishing = true; if (nodeRegistrator != null) { nodeRegistrator.close(); diff --git a/opendaylight/netconf/config-netconf-connector/pom.xml b/opendaylight/netconf/config-netconf-connector/pom.xml index edba4e11da..2b3015243f 100644 --- a/opendaylight/netconf/config-netconf-connector/pom.xml +++ b/opendaylight/netconf/config-netconf-connector/pom.xml @@ -106,32 +106,7 @@ org.opendaylight.controller.netconf.confignetconfconnector.util, org.opendaylight.controller.netconf.confignetconfconnector.osgi, org.opendaylight.controller.netconf.confignetconfconnector.exception, - com.google.common.base, - com.google.common.collect, - javax.annotation, - javax.management, - javax.management.openmbean, - org.opendaylight.controller.config.api, - org.opendaylight.controller.config.api.jmx, - org.opendaylight.controller.config.yangjmxgenerator, - org.opendaylight.controller.config.yangjmxgenerator.attribute, - org.opendaylight.controller.netconf.api, - org.opendaylight.controller.netconf.mapping.api, - org.opendaylight.controller.netconf.util.mapping, - org.opendaylight.controller.netconf.util.xml, - org.opendaylight.controller.netconf.util.exception, - org.opendaylight.yangtools.yang.common, - org.opendaylight.yangtools.yang.model.api, - org.osgi.framework, - org.osgi.util.tracker, - org.slf4j, - org.w3c.dom, - com.google.common.io, - org.opendaylight.yangtools.yang.model.api.type, - org.opendaylight.yangtools.sal.binding.generator.spi, - org.opendaylight.yangtools.sal.binding.yang.types, - org.opendaylight.controller.config.util - + * diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleCompositeAttributeWritingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleCompositeAttributeWritingStrategy.java index 10b643f9f4..47fbc6ddcf 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleCompositeAttributeWritingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleCompositeAttributeWritingStrategy.java @@ -26,8 +26,8 @@ public class SimpleCompositeAttributeWritingStrategy extends SimpleAttributeWrit protected Object preprocess(Object value) { Util.checkType(value, Map.class); - Preconditions.checkArgument(((Map)value).size() == 1, "Unexpected number of values in %s, expected 1", value); - return ((Map)value).values().iterator().next(); + Preconditions.checkArgument(((Map)value).size() == 1, "Unexpected number of values in %s, expected 1", value); + return ((Map)value).values().iterator().next(); } } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleIdentityRefAttributeWritingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleIdentityRefAttributeWritingStrategy.java index 104bf4df94..1e5d2bb8d9 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleIdentityRefAttributeWritingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleIdentityRefAttributeWritingStrategy.java @@ -33,8 +33,8 @@ public class SimpleIdentityRefAttributeWritingStrategy extends SimpleAttributeWr protected Object preprocess(Object value) { Util.checkType(value, Map.class); - Preconditions.checkArgument(((Map)value).size() == 1, "Unexpected number of values in %s, expected 1", value); - Object stringValue = ((Map) value).values().iterator().next(); + Preconditions.checkArgument(((Map)value).size() == 1, "Unexpected number of values in %s, expected 1", value); + Object stringValue = ((Map) value).values().iterator().next(); Util.checkType(stringValue, String.class); return stringValue; diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleUnionAttributeWritingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleUnionAttributeWritingStrategy.java index d75feb273e..4802cba7af 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleUnionAttributeWritingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/SimpleUnionAttributeWritingStrategy.java @@ -27,12 +27,12 @@ public class SimpleUnionAttributeWritingStrategy extends SimpleAttributeWritingS protected Object preprocess(Object value) { Util.checkType(value, Map.class); - Preconditions.checkArgument(((Map)value).size() == 1, "Unexpected number of values in %s, expected 1", value); - Object listOfStrings = ((Map) value).values().iterator().next(); + Preconditions.checkArgument(((Map)value).size() == 1, "Unexpected number of values in %s, expected 1", value); + Object listOfStrings = ((Map) value).values().iterator().next(); Util.checkType(listOfStrings, List.class); StringBuilder b = new StringBuilder(); - for (Object character: (List)listOfStrings) { + for (Object character: (List)listOfStrings) { Util.checkType(character, String.class); b.append(character); } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolved.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolved.java index 7fd8928928..551da722c0 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolved.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolved.java @@ -8,20 +8,23 @@ package org.opendaylight.controller.netconf.confignetconfconnector.operations.runtimerpc; -import com.google.common.base.Preconditions; -import com.google.common.base.Strings; -import com.google.common.collect.Maps; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.management.ObjectName; import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.confignetconfconnector.mapping.rpc.ModuleRpcs; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.Modules; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.modules.Module; -import javax.management.ObjectName; - -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; +import com.google.common.base.Strings; +import com.google.common.collect.Maps; /** * Represents parsed xpath to runtime bean instance @@ -46,6 +49,11 @@ public final class RuntimeRpcElementResolved { return moduleName; } + @VisibleForTesting + Map getAdditionalAttributes() { + return additionalAttributes; + } + public String getInstanceName() { return instanceName; } @@ -70,22 +78,45 @@ public final class RuntimeRpcElementResolved { return ObjectNameUtil.createRuntimeBeanName(moduleName, instanceName, additionalAttributesJavaNames); } + /** + * Pattern for an absolute instance identifier xpath pointing to a runtime bean instance e.g: + *
    +     * /modules/module[name=instanceName][type=moduleType]
    +     * 
    + * or + *
    +     * /a:modules/a:module[a:name=instanceName][a:type=moduleType]
    +     * 
    + */ private static final String xpathPatternBlueprint = - "/" + XmlNetconfConstants.MODULES_KEY - + "/" + XmlNetconfConstants.MODULE_KEY - + "\\[" - - + "(?type|name)" - + "='(?[^']+)'" - + "( and |\\]\\[)" - + "(?type|name)" - + "='(?[^']+)'" - - + "\\]" - + "(?.*)"; + "/" + getRegExForPrefixedName(Modules.QNAME.getLocalName())+ "/" + getRegExForPrefixedName(Module.QNAME.getLocalName()) + + + "\\[" + + "(?" + getRegExForPrefixedName(XmlNetconfConstants.TYPE_KEY) + "|" + getRegExForPrefixedName(XmlNetconfConstants.NAME_KEY) + ")" + + "=('|\")?(?[^'\"\\]]+)('|\")?" + + "( and |\\]\\[)" + + "(?" + getRegExForPrefixedName(XmlNetconfConstants.TYPE_KEY) + "|" + getRegExForPrefixedName(XmlNetconfConstants.NAME_KEY) + ")" + + "=('|\")?(?[^'\"\\]]+)('|\")?" + + "\\]" + + + "(?.*)"; + + /** + * Return reg ex that matches either the name with or without a prefix + */ + private static String getRegExForPrefixedName(final String name) { + return "([^:]+:)?" + name; + } private static final Pattern xpathPattern = Pattern.compile(xpathPatternBlueprint); - private static final String additionalPatternBlueprint = "(?.+)\\[(.+)='(?.+)'\\]"; + + /** + * Pattern for additional path elements inside xpath for instance identifier pointing to an inner runtime bean e.g: + *
    +     * /modules/module[name=instanceName and type=moduleType]/inner[key=b]
    +     * 
    + */ + private static final String additionalPatternBlueprint = getRegExForPrefixedName("(?.+)") + "\\[(?" + getRegExForPrefixedName("(.+)") + ")=('|\")?(?[^'\"\\]]+)('|\")?\\]"; private static final Pattern additionalPattern = Pattern.compile(additionalPatternBlueprint); public static RuntimeRpcElementResolved fromXpath(String xpath, String elementName, String namespace) { @@ -115,20 +146,19 @@ public final class RuntimeRpcElementResolved { PatternGroupResolver(String key1, String value1, String value2, String additional) { this.key1 = Preconditions.checkNotNull(key1); this.value1 = Preconditions.checkNotNull(value1); - this.value2 = Preconditions.checkNotNull(value2); - this.additional = Preconditions.checkNotNull(additional); } String getModuleName() { - return key1.equals(XmlNetconfConstants.TYPE_KEY) ? value1 : value2; + return key1.contains(XmlNetconfConstants.TYPE_KEY) ? value1 : value2; } String getInstanceName() { - return key1.equals(XmlNetconfConstants.NAME_KEY) ? value1 : value2; + return key1.contains(XmlNetconfConstants.NAME_KEY) ? value1 : value2; } + Map getAdditionalKeys(String elementName, String moduleName) { HashMap additionalAttributes = Maps.newHashMap(); @@ -141,7 +171,7 @@ public final class RuntimeRpcElementResolved { Preconditions .checkState( matcher.matches(), - "Attribute %s not in required form on rpc element %s, required format for additional attributes is %s", + "Attribute %s not in required form on rpc element %s, required format for additional attributes is: %s", additionalKeyValue, elementName, additionalPatternBlueprint); String name = matcher.group("additionalKey"); runtimeBeanYangName = name; diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java index 641881cf9e..28849d0033 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java @@ -55,10 +55,10 @@ import org.custommonkey.xmlunit.NodeTestException; import org.custommonkey.xmlunit.NodeTester; import org.custommonkey.xmlunit.XMLAssert; import org.custommonkey.xmlunit.XMLUnit; +import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; -import org.junit.matchers.JUnitMatchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.controller.config.api.ConflictingVersionException; @@ -569,7 +569,7 @@ public class NetconfMappingTest extends AbstractConfigTest { } private void assertContainsString(String string, String substring) { - assertThat(string, JUnitMatchers.containsString(substring)); + assertThat(string, CoreMatchers.containsString(substring)); } private void checkEnum(final Document response) throws Exception { diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolvedTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolvedTest.java new file mode 100644 index 0000000000..3c4213cbc3 --- /dev/null +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/runtimerpc/RuntimeRpcElementResolvedTest.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2014 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.confignetconfconnector.operations.runtimerpc; + +import static org.junit.Assert.assertEquals; +import com.google.common.collect.ImmutableMap; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class RuntimeRpcElementResolvedTest { + + private static final String MODULE_TYPE = "moduleType"; + private static final String INSTANCE_NAME = "instanceName"; + @Parameterized.Parameter(0) + public String xpath; + @Parameterized.Parameter(1) + public Map additional; + + @Parameterized.Parameters(name = "{index}: parsed({0}) contains moduleName:{1} and instanceName:{2}") + public static Collection data() { + return Arrays.asList(new Object[][] { + // With namespaces + { "/a:modules/a:module[a:name='instanceName'][a:type='moduleType']/b:listener-state[b:peer-id='127.0.0.1']", + new HashMap<>(ImmutableMap.of("listener-state", "127.0.0.1"))}, + { "/a:modules/a:module[a:name='instanceName'][a:type='moduleType']", + null}, + + // Without namespaces + { "/modules/module[name=instanceName][type=moduleType]", null}, + { "/modules/module[type=moduleType][name='instanceName']", null}, + { "/modules/module[name=\'instanceName\'][type=\"moduleType\"]", null}, + { "/modules/module[type=moduleType and name=instanceName]", null}, + { "/modules/module[name=\"instanceName\" and type=moduleType]", null}, + { "/modules/module[type=\"moduleType\" and name=instanceName]", null}, + { "/modules/module[name=\'instanceName\' and type=\"moduleType\"]", null}, + + // With inner beans + { "/modules/module[name=instanceName and type=\"moduleType\"]/inner[key=b]", Collections.singletonMap("inner", "b")}, + { "/modules/module[name=instanceName and type=moduleType]/inner[key=b]", Collections.singletonMap("inner", "b")}, + { "/modules/module[name=instanceName and type=moduleType]/inner[key=\'b\']", Collections.singletonMap("inner", "b")}, + { "/modules/module[name=instanceName and type=moduleType]/inner[key=\"b\"]", Collections.singletonMap("inner", "b")}, + + { "/modules/module[name=instanceName and type=\"moduleType\"]/inner[key2=a]/inner2[key=b]", + new HashMap<>(ImmutableMap.of("inner", "a", "inner2", "b")) + }, + }); + } + + @Test + public void testFromXpath() throws Exception { + final RuntimeRpcElementResolved resolved = RuntimeRpcElementResolved.fromXpath(xpath, "element", "namespace"); + assertEquals(MODULE_TYPE, resolved.getModuleName()); + assertEquals(INSTANCE_NAME, resolved.getInstanceName()); + if (additional != null) { + assertEquals(additional, resolved.getAdditionalAttributes()); + } + } +} diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceImplTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceImplTest.java index 1e650c08b1..b051c6c1c6 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceImplTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/NetconfOperationServiceImplTest.java @@ -24,7 +24,7 @@ import java.util.Set; import org.junit.Assert; import org.junit.Test; -import org.junit.matchers.JUnitMatchers; +import org.hamcrest.CoreMatchers; import org.opendaylight.controller.config.api.LookupRegistry; import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry; import org.opendaylight.yangtools.yang.common.QName; @@ -72,11 +72,11 @@ public class NetconfOperationServiceImplTest { String message = e.getMessage(); Assert.assertThat( message, - JUnitMatchers + CoreMatchers .containsString("missing from config subsystem but present in yangstore: [(namespace?revision=1970-01-01)qname2]")); Assert.assertThat( message, - JUnitMatchers + CoreMatchers .containsString("All modules present in config: [(namespace?revision=1970-01-01)qname1]")); } } diff --git a/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/PersisterAggregatorTest.java b/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/PersisterAggregatorTest.java index cd646aeb07..bef1237f98 100644 --- a/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/PersisterAggregatorTest.java +++ b/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/PersisterAggregatorTest.java @@ -23,11 +23,11 @@ import java.util.Arrays; import java.util.List; import java.util.Properties; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.opendaylight.controller.netconf.persist.impl.PersisterAggregator.PersisterWithConfiguration; diff --git a/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/osgi/TestingExceptionHandler.java b/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/osgi/TestingExceptionHandler.java index 3f04010015..c8140973eb 100644 --- a/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/osgi/TestingExceptionHandler.java +++ b/opendaylight/netconf/config-persister-impl/src/test/java/org/opendaylight/controller/netconf/persist/impl/osgi/TestingExceptionHandler.java @@ -7,13 +7,13 @@ */ package org.opendaylight.controller.netconf.persist.impl.osgi; +import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import org.junit.matchers.JUnitMatchers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +49,7 @@ final class TestingExceptionHandler implements Thread.UncaughtExceptionHandler { private void assertException(Throwable t, Class exType, String exMessageToContain) { assertEquals("Expected exception of type " + exType + " but was " + t, exType, t.getClass()); if(exMessageToContain!=null) { - assertThat(t.getMessage(), JUnitMatchers.containsString(exMessageToContain)); + assertThat(t.getMessage(), containsString(exMessageToContain)); } } diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcherImplTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcherImplTest.java index 5a2ec5656f..dfbb972e8c 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcherImplTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientDispatcherImplTest.java @@ -21,7 +21,6 @@ import org.opendaylight.controller.netconf.client.NetconfClientDispatcherImpl; import org.opendaylight.controller.netconf.client.NetconfClientSessionListener; import org.opendaylight.controller.netconf.client.SimpleNetconfClientSessionListener; import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguration; -import org.opendaylight.controller.netconf.client.conf.NetconfClientConfigurationBuilder; import org.opendaylight.controller.netconf.client.conf.NetconfReconnectingClientConfiguration; import org.opendaylight.controller.netconf.client.conf.NetconfReconnectingClientConfigurationBuilder; import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler; @@ -32,7 +31,6 @@ import org.opendaylight.protocol.framework.ReconnectStrategyFactory; import java.net.InetSocketAddress; import java.util.concurrent.Future; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorFactoryTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorFactoryTest.java index 0557a0c268..62d6275b9e 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorFactoryTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorFactoryTest.java @@ -13,13 +13,10 @@ import io.netty.channel.Channel; import io.netty.util.HashedWheelTimer; import io.netty.util.Timer; import io.netty.util.concurrent.Promise; -import org.apache.sshd.common.SessionListener; import org.junit.Test; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.protocol.framework.SessionListenerFactory; import org.opendaylight.protocol.framework.SessionNegotiator; - -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -29,15 +26,15 @@ public class NetconfClientSessionNegotiatorFactoryTest { public void testGetSessionNegotiator() throws Exception { NetconfClientSessionListener sessionListener = mock(NetconfClientSessionListener.class); Timer timer = new HashedWheelTimer(); - SessionListenerFactory listenerFactory = mock(SessionListenerFactory.class); + SessionListenerFactory listenerFactory = mock(SessionListenerFactory.class); doReturn(sessionListener).when(listenerFactory).getSessionListener(); Channel channel = mock(Channel.class); - Promise promise = mock(Promise.class); + Promise promise = mock(Promise.class); NetconfClientSessionNegotiatorFactory negotiatorFactory = new NetconfClientSessionNegotiatorFactory(timer, Optional.absent(), 200L); - SessionNegotiator sessionNegotiator = negotiatorFactory.getSessionNegotiator(listenerFactory, channel, promise); + SessionNegotiator sessionNegotiator = negotiatorFactory.getSessionNegotiator(listenerFactory, channel, promise); assertNotNull(sessionNegotiator); } } diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorTest.java index 333e9deae4..187f13b258 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionNegotiatorTest.java @@ -8,22 +8,35 @@ package org.opendaylight.controller.netconf.client; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import com.google.common.base.Optional; -import io.netty.channel.*; +import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.channel.ChannelPipeline; +import io.netty.channel.ChannelProgressivePromise; import io.netty.handler.ssl.SslHandler; import io.netty.util.HashedWheelTimer; +import io.netty.util.Timer; import io.netty.util.concurrent.GenericFutureListener; import io.netty.util.concurrent.Promise; -import org.apache.mina.handler.demux.ExceptionHandler; +import java.util.Set; import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; import org.mockito.internal.util.collections.Sets; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.opendaylight.controller.netconf.api.NetconfClientSessionPreferences; import org.opendaylight.controller.netconf.api.NetconfMessage; -import io.netty.util.Timer; import org.opendaylight.controller.netconf.nettyutil.handler.ChunkedFramingMechanismEncoder; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfXMLToHelloMessageDecoder; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfXMLToMessageDecoder; @@ -31,14 +44,8 @@ import org.opendaylight.controller.netconf.nettyutil.handler.exi.NetconfStartExi import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessage; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.controller.netconf.util.test.XmlFileLoader; -import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.openexi.proc.common.EXIOptions; import org.w3c.dom.Document; -import java.util.Set; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyObject; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.*; public class NetconfClientSessionNegotiatorTest { @@ -96,8 +103,8 @@ public class NetconfClientSessionNegotiatorTest { return pipeline; } - private NetconfClientSessionNegotiator createNetconfClientSessionNegotiator(Promise promise, - NetconfMessage startExi) { + private NetconfClientSessionNegotiator createNetconfClientSessionNegotiator(final Promise promise, + final NetconfMessage startExi) { ChannelProgressivePromise progressivePromise = mock(ChannelProgressivePromise.class); NetconfClientSessionPreferences preferences = new NetconfClientSessionPreferences(helloMessage, startExi); doReturn(progressivePromise).when(promise).setFailure(any(Throwable.class)); @@ -115,7 +122,7 @@ public class NetconfClientSessionNegotiatorTest { NetconfClientSessionNegotiator negotiator = createNetconfClientSessionNegotiator(promise, null); negotiator.channelActive(null); - Set caps = Sets.newSet("a", "b"); + Set caps = Sets.newSet("a", "b"); NetconfHelloMessage helloServerMessage = NetconfHelloMessage.createServerHello(caps, 10); negotiator.handleMessage(helloServerMessage); verify(promise).setSuccess(anyObject()); @@ -130,12 +137,12 @@ public class NetconfClientSessionNegotiatorTest { NetconfClientSessionNegotiator negotiator = createNetconfClientSessionNegotiator(promise, exiMessage); negotiator.channelActive(null); - Set caps = Sets.newSet("exi:1.0"); + Set caps = Sets.newSet("exi:1.0"); NetconfHelloMessage helloMessage = NetconfHelloMessage.createServerHello(caps, 10); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override - public Object answer(InvocationOnMock invocationOnMock) throws Throwable { + public Object answer(final InvocationOnMock invocationOnMock) throws Throwable { channelInboundHandlerAdapter = ((ChannelInboundHandlerAdapter) invocationOnMock.getArguments()[2]); return null; } diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java index 4175190e14..731a3fe960 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java @@ -12,7 +12,6 @@ import com.google.common.collect.Lists; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelPipeline; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -23,7 +22,6 @@ import org.opendaylight.controller.netconf.client.NetconfClientSessionListener; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec; import org.openexi.proc.common.EXIOptions; -import java.util.ArrayList; import java.util.Collection; import static org.junit.Assert.assertEquals; diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfReconnectingClientConfigurationTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfReconnectingClientConfigurationTest.java index e79a370ec7..a9754654d5 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfReconnectingClientConfigurationTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfReconnectingClientConfigurationTest.java @@ -12,7 +12,6 @@ import com.google.common.base.Optional; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; -import org.opendaylight.controller.config.yang.protocol.framework.NeverReconnectStrategyFactoryModule; import org.opendaylight.controller.netconf.client.NetconfClientSessionListener; import org.opendaylight.controller.netconf.client.SimpleNetconfClientSessionListener; import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguration; diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SimpleNetconfClientSessionListenerTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SimpleNetconfClientSessionListenerTest.java index e067cc225f..9065ca45a2 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SimpleNetconfClientSessionListenerTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SimpleNetconfClientSessionListenerTest.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.netconf.client; import io.netty.channel.*; import io.netty.util.concurrent.Future; -import io.netty.util.concurrent.Promise; import org.junit.Before; import org.junit.Test; import org.mockito.internal.util.collections.Sets; @@ -26,7 +25,7 @@ public class SimpleNetconfClientSessionListenerTest { private Channel channel; private ChannelFuture channelFuture; - Set caps; + Set caps; private NetconfHelloMessage helloMessage; private NetconfMessage message; private NetconfClientSessionListener sessionListener; diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SshClientChannelInitializerTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SshClientChannelInitializerTest.java index 0830c2967b..8c55d8cc10 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SshClientChannelInitializerTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/SshClientChannelInitializerTest.java @@ -29,7 +29,7 @@ public class SshClientChannelInitializerTest { NetconfClientSessionNegotiatorFactory negotiatorFactory = mock(NetconfClientSessionNegotiatorFactory.class); NetconfClientSessionListener sessionListener = mock(NetconfClientSessionListener.class); - SessionNegotiator sessionNegotiator = mock(SessionNegotiator.class); + SessionNegotiator sessionNegotiator = mock(SessionNegotiator.class); doReturn("").when(sessionNegotiator).toString(); doReturn(sessionNegotiator).when(negotiatorFactory).getSessionNegotiator(any(SessionListenerFactory.class), any(Channel.class), any(Promise.class)); ChannelPipeline pipeline = mock(ChannelPipeline.class); diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/TcpClientChannelInitializerTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/TcpClientChannelInitializerTest.java index e355cf45e7..9c57565981 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/TcpClientChannelInitializerTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/TcpClientChannelInitializerTest.java @@ -13,7 +13,6 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelPipeline; import io.netty.util.concurrent.Promise; import org.junit.Test; -import org.opendaylight.controller.netconf.nettyutil.AbstractChannelInitializer; import org.opendaylight.protocol.framework.SessionListenerFactory; import org.opendaylight.protocol.framework.SessionNegotiator; @@ -23,7 +22,7 @@ public class TcpClientChannelInitializerTest { @Test public void testInitializeSessionNegotiator() throws Exception { NetconfClientSessionNegotiatorFactory factory = mock(NetconfClientSessionNegotiatorFactory.class); - SessionNegotiator sessionNegotiator = mock(SessionNegotiator.class); + SessionNegotiator sessionNegotiator = mock(SessionNegotiator.class); doReturn("").when(sessionNegotiator).toString(); doReturn(sessionNegotiator).when(factory).getSessionNegotiator(any(SessionListenerFactory.class), any(Channel.class), any(Promise.class)); NetconfClientSessionListener listener = mock(NetconfClientSessionListener.class); diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultNetconfOperation.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultNetconfOperation.java index 13d4ab290b..2646b7e26e 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultNetconfOperation.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultNetconfOperation.java @@ -1,14 +1,14 @@ -/* - * 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.impl.mapping.operations; - -import org.opendaylight.controller.netconf.impl.NetconfServerSession; - -public interface DefaultNetconfOperation { - void setNetconfSession(NetconfServerSession s); -} +/* + * 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.impl.mapping.operations; + +import org.opendaylight.controller.netconf.impl.NetconfServerSession; + +public interface DefaultNetconfOperation { + void setNetconfSession(NetconfServerSession s); +} diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStartExi.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStartExi.java index cccb1a3ac3..6de185ac1c 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStartExi.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStartExi.java @@ -1,71 +1,71 @@ -/* - * 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.impl.mapping.operations; - -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorSeverity; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorTag; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorType; -import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; -import org.opendaylight.controller.netconf.api.NetconfMessage; -import org.opendaylight.controller.netconf.impl.NetconfServerSession; -import org.opendaylight.controller.netconf.mapping.api.NetconfOperationChainedExecution; -import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation; -import org.opendaylight.controller.netconf.util.xml.XmlElement; -import org.opendaylight.controller.netconf.util.xml.XmlUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -public class DefaultStartExi extends AbstractSingletonNetconfOperation implements DefaultNetconfOperation { - public static final String START_EXI = "start-exi"; - - private static final Logger logger = LoggerFactory.getLogger(DefaultStartExi.class); - private NetconfServerSession netconfSession; - - public DefaultStartExi(String netconfSessionIdForReporting) { - super(netconfSessionIdForReporting); - } - - @Override - public Document handle(Document message, - NetconfOperationChainedExecution subsequentOperation) throws NetconfDocumentedException { - logger.debug("Received start-exi message {} ", XmlUtil.toString(message)); - - try { - netconfSession.startExiCommunication(new NetconfMessage(message)); - } catch (IllegalArgumentException e) { - throw new NetconfDocumentedException("Failed to parse EXI parameters", ErrorType.protocol, - ErrorTag.operation_failed, ErrorSeverity.error); - } - - return super.handle(message, subsequentOperation); - } - - @Override - protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException { - Element getSchemaResult = document.createElementNS( XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0, XmlNetconfConstants.OK); - logger.trace("{} operation successful", START_EXI); - return getSchemaResult; - } - - @Override - protected String getOperationName() { - return START_EXI; - } - - @Override - protected String getOperationNamespace() { - return XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0; - } - - @Override - public void setNetconfSession(NetconfServerSession s) { - netconfSession = s; - } -} +/* + * 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.impl.mapping.operations; + +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorSeverity; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorTag; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorType; +import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.api.NetconfMessage; +import org.opendaylight.controller.netconf.impl.NetconfServerSession; +import org.opendaylight.controller.netconf.mapping.api.NetconfOperationChainedExecution; +import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation; +import org.opendaylight.controller.netconf.util.xml.XmlElement; +import org.opendaylight.controller.netconf.util.xml.XmlUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +public class DefaultStartExi extends AbstractSingletonNetconfOperation implements DefaultNetconfOperation { + public static final String START_EXI = "start-exi"; + + private static final Logger logger = LoggerFactory.getLogger(DefaultStartExi.class); + private NetconfServerSession netconfSession; + + public DefaultStartExi(String netconfSessionIdForReporting) { + super(netconfSessionIdForReporting); + } + + @Override + public Document handle(Document message, + NetconfOperationChainedExecution subsequentOperation) throws NetconfDocumentedException { + logger.debug("Received start-exi message {} ", XmlUtil.toString(message)); + + try { + netconfSession.startExiCommunication(new NetconfMessage(message)); + } catch (IllegalArgumentException e) { + throw new NetconfDocumentedException("Failed to parse EXI parameters", ErrorType.protocol, + ErrorTag.operation_failed, ErrorSeverity.error); + } + + return super.handle(message, subsequentOperation); + } + + @Override + protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException { + Element getSchemaResult = document.createElementNS( XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0, XmlNetconfConstants.OK); + logger.trace("{} operation successful", START_EXI); + return getSchemaResult; + } + + @Override + protected String getOperationName() { + return START_EXI; + } + + @Override + protected String getOperationNamespace() { + return XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0; + } + + @Override + public void setNetconfSession(NetconfServerSession s) { + netconfSession = s; + } +} diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExi.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExi.java index 2a24ae32fa..233638d5b0 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExi.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExi.java @@ -1,58 +1,58 @@ -/* - * 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.impl.mapping.operations; - -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; -import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; -import org.opendaylight.controller.netconf.impl.NetconfServerSession; -import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation; -import org.opendaylight.controller.netconf.util.xml.XmlElement; -import org.opendaylight.controller.netconf.util.xml.XmlUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class DefaultStopExi extends AbstractSingletonNetconfOperation implements DefaultNetconfOperation { - - public static final String STOP_EXI = "stop-exi"; - private NetconfServerSession netconfSession; - - private static final Logger logger = LoggerFactory - .getLogger(DefaultStartExi.class); - - public DefaultStopExi(String netconfSessionIdForReporting) { - super(netconfSessionIdForReporting); - } - - @Override - protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException { - logger.debug("Received stop-exi message {} ", XmlUtil.toString(operationElement)); - - netconfSession.stopExiCommunication(); - - Element getSchemaResult = document.createElementNS( XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0, XmlNetconfConstants.OK); - logger.trace("{} operation successful", STOP_EXI); - return getSchemaResult; - } - - @Override - protected String getOperationName() { - return STOP_EXI; - } - - @Override - protected String getOperationNamespace() { - return XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0; - } - - @Override - public void setNetconfSession(NetconfServerSession s) { - this.netconfSession = s; - } -} +/* + * 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.impl.mapping.operations; + +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; +import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.impl.NetconfServerSession; +import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation; +import org.opendaylight.controller.netconf.util.xml.XmlElement; +import org.opendaylight.controller.netconf.util.xml.XmlUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class DefaultStopExi extends AbstractSingletonNetconfOperation implements DefaultNetconfOperation { + + public static final String STOP_EXI = "stop-exi"; + private NetconfServerSession netconfSession; + + private static final Logger logger = LoggerFactory + .getLogger(DefaultStartExi.class); + + public DefaultStopExi(String netconfSessionIdForReporting) { + super(netconfSessionIdForReporting); + } + + @Override + protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException { + logger.debug("Received stop-exi message {} ", XmlUtil.toString(operationElement)); + + netconfSession.stopExiCommunication(); + + Element getSchemaResult = document.createElementNS( XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0, XmlNetconfConstants.OK); + logger.trace("{} operation successful", STOP_EXI); + return getSchemaResult; + } + + @Override + protected String getOperationName() { + return STOP_EXI; + } + + @Override + protected String getOperationNamespace() { + return XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0; + } + + @Override + public void setNetconfSession(NetconfServerSession s) { + this.netconfSession = s; + } +} diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/AdditionalHeaderParserTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/AdditionalHeaderParserTest.java index c2dcd67921..444d4fe4ab 100644 --- a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/AdditionalHeaderParserTest.java +++ b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/AdditionalHeaderParserTest.java @@ -7,8 +7,7 @@ */ package org.opendaylight.controller.netconf.impl; -import junit.framework.Assert; - +import static org.junit.Assert.assertEquals; import org.junit.Test; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; @@ -18,18 +17,18 @@ public class AdditionalHeaderParserTest { public void testParsing() throws Exception { String s = "[netconf;10.12.0.102:48528;ssh;;;;;;]"; NetconfHelloMessageAdditionalHeader header = NetconfHelloMessageAdditionalHeader.fromString(s); - Assert.assertEquals("netconf", header.getUserName()); - Assert.assertEquals("10.12.0.102", header.getAddress()); - Assert.assertEquals("ssh", header.getTransport()); + assertEquals("netconf", header.getUserName()); + assertEquals("10.12.0.102", header.getAddress()); + assertEquals("ssh", header.getTransport()); } @Test public void testParsing2() throws Exception { String s = "[tomas;10.0.0.0/10000;tcp;1000;1000;;/home/tomas;;]"; NetconfHelloMessageAdditionalHeader header = NetconfHelloMessageAdditionalHeader.fromString(s); - Assert.assertEquals("tomas", header.getUserName()); - Assert.assertEquals("10.0.0.0", header.getAddress()); - Assert.assertEquals("tcp", header.getTransport()); + assertEquals("tomas", header.getUserName()); + assertEquals("10.0.0.0", header.getAddress()); + assertEquals("tcp", header.getTransport()); } @Test(expected = IllegalArgumentException.class) diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/ExiEncodeDecodeTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/ExiEncodeDecodeTest.java index 58c6566d91..b54b218033 100644 --- a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/ExiEncodeDecodeTest.java +++ b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/ExiEncodeDecodeTest.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.netconf.impl; -import static junit.framework.Assert.assertNotNull; +import static org.junit.Assert.assertNotNull; import org.junit.Test; import org.opendaylight.controller.netconf.api.NetconfMessage; diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/NetconfMonitoringServiceImplTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/NetconfMonitoringServiceImplTest.java index 1b078be9a4..2125035799 100644 --- a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/NetconfMonitoringServiceImplTest.java +++ b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/NetconfMonitoringServiceImplTest.java @@ -12,7 +12,6 @@ import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import io.netty.channel.Channel; -import java.util.List; import java.util.Set; import org.junit.Before; import org.junit.Test; @@ -56,7 +55,6 @@ public class NetconfMonitoringServiceImplTest { public void testSessions() throws Exception { doReturn("sessToStr").when(managementSession).toString(); service.onSessionUp(managementSession); - List list = Lists.newArrayList(managementSession); } @Test(expected = RuntimeException.class) @@ -75,17 +73,17 @@ public class NetconfMonitoringServiceImplTest { public void testGetSchemas3() throws Exception { doReturn("").when(managementSession).toString(); Capability cap = mock(Capability.class); - Set caps = Sets.newHashSet(cap); - Set services = Sets.newHashSet(operationService); + Set caps = Sets.newHashSet(cap); + Set services = Sets.newHashSet(operationService); doReturn(snapshot).when(operationProvider).openSnapshot(anyString()); doReturn(services).when(snapshot).getServices(); doReturn(caps).when(operationService).getCapabilities(); - Optional opt = mock(Optional.class); + Optional opt = mock(Optional.class); doReturn(opt).when(cap).getCapabilitySchema(); doReturn(true).when(opt).isPresent(); doReturn(opt).when(cap).getModuleNamespace(); doReturn("namespace").when(opt).get(); - Optional optRev = Optional.of("rev"); + Optional optRev = Optional.of("rev"); doReturn(optRev).when(cap).getRevision(); doReturn(Optional.of("modName")).when(cap).getModuleName(); doReturn(Optional.of(Lists.newArrayList("loc"))).when(cap).getLocation(); diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSessionTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSessionTest.java index ae3d65646f..d6b0201ab8 100644 --- a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSessionTest.java +++ b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSessionTest.java @@ -13,8 +13,6 @@ import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; -import org.w3c.dom.Element; - import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultGetSchemaTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultGetSchemaTest.java index b655e90f2b..4218176f1d 100644 --- a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultGetSchemaTest.java +++ b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultGetSchemaTest.java @@ -8,8 +8,13 @@ package org.opendaylight.controller.netconf.impl.mapping.operations; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; import com.google.common.base.Optional; -import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -18,13 +23,6 @@ import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; -import static org.junit.Assert.assertNotNull; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; - public class DefaultGetSchemaTest { private CapabilityProvider cap; diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivatorTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivatorTest.java index b59ea884c5..9470e6d09c 100644 --- a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivatorTest.java +++ b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivatorTest.java @@ -9,18 +9,23 @@ package org.opendaylight.controller.netconf.impl.osgi; import java.util.Arrays; -import java.util.Collection; import java.util.Dictionary; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringService; -import org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider; -import org.osgi.framework.*; +import org.osgi.framework.BundleContext; +import org.osgi.framework.Filter; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; import static org.mockito.Matchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; public class NetconfImplActivatorTest { diff --git a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfConfigPersisterITTest.java b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfConfigPersisterITTest.java index d8eb841a79..cc170358dd 100644 --- a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfConfigPersisterITTest.java +++ b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfConfigPersisterITTest.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.netconf.it; -import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doAnswer; diff --git a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITSecureTest.java b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITSecureTest.java index f96f557619..6e265a44a5 100644 --- a/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITSecureTest.java +++ b/opendaylight/netconf/netconf-it/src/test/java/org/opendaylight/controller/netconf/it/NetconfITSecureTest.java @@ -55,6 +55,7 @@ import org.opendaylight.controller.netconf.client.conf.NetconfClientConfiguratio import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler; import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.LoginPassword; import org.opendaylight.controller.netconf.ssh.SshProxyServer; +import org.opendaylight.controller.netconf.ssh.SshProxyServerConfigurationBuilder; import org.opendaylight.controller.netconf.util.messages.NetconfMessageUtil; import org.opendaylight.controller.netconf.util.osgi.NetconfConfigUtil; import org.opendaylight.controller.netconf.util.xml.XmlUtil; @@ -88,12 +89,19 @@ public class NetconfITSecureTest extends AbstractNetconfConfigTest { clientGroup = new NioEventLoopGroup(); minaTimerEx = Executors.newScheduledThreadPool(1); sshProxyServer = new SshProxyServer(minaTimerEx, clientGroup, nioExec); - sshProxyServer.bind(TLS_ADDRESS, NetconfConfigUtil.getNetconfLocalAddress(), new PasswordAuthenticator() { + sshProxyServer.bind( + new SshProxyServerConfigurationBuilder() + .setBindingAddress(TLS_ADDRESS) + .setLocalAddress(NetconfConfigUtil.getNetconfLocalAddress()) + .setAuthenticator(new PasswordAuthenticator() { @Override public boolean authenticate(final String username, final String password, final ServerSession session) { return true; } - }, new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())); + }) + .setKeyPairProvider(new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())) + .setIdleTimeout(Integer.MAX_VALUE) + .createSshProxyServerConfiguration()); } @After diff --git a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/GetTest.java b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/GetTest.java index 5fceac06dd..5a744fda14 100644 --- a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/GetTest.java +++ b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/GetTest.java @@ -8,13 +8,12 @@ package org.opendaylight.controller.netconf.monitoring; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertTrue; -import static junit.framework.TestCase.fail; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; - import java.util.Collections; import org.hamcrest.CoreMatchers; import org.junit.Before; diff --git a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringActivatorTest.java b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringActivatorTest.java index 40493569d6..b5b9f3c060 100644 --- a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringActivatorTest.java +++ b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringActivatorTest.java @@ -8,6 +8,12 @@ package org.opendaylight.controller.netconf.monitoring.osgi; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import java.util.Arrays; import org.junit.Before; import org.junit.Test; @@ -18,10 +24,6 @@ import org.osgi.framework.Filter; import org.osgi.framework.ServiceListener; import org.osgi.framework.ServiceReference; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.*; - public class NetconfMonitoringActivatorTest { @Mock @@ -34,7 +36,7 @@ public class NetconfMonitoringActivatorTest { MockitoAnnotations.initMocks(this); doReturn(filter).when(context).createFilter(anyString()); doNothing().when(context).addServiceListener(any(ServiceListener.class), anyString()); - ServiceReference[] refs = new ServiceReference[2]; + ServiceReference[] refs = new ServiceReference[2]; doReturn(Arrays.asList(refs)).when(context).getServiceReferences(any(Class.class), anyString()); doReturn(refs).when(context).getServiceReferences(anyString(), anyString()); } diff --git a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringServiceTrackerTest.java b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringServiceTrackerTest.java index 2a53a6ce45..b992b0e44f 100644 --- a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringServiceTrackerTest.java +++ b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringServiceTrackerTest.java @@ -8,6 +8,12 @@ package org.opendaylight.controller.netconf.monitoring.osgi; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import java.util.Hashtable; import org.junit.Before; import org.junit.Test; @@ -20,18 +26,14 @@ import org.osgi.framework.Filter; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyCollection; -import static org.mockito.Mockito.*; - public class NetconfMonitoringServiceTrackerTest { @Mock - private ServiceReference reference; + private ServiceReference reference; @Mock private BundleContext context; @Mock - private ServiceRegistration serviceRegistration; + private ServiceRegistration serviceRegistration; @Mock private Filter filter; @Mock diff --git a/opendaylight/netconf/netconf-netty-util/pom.xml b/opendaylight/netconf/netconf-netty-util/pom.xml index a9c1e8336d..f1f7375f0a 100644 --- a/opendaylight/netconf/netconf-netty-util/pom.xml +++ b/opendaylight/netconf/netconf-netty-util/pom.xml @@ -104,7 +104,6 @@ org.apache.maven.plugins maven-jar-plugin - 2.4 diff --git a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/exi/EXIParameters.java b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/exi/EXIParameters.java index 531ba3ccb7..ccd7dead9f 100644 --- a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/exi/EXIParameters.java +++ b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/handler/exi/EXIParameters.java @@ -48,18 +48,18 @@ public final class EXIParameters { final String alignmentTextContent = alignmentElement.getTextContent().trim(); switch (alignmentTextContent) { - case EXI_PARAMETER_BIT_PACKED: - options.setAlignmentType(AlignmentType.bitPacked); - break; - case EXI_PARAMETER_BYTE_ALIGNED: - options.setAlignmentType(AlignmentType.byteAligned); - break; - case EXI_PARAMETER_COMPRESSED: - options.setAlignmentType(AlignmentType.compress); - break; - case EXI_PARAMETER_PRE_COMPRESSION: - options.setAlignmentType(AlignmentType.preCompress); - break; + case EXI_PARAMETER_BIT_PACKED: + options.setAlignmentType(AlignmentType.bitPacked); + break; + case EXI_PARAMETER_BYTE_ALIGNED: + options.setAlignmentType(AlignmentType.byteAligned); + break; + case EXI_PARAMETER_COMPRESSED: + options.setAlignmentType(AlignmentType.compress); + break; + case EXI_PARAMETER_PRE_COMPRESSION: + options.setAlignmentType(AlignmentType.preCompress); + break; } } diff --git a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ChunkedFramingMechanismEncoderTest.java b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ChunkedFramingMechanismEncoderTest.java index 93475129d2..556bece43f 100644 --- a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ChunkedFramingMechanismEncoderTest.java +++ b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ChunkedFramingMechanismEncoderTest.java @@ -11,7 +11,6 @@ package org.opendaylight.controller.netconf.nettyutil.handler; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.doAnswer; - import com.google.common.collect.Lists; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -50,7 +49,7 @@ public class ChunkedFramingMechanismEncoderTest { @Test public void testEncode() throws Exception { final List chunks = Lists.newArrayList(); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override public Object answer(final InvocationOnMock invocation) throws Throwable { chunks.add((ByteBuf) invocation.getArguments()[0]); diff --git a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXIHandlersTest.java b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXIHandlersTest.java index 4a8db176fe..8bc0fb8e82 100644 --- a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXIHandlersTest.java +++ b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/NetconfEXIHandlersTest.java @@ -8,15 +8,14 @@ package org.opendaylight.controller.netconf.nettyutil.handler; -import static org.junit.Assert.*; - +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; import com.google.common.collect.Lists; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.custommonkey.xmlunit.XMLUnit; diff --git a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/AsyncSshHandlerTest.java b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/AsyncSshHandlerTest.java index 212eabb290..b4c9e1e950 100644 --- a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/AsyncSshHandlerTest.java +++ b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/handler/ssh/client/AsyncSshHandlerTest.java @@ -22,10 +22,17 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; - +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.channel.Channel; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPromise; import java.io.IOException; import java.net.SocketAddress; - import org.apache.sshd.ClientChannel; import org.apache.sshd.ClientSession; import org.apache.sshd.SshClient; @@ -52,17 +59,6 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.SettableFuture; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import io.netty.channel.Channel; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelPromise; - public class AsyncSshHandlerTest { @Mock @@ -126,7 +122,7 @@ public class AsyncSshHandlerTest { private > ListenableFuture> stubAddListener(final T future) { final SettableFuture> listenerSettableFuture = SettableFuture.create(); - doAnswer(new Answer() { + doAnswer(new Answer() { @Override public Object answer(final InvocationOnMock invocation) throws Throwable { listenerSettableFuture.set((SshFutureListener) invocation.getArguments()[0]); diff --git a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServer.java b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServer.java index 0b85cf2653..8728f0c671 100644 --- a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServer.java +++ b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServer.java @@ -10,16 +10,15 @@ package org.opendaylight.controller.netconf.ssh; import com.google.common.collect.Lists; import io.netty.channel.EventLoopGroup; -import io.netty.channel.local.LocalAddress; import java.io.IOException; -import java.net.InetSocketAddress; import java.nio.channels.AsynchronousChannelGroup; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.apache.sshd.SshServer; import org.apache.sshd.common.FactoryManager; -import org.apache.sshd.common.KeyPairProvider; import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.RuntimeSshException; import org.apache.sshd.common.io.IoAcceptor; @@ -32,7 +31,7 @@ import org.apache.sshd.common.io.nio2.Nio2Connector; import org.apache.sshd.common.io.nio2.Nio2ServiceFactoryFactory; import org.apache.sshd.common.util.CloseableUtils; import org.apache.sshd.server.Command; -import org.apache.sshd.server.PasswordAuthenticator; +import org.apache.sshd.server.ServerFactoryManager; /** * Proxy SSH server that just delegates decrypted content to a delegate server within same VM. @@ -52,22 +51,30 @@ public class SshProxyServer implements AutoCloseable { this.sshServer = SshServer.setUpDefaultServer(); } - public void bind(final InetSocketAddress bindingAddress, final LocalAddress localAddress, final PasswordAuthenticator authenticator, final KeyPairProvider keyPairProvider) throws IOException { - sshServer.setHost(bindingAddress.getHostString()); - sshServer.setPort(bindingAddress.getPort()); + public void bind(final SshProxyServerConfiguration sshProxyServerConfiguration) throws IOException { + sshServer.setHost(sshProxyServerConfiguration.getBindingAddress().getHostString()); + sshServer.setPort(sshProxyServerConfiguration.getBindingAddress().getPort()); - sshServer.setPasswordAuthenticator(authenticator); - sshServer.setKeyPairProvider(keyPairProvider); + sshServer.setPasswordAuthenticator(sshProxyServerConfiguration.getAuthenticator()); + sshServer.setKeyPairProvider(sshProxyServerConfiguration.getKeyPairProvider()); sshServer.setIoServiceFactoryFactory(nioServiceWithPoolFactoryFactory); sshServer.setScheduledExecutorService(minaTimerExecutor); + sshServer.setProperties(getProperties(sshProxyServerConfiguration)); final RemoteNetconfCommand.NetconfCommandFactory netconfCommandFactory = - new RemoteNetconfCommand.NetconfCommandFactory(clientGroup, localAddress); + new RemoteNetconfCommand.NetconfCommandFactory(clientGroup, sshProxyServerConfiguration.getLocalAddress()); sshServer.setSubsystemFactories(Lists.>newArrayList(netconfCommandFactory)); sshServer.start(); } + private static Map getProperties(final SshProxyServerConfiguration sshProxyServerConfiguration) { + return new HashMap() + {{ + put(ServerFactoryManager.IDLE_TIMEOUT, String.valueOf(sshProxyServerConfiguration.getIdleTimeout())); + }}; + } + @Override public void close() { try { diff --git a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServerConfiguration.java b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServerConfiguration.java new file mode 100644 index 0000000000..aee3c7b725 --- /dev/null +++ b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServerConfiguration.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014 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.ssh; + +import com.google.common.base.Preconditions; +import io.netty.channel.local.LocalAddress; +import java.net.InetSocketAddress; +import org.apache.sshd.common.KeyPairProvider; +import org.apache.sshd.server.PasswordAuthenticator; + +public final class SshProxyServerConfiguration { + private final InetSocketAddress bindingAddress; + private final LocalAddress localAddress; + private final PasswordAuthenticator authenticator; + private final KeyPairProvider keyPairProvider; + private final int idleTimeout; + + SshProxyServerConfiguration(final InetSocketAddress bindingAddress, final LocalAddress localAddress, final PasswordAuthenticator authenticator, final KeyPairProvider keyPairProvider, final int idleTimeout) { + this.bindingAddress = Preconditions.checkNotNull(bindingAddress); + this.localAddress = Preconditions.checkNotNull(localAddress); + this.authenticator = Preconditions.checkNotNull(authenticator); + this.keyPairProvider = Preconditions.checkNotNull(keyPairProvider); + // Idle timeout cannot be disabled in the sshd by using =< 0 value + Preconditions.checkArgument(idleTimeout > 0, "Idle timeout has to be > 0"); + this.idleTimeout = idleTimeout; + } + + public InetSocketAddress getBindingAddress() { + return bindingAddress; + } + + public LocalAddress getLocalAddress() { + return localAddress; + } + + public PasswordAuthenticator getAuthenticator() { + return authenticator; + } + + public KeyPairProvider getKeyPairProvider() { + return keyPairProvider; + } + + public int getIdleTimeout() { + return idleTimeout; + } + + +} diff --git a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServerConfigurationBuilder.java b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServerConfigurationBuilder.java new file mode 100644 index 0000000000..fb8632b99e --- /dev/null +++ b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/SshProxyServerConfigurationBuilder.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014 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.ssh; + +import io.netty.channel.local.LocalAddress; +import java.net.InetSocketAddress; +import org.apache.sshd.common.KeyPairProvider; +import org.apache.sshd.server.PasswordAuthenticator; + +public final class SshProxyServerConfigurationBuilder { + private InetSocketAddress bindingAddress; + private LocalAddress localAddress; + private PasswordAuthenticator authenticator; + private KeyPairProvider keyPairProvider; + private int idleTimeout; + + public SshProxyServerConfigurationBuilder setBindingAddress(final InetSocketAddress bindingAddress) { + this.bindingAddress = bindingAddress; + return this; + } + + public SshProxyServerConfigurationBuilder setLocalAddress(final LocalAddress localAddress) { + this.localAddress = localAddress; + return this; + } + + public SshProxyServerConfigurationBuilder setAuthenticator(final PasswordAuthenticator authenticator) { + this.authenticator = authenticator; + return this; + } + + public SshProxyServerConfigurationBuilder setKeyPairProvider(final KeyPairProvider keyPairProvider) { + this.keyPairProvider = keyPairProvider; + return this; + } + + public SshProxyServerConfigurationBuilder setIdleTimeout(final int idleTimeout) { + this.idleTimeout = idleTimeout; + return this; + } + + public SshProxyServerConfiguration createSshProxyServerConfiguration() { + return new SshProxyServerConfiguration(bindingAddress, localAddress, authenticator, keyPairProvider, idleTimeout); + } + + public SshProxyServerConfigurationBuilder create () { + return new SshProxyServerConfigurationBuilder(); + } +} \ No newline at end of file diff --git a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/osgi/NetconfSSHActivator.java b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/osgi/NetconfSSHActivator.java index b871d19db8..5fc04eee83 100644 --- a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/osgi/NetconfSSHActivator.java +++ b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/osgi/NetconfSSHActivator.java @@ -19,10 +19,12 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; import org.apache.commons.io.FilenameUtils; import org.apache.sshd.common.util.ThreadUtils; import org.apache.sshd.server.keyprovider.PEMGeneratorHostKeyProvider; import org.opendaylight.controller.netconf.ssh.SshProxyServer; +import org.opendaylight.controller.netconf.ssh.SshProxyServerConfigurationBuilder; import org.opendaylight.controller.netconf.util.osgi.NetconfConfigUtil; import org.opendaylight.controller.netconf.util.osgi.NetconfConfigUtil.InfixProp; import org.osgi.framework.BundleActivator; @@ -36,6 +38,7 @@ public class NetconfSSHActivator implements BundleActivator { private static final java.lang.String ALGORITHM = "RSA"; private static final int KEY_SIZE = 4096; public static final int POOL_SIZE = 8; + private static final int DEFAULT_IDLE_TIMEOUT = (int) TimeUnit.MINUTES.toMillis(20); private ScheduledExecutorService minaTimerExecutor; private NioEventLoopGroup clientGroup; @@ -100,7 +103,14 @@ public class NetconfSSHActivator implements BundleActivator { NetconfConfigUtil.getPrivateKeyKey()); final SshProxyServer sshProxyServer = new SshProxyServer(minaTimerExecutor, clientGroup, nioExecutor); - sshProxyServer.bind(sshSocketAddress, localAddress, authProviderTracker, new PEMGeneratorHostKeyProvider(path, ALGORITHM, KEY_SIZE)); + sshProxyServer.bind( + new SshProxyServerConfigurationBuilder() + .setBindingAddress(sshSocketAddress) + .setLocalAddress(localAddress) + .setAuthenticator(authProviderTracker) + .setKeyPairProvider(new PEMGeneratorHostKeyProvider(path, ALGORITHM, KEY_SIZE)) + .setIdleTimeout(DEFAULT_IDLE_TIMEOUT) + .createSshProxyServerConfiguration()); return sshProxyServer; } diff --git a/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/netty/SSHTest.java b/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/netty/SSHTest.java index 62ce587237..34b236b461 100644 --- a/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/netty/SSHTest.java +++ b/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/netty/SSHTest.java @@ -35,6 +35,7 @@ import org.opendaylight.controller.netconf.netty.EchoClientHandler.State; import org.opendaylight.controller.netconf.nettyutil.handler.ssh.authentication.LoginPassword; import org.opendaylight.controller.netconf.nettyutil.handler.ssh.client.AsyncSshHandler; import org.opendaylight.controller.netconf.ssh.SshProxyServer; +import org.opendaylight.controller.netconf.ssh.SshProxyServerConfigurationBuilder; import org.opendaylight.controller.netconf.util.osgi.NetconfConfigUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,13 +71,13 @@ public class SSHTest { final InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 10831); final SshProxyServer sshProxyServer = new SshProxyServer(minaTimerEx, nettyGroup, nioExec); - sshProxyServer.bind(addr, NetconfConfigUtil.getNetconfLocalAddress(), - new PasswordAuthenticator() { + sshProxyServer.bind( + new SshProxyServerConfigurationBuilder().setBindingAddress(addr).setLocalAddress(NetconfConfigUtil.getNetconfLocalAddress()).setAuthenticator(new PasswordAuthenticator() { @Override public boolean authenticate(final String username, final String password, final ServerSession session) { return true; } - }, new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())); + }).setKeyPairProvider(new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())).setIdleTimeout(Integer.MAX_VALUE).createSshProxyServerConfiguration()); final EchoClientHandler echoClientHandler = connectClient(addr); diff --git a/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/ssh/authentication/SSHServerTest.java b/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/ssh/authentication/SSHServerTest.java index 9cd0c9bcea..38aa2e71ac 100644 --- a/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/ssh/authentication/SSHServerTest.java +++ b/opendaylight/netconf/netconf-ssh/src/test/java/org/opendaylight/controller/netconf/ssh/authentication/SSHServerTest.java @@ -32,6 +32,7 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.controller.netconf.ssh.SshProxyServer; +import org.opendaylight.controller.netconf.ssh.SshProxyServerConfigurationBuilder; import org.opendaylight.controller.netconf.util.osgi.NetconfConfigUtil; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceListener; @@ -67,13 +68,13 @@ public class SSHServerTest { final InetSocketAddress addr = InetSocketAddress.createUnresolved(HOST, PORT); server = new SshProxyServer(minaTimerEx, clientGroup, nioExec); - server.bind(addr, NetconfConfigUtil.getNetconfLocalAddress(), - new PasswordAuthenticator() { + server.bind( + new SshProxyServerConfigurationBuilder().setBindingAddress(addr).setLocalAddress(NetconfConfigUtil.getNetconfLocalAddress()).setAuthenticator(new PasswordAuthenticator() { @Override public boolean authenticate(final String username, final String password, final ServerSession session) { return true; } - }, new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())); + }).setKeyPairProvider(new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())).setIdleTimeout(Integer.MAX_VALUE).createSshProxyServerConfiguration()); logger.info("SSH server started on " + PORT); } diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java index e8ba769da5..de68c31d29 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java @@ -68,6 +68,8 @@ import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService; import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceSnapshot; import org.opendaylight.controller.netconf.monitoring.osgi.NetconfMonitoringOperationService; import org.opendaylight.controller.netconf.ssh.SshProxyServer; +import org.opendaylight.controller.netconf.ssh.SshProxyServerConfiguration; +import org.opendaylight.controller.netconf.ssh.SshProxyServerConfigurationBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation; @@ -193,15 +195,7 @@ public class NetconfDeviceSimulator implements Closeable { server = dispatcher.createLocalServer(tcpLocalAddress); try { final SshProxyServer sshServer = new SshProxyServer(minaTimerExecutor, nettyThreadgroup, nioExecutor); - sshServer.bind(bindingAddress, tcpLocalAddress, - new PasswordAuthenticator() { - @Override - public boolean authenticate(final String username, final String password, final ServerSession session) { - // All connections are accepted - return true; - } - }, keyPairProvider); - + sshServer.bind(getSshConfiguration(bindingAddress, tcpLocalAddress)); sshWrappers.add(sshServer); } catch (final Exception e) { LOG.warn("Cannot start simulated device on {}, skipping", address, e); @@ -255,6 +249,21 @@ public class NetconfDeviceSimulator implements Closeable { return openDevices; } + private SshProxyServerConfiguration getSshConfiguration(final InetSocketAddress bindingAddress, final LocalAddress tcpLocalAddress) throws IOException { + return new SshProxyServerConfigurationBuilder() + .setBindingAddress(bindingAddress) + .setLocalAddress(tcpLocalAddress) + .setAuthenticator(new PasswordAuthenticator() { + @Override + public boolean authenticate(final String username, final String password, final ServerSession session) { + return true; + } + }) + .setKeyPairProvider(new PEMGeneratorHostKeyProvider(Files.createTempFile("prefix", "suffix").toAbsolutePath().toString())) + .setIdleTimeout(Integer.MAX_VALUE) + .createSshProxyServerConfiguration(); + } + private PEMGeneratorHostKeyProvider getPemGeneratorHostKeyProvider() { try { final Path tempFile = Files.createTempFile("tempKeyNetconfTest", "suffix"); diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/mapping/AbstractNetconfOperation.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/mapping/AbstractNetconfOperation.java index b6f5854aa3..b7ebc51b70 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/mapping/AbstractNetconfOperation.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/mapping/AbstractNetconfOperation.java @@ -8,8 +8,8 @@ package org.opendaylight.controller.netconf.util.mapping; +import com.google.common.base.Optional; import java.util.Map; - import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.mapping.api.HandlingPriority; @@ -17,20 +17,15 @@ import org.opendaylight.controller.netconf.mapping.api.NetconfOperation; import org.opendaylight.controller.netconf.mapping.api.NetconfOperationChainedExecution; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; -import com.google.common.base.Optional; - public abstract class AbstractNetconfOperation implements NetconfOperation { private final String netconfSessionIdForReporting; - private static final Logger logger = LoggerFactory.getLogger(AbstractNetconfOperation.class); - protected AbstractNetconfOperation(String netconfSessionIdForReporting) { + protected AbstractNetconfOperation(final String netconfSessionIdForReporting) { this.netconfSessionIdForReporting = netconfSessionIdForReporting; } @@ -39,7 +34,7 @@ public abstract class AbstractNetconfOperation implements NetconfOperation { } @Override - public HandlingPriority canHandle(Document message) throws NetconfDocumentedException { + public HandlingPriority canHandle(final Document message) throws NetconfDocumentedException { OperationNameAndNamespace operationNameAndNamespace = null; operationNameAndNamespace = new OperationNameAndNamespace(message); return canHandle(operationNameAndNamespace.getOperationName(), operationNameAndNamespace.getNamespace()); @@ -49,7 +44,7 @@ public abstract class AbstractNetconfOperation implements NetconfOperation { private final String operationName, namespace; private final XmlElement operationElement; - public OperationNameAndNamespace(Document message) throws NetconfDocumentedException { + public OperationNameAndNamespace(final Document message) throws NetconfDocumentedException { XmlElement requestElement = null; requestElement = getRequestElementWithCheck(message); operationElement = requestElement.getOnlyChildElement(); @@ -70,12 +65,12 @@ public abstract class AbstractNetconfOperation implements NetconfOperation { } } - protected static XmlElement getRequestElementWithCheck(Document message) throws NetconfDocumentedException { + protected static XmlElement getRequestElementWithCheck(final Document message) throws NetconfDocumentedException { return XmlElement.fromDomElementWithExpected(message.getDocumentElement(), XmlNetconfConstants.RPC_KEY, XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0); } - protected HandlingPriority canHandle(String operationName, String operationNamespace) { + protected HandlingPriority canHandle(final String operationName, final String operationNamespace) { return operationName.equals(getOperationName()) && operationNamespace.equals(getOperationNamespace()) ? getHandlingPriority() : HandlingPriority.CANNOT_HANDLE; @@ -92,8 +87,8 @@ public abstract class AbstractNetconfOperation implements NetconfOperation { protected abstract String getOperationName(); @Override - public Document handle(Document requestMessage, - NetconfOperationChainedExecution subsequentOperation) throws NetconfDocumentedException { + public Document handle(final Document requestMessage, + final NetconfOperationChainedExecution subsequentOperation) throws NetconfDocumentedException { XmlElement requestElement = getRequestElementWithCheck(requestMessage); diff --git a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/NetconfUtilTest.java b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/NetconfUtilTest.java index b8605d8230..47d0d4c7cc 100644 --- a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/NetconfUtilTest.java +++ b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/NetconfUtilTest.java @@ -7,14 +7,13 @@ */ package org.opendaylight.controller.netconf.util; +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; import org.junit.Test; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; - public class NetconfUtilTest { @Test diff --git a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageTest.java b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageTest.java index c39ac8eb10..5a9d07f6b1 100644 --- a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageTest.java +++ b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfHelloMessageTest.java @@ -9,32 +9,32 @@ package org.opendaylight.controller.netconf.util.messages; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import com.google.common.base.Optional; import java.util.Set; import org.junit.Before; import org.junit.Test; import org.mockito.internal.util.collections.Sets; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; public class NetconfHelloMessageTest { Set caps; @Before - public void setUp() throws Exception { + public void setUp() { caps = Sets.newSet("cap1"); } @Test - public void testConstructor() throws Exception { + public void testConstructor() throws NetconfDocumentedException { NetconfHelloMessageAdditionalHeader additionalHeader = new NetconfHelloMessageAdditionalHeader("name","host","1","transp","id"); NetconfHelloMessage message = NetconfHelloMessage.createClientHello(caps, Optional.of(additionalHeader)); - assertTrue(message.isHelloMessage(message)); + assertTrue(NetconfHelloMessage.isHelloMessage(message)); assertEquals(Optional.of(additionalHeader), message.getAdditionalHeader()); NetconfHelloMessage serverMessage = NetconfHelloMessage.createServerHello(caps, 100L); - assertTrue(serverMessage.isHelloMessage(serverMessage)); + assertTrue(NetconfHelloMessage.isHelloMessage(serverMessage)); } } diff --git a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageHeaderTest.java b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageHeaderTest.java index cca89aed59..d5ff3380d2 100644 --- a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageHeaderTest.java +++ b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageHeaderTest.java @@ -8,13 +8,12 @@ package org.opendaylight.controller.netconf.util.messages; -import com.google.common.base.Charsets; -import java.util.Arrays; -import org.junit.Test; - import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import com.google.common.base.Charsets; +import org.junit.Test; +@Deprecated public class NetconfMessageHeaderTest { @Test public void testGet() throws Exception { diff --git a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtilTest.java b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtilTest.java index 741d0d2452..ebee41145a 100644 --- a/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtilTest.java +++ b/opendaylight/netconf/netconf-util/src/test/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtilTest.java @@ -8,20 +8,18 @@ package org.opendaylight.controller.netconf.util.osgi; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import com.google.common.base.Optional; import io.netty.channel.local.LocalAddress; import java.net.InetSocketAddress; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.netconf.util.NetconfUtil; import org.osgi.framework.BundleContext; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - public class NetconfConfigUtilTest { private BundleContext bundleContext; diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/startExi.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/startExi.xml index e7a483e405..5e94ac6110 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/startExi.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/startExi.xml @@ -1,9 +1,9 @@ - - -pre-compression - - - - - - \ No newline at end of file + + +pre-compression + + + + + + diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/stopExi.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/stopExi.xml index 6c0524a4fc..170c753993 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/stopExi.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/stopExi.xml @@ -1,3 +1,3 @@ - - - \ No newline at end of file + + + diff --git a/opendaylight/netconf/pom.xml b/opendaylight/netconf/pom.xml index b392c5b672..0a3a77cc60 100644 --- a/opendaylight/netconf/pom.xml +++ b/opendaylight/netconf/pom.xml @@ -112,7 +112,6 @@ org.apache.maven.plugins maven-checkstyle-plugin - 2.12 false false diff --git a/opendaylight/northbound/networkconfiguration/neutron/enunciate.xml b/opendaylight/networkconfiguration/neutron/northbound/enunciate.xml similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/enunciate.xml rename to opendaylight/networkconfiguration/neutron/northbound/enunciate.xml diff --git a/opendaylight/northbound/networkconfiguration/neutron/pom.xml b/opendaylight/networkconfiguration/neutron/northbound/pom.xml similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/pom.xml rename to opendaylight/networkconfiguration/neutron/northbound/pom.xml diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/INeutronRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/INeutronRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/INeutronRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/INeutronRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyNorthbound.java similarity index 99% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyNorthbound.java index bfe2c922bd..cc45d6de5d 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyNorthbound.java +++ b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyNorthbound.java @@ -79,7 +79,7 @@ public class NeutronFirewallPolicyNorthbound { @QueryParam("name") String queryFirewallPolicyName, @QueryParam("description") String querySecurityPolicyDescription, @QueryParam("shared") String querySecurityPolicyIsShared, - @QueryParam("firewall_rules") List querySecurityPolicyFirewallRules, + @QueryParam("firewall_rules") List querySecurityPolicyFirewallRules, @QueryParam("audited") Boolean querySecurityPolicyIsAudited, // pagination @QueryParam("limit") String limit, diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallPolicyRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRuleRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRuleRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRuleRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRuleRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRulesNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRulesNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRulesNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFirewallRulesNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPsNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPsNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPsNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronFloatingIPsNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerHealthMonitorRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerListenerRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMemberRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMemberRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMemberRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMemberRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMembersNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMembersNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMembersNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolMembersNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworkRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworkRequest.java similarity index 93% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworkRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworkRequest.java index a4c113c2c1..2001fb758a 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworkRequest.java +++ b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworkRequest.java @@ -9,17 +9,15 @@ package org.opendaylight.controller.networkconfig.neutron.northbound; import java.util.List; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; - import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork; @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) -public class NeutronNetworkRequest implements INeutronRequest { +public class NeutronNetworkRequest implements INeutronRequest { // See OpenStack Network API v2.0 Reference for description of // annotated attributes @@ -50,14 +48,17 @@ public class NeutronNetworkRequest implements INeutronRequest { singletonNetwork = net; } + @Override public NeutronNetwork getSingleton() { return singletonNetwork; } + @Override public boolean isSingleton() { return (singletonNetwork != null); } + @Override public List getBulk() { return bulkRequest; } diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNorthboundRSApplication.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNorthboundRSApplication.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNorthboundRSApplication.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNorthboundRSApplication.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPageLink.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPageLink.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPageLink.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPageLink.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortRequest.java similarity index 93% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortRequest.java index 12b58aa2ab..3bfac8a4fd 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortRequest.java +++ b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortRequest.java @@ -9,17 +9,15 @@ package org.opendaylight.controller.networkconfig.neutron.northbound; import java.util.List; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; - import org.opendaylight.controller.networkconfig.neutron.NeutronPort; @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) -public class NeutronPortRequest implements INeutronRequest { +public class NeutronPortRequest implements INeutronRequest { // See OpenStack Network API v2.0 Reference for description of // annotated attributes @@ -50,14 +48,17 @@ public class NeutronPortRequest implements INeutronRequest { singletonPort = port; } + @Override public NeutronPort getSingleton() { return singletonPort; } + @Override public boolean isSingleton() { return (singletonPort != null); } + @Override public List getBulk() { return bulkRequest; } diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortsNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortsNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortsNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronPortsNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRouterRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRouterRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRouterRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRouterRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRoutersNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRoutersNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRoutersNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronRoutersNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupsNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupsNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupsNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityGroupsNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRuleRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRuleRequest.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRuleRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRuleRequest.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRulesNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRulesNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRulesNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSecurityRulesNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetRequest.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetRequest.java similarity index 93% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetRequest.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetRequest.java index 57a724c1cc..4c230c525b 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetRequest.java +++ b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetRequest.java @@ -9,18 +9,15 @@ package org.opendaylight.controller.networkconfig.neutron.northbound; import java.util.List; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; - import org.opendaylight.controller.networkconfig.neutron.NeutronSubnet; @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) - -public class NeutronSubnetRequest implements INeutronRequest { +public class NeutronSubnetRequest implements INeutronRequest { // See OpenStack Network API v2.0 Reference for description of // annotated attributes @@ -54,14 +51,17 @@ public class NeutronSubnetRequest implements INeutronRequest { links = null; } + @Override public NeutronSubnet getSingleton() { return singletonSubnet; } + @Override public List getBulk() { return bulkRequest; } + @Override public boolean isSingleton() { return (singletonSubnet != null); } diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/PaginatedRequestFactory.java b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/PaginatedRequestFactory.java similarity index 63% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/PaginatedRequestFactory.java rename to opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/PaginatedRequestFactory.java index 8f05e76e18..7f6c296d98 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/PaginatedRequestFactory.java +++ b/opendaylight/networkconfiguration/neutron/northbound/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/PaginatedRequestFactory.java @@ -10,6 +10,11 @@ package org.opendaylight.controller.networkconfig.neutron.northbound; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import javax.ws.rs.core.UriInfo; import org.opendaylight.controller.networkconfig.neutron.INeutronObject; import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork; import org.opendaylight.controller.networkconfig.neutron.NeutronPort; @@ -17,13 +22,13 @@ import org.opendaylight.controller.networkconfig.neutron.NeutronSubnet; import org.opendaylight.controller.northbound.commons.exception.BadRequestException; import org.opendaylight.controller.northbound.commons.exception.ResourceNotFoundException; -import javax.ws.rs.core.UriInfo; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - public class PaginatedRequestFactory { + private static final Comparator NEUTRON_OBJECT_COMPARATOR = new Comparator() { + @Override + public int compare(INeutronObject o1, INeutronObject o2) { + return o1.getID().compareTo(o2.getID()); + } + }; public static class PaginationResults { List collection; @@ -35,77 +40,75 @@ public class PaginatedRequestFactory { } } - public static INeutronRequest createRequest(Integer limit, String marker, + private static final class MarkerObject implements INeutronObject { + private final String id; + + MarkerObject(String id) { + this.id = id; + } + + @Override + public String getID() { + return id; + } + + @Override + public void setID(String id) { + throw new UnsupportedOperationException("Marker has constant ID"); + } + } + + /* + * SuppressWarnings is needed because the compiler does not understand that we + * are actually safe here. + * + * FIXME: the only caller performs a cast back, so this is not actually necessary. + */ + @SuppressWarnings("unchecked") + public static INeutronRequest createRequest(Integer limit, String marker, Boolean pageReverse, UriInfo uriInfo, List collection, Class clazz) { - PaginationResults results = _paginate(limit, marker, pageReverse, uriInfo, collection); + PaginationResults results = _paginate(limit, marker, pageReverse, uriInfo, collection); if (clazz.equals(NeutronNetwork.class)){ - return new NeutronNetworkRequest(results.collection, results.links); + return (INeutronRequest) new NeutronNetworkRequest((List) results.collection, results.links); } if (clazz.equals(NeutronSubnet.class)){ - return new NeutronSubnetRequest(results.collection, results.links); + return (INeutronRequest) new NeutronSubnetRequest((List) results.collection, results.links); } if (clazz.equals(NeutronPort.class)){ - return new NeutronPortRequest(results.collection, results.links); + return (INeutronRequest) new NeutronPortRequest((List) results.collection, results.links); } return null; } - private static PaginationResults _paginate(Integer limit, String marker, Boolean pageReverse, UriInfo uriInfo, List collection) { + private static PaginationResults _paginate(Integer limit, String marker, Boolean pageReverse, UriInfo uriInfo, List collection) { List links = new ArrayList<>(); - Integer startPos = null; + final int startPos; String startMarker; String endMarker; Boolean firstPage = false; Boolean lastPage = false; - Comparator neutronObjectComparator = new Comparator() { - @Override - public int compare(INeutronObject o1, INeutronObject o2) { - return o1.getID().compareTo(o2.getID()); - } - }; - - Collections.sort(collection, neutronObjectComparator); - - if (marker == null) { - startPos = 0; - } - - else { - - class MarkerObject implements INeutronObject { - private String id; - - public String getID() { - return id; - } + Collections.sort(collection, NEUTRON_OBJECT_COMPARATOR); - public void setID(String id) { - this.id = id; - } + if (marker != null) { + int offset = Collections.binarySearch(collection, new MarkerObject(marker), NEUTRON_OBJECT_COMPARATOR); + if (offset < 0) { + throw new ResourceNotFoundException("UUID for marker: " + marker + " could not be found"); } - INeutronObject markerObject = new MarkerObject(); - - markerObject.setID(marker); - - startPos = Collections.binarySearch(collection, markerObject, neutronObjectComparator); - - if (!pageReverse){ - startPos = startPos + 1; + if (!pageReverse) { + startPos = offset + 1; } else { - startPos = startPos - limit; + startPos = offset - limit; } - } - - if (startPos == null) { - throw new ResourceNotFoundException("UUID for marker:" + marker + " could not be found"); + else { + startPos = 0; } if (startPos == 0){ @@ -149,6 +152,6 @@ public class PaginatedRequestFactory { links.add(previous); } - return new PaginationResults(collection, links); + return new PaginationResults(collection, links); } } diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/resources/WEB-INF/web.xml b/opendaylight/networkconfiguration/neutron/northbound/src/main/resources/WEB-INF/web.xml similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/resources/WEB-INF/web.xml rename to opendaylight/networkconfiguration/neutron/northbound/src/main/resources/WEB-INF/web.xml diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/resources/org/opendaylight/controller/networkconfig/neutron/northbound/jaxb.properties b/opendaylight/networkconfiguration/neutron/northbound/src/main/resources/org/opendaylight/controller/networkconfig/neutron/northbound/jaxb.properties similarity index 100% rename from opendaylight/northbound/networkconfiguration/neutron/src/main/resources/org/opendaylight/controller/networkconfig/neutron/northbound/jaxb.properties rename to opendaylight/networkconfiguration/neutron/northbound/src/main/resources/org/opendaylight/controller/networkconfig/neutron/northbound/jaxb.properties diff --git a/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java b/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java index 1f10b39513..b0d9bf46d4 100644 --- a/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java +++ b/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java @@ -9,6 +9,8 @@ package org.opendaylight.controller.networkconfig.neutron; import java.io.Serializable; +import java.net.InetAddress; +import java.net.Inet6Address; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -255,16 +257,45 @@ public class NeutronSubnet extends ConfigurationObject implements Serializable, * a new subnet) */ public boolean isValidCIDR() { - try { - SubnetUtils util = new SubnetUtils(cidr); - SubnetInfo info = util.getInfo(); - if (!info.getNetworkAddress().equals(info.getAddress())) { + // fix for Bug 2290 - need to wrap the existing test as + // IPv4 because SubnetUtils doesn't support IPv6 + if (ipVersion == 4) { + try { + SubnetUtils util = new SubnetUtils(cidr); + SubnetInfo info = util.getInfo(); + if (!info.getNetworkAddress().equals(info.getAddress())) { + return false; + } + } catch (Exception e) { return false; } - } catch (Exception e) { - return false; + return true; } - return true; + if (ipVersion == 6) { + // fix for Bug2290 - this is custom code because no classes + // with ODL-friendly licenses have been found + // extract address (in front of /) and length (after /) + String[] parts = cidr.split("/"); + if (parts.length != 2) { + return false; + } + try { + int length = Integer.parseInt(parts[1]); + //TODO?: limit check on length + // convert to byte array + byte[] addrBytes = ((Inet6Address) InetAddress.getByName(parts[0])).getAddress(); + int i; + for (i=length; i<128; i++) { // offset is to ensure proper comparison + if (((((int) addrBytes[i/8]) & 0x000000FF) & (1 << (7-(i%8)))) != 0) { + return(false); + } + } + return(true); + } catch (Exception e) { + return(false); + } + } + return false; } /* test to see if the gateway IP specified overlaps with specified diff --git a/pom.xml b/pom.xml index 0340277bfc..d1e5494b44 100644 --- a/pom.xml +++ b/pom.xml @@ -15,38 +15,6 @@ opendaylight/distribution/opendaylight - opendaylight/forwarding/staticrouting - opendaylight/clustering/services - opendaylight/clustering/services_implementation - opendaylight/clustering/stub - opendaylight/clustering/test - opendaylight/configuration/api - opendaylight/configuration/implementation - opendaylight/routing/dijkstra_implementation - opendaylight/arphandler - opendaylight/forwardingrulesmanager/api - opendaylight/forwardingrulesmanager/implementation - opendaylight/hosttracker/api - opendaylight/hosttracker/implementation - opendaylight/hosttracker/shell - opendaylight/hosttracker_new/api - opendaylight/hosttracker_new/implementation - opendaylight/containermanager/api - opendaylight/containermanager/implementation - opendaylight/containermanager/shell - opendaylight/appauth - opendaylight/switchmanager/api - opendaylight/switchmanager/implementation - opendaylight/statisticsmanager/api - opendaylight/statisticsmanager/implementation - opendaylight/topologymanager/implementation - opendaylight/topologymanager/shell - opendaylight/usermanager/api - opendaylight/usermanager/implementation - opendaylight/connectionmanager/api - opendaylight/connectionmanager/implementation - opendaylight/security - opendaylight/karaf-tomcat-security @@ -56,16 +24,6 @@ third-party/commons/thirdparty - - opendaylight/sal/api - opendaylight/sal/implementation - - - opendaylight/sal/connection/api - opendaylight/sal/connection/implementation - opendaylight/sal/networkconfiguration/api - opendaylight/sal/networkconfiguration/implementation - opendaylight/md-sal @@ -73,54 +31,17 @@ opendaylight/netconf - - opendaylight/web/root - opendaylight/web/flows - opendaylight/web/devices - opendaylight/web/troubleshoot - opendaylight/web/topology - opendaylight/web/osgi-brandfragment + + opendaylight/adsal opendaylight/networkconfiguration/neutron opendaylight/networkconfiguration/neutron/implementation - opendaylight/northbound/networkconfiguration/neutron - - - opendaylight/northbound/commons - opendaylight/northbound/bundlescanner/api - opendaylight/northbound/bundlescanner/implementation - opendaylight/northbound/topology - opendaylight/northbound/staticrouting - opendaylight/northbound/statistics - opendaylight/northbound/flowprogrammer - opendaylight/northbound/hosttracker - opendaylight/northbound/subnets - opendaylight/northbound/switchmanager - opendaylight/northbound/containermanager - opendaylight/northbound/networkconfiguration/bridgedomain - opendaylight/northbound/httpservice-bridge - opendaylight/northbound/jolokia - opendaylight/northbound/connectionmanager - opendaylight/northbound/usermanager - opendaylight/northbound/controllermanager - - - opendaylight/logging/bridge - - - opendaylight/protocol_plugins/openflow - opendaylight/protocol_plugins/stub - - - opendaylight/samples/simpleforwarding - opendaylight/samples/loadbalancer - opendaylight/samples/northbound/loadbalancer + opendaylight/networkconfiguration/neutron/northbound opendaylight/commons/concepts opendaylight/commons/protocol-framework - opendaylight/commons/httpclient opendaylight/commons/checkstyle opendaylight/commons/opendaylight opendaylight/commons/parent @@ -129,7 +50,6 @@ opendaylight/commons/liblldp - opendaylight/dummy-console opendaylight/karaf-branding opendaylight/distribution/opendaylight-karaf-empty opendaylight/distribution/opendaylight-karaf @@ -153,29 +73,8 @@ false - opendaylight/clustering/integrationtest - opendaylight/configuration/integrationtest - opendaylight/forwardingrulesmanager/integrationtest - opendaylight/hosttracker/integrationtest - opendaylight/switchmanager/integrationtest - opendaylight/topologymanager/integrationtest - - opendaylight/northbound/integrationtest - opendaylight/statisticsmanager/integrationtest - opendaylight/commons/integrationtest - opendaylight/containermanager/it.implementation opendaylight/distribution/sanitytest/ - - docs - - false - - - opendaylight/northbound/java-client - opendaylight/northbound/swagger-ui - -