Merge "Bug 2131 - NPE when starting controller"
authorTony Tkacik <ttkacik@cisco.com>
Thu, 16 Oct 2014 13:02:09 +0000 (13:02 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 16 Oct 2014 13:02:09 +0000 (13:02 +0000)
351 files changed:
features/adsal-compatibility/pom.xml
features/adsal/pom.xml
features/akka/pom.xml
features/akka/src/main/resources/features.xml
features/base/pom.xml
features/base/src/main/resources/features.xml
features/config-netty/pom.xml
features/config-persister/pom.xml
features/config/pom.xml
features/controller/pom.xml
features/extras/pom.xml
features/flow/pom.xml
features/mdsal/pom.xml
features/netconf-connector/pom.xml
features/netconf-connector/src/main/resources/features.xml
features/netconf/pom.xml
features/nsf/pom.xml
features/pom.xml
features/protocol-framework/pom.xml
features/restconf/pom.xml
features/restconf/src/main/resources/features.xml
itests/base-features-it/pom.xml
itests/pom.xml
opendaylight/appauth/pom.xml
opendaylight/archetypes/odl-model-project/pom.xml
opendaylight/archetypes/odl-model-project/src/main/resources/archetype-resources/pom.xml
opendaylight/archetypes/opendaylight-configfile-archetype/pom.xml
opendaylight/archetypes/opendaylight-karaf-distro-archetype/pom.xml
opendaylight/archetypes/opendaylight-karaf-distro-archetype/src/main/resources/archetype-resources/pom.xml
opendaylight/archetypes/opendaylight-karaf-features/pom.xml
opendaylight/archetypes/opendaylight-karaf-features/src/main/resources/archetype-resources/pom.xml
opendaylight/archetypes/opendaylight-karaf-features/src/main/resources/archetype-resources/src/main/resources/features.xml
opendaylight/archetypes/pom.xml
opendaylight/arphandler/pom.xml
opendaylight/clustering/integrationtest/pom.xml
opendaylight/clustering/services/pom.xml
opendaylight/clustering/services_implementation/pom.xml
opendaylight/clustering/stub/pom.xml
opendaylight/clustering/test/pom.xml
opendaylight/commons/checkstyle/pom.xml
opendaylight/commons/concepts/pom.xml
opendaylight/commons/filter-valve/pom.xml
opendaylight/commons/httpclient/pom.xml
opendaylight/commons/integrationtest/pom.xml
opendaylight/commons/liblldp/pom.xml
opendaylight/commons/logback_settings/pom.xml
opendaylight/commons/opendaylight/pom.xml
opendaylight/commons/parent/pom.xml
opendaylight/commons/protocol-framework/pom.xml
opendaylight/config/config-api/pom.xml
opendaylight/config/config-api/src/main/yang/config.yang
opendaylight/config/config-manager/pom.xml
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/jmx/InternalJMXRegistrator.java
opendaylight/config/config-module-archetype/pom.xml
opendaylight/config/config-netty-config/pom.xml
opendaylight/config/config-persister-api/pom.xml
opendaylight/config/config-persister-directory-xml-adapter/pom.xml
opendaylight/config/config-persister-feature-adapter/pom.xml
opendaylight/config/config-persister-file-xml-adapter/pom.xml
opendaylight/config/config-plugin-parent/pom.xml
opendaylight/config/config-util/pom.xml
opendaylight/config/logback-config-loader/pom.xml
opendaylight/config/logback-config/pom.xml
opendaylight/config/netconf-config-dispatcher/pom.xml
opendaylight/config/netty-config-api/pom.xml
opendaylight/config/netty-event-executor-config/pom.xml
opendaylight/config/netty-event-executor-config/src/test/java/org/opendaylight/controller/config/yang/netty/eventexecutor/ImmediateEventExecutorModuleTest.java
opendaylight/config/netty-threadgroup-config/pom.xml
opendaylight/config/netty-timer-config/pom.xml
opendaylight/config/pom.xml
opendaylight/config/shutdown-api/pom.xml
opendaylight/config/shutdown-impl/pom.xml
opendaylight/config/threadpool-config-api/pom.xml
opendaylight/config/threadpool-config-impl/pom.xml
opendaylight/config/yang-jmx-generator-it/pom.xml
opendaylight/config/yang-jmx-generator-plugin/pom.xml
opendaylight/config/yang-jmx-generator/pom.xml
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryNameConflictTest.java
opendaylight/config/yang-jmx-generator/src/test/resources/config-jmx-it-impl.yang
opendaylight/config/yang-jmx-generator/src/test/resources/duplicates/config-test-duplicate-attribute-in-list.yang
opendaylight/config/yang-jmx-generator/src/test/resources/duplicates/config-test-duplicate-attribute.yang
opendaylight/config/yang-jmx-generator/src/test/resources/test-config-files.yang
opendaylight/config/yang-jmx-generator/src/test/resources/test-config-files1.yang
opendaylight/config/yang-test-plugin/pom.xml
opendaylight/config/yang-test/pom.xml
opendaylight/configuration/api/pom.xml
opendaylight/configuration/implementation/pom.xml
opendaylight/configuration/integrationtest/pom.xml
opendaylight/connectionmanager/api/pom.xml
opendaylight/connectionmanager/implementation/pom.xml
opendaylight/containermanager/api/pom.xml
opendaylight/containermanager/implementation/pom.xml
opendaylight/containermanager/it.implementation/pom.xml
opendaylight/containermanager/shell/pom.xml
opendaylight/distribution/opendaylight-karaf-empty/pom.xml
opendaylight/distribution/opendaylight-karaf-resources/pom.xml
opendaylight/distribution/opendaylight-karaf/pom.xml
opendaylight/distribution/opendaylight/pom.xml
opendaylight/distribution/p2site/pom.xml
opendaylight/distribution/sanitytest/pom.xml
opendaylight/dummy-console/pom.xml
opendaylight/forwarding/staticrouting/pom.xml
opendaylight/forwardingrulesmanager/api/pom.xml
opendaylight/forwardingrulesmanager/implementation/pom.xml
opendaylight/forwardingrulesmanager/integrationtest/pom.xml
opendaylight/hosttracker/api/pom.xml
opendaylight/hosttracker/implementation/pom.xml
opendaylight/hosttracker/integrationtest/pom.xml
opendaylight/hosttracker/shell/pom.xml
opendaylight/hosttracker_new/api/pom.xml
opendaylight/hosttracker_new/implementation/pom.xml
opendaylight/karaf-branding/pom.xml
opendaylight/karaf-tomcat-security/pom.xml
opendaylight/logging/bridge/pom.xml
opendaylight/md-sal/benchmark-data-store/pom.xml
opendaylight/md-sal/compatibility/pom.xml
opendaylight/md-sal/compatibility/sal-compatibility/pom.xml
opendaylight/md-sal/forwardingrules-manager/pom.xml
opendaylight/md-sal/inventory-manager/pom.xml
opendaylight/md-sal/md-sal-config/pom.xml
opendaylight/md-sal/model/model-flow-base/pom.xml
opendaylight/md-sal/model/model-flow-service/pom.xml
opendaylight/md-sal/model/model-flow-statistics/pom.xml
opendaylight/md-sal/model/model-inventory/pom.xml
opendaylight/md-sal/model/model-topology/pom.xml
opendaylight/md-sal/model/pom.xml
opendaylight/md-sal/pom.xml
opendaylight/md-sal/sal-akka-raft/pom.xml
opendaylight/md-sal/sal-binding-api/pom.xml
opendaylight/md-sal/sal-binding-broker/pom.xml
opendaylight/md-sal/sal-binding-config/pom.xml
opendaylight/md-sal/sal-binding-dom-it/pom.xml
opendaylight/md-sal/sal-binding-it/pom.xml
opendaylight/md-sal/sal-binding-util/pom.xml
opendaylight/md-sal/sal-clustering-commons/pom.xml
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActorWithMetering.java [new file with mode: 0644]
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/NormalizedNodeToNodeCodec.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/PathUtils.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializationContext.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeSerializer.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/NormalizedNodeType.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentSerializer.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentType.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameDeSerializationContext.java [new file with mode: 0644]
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameDeSerializationContextImpl.java [new file with mode: 0644]
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameSerializationContext.java [new file with mode: 0644]
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameSerializationContextImpl.java [new file with mode: 0644]
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializer.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtils.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/protobuff/messages/common/NormalizedNodeMessages.java
opendaylight/md-sal/sal-clustering-commons/src/main/resources/Common.proto
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/NormalizedNodeToNodeCodecTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/PathUtilsTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentSerializerTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/ValueSerializerTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/InstanceIdentifierUtilsTest.java
opendaylight/md-sal/sal-clustering-config/pom.xml
opendaylight/md-sal/sal-common-api/pom.xml
opendaylight/md-sal/sal-common-impl/pom.xml
opendaylight/md-sal/sal-common-util/pom.xml
opendaylight/md-sal/sal-common/pom.xml
opendaylight/md-sal/sal-connector-api/pom.xml
opendaylight/md-sal/sal-distributed-datastore/pom.xml
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinator.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxy.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/exceptions/NotInitializedException.java [new file with mode: 0644]
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/ShardIdentifier.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorInitialized.java [new file with mode: 0644]
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ActorNotInitialized.java [new file with mode: 0644]
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataChanged.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/MergeData.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadDataReply.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/RegisterChangeListener.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/WriteData.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/AbstractModification.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/DeleteModification.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MergeModification.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/WriteModification.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ActorContext.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/InstanceIdentifierUtils.java [deleted file]
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardManagerTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxyTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/identifiers/ShardIdentifierTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/MergeDataTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataTest.java [new file with mode: 0644]
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MergeModificationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModificationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/WriteModificationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockActorContext.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SampleModelsTest.java
opendaylight/md-sal/sal-dom-api/pom.xml
opendaylight/md-sal/sal-dom-broker/pom.xml
opendaylight/md-sal/sal-dom-spi/pom.xml
opendaylight/md-sal/sal-dom-xsql-config/pom.xml
opendaylight/md-sal/sal-dom-xsql/pom.xml
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/odl/xsql/JDBCDriver.java [moved from opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCDriver.java with 84% similarity]
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrint.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLBluePrintNode.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLColumn.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCCommand.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCConnection.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCProxy.java [new file with mode: 0644]
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCServer.java
opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCStatement.java
opendaylight/md-sal/sal-dom-xsql/src/test/java/org/opendaylight/xsql/test/XSQLTest.java [new file with mode: 0644]
opendaylight/md-sal/sal-dom-xsql/src/test/resources/BluePrintCache.dat [new file with mode: 0644]
opendaylight/md-sal/sal-inmemory-datastore/pom.xml
opendaylight/md-sal/sal-karaf-xsql/pom.xml
opendaylight/md-sal/sal-netconf-connector/pom.xml
opendaylight/md-sal/sal-remote/pom.xml
opendaylight/md-sal/sal-remoterpc-connector/pom.xml
opendaylight/md-sal/sal-rest-connector-config/pom.xml
opendaylight/md-sal/sal-rest-connector/pom.xml
opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/JsonToCompositeNodeReader.java
opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/json/to/cnsn/test/JsonToCnSnTest.java
opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-cnsn/invalid-uri-character-in-value.json [new file with mode: 0644]
opendaylight/md-sal/sal-rest-docgen/pom.xml
opendaylight/md-sal/sal-rest-docgen/src/main/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGenerator.java
opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGeneratorTest.java [new file with mode: 0644]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/opflex.yang [new file with mode: 0644]
opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/toaster.yang
opendaylight/md-sal/sal-restconf-broker/pom.xml
opendaylight/md-sal/sal-test-model/pom.xml
opendaylight/md-sal/samples/clustering-test-app/configuration/pom.xml
opendaylight/md-sal/samples/clustering-test-app/model/pom.xml
opendaylight/md-sal/samples/clustering-test-app/pom.xml
opendaylight/md-sal/samples/clustering-test-app/provider/pom.xml
opendaylight/md-sal/samples/l2switch/implementation/pom.xml
opendaylight/md-sal/samples/l2switch/model/pom.xml
opendaylight/md-sal/samples/l2switch/pom.xml
opendaylight/md-sal/samples/pom.xml
opendaylight/md-sal/samples/toaster-config/pom.xml
opendaylight/md-sal/samples/toaster-consumer/pom.xml
opendaylight/md-sal/samples/toaster-it/pom.xml
opendaylight/md-sal/samples/toaster-provider/pom.xml
opendaylight/md-sal/samples/toaster/pom.xml
opendaylight/md-sal/statistics-manager/pom.xml
opendaylight/md-sal/topology-lldp-discovery/pom.xml
opendaylight/md-sal/topology-manager/pom.xml
opendaylight/netconf/config-netconf-connector/pom.xml
opendaylight/netconf/config-persister-impl/pom.xml
opendaylight/netconf/ietf-netconf-monitoring-extension/pom.xml
opendaylight/netconf/ietf-netconf-monitoring/pom.xml
opendaylight/netconf/netconf-api/pom.xml
opendaylight/netconf/netconf-auth/pom.xml
opendaylight/netconf/netconf-cli/pom.xml
opendaylight/netconf/netconf-client/pom.xml
opendaylight/netconf/netconf-config/pom.xml
opendaylight/netconf/netconf-connector-config/pom.xml
opendaylight/netconf/netconf-impl/pom.xml
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/NetconfMonitoringServiceImplTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSessionTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCommitTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultGetSchemaTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExiTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfImplActivatorTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfOperationServiceFactoryTrackerTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/util/DeserializerExceptionHandlerTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-it/pom.xml
opendaylight/netconf/netconf-mapping-api/pom.xml
opendaylight/netconf/netconf-monitoring/pom.xml
opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringActivatorTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringOperationServiceTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringServiceTrackerTest.java [new file with mode: 0644]
opendaylight/netconf/netconf-netty-util/pom.xml
opendaylight/netconf/netconf-ssh/pom.xml
opendaylight/netconf/netconf-tcp/pom.xml
opendaylight/netconf/netconf-testtool/pom.xml
opendaylight/netconf/netconf-usermanager/pom.xml
opendaylight/netconf/netconf-util/pom.xml
opendaylight/netconf/pom.xml
opendaylight/networkconfiguration/neutron/implementation/pom.xml
opendaylight/networkconfiguration/neutron/pom.xml
opendaylight/northbound/archetype-app-northbound/pom.xml
opendaylight/northbound/archetype-app-northbound/src/main/resources/archetype-resources/pom.xml
opendaylight/northbound/bundlescanner/api/pom.xml
opendaylight/northbound/bundlescanner/implementation/pom.xml
opendaylight/northbound/commons/pom.xml
opendaylight/northbound/connectionmanager/pom.xml
opendaylight/northbound/containermanager/pom.xml
opendaylight/northbound/controllermanager/pom.xml
opendaylight/northbound/flowprogrammer/pom.xml
opendaylight/northbound/hosttracker/pom.xml
opendaylight/northbound/httpservice-bridge/pom.xml
opendaylight/northbound/integrationtest/pom.xml
opendaylight/northbound/java-client/pom.xml
opendaylight/northbound/jolokia/pom.xml
opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml
opendaylight/northbound/networkconfiguration/neutron/pom.xml
opendaylight/northbound/staticrouting/pom.xml
opendaylight/northbound/statistics/pom.xml
opendaylight/northbound/subnets/pom.xml
opendaylight/northbound/swagger-ui/pom.xml
opendaylight/northbound/switchmanager/pom.xml
opendaylight/northbound/topology/pom.xml
opendaylight/northbound/usermanager/pom.xml
opendaylight/northboundtest/unit_test_suite/pom.xml
opendaylight/protocol_plugins/openflow/pom.xml
opendaylight/protocol_plugins/stub/pom.xml
opendaylight/routing/dijkstra_implementation/pom.xml
opendaylight/sal/api/pom.xml
opendaylight/sal/connection/api/pom.xml
opendaylight/sal/connection/implementation/pom.xml
opendaylight/sal/implementation/pom.xml
opendaylight/sal/networkconfiguration/api/pom.xml
opendaylight/sal/networkconfiguration/implementation/pom.xml
opendaylight/samples/clustersession/pom.xml
opendaylight/samples/loadbalancer/pom.xml
opendaylight/samples/northbound/loadbalancer/pom.xml
opendaylight/samples/simpleforwarding/pom.xml
opendaylight/security/pom.xml
opendaylight/statisticsmanager/api/pom.xml
opendaylight/statisticsmanager/implementation/pom.xml
opendaylight/statisticsmanager/integrationtest/pom.xml
opendaylight/switchmanager/api/pom.xml
opendaylight/switchmanager/implementation/pom.xml
opendaylight/switchmanager/integrationtest/pom.xml
opendaylight/topologymanager/implementation/pom.xml
opendaylight/topologymanager/integrationtest/pom.xml
opendaylight/topologymanager/shell/pom.xml
opendaylight/usermanager/api/pom.xml
opendaylight/usermanager/implementation/pom.xml
opendaylight/web/brandfragment/pom.xml
opendaylight/web/devices/pom.xml
opendaylight/web/flows/pom.xml
opendaylight/web/osgi-brandfragment/pom.xml
opendaylight/web/root/pom.xml
opendaylight/web/topology/pom.xml
opendaylight/web/troubleshoot/pom.xml
pom.xml
third-party/commons/thirdparty/pom.xml
third-party/ganymed/pom.xml
third-party/jersey-servlet/pom.xml
third-party/net.sf.jung2/pom.xml
third-party/openflowj/pom.xml
third-party/org.apache.catalina.filters.CorsFilter/pom.xml

index 44b9b0900c0b01538c78592b8746c6de4d4a1e77..7b8af644450d396aef145cda4efab903657f2011 100644 (file)
    <parent>\r
      <groupId>org.opendaylight.controller</groupId>\r
      <artifactId>commons.opendaylight</artifactId>\r
-     <version>1.4.2-SNAPSHOT</version>\r
+     <version>1.5.0-SNAPSHOT</version>\r
      <relativePath>../../opendaylight/commons/opendaylight</relativePath>\r
    </parent>\r
    <artifactId>features-adsal-compatibility</artifactId>\r
    <packaging>jar</packaging>\r
    <properties>\r
       <features.file>features.xml</features.file>\r
-      <feature.test.version>0.6.2-SNAPSHOT</feature.test.version>\r
+      <feature.test.version>0.7.0-SNAPSHOT</feature.test.version>\r
    </properties>\r
    <dependencies>\r
     <!--\r
         <dependency>\r
           <groupId>org.opendaylight.yangtools</groupId>\r
           <artifactId>features-yangtools</artifactId>\r
-          <version>0.6.2-SNAPSHOT</version>\r
+          <version>0.7.0-SNAPSHOT</version>\r
           <classifier>features</classifier>\r
           <type>xml</type>\r
         </dependency>\r
         <dependency>\r
           <groupId>org.opendaylight.controller</groupId>\r
           <artifactId>features-mdsal</artifactId>\r
-          <version>1.1-SNAPSHOT</version>\r
+          <version>1.2.0-SNAPSHOT</version>\r
           <classifier>features</classifier>\r
           <type>xml</type>\r
         </dependency>\r
         <dependency>\r
           <groupId>org.opendaylight.openflowplugin</groupId>\r
           <artifactId>features-openflowplugin</artifactId>\r
-          <version>0.0.3-SNAPSHOT</version>\r
+          <version>0.1.0-SNAPSHOT</version>\r
           <classifier>features</classifier>\r
           <type>xml</type>\r
         </dependency>\r
index 0ce976e2ef3beed38a8019cfc63074d04989a674..429edf828fe5b613c1722af9c632409368d74315 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>features-adsal</artifactId>
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>opendaylight-karaf-empty</artifactId>
-      <version>1.4.2-SNAPSHOT</version>
+      <version>1.5.0-SNAPSHOT</version>
       <type>zip</type>
     </dependency>
     <!-- Bundle dependencies -->
index f1f3017c208704f05c7133e13342d2fbb53bfac3..f804505c64d2c57ef8d95fc0091a2b0b74285ed6 100644 (file)
@@ -10,7 +10,7 @@
    <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
    </parent>
    <artifactId>features-akka</artifactId>
       <features.file>features.xml</features.file>
       <!-- Optional TODO: Move these properties to your parent pom and possibly
             DependencyManagement section of your parent pom -->
-      <branding.version>1.0.0-SNAPSHOT</branding.version>
-      <karaf.resources.version>1.4.2-SNAPSHOT</karaf.resources.version>
+      <branding.version>1.1.0-SNAPSHOT</branding.version>
+      <karaf.resources.version>1.5.0-SNAPSHOT</karaf.resources.version>
       <karaf.version>3.0.1</karaf.version>
-      <feature.test.version>0.6.2-SNAPSHOT</feature.test.version>
-      <karaf.empty.version>1.4.2-SNAPSHOT</karaf.empty.version>
+      <feature.test.version>0.7.0-SNAPSHOT</feature.test.version>
+      <karaf.empty.version>1.5.0-SNAPSHOT</karaf.empty.version>
       <surefire.version>2.16</surefire.version>
    </properties>
    <dependencies>
         <dependency>
           <groupId>org.opendaylight.yangtools</groupId>
           <artifactId>features-yangtools</artifactId>
-          <version>0.6.2-SNAPSHOT</version>
+          <version>0.7.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>features-mdsal</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.openflowplugin</groupId>
           <artifactId>features-openflowplugin</artifactId>
-          <version>0.0.3-SNAPSHOT</version>
+          <version>0.1.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
index 182ff766e6f8a05066e95157480f0e8994013642..8a3b4a2e25d038884c2d34e23b2bacbe94aec489 100644 (file)
@@ -18,9 +18,9 @@
     Necessary TODO: Add repo entries for the repositories of features you refer to
         in this feature file but do not define here.
         Examples:
-            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.6.2-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.controller/features-mdsal/1.1-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.0.3-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.7.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.controller/features-mdsal/1.2.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.1.0-SNAPSHOT/xml/features</repository>
     -->
     <feature name='odl-akka-all' version='${project.version}' description='OpenDaylight :: Akka :: All'>
         <!--
@@ -53,7 +53,7 @@
 
         * Basic MD-SAL Provider
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider '>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <feature version='${project.version}'>odl-controller-model</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             ... whatever other bundles you need
 
         * Basic MD-SAL Model feature
         <feature name='odl-controller-model' version='${project.version}' description='OpenDaylight :: controller :: Model'>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-binding</feature>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-models</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-binding</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-models</feature>
             <bundle>mvn:org.opendaylight.controller/controller-model/${project.version}</bundle>
             ... whatever other bundles you need
         </feature>
 
         * Config Subsystem example - the config file is your config subsystem configuration
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             <configfile finalname="etc/opendaylight/karaf/80-controller.xml">mvn:org.opendaylight.controller/controller-config/${project.version}/xml/config</configfile>
             ... whatever other bundles you need
@@ -77,7 +77,7 @@
 
         * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='0.0.3-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
+            <feature version='0.1.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             ... whatever other bundles you need
         </feature>
index 8fec90fd9dc3ddc9ef3c3e80ecb040b617c44515..b7ab3ca75774c0c4e8875893adf418c619267b55 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>features-base</artifactId>
     <dependency>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>features-test</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
     </dependency>
     <!-- dependency for opendaylight-karaf-empty for use by testing -->
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>opendaylight-karaf-empty</artifactId>
-      <version>1.4.2-SNAPSHOT</version>
+      <version>1.5.0-SNAPSHOT</version>
       <type>zip</type>
     </dependency>
   </dependencies>
index e4c455ccca6a7078fb0f319274b4af07b02a3853..c324f6cea65cc4d9fb9e6883f43ff93d854c03c8 100644 (file)
@@ -16,8 +16,8 @@
       <feature>odl-base-jackson</feature>
       <feature>odl-base-spring-security</feature>
    </feature>
-   <feature name="odl-base-dummy-console" description="Temporary Dummy Console" version="1.1.0-SNAPSHOT">
-      <bundle>mvn:org.opendaylight.controller/dummy-console/1.1.0-SNAPSHOT</bundle>
+   <feature name="odl-base-dummy-console" description="Temporary Dummy Console" version="1.2.0-SNAPSHOT">
+      <bundle>mvn:org.opendaylight.controller/dummy-console/1.2.0-SNAPSHOT</bundle>
    </feature>
    <feature name="odl-base-felix-dm" description="Felix Dependency Manager" version="${felix.dependencymanager.version}">
       <bundle>mvn:org.osgi/org.osgi.compendium/${osgi.compendium.version}</bundle>
@@ -36,7 +36,7 @@
       <bundle>wrap:mvn:io.netty/netty-common/${netty.version}</bundle>
       <bundle>wrap:mvn:io.netty/netty-handler/${netty.version}</bundle>
       <bundle>wrap:mvn:io.netty/netty-codec-http/${netty.version}</bundle>
-      <bundle>mvn:org.opendaylight.controller.thirdparty/ganymed/1.1-SNAPSHOT</bundle>
+      <bundle>mvn:org.opendaylight.controller.thirdparty/ganymed/1.2.0-SNAPSHOT</bundle>
    </feature>
    <feature name="odl-base-jersey" description="Jersey" version="${jersey.version}">
       <feature>odl-base-gemini-web</feature>
index bf036979cfa1a8394517a710b0af1c9212d34995..0057fc05c71fe915868058d2eaca20936075a604 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/config/</relativePath>
   </parent>
   <artifactId>features-config-netty</artifactId>
index 3346c754d628f8fbb03add426db0026bc4af0615..f3b42ca143785607fa635c2856d0810286ba7177 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/config/</relativePath>
   </parent>
   <artifactId>features-config-persister</artifactId>
index 20feceb3601bff99936858b994ea073e60576609..461427c7cee08e1c0ff67f4cbcdf292c64585d13 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/config/</relativePath>
   </parent>
   <artifactId>features-config</artifactId>
@@ -20,7 +20,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>opendaylight-karaf-empty</artifactId>
-      <version>1.4.2-SNAPSHOT</version>
+      <version>1.5.0-SNAPSHOT</version>
       <type>zip</type>
     </dependency>
     <dependency>
index ddaf77315188b84d72085f60dde48ab58dfab8a6..5dd2bd4a2a416af11c3ce2fb796e2602f6aeb120 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>controller-features</artifactId>
index 4563190b9f4c2eb3ba09f4d42b90ea2da9289b7f..e4356e6b4994dbd5cbee154e2c7441bb6b745d8c 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>extras-features</artifactId>
index ac189737d937cd0fb36186847327acff27a74c18..ab30b0b61fd11ca2dcc25f45b2843582eba7b330 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/md-sal</relativePath>
   </parent>
   <artifactId>features-flow</artifactId>
index 299e5b6707184ffacde75bf0d3fc246d5ecde07d..036d18fb859adb534507efe6c789694ffd3c2cc4 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/md-sal</relativePath>
   </parent>
   <artifactId>features-mdsal</artifactId>
     <dependency>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>features-test</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
     </dependency>
   </dependencies>
 
index 8b19d200a3df5b9a6cedf0ac6d81aff726f2f112..03d6fed6055d74ba4845a93be457fd3761720aa9 100644 (file)
@@ -10,7 +10,7 @@
    <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/md-sal</relativePath>
    </parent>
    <!--
@@ -21,7 +21,7 @@
   -->
    <artifactId>features-netconf-connector</artifactId>
    <!-- Optional TODO: Uncomment version if you are not using a parent pom.xml
-   <version>1.0-SNAPSHOT</version>
+   <version>1.1.0-SNAPSHOT</version>
    -->
    <packaging>jar</packaging>
    <properties>
         <dependency>
           <groupId>org.opendaylight.yangtools</groupId>
           <artifactId>features-yangtools</artifactId>
-          <version>0.6.2-SNAPSHOT</version>
+          <version>0.7.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>features-mdsal</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.openflowplugin</groupId>
           <artifactId>features-openflowplugin</artifactId>
-          <version>0.0.3-SNAPSHOT</version>
+          <version>0.1.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
index 3e576e47f1f8350aa639c72c8657dd12785a2e41..6ae308eb0c8c1ca763d4bbdcbdf5ae9e7cd50c19 100644 (file)
@@ -18,9 +18,9 @@
     Necessary TODO: Add repo entries for the repositories of features you refer to
         in this feature file but do not define here.
         Examples:
-            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.6.2-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.controller/features-mdsal/1.1-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.0.3-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.7.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.controller/features-mdsal/1.2.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.1.0-SNAPSHOT/xml/features</repository>
     -->
     <repository>mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features</repository>
     <repository>mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features</repository>
@@ -54,7 +54,7 @@
 
         * Basic MD-SAL Provider
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider '>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <feature version='${project.version}'>odl-controller-model</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             ... whatever other bundles you need
 
         * Basic MD-SAL Model feature
         <feature name='odl-controller-model' version='${project.version}' description='OpenDaylight :: controller :: Model'>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-binding</feature>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-models</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-binding</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-models</feature>
             <bundle>mvn:org.opendaylight.controller/controller-model/${project.version}</bundle>
             ... whatever other bundles you need
         </feature>
 
         * Config Subsystem example - the config file is your config subsystem configuration
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             <configfile finalname="etc/opendaylight/karaf/80-controller.xml">mvn:org.opendaylight.controller/controller-config/${project.version}/xml/config</configfile>
             ... whatever other bundles you need
@@ -78,7 +78,7 @@
 
         * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='0.0.3-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
+            <feature version='0.1.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             ... whatever other bundles you need
         </feature>
index 1061f4a37de7fd1088f4e333b67e9d2860a02467..a944bb4dec86f3175ccb2ff6f501d8afb947af81 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/netconf</relativePath>
   </parent>
   <artifactId>features-netconf</artifactId>
index e677d491bc1a226fce9d0ca55e2754c993d57d7e..00dc219b39b354b9900ca0b78826c1ce6412fa73 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>features-nsf</artifactId>
@@ -25,7 +25,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>opendaylight-karaf-empty</artifactId>
-      <version>1.4.2-SNAPSHOT</version>
+      <version>1.5.0-SNAPSHOT</version>
       <type>zip</type>
     </dependency>
     <!-- Feature Dependencies -->
index 090469f2434f4d9a8e3992a798fad9857a017c07..5270e3f5cdf702110d7c4028c9099873dc0b1bab 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>features-controller</artifactId>
index dcd24d62169ee16d8e21d24d0469af5a9ba4bbbb..d5387b43c3ee7c0bfd56de52e466297828074eb1 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>features-protocol-framework</artifactId>
index c95e7faa87f87bf04b8b2de7249e2a744c545585..632b4cd592277304b70e832a093853881e360ecd 100644 (file)
@@ -10,7 +10,7 @@
    <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../../opendaylight/md-sal</relativePath>
    </parent>
    <!--
@@ -22,7 +22,7 @@
    <artifactId>features-restconf</artifactId>
    <groupId>org.opendaylight.controller</groupId>
    <!-- Optional TODO: Uncomment version if you are not using a parent pom.xml
-   <version>1.0-SNAPSHOT</version>
+   <version>1.1.0-SNAPSHOT</version>
    -->
    <packaging>jar</packaging>
    <properties>
         <dependency>
           <groupId>org.opendaylight.yangtools</groupId>
           <artifactId>features-yangtools</artifactId>
-          <version>0.6.2-SNAPSHOT</version>
+          <version>0.7.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>features-mdsal</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.openflowplugin</groupId>
           <artifactId>features-openflowplugin</artifactId>
-          <version>0.0.3-SNAPSHOT</version>
+          <version>0.1.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
index f0c649a7538239d8d73e69dd91c99f38b0eb6502..ab42330eacd6c415f9ae91e375ed9d3fd097595d 100644 (file)
@@ -18,9 +18,9 @@
     Necessary TODO: Add repo entries for the repositories of features you refer to
         in this feature file but do not define here.
         Examples:
-            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.6.2-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.controller/features-mdsal/1.1-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.0.3-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.7.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.controller/features-mdsal/1.2.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.1.0-SNAPSHOT/xml/features</repository>
     -->
     <repository>mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features</repository>
     <repository>mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features</repository>
@@ -54,7 +54,7 @@
 
         * Basic MD-SAL Provider
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider '>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <feature version='${project.version}'>odl-controller-model</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             ... whatever other bundles you need
 
         * Basic MD-SAL Model feature
         <feature name='odl-controller-model' version='${project.version}' description='OpenDaylight :: controller :: Model'>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-binding</feature>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-models</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-binding</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-models</feature>
             <bundle>mvn:org.opendaylight.controller/controller-model/${project.version}</bundle>
             ... whatever other bundles you need
         </feature>
 
         * Config Subsystem example - the config file is your config subsystem configuration
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             <configfile finalname="etc/opendaylight/karaf/80-controller.xml">mvn:org.opendaylight.controller/controller-config/${project.version}/xml/config</configfile>
             ... whatever other bundles you need
@@ -78,7 +78,7 @@
 
         * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
         <feature name='odl-controller-provider' version='${project.version}' description='OpenDaylight :: controller :: Provider'>
-            <feature version='0.0.3-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
+            <feature version='0.1.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
             <bundle>mvn:org.opendaylight.controller/controller-provider/${project.version}</bundle>
             ... whatever other bundles you need
         </feature>
index 8f737790090ae3d039ed25e593b55fba97ab2e22..d05e9a515bed4c84480d83900b3b7cde42805c37 100644 (file)
@@ -3,7 +3,7 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>itests-controller</artifactId>
-        <version>1.4.2-SNAPSHOT</version>
+        <version>1.5.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>base-features-it</artifactId>
index 19836a2ad6cf0721503f502b5344dc8b937706a6..c7221491451582fd099844e179daa16540a09434 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <artifactId>itests-controller</artifactId>
index e74e3cb9156e4fd128b4bc97e9697fc3cbf83f32..8a035510bf5426e21cf7ce3993563cf91c5c9263 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
   <artifactId>appauth</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencies>
index d2896027fb330edc255739d740847cd7fb10b00a..4945eb2a66239ea9bcf5ddcab8bb846c3276459b 100644 (file)
@@ -4,7 +4,7 @@
 
   <groupId>org.opendaylight.controller.archetypes</groupId>
   <artifactId>odl-model-project</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.2.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <properties>
index 016c30d787bde6a7871f012fb40d3df7c52c85b3..6b41485e7b4d74ed476c450a9deac9f6664cd8b2 100644 (file)
@@ -11,8 +11,8 @@
     <nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>\r
     <nexus.repository.release>opendaylight.release</nexus.repository.release>
     <nexus.repository.snapshot>opendaylight.release</nexus.repository.snaphot>
-    <yang.version>0.6.2-SNAPSHOT</yang.version>\r
-    <yang.codegen.version>0.6.2-SNAPSHOT</yang.codegen.version>\r
+    <yang.version>0.7.0-SNAPSHOT</yang.version>\r
+    <yang.codegen.version>0.7.0-SNAPSHOT</yang.codegen.version>\r
     <bundle.plugin.version>2.3.7</bundle.plugin.version>\r
   </properties>\r
   <scm>\r
index 56342218a0b8205555961832f60d3fca4846a809..45ec9ac717a26fca391a65bb4b2a89587e280296 100644 (file)
@@ -4,7 +4,7 @@
 
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>opendaylight-configfile-archetype</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.2.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
 
index 9081ce797b177729018e53e9a5bcd930796ab330..ff2384fb27e5c3f3c05521fcfd6dc3c1ab025190 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
      <groupId>org.opendaylight.controller.archetypes</groupId>
      <artifactId>archetypes-parent</artifactId>
-     <version>0.1.1-SNAPSHOT</version>
+     <version>0.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>opendaylight-karaf-distro-archetype</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <name>distribution-karaf-archetype</name>
index fdc60625c85536a4c22ab52836bed884aa4e8696..c2e399b370f4ebbd41952189bb58114a802c588a 100644 (file)
@@ -19,8 +19,8 @@
   <properties>
     <!-- Optional TODO: Move these properties to your parent pom and possibly
             DependencyManagement section of your parent pom -->
-    <branding.version>1.0.0-SNAPSHOT</branding.version>
-    <karaf.resources.version>1.4.2-SNAPSHOT</karaf.resources.version>
+    <branding.version>1.1.0-SNAPSHOT</branding.version>
+    <karaf.resources.version>1.5.0-SNAPSHOT</karaf.resources.version>
     <karaf.version>3.0.1</karaf.version>
   </properties>
 
@@ -81,7 +81,7 @@
       <dependency>
         <groupId>org.opendaylight.openflowplugin</groupId>
         <artifactId>features-openflowplugin</artifactId>
-        <version>0.0.3-SNAPSHOT</version>
+        <version>0.1.0-SNAPSHOT</version>
         <classifier>features</classifier>
         <type>xml</type>
         <scope>runtime</scope>
index 264402a3b1740c892efe51569c33af9ebbd39829..12861604e86d336f6fe0a8ec92887123c18028d9 100644 (file)
@@ -5,11 +5,11 @@
   <parent>
      <groupId>org.opendaylight.controller.archetypes</groupId>
      <artifactId>archetypes-parent</artifactId>
-     <version>0.1.1-SNAPSHOT</version>
+     <version>0.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>opendaylight-karaf-features-archetype</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <name>opendaylight-karaf-features-archetype</name>
index e135e6b656df4cff84e19c28408d76ab6a14a9ee..df35831a90709ea359982b36fb9086ed9da54f63 100644 (file)
       <features.file>features.xml</features.file>
       <!-- Optional TODO: Move these properties to your parent pom and possibly
             DependencyManagement section of your parent pom -->
-      <branding.version>1.0.0-SNAPSHOT</branding.version>
-      <karaf.resources.version>1.4.2-SNAPSHOT</karaf.resources.version>
+      <branding.version>1.1.0-SNAPSHOT</branding.version>
+      <karaf.resources.version>1.5.0-SNAPSHOT</karaf.resources.version>
       <karaf.version>3.0.1</karaf.version>
-      <feature.test.version>0.6.2-SNAPSHOT</feature.test.version>
-      <karaf.empty.version>1.4.2-SNAPSHOT</karaf.empty.version>
+      <feature.test.version>0.7.0-SNAPSHOT</feature.test.version>
+      <karaf.empty.version>1.5.0-SNAPSHOT</karaf.empty.version>
       <surefire.version>2.16</surefire.version>
    </properties>
    <dependencies>
         <dependency>
           <groupId>org.opendaylight.yangtools</groupId>
           <artifactId>features-yangtools</artifactId>
-          <version>0.6.2-SNAPSHOT</version>
+          <version>0.7.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>features-mdsal</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.openflowplugin</groupId>
           <artifactId>features-openflowplugin</artifactId>
-          <version>0.0.3-SNAPSHOT</version>
+          <version>0.1.0-SNAPSHOT</version>
           <classifier>features</classifier>
           <type>xml</type>
         </dependency>
index 4a59657431d95fa7555aeef4f18ee5e2f3451d70..54bbfe45fc54cd22844ee517113081380be78346 100644 (file)
@@ -21,9 +21,9 @@
     Necessary TODO: Add repo entries for the repositories of features you refer to
         in this feature file but do not define here.
         Examples:
-            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.6.2-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.controller/features-mdsal/1.1-SNAPSHOT/xml/features</repository>
-            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.0.3-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.7.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.controller/features-mdsal/1.2.0-SNAPSHOT/xml/features</repository>
+            <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.1.0-SNAPSHOT/xml/features</repository>
     -->
     <feature name='odl-${repoName}-all' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: All'>
         <!--
@@ -51,7 +51,7 @@
 
         * Basic MD-SAL Provider
         <feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider '>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <feature version='${symbol_dollar}{project.version}'>odl-${repoName}-model</feature>
             <bundle>mvn:${groupId}/${repoName}-provider/${symbol_dollar}{project.version}</bundle>
             ... whatever other bundles you need
 
         * Basic MD-SAL Model feature
         <feature name='odl-${repoName}-model' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Model'>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-binding</feature>
-            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-models</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-binding</feature>
+            <feature version='0.7.0-SNAPSHOT'>odl-yangtools-models</feature>
             <bundle>mvn:${groupId}/${repoName}-model/${symbol_dollar}{project.version}</bundle>
             ... whatever other bundles you need
         </feature>
 
         * Config Subsystem example - the config file is your config subsystem configuration
         <feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider'>
-            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='1.2.0-SNAPSHOT'>odl-mdsal-broker</feature>
             <bundle>mvn:${groupId}/${repoName}-provider/${symbol_dollar}{project.version}</bundle>
             <configfile finalname="etc/opendaylight/karaf/80-${repoName}.xml">mvn:${groupId}/${repoName}-config/${symbol_dollar}{project.version}/xml/config</configfile>
             ... whatever other bundles you need
@@ -75,7 +75,7 @@
 
         * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
         <feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider'>
-            <feature version='0.0.3-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
+            <feature version='0.1.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
             <bundle>mvn:${groupId}/${repoName}-provider/${symbol_dollar}{project.version}</bundle>
             ... whatever other bundles you need
         </feature>
index cb597c10bd09fe4375053ced97449e25a3b68dc0..33c2548091bdb5feb79b93319029b677d1606924 100644 (file)
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
   <scm>
@@ -18,7 +18,7 @@
   </scm>
   <groupId>org.opendaylight.controller.archetypes</groupId>
   <artifactId>archetypes-parent</artifactId>
-  <version>0.1.1-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
     <distributionManagement>
     <!-- OpenDayLight Released artifact -->
index 064d04c25c1bb4143ca72470cef30337449ad670..ffd528beb0c161dfcf68c43ba5f82a9f83163e25 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
   <artifactId>arphandler</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 62c182c3b9bc1641b417830ae875044ec54e3518..fecf4f8034ac359a3b0499b3e882612102c52f44 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>clustering.services.integrationtest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <properties>
     <sonar.jacoco.itReportPath>../implementation/target/jacoco-it.exec</sonar.jacoco.itReportPath>
     <!-- Sonar jacoco plugin to get integration test coverage info -->
index 3ff6bac21f4d3e54ae4018daf46826fdd115e5b3..8c66e70cbe8bb30e93c30720bdaf46c6c99b57eb 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>clustering.services</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencies>
index 8d3f53b6c44bfff0b4bef7d38aa89758edb90d09..f11f7a14c0631db619ea5d3f0e532e95cfc22cdc 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>clustering.services-implementation</artifactId>
-  <version>0.4.3-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <properties>
     <!-- Sonar properties using jacoco to retrieve integration test results -->
index 6a0b3082fb4e90aa98fbf23f95cf232b351e1127..211dcc29d02d32b700b2cff077f16121193a75cf 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>clustering.stub</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 9021c9419e66257da8d140ee5d895adb8e84e075..93294f229092537745bf4b45864e57ec772749b2 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>clustering.test</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 55567af43783a229118086be282c898b753f38fa..fee517f08b8c37725ffc71167afe0893e0634b23 100644 (file)
@@ -2,7 +2,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>checkstyle</artifactId>
-  <version>0.0.3-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <scm>
     <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
     <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
index 01dd61a1cb619a6115222a9759d005650e68a7d7..fa97e5fcac45668c3d727a2328a878a8a1111415 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>concepts</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
@@ -43,7 +43,7 @@
           <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>checkstyle</artifactId>
-            <version>0.0.3-SNAPSHOT</version>
+            <version>0.1.0-SNAPSHOT</version>
           </dependency>
         </dependencies>
       </plugin>
index 7b5be02514215002ffe6e89ab4fdbf5945392815..012b4a2529b49fcd365f7251dfd053f48dc73d65 100644 (file)
@@ -11,7 +11,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../opendaylight</relativePath>
   </parent>
   <artifactId>filter-valve</artifactId>
index 07d3cdda96a00c24316b1939b37f27985576b6b1..39364cbcbaee86d2fdf238b1825c5092d79beafa 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>commons.httpclient</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
@@ -71,7 +71,7 @@
           <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>checkstyle</artifactId>
-            <version>0.0.3-SNAPSHOT</version>
+            <version>0.1.0-SNAPSHOT</version>
           </dependency>
         </dependencies>
       </plugin>
index 315611f647c8f9c6ff890a0a23925ea55bd71307..ad4e166cbd492fbd2279a8fe3e4fa10545ac7e2e 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>commons.integrationtest</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <dependencies>
@@ -89,7 +89,7 @@
           <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>checkstyle</artifactId>
-            <version>0.0.3-SNAPSHOT</version>
+            <version>0.1.0-SNAPSHOT</version>
           </dependency>
         </dependencies>
       </plugin>
index 1551041edbd28417e87f4c231ada388a9c3ca4c6..148a4f3792a70eb77028b0af1f8c82c3af8cf6cb 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../opendaylight</relativePath>
   </parent>
 
   <artifactId>liblldp</artifactId>
-  <version>0.8.1-SNAPSHOT</version>
+  <version>0.9.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 11a7ffbd0e7a151bb4e1cc95cb7c193d89d12147..f98b7a3a7ae645915834fa9662885d65578f48b7 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.parent</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.1.0-SNAPSHOT</version>
     <relativePath>../parent</relativePath>
   </parent>
   <artifactId>commons.logback_settings</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <scm>
     <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
     <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
index a98afc8d19cd78597f978f370dfbb9e3cdd48054..77fad0a9f75ba76ab57863e7dcb3f7fa43b3e0bb 100644 (file)
@@ -4,13 +4,13 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>odlparent</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath></relativePath>
   </parent>
 
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>commons.opendaylight</artifactId>
-  <version>1.4.2-SNAPSHOT</version>
+  <version>1.5.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <prerequisites>
     <maven>3.0</maven>
 
     <akka.version>2.3.4</akka.version>
     <aopalliance.version>1.0.0</aopalliance.version>
-    <appauth.version>0.4.2-SNAPSHOT</appauth.version>
-    <archetype-app-northbound>0.0.1-SNAPSHOT</archetype-app-northbound>
+    <appauth.version>0.5.0-SNAPSHOT</appauth.version>
+    <archetype-app-northbound>0.1.0-SNAPSHOT</archetype-app-northbound>
     <aries.util.version>1.1.0</aries.util.version>
-    <arphandler.version>0.5.2-SNAPSHOT</arphandler.version>
+    <arphandler.version>0.6.0-SNAPSHOT</arphandler.version>
     <!-- Controller Modules Versions -->
     <asm.version>4.1</asm.version>
     <!-- Plugin Versions -->
     <bouncycastle.version>1.50</bouncycastle.version>
     <bundle.plugin.version>2.4.0</bundle.plugin.version>
-    <bundlescanner.api.version>0.4.2-SNAPSHOT</bundlescanner.api.version>
-    <bundlescanner.implementation.version>0.4.2-SNAPSHOT</bundlescanner.implementation.version>
-    <bundlescanner.version>0.4.2-SNAPSHOT</bundlescanner.version>
+    <bundlescanner.api.version>0.5.0-SNAPSHOT</bundlescanner.api.version>
+    <bundlescanner.implementation.version>0.5.0-SNAPSHOT</bundlescanner.implementation.version>
+    <bundlescanner.version>0.5.0-SNAPSHOT</bundlescanner.version>
     <checkstyle.version>2.12</checkstyle.version>
-    <clustering.services.version>0.5.1-SNAPSHOT</clustering.services.version>
-    <clustering.services_implementation.version>0.4.3-SNAPSHOT</clustering.services_implementation.version>
-    <clustering.stub.version>0.4.2-SNAPSHOT</clustering.stub.version>
-    <clustering.test.version>0.4.2-SNAPSHOT</clustering.test.version>
-    <commmons.northbound.version>0.4.2-SNAPSHOT</commmons.northbound.version>
+    <clustering.services.version>0.6.0-SNAPSHOT</clustering.services.version>
+    <clustering.services_implementation.version>0.5.0-SNAPSHOT</clustering.services_implementation.version>
+    <clustering.stub.version>0.5.0-SNAPSHOT</clustering.stub.version>
+    <clustering.test.version>0.5.0-SNAPSHOT</clustering.test.version>
+    <commmons.northbound.version>0.5.0-SNAPSHOT</commmons.northbound.version>
     <!-- Third Party Versions -->
     <codahale.metrics.version>3.0.1</codahale.metrics.version>
 
     <commons.tomcat.api>7.0.53.v201406060720</commons.tomcat.api>
     <commons.tomcat.util>7.0.53.v201406070630</commons.tomcat.util>
 
-    <commons.checkstyle.version>0.0.3-SNAPSHOT</commons.checkstyle.version>
+    <commons.checkstyle.version>0.1.0-SNAPSHOT</commons.checkstyle.version>
     <commons.fileupload.version>1.2.2</commons.fileupload.version>
-    <commons.httpclient.version>0.1.2-SNAPSHOT</commons.httpclient.version>
+    <commons.httpclient.version>0.2.0-SNAPSHOT</commons.httpclient.version>
     <commons.io.version>2.4</commons.io.version>
     <commons.lang3.version>3.1</commons.lang3.version>
-    <commons.logback_settings.version>0.0.2-SNAPSHOT</commons.logback_settings.version>
+    <commons.logback_settings.version>0.1.0-SNAPSHOT</commons.logback_settings.version>
     <commons.net.version>3.0.1</commons.net.version>
-    <commons.opendaylight.commons.httpclient>0.1.2-SNAPSHOT</commons.opendaylight.commons.httpclient>
-    <commons.opendaylight.concepts.version>0.5.2-SNAPSHOT</commons.opendaylight.concepts.version>
-    <commons.opendaylight.version>1.4.2-SNAPSHOT</commons.opendaylight.version>
-    <commons.parent.version>1.0.2-SNAPSHOT</commons.parent.version>
+    <commons.opendaylight.commons.httpclient>0.2.0-SNAPSHOT</commons.opendaylight.commons.httpclient>
+    <commons.opendaylight.concepts.version>0.6.0-SNAPSHOT</commons.opendaylight.concepts.version>
+    <commons.opendaylight.version>1.5.0-SNAPSHOT</commons.opendaylight.version>
+    <commons.parent.version>1.1.0-SNAPSHOT</commons.parent.version>
     <compiler.version>2.3.2</compiler.version>
-    <commons.httpclient.version>0.1.2-SNAPSHOT</commons.httpclient.version>
-    <concepts.version>0.5.2-SNAPSHOT</concepts.version>
+    <commons.httpclient.version>0.2.0-SNAPSHOT</commons.httpclient.version>
+    <concepts.version>0.6.0-SNAPSHOT</concepts.version>
     <concurrentlinkedhashmap.version>1.4</concurrentlinkedhashmap.version>
-    <config.version>0.2.5-SNAPSHOT</config.version>
-    <aaa.version>0.1.0-SNAPSHOT</aaa.version>
+    <config.version>0.3.0-SNAPSHOT</config.version>
+    <aaa.version>0.2.0-SNAPSHOT</aaa.version>
     <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
     <config.clustering.configfile>05-clustering.xml</config.clustering.configfile>
     <config.netty.configfile>00-netty.xml</config.netty.configfile>
     <config.toaster.configfile>03-toaster-sample.xml</config.toaster.configfile>
     <config.restconf.configfile>10-rest-connector.xml</config.restconf.configfile>
     <config.netconf.connector.configfile>99-netconf-connector.xml</config.netconf.connector.configfile>
-    <configuration.implementation.version>0.4.3-SNAPSHOT</configuration.implementation.version>
-    <configuration.version>0.4.3-SNAPSHOT</configuration.version>
-    <connectionmanager.version>0.1.2-SNAPSHOT</connectionmanager.version>
-    <containermanager.it.version>0.5.2-SNAPSHOT</containermanager.it.version>
-    <containermanager.northbound.version>0.4.2-SNAPSHOT</containermanager.northbound.version>
-    <containermanager.shell.version>0.5.2-SNAPSHOT</containermanager.shell.version>
-    <containermanager.version>0.5.2-SNAPSHOT</containermanager.version>
-    <controllermanager.northbound.version>0.0.2-SNAPSHOT</controllermanager.northbound.version>
-    <devices.web.version>0.4.2-SNAPSHOT</devices.web.version>
-    <dummy-console.version>1.1.0-SNAPSHOT</dummy-console.version>
+    <configuration.implementation.version>0.5.0-SNAPSHOT</configuration.implementation.version>
+    <configuration.version>0.5.0-SNAPSHOT</configuration.version>
+    <connectionmanager.version>0.2.0-SNAPSHOT</connectionmanager.version>
+    <containermanager.it.version>0.6.0-SNAPSHOT</containermanager.it.version>
+    <containermanager.northbound.version>0.5.0-SNAPSHOT</containermanager.northbound.version>
+    <containermanager.shell.version>0.6.0-SNAPSHOT</containermanager.shell.version>
+    <containermanager.version>0.6.0-SNAPSHOT</containermanager.version>
+    <controllermanager.northbound.version>0.1.0-SNAPSHOT</controllermanager.northbound.version>
+    <devices.web.version>0.5.0-SNAPSHOT</devices.web.version>
+    <dummy-console.version>1.2.0-SNAPSHOT</dummy-console.version>
     <eclipse.persistence.version>2.5.0</eclipse.persistence.version>
     <eclipse.jdt.core.compiler.batch.version>3.8.0.I20120518-2145</eclipse.jdt.core.compiler.batch.version>
     <!-- enforcer version -->
 
     <exi.nagasena.version>0000.0002.0038.0</exi.nagasena.version>
     <felix.util.version>1.6.0</felix.util.version>
-    <filtervalve.version>1.4.2-SNAPSHOT</filtervalve.version>
+    <filtervalve.version>1.5.0-SNAPSHOT</filtervalve.version>
     <findbugs.maven.plugin.version>2.4.0</findbugs.maven.plugin.version>
-    <flowprogrammer.northbound.version>0.4.2-SNAPSHOT</flowprogrammer.northbound.version>
-    <flows.web.version>0.4.2-SNAPSHOT</flows.web.version>
-    <forwarding.staticrouting>0.5.2-SNAPSHOT</forwarding.staticrouting>
-    <forwarding.staticrouting.northbound.version>0.4.2-SNAPSHOT</forwarding.staticrouting.northbound.version>
-    <forwardingrulesmanager.implementation.version>0.4.2-SNAPSHOT</forwardingrulesmanager.implementation.version>
-    <forwardingrulesmanager.version>0.6.0-SNAPSHOT</forwardingrulesmanager.version>
-    <ganymed.version>1.1-SNAPSHOT</ganymed.version>
-    <hosttracker.api.version>0.5.2-SNAPSHOT</hosttracker.api.version>
-    <hosttracker.implementation.version>0.5.2-SNAPSHOT</hosttracker.implementation.version>
-    <hosttracker.northbound.version>0.4.2-SNAPSHOT</hosttracker.northbound.version>
-    <hosttracker.shell.version>1.0.0-SNAPSHOT</hosttracker.shell.version>
-    <hosttracker_new.api.version>0.4.2-SNAPSHOT</hosttracker_new.api.version>
-    <hosttracker_new.implementation.version>0.4.2-SNAPSHOT</hosttracker_new.implementation.version>
-    <httpservice-bridge.northbound.version>0.0.2-SNAPSHOT</httpservice-bridge.northbound.version>
-    <ietf-inet-types.version>2010.09.24.4-SNAPSHOT</ietf-inet-types.version>
-    <ietf-restconf.version>2013.10.19.1-SNAPSHOT</ietf-restconf.version>
-    <ietf-topology.version>2013.10.21.2-SNAPSHOT</ietf-topology.version>
-    <ietf-yang-types.version>2010.09.24.4-SNAPSHOT</ietf-yang-types.version>
+    <flowprogrammer.northbound.version>0.5.0-SNAPSHOT</flowprogrammer.northbound.version>
+    <flows.web.version>0.5.0-SNAPSHOT</flows.web.version>
+    <forwarding.staticrouting>0.6.0-SNAPSHOT</forwarding.staticrouting>
+    <forwarding.staticrouting.northbound.version>0.5.0-SNAPSHOT</forwarding.staticrouting.northbound.version>
+    <forwardingrulesmanager.implementation.version>0.5.0-SNAPSHOT</forwardingrulesmanager.implementation.version>
+    <forwardingrulesmanager.version>0.7.0-SNAPSHOT</forwardingrulesmanager.version>
+    <ganymed.version>1.2.0-SNAPSHOT</ganymed.version>
+    <hosttracker.api.version>0.6.0-SNAPSHOT</hosttracker.api.version>
+    <hosttracker.implementation.version>0.6.0-SNAPSHOT</hosttracker.implementation.version>
+    <hosttracker.northbound.version>0.5.0-SNAPSHOT</hosttracker.northbound.version>
+    <hosttracker.shell.version>1.1.0-SNAPSHOT</hosttracker.shell.version>
+    <hosttracker_new.api.version>0.5.0-SNAPSHOT</hosttracker_new.api.version>
+    <hosttracker_new.implementation.version>0.5.0-SNAPSHOT</hosttracker_new.implementation.version>
+    <httpservice-bridge.northbound.version>0.1.0-SNAPSHOT</httpservice-bridge.northbound.version>
+    <ietf-inet-types.version>2010.09.24.7-SNAPSHOT</ietf-inet-types.version>
+    <ietf-restconf.version>2013.10.19.7-SNAPSHOT</ietf-restconf.version>
+    <ietf-topology.version>2013.10.21.7-SNAPSHOT</ietf-topology.version>
+    <ietf-yang-types.version>2010.09.24.7-SNAPSHOT</ietf-yang-types.version>
     <jdepend.maven.plugin.version>2.0-beta-2</jdepend.maven.plugin.version>
     <jmxGeneratorPath>src/main/yang-gen-config</jmxGeneratorPath>
-    <jolokia-bridge.version>0.0.2-SNAPSHOT</jolokia-bridge.version>
+    <jolokia-bridge.version>0.1.0-SNAPSHOT</jolokia-bridge.version>
     <jolokia.version>1.1.4</jolokia.version>
     <jsr305.api.version>2.0.1</jsr305.api.version>
     <jsr311.api.version>1.1.1</jsr311.api.version>
     <jsr311.v2.api.version>2.0</jsr311.v2.api.version>
-    <karaf.branding.version>1.0.0-SNAPSHOT</karaf.branding.version>
+    <karaf.branding.version>1.1.0-SNAPSHOT</karaf.branding.version>
     <karaf.shell.version>3.0.0</karaf.shell.version>
     <karaf.version>3.0.1</karaf.version>
     <leveldb.version>0.7</leveldb.version>
     <leveldbjni.version>1.8</leveldbjni.version>
     <lifecycle.mapping.version>1.0.0</lifecycle.mapping.version>
     <logback.version>1.0.9</logback.version>
-    <logging.bridge.version>0.4.2-SNAPSHOT</logging.bridge.version>
+    <logging.bridge.version>0.5.0-SNAPSHOT</logging.bridge.version>
     <maven.plugin.api.version>3.0.5</maven.plugin.api.version>
     <mimepull.version>1.9.4</mimepull.version>
-    <mdsal.version>1.1-SNAPSHOT</mdsal.version>
-    <netconf.version>0.2.5-SNAPSHOT</netconf.version>
-    <networkconfig.bridgedomain.northbound.version>0.0.3-SNAPSHOT</networkconfig.bridgedomain.northbound.version>
-    <networkconfig.neutron.implementation.version>0.4.2-SNAPSHOT</networkconfig.neutron.implementation.version>
-    <networkconfig.neutron.northbound.version>0.4.2-SNAPSHOT</networkconfig.neutron.northbound.version>
-    <networkconfig.neutron.version>0.4.2-SNAPSHOT</networkconfig.neutron.version>
+    <mdsal.version>1.2.0-SNAPSHOT</mdsal.version>
+    <netconf.version>0.3.0-SNAPSHOT</netconf.version>
+    <networkconfig.bridgedomain.northbound.version>0.1.0-SNAPSHOT</networkconfig.bridgedomain.northbound.version>
+    <networkconfig.neutron.implementation.version>0.5.0-SNAPSHOT</networkconfig.neutron.implementation.version>
+    <networkconfig.neutron.northbound.version>0.5.0-SNAPSHOT</networkconfig.neutron.northbound.version>
+    <networkconfig.neutron.version>0.5.0-SNAPSHOT</networkconfig.neutron.version>
     <!-- ODL repository / plugin repository -->
     <nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>
-    <northbound.commons.version>0.4.2-SNAPSHOT</northbound.commons.version>
-    <northbound.hosttracker.version>1.4.2-SNAPSHOT</northbound.hosttracker.version>
-    <northbound.jolokia.version>1.4.2-SNAPSHOT</northbound.jolokia.version>
-    <opendaylight-l2-types.version>2013.08.27.4-SNAPSHOT</opendaylight-l2-types.version>
-    <osgi-brandfragment.web.version>0.0.2-SNAPSHOT</osgi-brandfragment.web.version>
+    <northbound.commons.version>0.5.0-SNAPSHOT</northbound.commons.version>
+    <northbound.hosttracker.version>1.5.0-SNAPSHOT</northbound.hosttracker.version>
+    <northbound.jolokia.version>1.5.0-SNAPSHOT</northbound.jolokia.version>
+    <opendaylight-l2-types.version>2013.08.27.7-SNAPSHOT</opendaylight-l2-types.version>
+    <osgi-brandfragment.web.version>0.1.0-SNAPSHOT</osgi-brandfragment.web.version>
     <pax.exam.version>4.0.0</pax.exam.version>
     <parboiled.version>1.1.6</parboiled.version>
     <parboiled.scala.version>1.1.6</parboiled.scala.version>
     <propertymavenplugin.version>1.0-alpha-2</propertymavenplugin.version>
     <protobuf.version>2.5.0</protobuf.version>
-    <protocol-framework.version>0.5.0-SNAPSHOT</protocol-framework.version>
-    <protocol_plugins.openflow.version>0.4.2-SNAPSHOT</protocol_plugins.openflow.version>
-    <protocol_plugins.stub.version>0.4.2-SNAPSHOT</protocol_plugins.stub.version>
-    <routing.dijkstra_implementation.version>0.4.2-SNAPSHOT</routing.dijkstra_implementation.version>
-    <sal.connection.version>0.1.2-SNAPSHOT</sal.connection.version>
-    <sal.implementation.version>0.4.2-SNAPSHOT</sal.implementation.version>
-    <sal.networkconfiguration.version>0.0.3-SNAPSHOT</sal.networkconfiguration.version>
-    <sal.version>0.8.1-SNAPSHOT</sal.version>
+    <protocol-framework.version>0.6.0-SNAPSHOT</protocol-framework.version>
+    <protocol_plugins.openflow.version>0.5.0-SNAPSHOT</protocol_plugins.openflow.version>
+    <protocol_plugins.stub.version>0.5.0-SNAPSHOT</protocol_plugins.stub.version>
+    <routing.dijkstra_implementation.version>0.5.0-SNAPSHOT</routing.dijkstra_implementation.version>
+    <sal.connection.version>0.2.0-SNAPSHOT</sal.connection.version>
+    <sal.implementation.version>0.5.0-SNAPSHOT</sal.implementation.version>
+    <sal.networkconfiguration.version>0.1.0-SNAPSHOT</sal.networkconfiguration.version>
+    <sal.version>0.9.0-SNAPSHOT</sal.version>
     <salGeneratorPath>src/main/yang-gen-sal</salGeneratorPath>
-    <samples.loadbalancer>0.5.2-SNAPSHOT</samples.loadbalancer>
-    <samples.loadbalancer.northbound.version>0.4.2-SNAPSHOT</samples.loadbalancer.northbound.version>
-    <samples.simpleforwarding.version>0.4.2-SNAPSHOT</samples.simpleforwarding.version>
-    <sanitytest.version>0.4.2-SNAPSHOT</sanitytest.version>
+    <samples.loadbalancer>0.6.0-SNAPSHOT</samples.loadbalancer>
+    <samples.loadbalancer.northbound.version>0.5.0-SNAPSHOT</samples.loadbalancer.northbound.version>
+    <samples.simpleforwarding.version>0.5.0-SNAPSHOT</samples.simpleforwarding.version>
+    <sanitytest.version>0.5.0-SNAPSHOT</sanitytest.version>
     <scala.version>2.10</scala.version>
     <scala.micro.version>4</scala.micro.version>
-    <security.version>0.4.2-SNAPSHOT</security.version>
-    <karaf.security.version>0.4.2-SNAPSHOT</karaf.security.version>
+    <security.version>0.5.0-SNAPSHOT</security.version>
+    <karaf.security.version>0.5.0-SNAPSHOT</karaf.security.version>
     <shapeless.version>1.2.4</shapeless.version>
     <sitedeploy>dav:http://nexus.opendaylight.org/content/sites/site</sitedeploy>
     <sonar.branch>${user.name}-private-view</sonar.branch>
     <spring-security-karaf.version>3.1.4.RELEASE</spring-security-karaf.version>
     <spring-security.version>3.1.3.RELEASE</spring-security.version>
     <spring.version>3.1.3.RELEASE</spring.version>
-    <statistics.northbound.version>0.4.2-SNAPSHOT</statistics.northbound.version>
-    <statisticsmanager.implementation.version>0.4.2-SNAPSHOT</statisticsmanager.implementation.version>
-    <statisticsmanager.version>0.5.1-SNAPSHOT</statisticsmanager.version>
-    <subnets.northbound.version>0.4.2-SNAPSHOT</subnets.northbound.version>
+    <statistics.northbound.version>0.5.0-SNAPSHOT</statistics.northbound.version>
+    <statisticsmanager.implementation.version>0.5.0-SNAPSHOT</statisticsmanager.implementation.version>
+    <statisticsmanager.version>0.6.0-SNAPSHOT</statisticsmanager.version>
+    <subnets.northbound.version>0.5.0-SNAPSHOT</subnets.northbound.version>
     <surefire.version>2.15</surefire.version>
-    <switchmanager.api.version>0.7.1-SNAPSHOT</switchmanager.api.version>
-    <switchmanager.implementation.version>0.4.2-SNAPSHOT</switchmanager.implementation.version>
-    <switchmanager.northbound.version>0.4.2-SNAPSHOT</switchmanager.northbound.version>
+    <switchmanager.api.version>0.8.0-SNAPSHOT</switchmanager.api.version>
+    <switchmanager.implementation.version>0.5.0-SNAPSHOT</switchmanager.implementation.version>
+    <switchmanager.northbound.version>0.5.0-SNAPSHOT</switchmanager.northbound.version>
     <testvm.argLine>-Xmx1024m -XX:MaxPermSize=256m</testvm.argLine>
-    <topology.northbound.version>0.4.2-SNAPSHOT</topology.northbound.version>
-    <topology.web.version>0.4.2-SNAPSHOT</topology.web.version>
-    <topologymanager.version>0.4.2-SNAPSHOT</topologymanager.version>
-    <topologymanager.shell.version>1.0.0-SNAPSHOT</topologymanager.shell.version>
-    <troubleshoot.web.version>0.4.2-SNAPSHOT</troubleshoot.web.version>
+    <topology.northbound.version>0.5.0-SNAPSHOT</topology.northbound.version>
+    <topology.web.version>0.5.0-SNAPSHOT</topology.web.version>
+    <topologymanager.version>0.5.0-SNAPSHOT</topologymanager.version>
+    <topologymanager.shell.version>1.1.0-SNAPSHOT</topologymanager.shell.version>
+    <troubleshoot.web.version>0.5.0-SNAPSHOT</troubleshoot.web.version>
     <typesafe.config.version>1.2.0</typesafe.config.version>
     <uncommons.maths.version>1.2.2a</uncommons.maths.version>
-    <usermanager.implementation.version>0.4.2-SNAPSHOT</usermanager.implementation.version>
-    <usermanager.northbound.version>0.0.2-SNAPSHOT</usermanager.northbound.version>
-    <usermanager.version>0.4.2-SNAPSHOT</usermanager.version>
-    <nsf.version>0.4.2-SNAPSHOT</nsf.version>
-    <web.version>0.4.2-SNAPSHOT</web.version>
+    <usermanager.implementation.version>0.5.0-SNAPSHOT</usermanager.implementation.version>
+    <usermanager.northbound.version>0.1.0-SNAPSHOT</usermanager.northbound.version>
+    <usermanager.version>0.5.0-SNAPSHOT</usermanager.version>
+    <nsf.version>0.5.0-SNAPSHOT</nsf.version>
+    <web.version>0.5.0-SNAPSHOT</web.version>
     <xtend.dstdir>src/main/xtend-gen</xtend.dstdir>
-    <yang-ext.version>2013.09.07.4-SNAPSHOT</yang-ext.version>
-    <yang-jmx-generator.version>1.0.0-SNAPSHOT</yang-jmx-generator.version>
-    <yangtools.version>0.6.2-SNAPSHOT</yangtools.version>
+    <yang-ext.version>2013.09.07.7-SNAPSHOT</yang-ext.version>
+    <yang-jmx-generator.version>1.1.0-SNAPSHOT</yang-jmx-generator.version>
+    <yangtools.version>0.7.0-SNAPSHOT</yangtools.version>
     <sshd-core.version>0.12.0</sshd-core.version>
     <jmh.version>0.9.7</jmh.version>
   </properties>
       <dependency>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>httpservice-bridge</artifactId>
-        <version>0.0.2-SNAPSHOT</version>
+        <version>0.1.0-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>jolokia-bridge</artifactId>
-        <version>0.0.2-SNAPSHOT</version>
+        <version>0.1.0-SNAPSHOT</version>
       </dependency>
       <!-- Karaf Dependencies -->
       <dependency>
       <dependency>
         <groupId>org.opendaylight.yangtools.model</groupId>
         <artifactId>ietf-yang-types-20130715</artifactId>
-        <version>2013.07.15.1-SNAPSHOT</version>
+        <version>2013.07.15.7-SNAPSHOT</version>
       </dependency>
       <dependency>
         <groupId>org.opendaylight.yangtools.model</groupId>
       <dependency>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>commons.logback_settings</artifactId>
-        <version>0.0.2-SNAPSHOT</version>
+        <version>0.1.0-SNAPSHOT</version>
         <scope>test</scope>
       </dependency>
       <dependency>
             <dependency>
               <groupId>org.opendaylight.controller</groupId>
               <artifactId>commons.logback_settings</artifactId>
-              <version>0.0.2-SNAPSHOT</version>
+              <version>0.1.0-SNAPSHOT</version>
             </dependency>
           </dependencies>
           <executions>
           <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>checkstyle</artifactId>
-            <version>0.0.3-SNAPSHOT</version>
+            <version>0.1.0-SNAPSHOT</version>
           </dependency>
         </dependencies>
         <executions>
index 67d1cb419bf1c930f50c11052762ddd95cb04e42..cbd6efaef8b287229126ecd502d0f1a029ca96d6 100644 (file)
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>commons.parent</artifactId>
-  <version>1.0.2-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <prerequisites>
     <maven>3.0</maven>
index 774bc7c23f178b30f26b94d65212a595d5941b4a..00f7b3179b2a0b469eba396689f2838ec1149b19 100644 (file)
@@ -6,12 +6,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>protocol-framework</artifactId>
-  <version>0.5.0-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <name>${project.artifactId}</name>
   <description>Common protocol framework</description>
index e145bd2db0de394d64492e64aeeeea5ce432bd8f..eff635c17e9f2d80c502b326ef285c8688e85bfe 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>config-api</artifactId>
index a0a4292adf406a597fa120cdbf869c5b4cc0e0c6..5d6c11fbeead51a0652ce151265ca3e50313f7d0 100644 (file)
@@ -122,7 +122,9 @@ module config {
                  the actual service-type which is actually required.";
 
             mandatory true;
-            type service-type-ref;
+            type leafref {
+                path "/config:services/config:service/config:type";
+            }
         }
 
         leaf name {
index c98a47660ee3c92a8ebec0ea586d40af31dca99d..3ebffc65a298444e732c78e571701746ceb919b3 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>config-manager</artifactId>
index 98f0908dc710cf40fbb93b88004d411d03f594fd..c6f4be64bb91609dfd4630f768ab114f4d69ab2e 100644 (file)
@@ -53,6 +53,7 @@ public class InternalJMXRegistrator implements Closeable {
 
     @GuardedBy("this")
     private final Set<ObjectName> registeredObjectNames = new HashSet<>();
+    @GuardedBy("this")
     private final List<InternalJMXRegistrator> children = new ArrayList<>();
 
     public synchronized InternalJMXRegistration registerMBean(Object object,
@@ -79,9 +80,8 @@ public class InternalJMXRegistrator implements Closeable {
         }
     }
 
-    public InternalJMXRegistrator createChild() {
-        InternalJMXRegistrator child = new InternalJMXRegistrator(
-                configMBeanServer);
+    public synchronized InternalJMXRegistrator createChild() {
+        InternalJMXRegistrator child = new InternalJMXRegistrator(configMBeanServer);
         children.add(child);
         return child;
     }
@@ -137,7 +137,7 @@ public class InternalJMXRegistrator implements Closeable {
         return getSameNames(result);
     }
 
-    private Set<ObjectName> getSameNames(Set<ObjectName> superSet) {
+    private synchronized Set<ObjectName> getSameNames(Set<ObjectName> superSet) {
         Set<ObjectName> result = new HashSet<>(superSet);
         result.retainAll(registeredObjectNames);
         for (InternalJMXRegistrator child : children) {
index 57d18e2f62ef5a1a51d105eac0045e29955febe0..3e9162eb36b721046876c680ca5542ae83212087 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>config-module-archetype</artifactId>
index 8dc31dcc4ebc07f30c026288c18799790daf979e..257c36779c9113a05dfe9fd20f82c8ddc288e84c 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>config-netty-config</artifactId>
   <description>Configuration files for sal-rest-connector</description>
index 2899acf5df45d915d856e66507357514a7809429..f83beb0c8b4463cdd2a24427753e53e811c5426a 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>config-persister-api</artifactId>
index 0cbc0a1db918de95e9a1c3c666bc2d5745527496..302b13fdf933bacb5e3c77a021517046ed0fe4cc 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>config-persister-directory-xml-adapter</artifactId>
index 7412a51425d8a8d7159e34952627d593bd1fe782..d7d7889bf920f0261f8ecd24ac9ec86b14ba79bb 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>config-subsystem</artifactId>
-        <version>0.2.5-SNAPSHOT</version>
+        <version>0.3.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 
index d8c81ea971322762511ab4379e068b6112e6eb8c..35df9e1999a497adb7a2f6053c6e903a76df4c65 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>config-persister-file-xml-adapter</artifactId>
index e66a4cfd3fe06b3767d76fdcf5c7952507611753..67370e1e2f345b9a6b20fc72625234a202fd7b50 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>config-plugin-parent</artifactId>
index 29a5526451f688e3409969f8cb85b041d7496f0a..6a5950dc7e7bc5afef3bd0e257b5a564e7aa9b90 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>config-util</artifactId>
index 03ff65f662cdb94a41071bcff964316e1a31d6f1..0f379fbe21808b351a3f37fd20ea6d578474f9bb 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>logback-config-loader</artifactId>
index 0fd62aa42764e2736b33b7273ab4d04cd8ddfa97..d918fd7ab7ad383796002509d506f8d3e353820a 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>logback-config</artifactId>
index 1e5fcce6093bec286d4fce3e5e40ea3efc4b8834..0e0ec9372c760c7b138f0209747ba9c124a714ab 100644 (file)
@@ -11,7 +11,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
 
index ca1e28e14c5b040c803a5b82d4e23ba3c9955b2d..a5c0831fb82aa16ca7bdb8175a709b7690f8c110 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>netty-config-api</artifactId>
index b001dc76f74677758762cd2fc97b55e770ae33af..6188aed898be9ade5430e01635b01291c6779072 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>netty-event-executor-config</artifactId>
index 4cc9cc3dde0e91b7c35f98f28206ae69845c04c2..54c87604a433298824fc33ae12a6dc11732dfa92 100644 (file)
@@ -21,12 +21,12 @@ import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
 
 public class ImmediateEventExecutorModuleTest extends AbstractConfigTest {
 
-    private GlobalEventExecutorModuleFactory factory;
+    private ImmediateEventExecutorModuleFactory factory;
     private final String instanceName = ImmediateEventExecutorModuleFactory.SINGLETON_NAME;
 
     @Before
     public void setUp() {
-        factory = new GlobalEventExecutorModuleFactory();
+        factory = new ImmediateEventExecutorModuleFactory();
         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory));
     }
 
index 8c86ca83547be5946d96aa90e8391b43982f85e0..2f3d26dd2fe3a7379b1fb60422689229a3444c61 100644 (file)
@@ -7,7 +7,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>netty-threadgroup-config</artifactId>
index 6b3ecdbceb1f3360ff26bf28d1e9ba1fc9992249..75b4709da26349014ef4f83923bbcb909a2c8fb5 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>netty-timer-config</artifactId>
index b8ad26116a2915634be51f430d8d5769ce2e949b..ea7b24317932b308bf101df8736a8c514bc16418 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
   <artifactId>config-subsystem</artifactId>
 
-  <version>0.2.5-SNAPSHOT</version>
+  <version>0.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>${project.artifactId}</name>
   <prerequisites>
             <configuration>
               <outputDirectory>${project.build.directory}/jacoco</outputDirectory>
               <haltOnFailure>false</haltOnFailure>
-              <check>
-                <classRatio>80</classRatio>
-              </check>
+              <rules>
+                <rule>
+                  <element>CLASS</element>
+                  <excludes>
+                    <exclude>*Test</exclude>
+                  </excludes>
+                  <limits>
+                    <limit>
+                      <counter>LINE</counter>
+                      <value>COVEREDRATIO</value>
+                      <minimum>0.50</minimum>
+                    </limit>
+                  </limits>
+                </rule>
+              </rules>
             </configuration>
           </execution>
         </executions>
index 76c1cfdc542e33c084ffe1cc715bb9c35b1a5fb6..659052e570898f70b2497eef4dfd236c9d666305 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>shutdown-api</artifactId>
index 9895022df6931ee57cc75f82a51984929e3581a3..f14c28532314f71ce7450437e5e338a9e2a52975 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>shutdown-impl</artifactId>
index c9a19515ef043c9dd10e17a31ee4b5dbadfa1014..5f0c941a19a7ed44ba89d792a9eb69ea0c1c68e9 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>threadpool-config-api</artifactId>
index 4fd0d681a11e49f5cf5038afaa6bd6c7a3c8c4de..2787b30df442d98ea0d2ae91aea4ab6eaada34fe 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>threadpool-config-impl</artifactId>
index f9e0c7036a858b60246a7956a8bdc6fc7ba18d44..6d2663ced5b6f56b72e38e2e14ea546ef270e7cc 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>yang-jmx-generator-it</artifactId>
index 5f51980b94b530e3dbdb7e6e87059088c425b61b..6c8a591bb8a7a7db03fb1564c3d7f93c66595995 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
   <artifactId>yang-jmx-generator-plugin</artifactId>
index 133b07ff8661f5ce4e8851e7e6de378f4c8740c2..979b39688b04aac10514db6e0b796bfd97b139e4 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
 
index 9032a2c9306ca38f537028984f05812ca24f6e2a..cac0ac705f216cc0838e86d841b9d2e25bc2f769 100644 (file)
@@ -19,6 +19,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.junit.Ignore;
 import org.junit.Test;
 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.NameConflictException;
 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.YangModelSearchUtils;
@@ -40,6 +41,7 @@ public class ModuleMXBeanEntryNameConflictTest extends AbstractYangTest {
     Map<File, String> testedFilesToYangModules = new HashMap<>();
     Map<String, String> testedYangModulesToExpectedConflictingName = new HashMap<>();
 
+    @Ignore
     @Test
     public void testNameConflicts() throws Exception {
         prepareSamples();
index 16085efbba2cf334692498f37d6f872ba5d51c0e..0cd0d15ad242044a1cd131e12d83f17aedf4466a 100644 (file)
@@ -49,7 +49,7 @@ module config-jmx-it-impl {
             }
 
 
-            leaf simpleInt {
+            leaf simpleInt1 {
                 type uint32;
                 default 99L;
             }
@@ -87,7 +87,7 @@ module config-jmx-it-impl {
                 }
             }
 
-            leaf simpleInt {
+            leaf simpleInt2 {
                 type uint32;
             }
 
@@ -202,7 +202,7 @@ module config-jmx-it-impl {
         case impl-netconf {
             when "/config:modules/config:module/config:type = 'impl-netconf'";
             // root runtime bean
-            leaf created-sessions {
+            leaf created-sessions-1 {
                 type uint32;
             }
 
index 4901b41157226b8daa468b775d627808b2fced1c..97fca0387792e355b51d0963a2500d5e295e492f 100644 (file)
@@ -75,7 +75,7 @@ module config-test-duplicate-attribute-in-list {
         case netconf {
             when "/config:modules/config:module/config:type = 'netconf'";
             // root runtime bean
-            leaf created-sessions {
+            leaf created-sessions2 {
                 type uint32;
             }
 
index bf081028cc40b7b84e950d198ee273be48061bea..d2d4dc534d0fffa0fe0f2ff5f465ee185a9e0c62 100644 (file)
@@ -56,7 +56,7 @@ module config-test-duplicate-attribute {
         case netconf {
             when "/config:modules/config:module/config:type = 'netconf'";
 
-           container dto-a {
+           container dto-a2 {
                 leaf simple-arg {
                        type uint32;
                    }
@@ -72,7 +72,7 @@ module config-test-duplicate-attribute {
         case netconf {
             when "/config:modules/config:module/config:type = 'netconf'";
             // root runtime bean
-            leaf created-sessions {
+            leaf created-sessions2 {
                 type uint32;
             }
 
index 1db0279506247eae3691eac9960df549258b962f..f6a0b888bd3e81e5ccd2bcedc09b991cdbc370e8 100644 (file)
@@ -62,7 +62,7 @@ module test-config-files {
         case netconf {
             when "/config:modules/config:module/config:type = 'netconf'";
             // root runtime bean
-            leaf created-sessions {
+            leaf created-sessions2 {
                 type uint32;
             }
 
index 0a152e7baae2b94c1aaa9ecfbcdef0dae89dc2db..fc0e0730dfe4a648d518b153a9fc097198888789 100644 (file)
@@ -62,7 +62,7 @@ module test-config-files1 {
         case netconf1 {
             when "/config:modules/config:module/config:type = 'netconf1'";
             // root runtime bean
-            leaf created-sessions {
+            leaf created-sessions2 {
                 type uint32;
             }
 
index c7fb73f3854cf5316c0efc7d3b39972f6978e767..d03cff305b68bc39cddf9f75f7996fd98d3fc5b8 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
   <artifactId>yang-test-plugin</artifactId>
index 247b3c07459ef67531d3085242e38f22c21b770a..5977325574202c3edd39125dc6ca60f4ebd5fd71 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>config-plugin-parent</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../config-plugin-parent</relativePath>
   </parent>
 
index ef27bfd5e453516f904d67fded5d1a208aa2e776..50f19278c6a2df8c1a8fc2ff774d528c68700ab6 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>configuration</artifactId>
-  <version>0.4.3-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index a4a7ba67469d3161e7d93c18eb4ed1d443142af6..4387de70eaf96de3091ceaaf255823b07024b729 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>configuration.implementation</artifactId>
-  <version>0.4.3-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 31b9c0767406c0723ae66b6d1800eb09baf1c131..238ff12249ce421309515441577e559dd912f688 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>configuration.integrationtest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <dependencies>
     <dependency>
       <groupId>ch.qos.logback</groupId>
index c4ced042d022e929ea3f362d873ba9a1c9d2ea1e..2718ed1afea9fb1eb4901fd1c2d4d08f10ad5005 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>connectionmanager</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 8be119d50739d8427feb9769de2516a57333cc17..fe2514e58a0876e692f3a1f945c5899ca44a8e39 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>connectionmanager.implementation</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index a19e27189a2dfcd6e7b344fa0111454800e17607..c9b54a1b6c61dee45ace9536620c2c7559f714e8 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>containermanager</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 3ead8be65a0db92858b8d25e69dd80ab464bfa8b..013cd62576efc0ea1f54e463c77f62b4948cdf59 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>containermanager.implementation</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index a3f140d7e119868737cf11235958e5ce93f80e67..8e0475d4a380ce79c5144746a84a3feb3ba02282 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>containermanager.it.implementation</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 1eedd4bc8756b691fbf478c6d24b6de4caedf792..c1c2d2055be32050f34370edcef5eaa9d23bd917 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>containermanager.shell</artifactId>
index d3dfe19c2b082e6eef41828d6274c8e8a8c57c6d..72eaf005add191a82a08c9f4f81db0b4fc11c0ba 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>opendaylight-karaf-empty</artifactId>
index e34a5d3c2cbd25e888fde5805618bfbf0bc9899d..35aac0933945debbc8fb02806e29be4620e37eb3 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>opendaylight-karaf-resources</artifactId>
index 795f68c397d27265ab97997bd5b34b5d5b4b0c3f..1612f3434382655aa67bf0c732e9ca4eaacc4258 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>distribution.opendaylight-karaf</artifactId>
       <artifactId>features-base</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>features-adsal</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>features-nsf</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
+      <scope>runtime</scope>
     </dependency>
     <!-- MD-SAL Related Features -->
     <dependency>
       <artifactId>features-mdsal</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
+      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>features-flow</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>features-restconf</artifactId>
+      <version>1.2.0-SNAPSHOT</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
     </dependency>
   </dependencies>
 
index 423b51bc7da8d25b20154db97e3b4b6eefb47375..e30ff05bf0fde541c3c55210bed47c5190c1b376 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>distribution.opendaylight</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <prerequisites>
     <maven>3.0</maven>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>sal-inmemory-datastore</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
         </dependency>
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
         <dependency>
           <groupId>org.opendaylight.controller.model</groupId>
           <artifactId>model-topology</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
         </dependency>
 
         <!-- toaster example I'm pretty sure we should trim -->
         <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>swagger-ui</artifactId>
-          <version>0.0.1-SNAPSHOT</version>
+          <version>0.1.0-SNAPSHOT</version>
         </dependency>
       </dependencies>
     </profile>
index 78661d8df29e900b06c1f3bcb8cb8ba82ffdc437..5a66a6191b62fce0cf20989bc42682959837fa79 100644 (file)
@@ -14,7 +14,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.0-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <scm>
@@ -32,7 +32,7 @@
 
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>distribution.p2site</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <build>
index 793e8356477476b20d89b92f45788c0b5dcf6a29..9955afa2749a921bfc45b7f2dd20e7c2fbea287b 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sanitytest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 8901c2e0b5777cb22c81e1431f3fa10498c746be..4195e53310a643b5dbf521621928f8a0da5098e0 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
   <artifactId>dummy-console</artifactId>
-  <version>1.1.0-SNAPSHOT</version>
+  <version>1.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <description>Dummy Console Interfaces for Equinox-specific CLI</description>
   <build>
index 37c0a3a09d1990d741ba0d9ea88c3b0a5621332a..b006cece40d6ca0603817c7a3f67beaed3a32f59 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>forwarding.staticrouting</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index b6e1dd68d1cf97a690f6d94d2b55d2a5d13ec327..3f667e16f08f3a1d9558f6af77379434c71124fa 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>forwardingrulesmanager</artifactId>
-  <version>0.6.0-SNAPSHOT</version>
+  <version>0.7.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index f87bed8780e003bf5eb7d70b43d8f848f28c62fe..959b71f855802aa17bc007315ed146b881093ad9 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>forwardingrulesmanager.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index ff0bfcc1ef8c18136ae16df68c48253df207824d..60b934a492f03bc0749cca246b2f346c2d13dadd 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>forwardingrulesmanager.integrationtest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <properties>
     <sonar.jacoco.itReportPath>../implementation/target/jacoco-it.exec</sonar.jacoco.itReportPath>
     <!-- Sonar jacoco plugin to get integration test coverage info -->
index b48d7abd7220323ac16104e6ba393a30e3852f92..10532baa6e2556cff8bba0478d84a19a0abf3a3e 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>hosttracker</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index cb09322b641acc460c4ae1e3a3023a756f50b05c..370f88defa378156eb7ce12780664c293e7d3796 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>hosttracker.implementation</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <properties>
index 65fc23265ae20be609dc2eb0fd6d079195183c54..dabccf3f7119742948c32d479ad22d2b48b465cd 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>hosttracker.integrationtest</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <properties>
     <sonar.jacoco.itReportPath>../implementaiton/target/jacoco-it.exec</sonar.jacoco.itReportPath>
     <!-- Sonar jacoco plugin to get integration test coverage info -->
index 3f73303180aece88ac15032b79f1cd825a9890e8..9088ae359b610808b2031e685e385639355bf187 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>hosttracker.shell</artifactId>
index 240976b9c8155ab183f158dc4e6a3f99b7cb7dce..db27345d1892601414d7668c5e7b813bd53de18b 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>hosttracker_new</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 036dd5dd3185a71e4f6989c313695d69ea2442d3..d3661a12c8841892675f6badeed8e6a9115525d4 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>hosttracker_new.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <properties>
index 722bdeaa8da130055e6a891dabf6b5011a68841c..dfdc3b76cbfd7ba3453e46e675534c5debaf72c6 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>releasepom</artifactId>
-    <version>0.1.2-SNAPSHOT</version>
+    <version>0.2.0-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>karaf.branding</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <name>OpenDaylight :: Karaf :: Branding</name>
 
index 817e0faeec5942b797fb8cc64458affe4044d053..30d57d048abff4a3baeb922cc6c58544d671321a 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>karaf-tomcat-security</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 82bc6cd9c1eabf251df853848a28e75996ded281..dc37e301791d22137ca359eb336e5430428ae850 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>logging.bridge</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencies>
index 1af2287a1015953cd5562c44415cc77b86fa1b06..ac384319b8bb64c90fdf23abebf32df7a70e2de8 100644 (file)
@@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <parent>
     <artifactId>sal-parent</artifactId>
     <groupId>org.opendaylight.controller</groupId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
index b9e9d19b48dce4eed7f5e42cc335588306ad1692..a7da4a1e9c21471e9201985d00cc16c982f08b91 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>compatibility-parent</artifactId>
   <packaging>pom</packaging>
index 168dd14d10e20aa54b08a30a5417ed94737810ff..32014decd51136c70f95ad6d8ff6cb64b10a91a3 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>compatibility-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-compatibility</artifactId>
   <packaging>bundle</packaging>
index 5a9b19021945b947e7601fbdaa82dd74676fbdc8..12458f5ab9de4c4defabb63d3ad7b99051a10361 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller.md</groupId>
   <artifactId>forwardingrules-manager</artifactId>
index 1706996ce4a301ef4564ac765032c608c39bea68..77e42032695d106f73d85f7921febb53763f3476 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller.md</groupId>
   <artifactId>inventory-manager</artifactId>
index 2e19b5a60c46f2d8d8ba5c08f7870a6e45d83558..bd1586054dac5418cfa19c9e7e30bde9c6417087 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>md-sal-config</artifactId>
   <description>Configuration files for md-sal</description>
index eb8d6a8ddbd460cad51efb4136de386181020b35..cad0e9ea93bde70b35430dd371c9c917130369b6 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.controller.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>model-flow-base</artifactId>
   <packaging>bundle</packaging>
index 0842bb450545e75d0dbed6917ab7d73ba73255f0..0f735d7f43fe4dc323e59e217ce679c963fa68b3 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.controller.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>model-flow-service</artifactId>
   <packaging>bundle</packaging>
index cd26e327819d9fe84cdb7d64262d849e6310bb34..7a53f062d7235ebf1fff214d6a5646c45a7c5c57 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.controller.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>model-flow-statistics</artifactId>
   <packaging>bundle</packaging>
index c2f4f70c40983e0eabc73642a68666921f75e0b1..00aa7761b9dfa6c10cc74ee501f66211935c94fc 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.controller.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>model-inventory</artifactId>
   <packaging>bundle</packaging>
index e87e4f180dbf7231a7fa832e2b262d86c7bd990a..09a063e88701c664e140ae3536b53e4cbc8e1a87 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.controller.model</groupId>
     <artifactId>model-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>model-topology</artifactId>
   <packaging>bundle</packaging>
index 5e6a86745c0ae09b9bd200a5d49f495aafeba276..3f389f32989a0d5cd9ef5128e7583a39848d2224 100644 (file)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller.model</groupId>
   <artifactId>model-parent</artifactId>
index a9c81b93536dccd22284debff0feccec7d9b9140..1f646f2bba20086997a8717a07f529ac5ed6c059 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal-parent</artifactId>
-  <version>1.1-SNAPSHOT</version>
+  <version>1.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <modules>
index e68e7815252f5326ba2af41eea0fc43ba826e87a..53353cded17e3abc57f21c3a3737b09cebb9dede 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-akka-raft</artifactId>
   <packaging>bundle</packaging>
@@ -13,7 +13,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>sal-clustering-commons</artifactId>
-      <version>1.1-SNAPSHOT</version>
+      <version>1.2.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>com.google.guava</groupId>
index 7f45fb458ba0c2cbf5ecadf67173809ab1ca6254..690957ed0ba4d2db27ca27aff18749a2c22eafe0 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-binding-api</artifactId>
   <packaging>bundle</packaging>
index 539f9d45c8b8c30ebfcde9da22229bd4c2a547ab..7482c52fdd005e531cf95a284cff87c5614b796b 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-binding-broker-impl</artifactId>
   <packaging>bundle</packaging>
@@ -70,7 +70,7 @@
     <dependency>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>binding-data-codec</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.yangtools</groupId>
index 2342745f92830782616920409c744764645da9c5..68af914f579e854014fbb60fe3b98db5f720582b 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-binding-config</artifactId>
   <packaging>bundle</packaging>
index 7a66c411962285efe2de6514b862f10670b9e296..fefd85b44b2888b2edde8108d6f67029c89bb8d8 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-binding-dom-it</artifactId>
   <packaging>jar</packaging>
@@ -52,7 +52,7 @@
       <dependency>
           <groupId>org.opendaylight.controller</groupId>
           <artifactId>sal-test-model</artifactId>
-          <version>1.1-SNAPSHOT</version>
+          <version>1.2.0-SNAPSHOT</version>
       </dependency>
   </dependencies>
   <build>
index 1912462cf0aa5d081ec56166d16b6256e69f7be8..009adb6d4a5ec20a2bc0c6ff4c2a5259fbabd6f1 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-binding-it</artifactId>
 
index 229c54f557c729d7c008d82a3e6f72b03be8ec96..efe2e845072310ac52c0e818ef2d44d7c66cd3d4 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-binding-util</artifactId>
   <packaging>bundle</packaging>
index d12f867ac5663b7637ecff59110dfbb0303798ec..54a1fe7a95d75ae31c84ed4dec696d886d2692d1 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>sal-clustering-commons</artifactId>
diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActorWithMetering.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/AbstractUntypedPersistentActorWithMetering.java
new file mode 100644 (file)
index 0000000..365a5bd
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * 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.common.actor;
+
+/**
+ * Actor with its behaviour metered. Metering is enabled by configuration.
+ */
+public abstract class AbstractUntypedPersistentActorWithMetering extends AbstractUntypedPersistentActor {
+
+    public AbstractUntypedPersistentActorWithMetering() {
+        if (isMetricsCaptureEnabled())
+            getContext().become(new MeteringBehavior(this));
+    }
+
+    private boolean isMetricsCaptureEnabled(){
+        CommonConfig config = new CommonConfig(getContext().system().settings().config());
+        return config.isMetricCaptureEnabled();
+    }
+}
index 4e76e37fa25c179ac3f2b196f97ee389261a8c97..6669e48627b6b782327684fcc9a13818b867816a 100644 (file)
 
 package org.opendaylight.controller.cluster.datastore.node;
 
-import org.opendaylight.controller.cluster.datastore.node.utils.PathUtils;
 import org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeSerializer;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeSerializer.DeSerializer;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeSerializer.Serializer;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.Container;
+import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 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;
 
 public class NormalizedNodeToNodeCodec {
+    public interface Encoded {
+        NormalizedNodeMessages.Container getEncodedNode();
+
+        NormalizedNodeMessages.InstanceIdentifier getEncodedPath();
+    }
+
+    public interface Decoded {
+        NormalizedNode<?,?> getDecodedNode();
+
+        YangInstanceIdentifier getDecodedPath();
+    }
+
     private final SchemaContext ctx;
-    private static final Logger logger = LoggerFactory.getLogger(NormalizedNodeToNodeCodec.class);
 
     public NormalizedNodeToNodeCodec(final SchemaContext ctx){
         this.ctx = ctx;
+    }
 
+    public NormalizedNodeMessages.Container encode(NormalizedNode<?,?> node){
+        return encode(null, node).getEncodedNode();
     }
 
-    public NormalizedNodeMessages.Container encode(YangInstanceIdentifier id, NormalizedNode node){
+    public Encoded encode(YangInstanceIdentifier path, NormalizedNode<?,?> node) {
+
+        NormalizedNodeMessages.InstanceIdentifier serializedPath = null;
 
         NormalizedNodeMessages.Container.Builder builder = NormalizedNodeMessages.Container.newBuilder();
-        String parentPath = "";
 
-        if(id != null){
-            parentPath = PathUtils.getParentPath(PathUtils.toString(id));
-        }
+        // Note: parent path is no longer used
+        builder.setParentPath("");
 
-        builder.setParentPath(parentPath);
         if(node != null) {
-            builder.setNormalizedNode(NormalizedNodeSerializer.serialize(node));
+            if(path == null) {
+                builder.setNormalizedNode(NormalizedNodeSerializer.serialize(node));
+            } else {
+                Serializer serializer = NormalizedNodeSerializer.newSerializer(node);
+                builder.setNormalizedNode(serializer.serialize(path));
+                serializedPath = serializer.getSerializedPath();
+            }
         }
 
-        return builder.build();
+        return new EncodedImpl(builder.build(), serializedPath);
+    }
+
+
+    public NormalizedNode<?,?> decode(NormalizedNodeMessages.Node node){
+        return decode(null, node).getDecodedNode();
     }
 
-    public NormalizedNode<?,?> decode(YangInstanceIdentifier id, NormalizedNodeMessages.Node node){
+    public Decoded decode(NormalizedNodeMessages.InstanceIdentifier path,
+            NormalizedNodeMessages.Node node) {
         if(node.getIntType() < 0 || node.getSerializedSize() == 0){
-            return null;
+            return new DecodedImpl(null, null);
         }
-        return NormalizedNodeSerializer.deSerialize(node);
+
+        DeSerializer deSerializer = NormalizedNodeSerializer.newDeSerializer(path, node);
+        NormalizedNode<?,?> decodedNode = deSerializer.deSerialize();
+        return new DecodedImpl(decodedNode, deSerializer.getDeserializedPath());
     }
 
+    private static class DecodedImpl implements Decoded {
+
+        private final NormalizedNode<?, ?> decodedNode;
+        private final YangInstanceIdentifier decodedPath;
 
+        public DecodedImpl(NormalizedNode<?, ?> decodedNode, YangInstanceIdentifier decodedPath) {
+            this.decodedNode = decodedNode;
+            this.decodedPath = decodedPath;
+        }
+
+        @Override
+        public NormalizedNode<?, ?> getDecodedNode() {
+            return decodedNode;
+        }
+
+        @Override
+        public YangInstanceIdentifier getDecodedPath() {
+            return decodedPath;
+        }
+    }
+
+    private static class EncodedImpl implements Encoded {
+
+        private final Container encodedNode;
+        private final InstanceIdentifier encodedPath;
+
+        EncodedImpl(Container encodedNode, InstanceIdentifier encodedPath) {
+            this.encodedNode = encodedNode;
+            this.encodedPath = encodedPath;
+        }
+
+        @Override
+        public Container getEncodedNode() {
+            return encodedNode;
+        }
+
+        @Override
+        public InstanceIdentifier getEncodedPath() {
+            return encodedPath;
+        }
+    }
 }
index 25b65f01681ac4b9dcaa6354ec001c85bc531981..6cdddfd2716c1cf0e008f47853877174ba61d4b3 100644 (file)
@@ -20,23 +20,6 @@ import java.util.Set;
 
 public class PathUtils {
 
-    public static String getParentPath(String currentElementPath){
-        StringBuilder parentPath = new StringBuilder();
-
-        if(currentElementPath != null){
-            String[] parentPaths = currentElementPath.split("/");
-            if(parentPaths.length > 2){
-                for(int i=0;i<parentPaths.length-1;i++){
-                    if(parentPaths[i].length() > 0){
-                        parentPath.append("/");
-                        parentPath.append(parentPaths[i]);
-                    }
-                }
-            }
-        }
-        return parentPath.toString();
-    }
-
     /**
      * Given a YangInstanceIdentifier return a serialized version of the same
      * as a String
index 660bc28e6265047bc130a1bd4b117a741de6c2ef..192070252779d5c49df5c944721d9dfb5783d1a7 100644 (file)
@@ -8,15 +8,9 @@
 
 package org.opendaylight.controller.cluster.datastore.node.utils.serialization;
 
-import java.net.URI;
-import java.util.Date;
-
 /**
  * NormalizedNodeSerializationContext provides methods which help in encoding
  * certain components of a NormalizedNode properly
  */
 public interface NormalizedNodeSerializationContext {
-    int addNamespace(URI namespace);
-    int addRevision(Date revision);
-    int addLocalName(String localName);
 }
index 44da4a56683558e9b15b8a1e94d1af8c10d1a3df..15d51e1d80aed557a98279e606aba21d2034fde9 100644 (file)
@@ -9,9 +9,9 @@
 package org.opendaylight.controller.cluster.datastore.node.utils.serialization;
 
 import com.google.common.base.Preconditions;
-
+import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.Node.Builder;
 import org.opendaylight.yangtools.yang.data.api.Node;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
@@ -33,15 +33,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Date;
 import java.util.EnumMap;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
-
 import static org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeType.ANY_XML_NODE_TYPE;
 import static org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeType.AUGMENTATION_NODE_TYPE;
 import static org.opendaylight.controller.cluster.datastore.node.utils.serialization.NormalizedNodeType.CHOICE_NODE_TYPE;
@@ -93,6 +86,10 @@ public class NormalizedNodeSerializer {
         return new Serializer(node).serialize();
     }
 
+    public static Serializer newSerializer(NormalizedNode node) {
+        Preconditions.checkNotNull(node, "node should not be null");
+        return new Serializer(node);
+    }
 
     /**
      * DeSerialize a protocol buffer message back into a NormalizedNode
@@ -100,8 +97,15 @@ public class NormalizedNodeSerializer {
      * @param node
      * @return
      */
-    public static NormalizedNode deSerialize(NormalizedNodeMessages.Node node){
-        return new DeSerializer(node).deSerialize();
+    public static NormalizedNode deSerialize(NormalizedNodeMessages.Node node) {
+        Preconditions.checkNotNull(node, "node should not be null");
+        return new DeSerializer(null, node).deSerialize();
+    }
+
+    public static DeSerializer newDeSerializer(NormalizedNodeMessages.InstanceIdentifier path,
+            NormalizedNodeMessages.Node node) {
+        Preconditions.checkNotNull(node, "node should not be null");
+        return new DeSerializer(path, node);
     }
 
     /**
@@ -117,25 +121,36 @@ public class NormalizedNodeSerializer {
      * @param pathArgument
      * @return
      */
-    public static YangInstanceIdentifier.PathArgument deSerialize(NormalizedNodeMessages.Node node, NormalizedNodeMessages.PathArgument pathArgument){
+    public static YangInstanceIdentifier.PathArgument deSerialize(NormalizedNodeMessages.Node node,
+            NormalizedNodeMessages.PathArgument pathArgument){
         Preconditions.checkNotNull(node, "node should not be null");
         Preconditions.checkNotNull(pathArgument, "pathArgument should not be null");
-        return new DeSerializer(node).deSerialize(pathArgument);
+        return new DeSerializer(null, node).deSerialize(pathArgument);
     }
 
-    private static class Serializer implements NormalizedNodeSerializationContext {
+    public static class Serializer extends QNameSerializationContextImpl
+                                   implements NormalizedNodeSerializationContext {
 
         private final NormalizedNode node;
 
-        private final Map<Object, Integer> codeMap = new HashMap<>();
-        private final List<String> codes = new ArrayList<>();
+        private NormalizedNodeMessages.InstanceIdentifier serializedPath;
 
         private Serializer(NormalizedNode node) {
             this.node = node;
         }
 
-        private NormalizedNodeMessages.Node serialize() {
-            return this.serialize(node).addAllCode(codes).build();
+        public NormalizedNodeMessages.InstanceIdentifier getSerializedPath() {
+            return serializedPath;
+        }
+
+        public NormalizedNodeMessages.Node serialize() {
+            return this.serialize(node).addAllCode(getCodes()).build();
+        }
+
+        public NormalizedNodeMessages.Node serialize(YangInstanceIdentifier path) {
+            Builder builder = serialize(node);
+            serializedPath = InstanceIdentifierUtils.toSerializable(path, this);
+            return builder.addAllCode(getCodes()).build();
         }
 
         private NormalizedNodeMessages.Node.Builder serialize(
@@ -183,56 +198,10 @@ public class NormalizedNodeSerializer {
 
             return builder;
         }
-
-
-        @Override public int addNamespace(URI namespace) {
-            int namespaceInt = getCode(namespace);
-
-            if(namespaceInt == -1) {
-                namespaceInt = addCode(namespace, namespace.toString());
-            }
-            return namespaceInt;
-        }
-
-        @Override public int addRevision(Date revision) {
-            if(revision == null){
-                return -1;
-            }
-
-            int revisionInt = getCode(revision);
-            if(revisionInt == -1) {
-                String formattedRevision =
-                    SimpleDateFormatUtil.getRevisionFormat().format(revision);
-                revisionInt = addCode(revision, formattedRevision);
-            }
-            return revisionInt;
-        }
-
-        @Override public int addLocalName(String localName) {
-            int localNameInt = getCode(localName);
-            if(localNameInt == -1) {
-                localNameInt = addCode(localName, localName.toString());
-            }
-            return localNameInt;
-
-        }
-
-        public int addCode(Object code, String codeStr){
-            int count = codes.size();
-            codes.add(codeStr);
-            codeMap.put(code, Integer.valueOf(count));
-            return count;
-        }
-
-        public int getCode(Object code){
-            if(codeMap.containsKey(code)){
-                return codeMap.get(code);
-            }
-            return -1;
-        }
     }
 
-    private static class DeSerializer implements NormalizedNodeDeSerializationContext {
+    public static class DeSerializer extends QNameDeSerializationContextImpl
+                                     implements NormalizedNodeDeSerializationContext {
         private static Map<NormalizedNodeType, DeSerializationFunction>
             deSerializationFunctions = new EnumMap<>(NormalizedNodeType.class);
 
@@ -438,13 +407,27 @@ public class NormalizedNodeSerializer {
         }
 
         private final NormalizedNodeMessages.Node node;
+        private final NormalizedNodeMessages.InstanceIdentifier path;
+        private YangInstanceIdentifier deserializedPath;
 
-        public DeSerializer(NormalizedNodeMessages.Node node){
+        public DeSerializer(NormalizedNodeMessages.InstanceIdentifier path,
+                NormalizedNodeMessages.Node node) {
+            super(node.getCodeList());
+            this.path = path;
             this.node = node;
         }
 
-        public NormalizedNode deSerialize(){
-            return deSerialize(node);
+        public YangInstanceIdentifier getDeserializedPath() {
+            return deserializedPath;
+        }
+
+        public NormalizedNode deSerialize() {
+            NormalizedNode deserializedNode = deSerialize(node);
+            if(path != null) {
+                deserializedPath = InstanceIdentifierUtils.fromSerializable(path, this);
+            }
+
+            return deserializedNode;
         }
 
         private NormalizedNode deSerialize(NormalizedNodeMessages.Node node){
@@ -526,18 +509,6 @@ public class NormalizedNodeSerializer {
                 this, path);
         }
 
-        @Override public String getNamespace(int namespace) {
-            return node.getCode(namespace);
-        }
-
-        @Override public String getRevision(int revision) {
-            return node.getCode(revision);
-        }
-
-        @Override public String getLocalName(int localName) {
-            return node.getCode(localName);
-        }
-
         public YangInstanceIdentifier.PathArgument deSerialize(
             NormalizedNodeMessages.PathArgument pathArgument) {
             return PathArgumentSerializer.deSerialize(this, pathArgument);
index eebd58013ab0ed62897d575b9c82535733a311b8..2d6d738b76b981c2aad11eef308edcfe2d2434e5 100644 (file)
@@ -42,20 +42,20 @@ public enum NormalizedNodeType {
     public static NormalizedNodeType getSerializableNodeType(NormalizedNode node){
         Preconditions.checkNotNull(node, "node should not be null");
 
-        if(node instanceof ContainerNode){
-            return CONTAINER_NODE_TYPE;
-        } else if(node instanceof LeafNode){
+        if(node instanceof LeafNode){
             return LEAF_NODE_TYPE;
-        } else if(node instanceof MapNode){
-            return MAP_NODE_TYPE;
+        } else if(node instanceof LeafSetEntryNode){
+            return LEAF_SET_ENTRY_NODE_TYPE;
         } else if(node instanceof MapEntryNode){
             return MAP_ENTRY_NODE_TYPE;
+        } else if(node instanceof ContainerNode){
+            return CONTAINER_NODE_TYPE;
+        } else if(node instanceof MapNode){
+            return MAP_NODE_TYPE;
         } else if(node instanceof AugmentationNode){
             return AUGMENTATION_NODE_TYPE;
         } else if(node instanceof LeafSetNode){
             return LEAF_SET_NODE_TYPE;
-        } else if(node instanceof LeafSetEntryNode){
-            return LEAF_SET_ENTRY_NODE_TYPE;
         } else if(node instanceof ChoiceNode){
             return CHOICE_NODE_TYPE;
         } else if(node instanceof OrderedLeafSetNode){
@@ -69,6 +69,7 @@ public enum NormalizedNodeType {
         } else if(node instanceof AnyXmlNode){
             return ANY_XML_NODE_TYPE;
         }
+
         throw new IllegalArgumentException("Node type unknown : " + node.getClass().getSimpleName());
     }
 
index 4fb676e5189bcb70158cccd1a563f3e54ba36405..bf10316fd5d8b795154a1caf6d827e1e911d1d5c 100644 (file)
@@ -9,28 +9,28 @@
 package org.opendaylight.controller.cluster.datastore.node.utils.serialization;
 
 import com.google.common.base.Preconditions;
-
 import org.opendaylight.controller.cluster.datastore.node.utils.NodeIdentifierFactory;
 import org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
 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.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
-
 import static org.opendaylight.controller.cluster.datastore.node.utils.serialization.PathArgumentType.getSerializablePathArgumentType;
 
 public class PathArgumentSerializer {
     private static final String REVISION_ARG = "?revision=";
-    private static final Map<Class, PathArgumentAttributesGetter> pathArgumentAttributesGetters = new HashMap<>();
+    private static final Map<Class<?>, PathArgumentAttributesGetter> pathArgumentAttributesGetters = new HashMap<>();
 
-    public static NormalizedNodeMessages.PathArgument serialize(NormalizedNodeSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument){
+    public static NormalizedNodeMessages.PathArgument serialize(QNameSerializationContext context,
+            YangInstanceIdentifier.PathArgument pathArgument){
         Preconditions.checkNotNull(context, "context should not be null");
         Preconditions.checkNotNull(pathArgument, "pathArgument should not be null");
 
@@ -53,7 +53,8 @@ public class PathArgumentSerializer {
     }
 
 
-    public static YangInstanceIdentifier.PathArgument deSerialize(NormalizedNodeDeSerializationContext context, NormalizedNodeMessages.PathArgument pathArgument){
+    public static YangInstanceIdentifier.PathArgument deSerialize(QNameDeSerializationContext context,
+            NormalizedNodeMessages.PathArgument pathArgument){
         Preconditions.checkNotNull(context, "context should not be null");
         Preconditions.checkNotNull(pathArgument, "pathArgument should not be null");
 
@@ -62,18 +63,15 @@ public class PathArgumentSerializer {
 
 
     private static interface PathArgumentAttributesGetter {
-        Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> get(NormalizedNodeSerializationContext context,
-            YangInstanceIdentifier.PathArgument pathArgument);
+        Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> get(
+                QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument);
     }
 
     static {
         pathArgumentAttributesGetters.put(YangInstanceIdentifier.NodeWithValue.class, new PathArgumentAttributesGetter() {
             @Override
             public Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> get(
-                NormalizedNodeSerializationContext context,
-                YangInstanceIdentifier.PathArgument pathArgument) {
-                List<NormalizedNodeMessages.PathArgumentAttribute> attributes =
-                    new ArrayList<>();
+                    QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) {
 
                 YangInstanceIdentifier.NodeWithValue identifier
                     = (YangInstanceIdentifier.NodeWithValue) pathArgument;
@@ -81,62 +79,52 @@ public class PathArgumentSerializer {
                 NormalizedNodeMessages.PathArgumentAttribute attribute =
                     buildAttribute(context, null, identifier.getValue());
 
-                attributes.add(attribute);
-
-                return attributes;
-
+                return Arrays.asList(attribute);
             }
         });
 
         pathArgumentAttributesGetters.put(YangInstanceIdentifier.NodeIdentifierWithPredicates.class, new PathArgumentAttributesGetter() {
             @Override
             public Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> get(
-                NormalizedNodeSerializationContext context,
-                YangInstanceIdentifier.PathArgument pathArgument) {
-
-                List<NormalizedNodeMessages.PathArgumentAttribute> attributes =
-                    new ArrayList<>();
+                    QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) {
 
                 YangInstanceIdentifier.NodeIdentifierWithPredicates identifier
                     = (YangInstanceIdentifier.NodeIdentifierWithPredicates) pathArgument;
 
-                for (QName key : identifier.getKeyValues().keySet()) {
-                    Object value = identifier.getKeyValues().get(key);
+                Map<QName, Object> keyValues = identifier.getKeyValues();
+                List<NormalizedNodeMessages.PathArgumentAttribute> attributes =
+                        new ArrayList<>(keyValues.size());
+                for (Entry<QName, Object> e : keyValues.entrySet()) {
                     NormalizedNodeMessages.PathArgumentAttribute attribute =
-                        buildAttribute(context, key, value);
+                        buildAttribute(context, e.getKey(), e.getValue());
 
                     attributes.add(attribute);
-
                 }
 
                 return attributes;
-
             }
         });
 
         pathArgumentAttributesGetters.put(YangInstanceIdentifier.AugmentationIdentifier.class, new PathArgumentAttributesGetter() {
             @Override
             public Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> get(
-                NormalizedNodeSerializationContext context,
-                YangInstanceIdentifier.PathArgument pathArgument) {
-
-                List<NormalizedNodeMessages.PathArgumentAttribute> attributes =
-                    new ArrayList<>();
+                    QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) {
 
                 YangInstanceIdentifier.AugmentationIdentifier identifier
                     = (YangInstanceIdentifier.AugmentationIdentifier) pathArgument;
 
-                for (QName key : identifier.getPossibleChildNames()) {
+                Set<QName> possibleChildNames = identifier.getPossibleChildNames();
+                List<NormalizedNodeMessages.PathArgumentAttribute> attributes =
+                        new ArrayList<>(possibleChildNames.size());
+                for (QName key : possibleChildNames) {
                     Object value = key;
                     NormalizedNodeMessages.PathArgumentAttribute attribute =
                         buildAttribute(context, key, value);
 
                     attributes.add(attribute);
-
                 }
 
                 return attributes;
-
             }
         });
 
@@ -144,14 +132,14 @@ public class PathArgumentSerializer {
         pathArgumentAttributesGetters.put(YangInstanceIdentifier.NodeIdentifier.class, new PathArgumentAttributesGetter() {
             @Override
             public Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> get(
-                NormalizedNodeSerializationContext context,
-                YangInstanceIdentifier.PathArgument pathArgument) {
+                    QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) {
                 return Collections.emptyList();
             }
         });
     }
 
-    private static NormalizedNodeMessages.PathArgumentAttribute buildAttribute(NormalizedNodeSerializationContext context,QName name, Object value){
+    private static NormalizedNodeMessages.PathArgumentAttribute buildAttribute(
+            QNameSerializationContext context, QName name, Object value) {
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder =
             NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
@@ -162,8 +150,9 @@ public class PathArgumentSerializer {
 
     }
 
-    private static NormalizedNodeMessages.QName.Builder encodeQName(NormalizedNodeSerializationContext context, QName qName){
-        if(qName == null){
+    private static NormalizedNodeMessages.QName.Builder encodeQName(QNameSerializationContext context,
+            QName qName) {
+        if(qName == null) {
             return NormalizedNodeMessages.QName.getDefaultInstance().toBuilder();
         }
         NormalizedNodeMessages.QName.Builder qNameBuilder =
@@ -179,15 +168,13 @@ public class PathArgumentSerializer {
     }
 
     private static Iterable<? extends NormalizedNodeMessages.PathArgumentAttribute> getPathArgumentAttributes(
-            NormalizedNodeSerializationContext context,
-            YangInstanceIdentifier.PathArgument pathArgument) {
+            QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) {
 
         return pathArgumentAttributesGetters.get(pathArgument.getClass()).get(context, pathArgument);
-
     }
 
 
-    private static String qNameToString(NormalizedNodeDeSerializationContext context,
+    private static String qNameToString(QNameDeSerializationContext context,
         NormalizedNodeMessages.QName qName){
         // If this serializer is used qName cannot be null (see encodeQName)
         // adding null check only in case someone tried to deSerialize a protocol buffer node
@@ -219,8 +206,7 @@ public class PathArgumentSerializer {
      * @return MD-SAL PathArgument
      */
     private static YangInstanceIdentifier.PathArgument parsePathArgument(
-        NormalizedNodeDeSerializationContext context,
-        NormalizedNodeMessages.PathArgument pathArgument) {
+            QNameDeSerializationContext context, NormalizedNodeMessages.PathArgument pathArgument) {
 
         switch(PathArgumentType.values()[pathArgument.getIntType()]){
             case NODE_IDENTIFIER_WITH_VALUE : {
@@ -264,8 +250,8 @@ public class PathArgumentSerializer {
     }
 
     private static Map<QName, Object> toAttributesMap(
-        NormalizedNodeDeSerializationContext context,
-        List<NormalizedNodeMessages.PathArgumentAttribute> attributesList) {
+            QNameDeSerializationContext context,
+            List<NormalizedNodeMessages.PathArgumentAttribute> attributesList) {
 
         Map<QName, Object> map;
         if(attributesList.size() == 1) {
@@ -287,7 +273,8 @@ public class PathArgumentSerializer {
         return map;
     }
 
-    private static Object parseAttribute(NormalizedNodeDeSerializationContext context, NormalizedNodeMessages.PathArgumentAttribute attribute){
+    private static Object parseAttribute(QNameDeSerializationContext context,
+            NormalizedNodeMessages.PathArgumentAttribute attribute){
         return ValueSerializer.deSerialize(context, attribute);
     }
 
index 20009d8347564c59d6f98ff537324938f6168a87..58a09ae88599204a4414f9844db1bb57e032be32 100644 (file)
@@ -8,8 +8,9 @@
 
 package org.opendaylight.controller.cluster.datastore.node.utils.serialization;
 
-import com.google.common.base.Preconditions;
+import java.util.Map;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import com.google.common.collect.ImmutableMap;
 
 public enum PathArgumentType {
     AUGMENTATION_IDENTIFIER,
@@ -17,19 +18,21 @@ public enum PathArgumentType {
     NODE_IDENTIFIER_WITH_VALUE,
     NODE_IDENTIFIER_WITH_PREDICATES;
 
+    private static Map<Class<?>, PathArgumentType> CLASS_TO_ENUM_MAP =
+            ImmutableMap.<Class<?>, PathArgumentType>builder().
+                put(YangInstanceIdentifier.AugmentationIdentifier.class, AUGMENTATION_IDENTIFIER).
+                put(YangInstanceIdentifier.NodeIdentifier.class, NODE_IDENTIFIER).
+                put(YangInstanceIdentifier.NodeIdentifierWithPredicates.class, NODE_IDENTIFIER_WITH_PREDICATES).
+                put(YangInstanceIdentifier.NodeWithValue.class, NODE_IDENTIFIER_WITH_VALUE).build();
+
     public static int getSerializablePathArgumentType(YangInstanceIdentifier.PathArgument pathArgument){
-        Preconditions.checkNotNull(pathArgument, "pathArgument should not be null");
-
-        if(pathArgument instanceof YangInstanceIdentifier.AugmentationIdentifier){
-            return AUGMENTATION_IDENTIFIER.ordinal();
-        } else if(pathArgument instanceof YangInstanceIdentifier.NodeIdentifier){
-            return NODE_IDENTIFIER.ordinal();
-        } else if(pathArgument instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates){
-            return NODE_IDENTIFIER_WITH_PREDICATES.ordinal();
-        } else if(pathArgument instanceof YangInstanceIdentifier.NodeWithValue){
-            return NODE_IDENTIFIER_WITH_VALUE.ordinal();
+
+        PathArgumentType type = CLASS_TO_ENUM_MAP.get(pathArgument.getClass());
+        if(type == null) {
+            throw new IllegalArgumentException("Unknown type of PathArgument = " + pathArgument);
         }
-        throw new IllegalArgumentException("Unknown type of PathArgument = " + pathArgument.toString());
+
+        return type.ordinal();
     }
 
 }
diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameDeSerializationContext.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameDeSerializationContext.java
new file mode 100644 (file)
index 0000000..ca9ead7
--- /dev/null
@@ -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.node.utils.serialization;
+
+/**
+ * Interface that provides methods which help in decoding components of a QName.
+ *
+ * @author Thomas Pantelis
+ */
+public interface QNameDeSerializationContext {
+    String getNamespace(int namespace);
+
+    String getRevision(int revision);
+
+    String getLocalName(int localName);
+}
diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameDeSerializationContextImpl.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameDeSerializationContextImpl.java
new file mode 100644 (file)
index 0000000..ac3d362
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * 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.node.utils.serialization;
+
+import java.util.List;
+
+/**
+ * Implementation of the QNameDeSerializationContext interface.
+ *
+ * @author Thomas Pantelis
+ */
+public class QNameDeSerializationContextImpl implements QNameDeSerializationContext {
+
+    private final List<String> codeList;
+
+    public QNameDeSerializationContextImpl(List<String> codeList) {
+        this.codeList = codeList;
+    }
+
+    @Override
+    public String getNamespace(int namespace) {
+        return codeList.get(namespace);
+    }
+
+    @Override
+    public String getRevision(int revision) {
+        return codeList.get(revision);
+    }
+
+    @Override
+    public String getLocalName(int localName) {
+        return codeList.get(localName);
+    }
+}
diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameSerializationContext.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameSerializationContext.java
new file mode 100644 (file)
index 0000000..9096add
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * 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.node.utils.serialization;
+
+import java.net.URI;
+import java.util.Date;
+
+/**
+ * Interface that provides methods which help in encoding components of a QName.
+ *
+ * @author Thomas Pantelis
+ */
+public interface QNameSerializationContext {
+    int addNamespace(URI namespace);
+
+    int addRevision(Date revision);
+
+    int addLocalName(String localName);
+
+}
diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameSerializationContextImpl.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/QNameSerializationContextImpl.java
new file mode 100644 (file)
index 0000000..09fe2ef
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * 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.node.utils.serialization;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+
+/**
+ * Implementation of the QNameSerializationContext interface.
+ *
+ * @author Thomas Pantelis
+ */
+public class QNameSerializationContextImpl implements QNameSerializationContext {
+
+    private final Map<Object, Integer> codeMap = new HashMap<>();
+    private final List<String> codes = new ArrayList<>();
+
+    public List<String> getCodes() {
+        return codes;
+    }
+
+    @Override public int addNamespace(URI namespace) {
+        int namespaceInt = getCode(namespace);
+
+        if(namespaceInt == -1) {
+            namespaceInt = addCode(namespace, namespace.toString());
+        }
+        return namespaceInt;
+    }
+
+    @Override public int addRevision(Date revision) {
+        if(revision == null){
+            return -1;
+        }
+
+        int revisionInt = getCode(revision);
+        if(revisionInt == -1) {
+            String formattedRevision =
+                SimpleDateFormatUtil.getRevisionFormat().format(revision);
+            revisionInt = addCode(revision, formattedRevision);
+        }
+        return revisionInt;
+    }
+
+    @Override public int addLocalName(String localName) {
+        int localNameInt = getCode(localName);
+        if(localNameInt == -1) {
+            localNameInt = addCode(localName, localName);
+        }
+        return localNameInt;
+
+    }
+
+    private int addCode(Object code, String codeStr){
+        int count = codes.size();
+        codes.add(codeStr);
+        codeMap.put(code, Integer.valueOf(count));
+        return count;
+    }
+
+    private int getCode(Object code){
+        Integer value = codeMap.get(code);
+        return value == null ? -1 : value.intValue();
+    }
+}
index 8def754f117792ef8e02f327455a9aa54785cf3f..6a843f57c7718fb76911e90649b7194e3b6db0bb 100644 (file)
@@ -20,12 +20,12 @@ import java.util.Set;
 
 public class ValueSerializer {
     public static void serialize(NormalizedNodeMessages.Node.Builder builder,
-        NormalizedNodeSerializationContext context, Object value){
+            QNameSerializationContext context, Object value) {
         builder.setIntValueType(ValueType.getSerializableType(value).ordinal());
 
         if(value instanceof YangInstanceIdentifier) {
             builder.setInstanceIdentifierValue(
-                InstanceIdentifierUtils.toSerializable((YangInstanceIdentifier) value));
+                InstanceIdentifierUtils.toSerializable((YangInstanceIdentifier) value, context));
         } else if(value instanceof Set) {
             Set set = (Set) value;
             if(!set.isEmpty()){
@@ -44,26 +44,25 @@ public class ValueSerializer {
     }
 
     public static void serialize(NormalizedNodeMessages.PathArgumentAttribute.Builder builder,
-        NormalizedNodeSerializationContext context, Object value){
+            QNameSerializationContext context, Object value){
 
         builder.setType(ValueType.getSerializableType(value).ordinal());
         builder.setValue(value.toString());
     }
 
-    public static Object deSerialize(
-        NormalizedNodeDeSerializationContext context, NormalizedNodeMessages.Node node) {
+    public static Object deSerialize(QNameDeSerializationContext context,
+            NormalizedNodeMessages.Node node) {
         if(node.getIntValueType() == ValueType.YANG_IDENTIFIER_TYPE.ordinal()){
             return InstanceIdentifierUtils.fromSerializable(
-                node.getInstanceIdentifierValue());
+                    node.getInstanceIdentifierValue(), context);
         } else if(node.getIntValueType() == ValueType.BITS_TYPE.ordinal()){
             return new HashSet(node.getBitsValueList());
         }
         return deSerializeBasicTypes(node.getIntValueType(), node.getValue());
     }
 
-    public static Object deSerialize(
-        NormalizedNodeDeSerializationContext context,
-        NormalizedNodeMessages.PathArgumentAttribute attribute) {
+    public static Object deSerialize(QNameDeSerializationContext context,
+            NormalizedNodeMessages.PathArgumentAttribute attribute) {
         return deSerializeBasicTypes(attribute.getType(), attribute.getValue());
     }
 
index 0bb0d4fe8798b8623dc433d659f6ea550096c41e..64a1e3a18a4a89fb2af3c681a93834d9eeb1589d 100644 (file)
@@ -12,12 +12,17 @@ package org.opendaylight.controller.cluster.datastore.util;
 
 import org.opendaylight.controller.cluster.datastore.node.utils.NodeIdentifierFactory;
 import org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.PathArgumentSerializer;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContext;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContextImpl;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameSerializationContext;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameSerializationContextImpl;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.InstanceIdentifier.Builder;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -41,61 +46,54 @@ public class InstanceIdentifierUtils {
     protected static final Logger logger = LoggerFactory
         .getLogger(InstanceIdentifierUtils.class);
 
-    @Deprecated
-    public static YangInstanceIdentifier from(String path) {
-        String[] ids = path.split("/");
-
-        List<YangInstanceIdentifier.PathArgument> pathArguments =
-            new ArrayList<>();
-        for (String nodeId : ids) {
-            if (!"".equals(nodeId)) {
-                pathArguments
-                    .add(NodeIdentifierFactory.getArgument(nodeId));
-            }
-        }
-        final YangInstanceIdentifier instanceIdentifier =
-            YangInstanceIdentifier.create(pathArguments);
-        return instanceIdentifier;
-    }
-
-
     /**
      * Convert an MD-SAL YangInstanceIdentifier into a protocol buffer version of it
      *
      * @param path an MD-SAL YangInstanceIdentifier
      * @return a protocol buffer version of the MD-SAL YangInstanceIdentifier
      */
-    public static NormalizedNodeMessages.InstanceIdentifier toSerializable(YangInstanceIdentifier path){
+    public static NormalizedNodeMessages.InstanceIdentifier toSerializable(YangInstanceIdentifier path) {
+        QNameSerializationContextImpl context = new QNameSerializationContextImpl();
+        Builder builder = toSerializableBuilder(path, context);
+        return builder.addAllCode(context.getCodes()).build();
+    }
+
+    public static NormalizedNodeMessages.InstanceIdentifier toSerializable(
+            YangInstanceIdentifier path, QNameSerializationContext context) {
+        return toSerializableBuilder(path, context).build();
+    }
+
+    private static NormalizedNodeMessages.InstanceIdentifier.Builder toSerializableBuilder(
+            YangInstanceIdentifier path, QNameSerializationContext context) {
         NormalizedNodeMessages.InstanceIdentifier.Builder builder =
             NormalizedNodeMessages.InstanceIdentifier.newBuilder();
 
         try {
-
-            for (org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument pathArgument : path
-                .getPathArguments()) {
-
-                String nodeType = "";
-                if(!(pathArgument instanceof YangInstanceIdentifier.AugmentationIdentifier)){
-                    nodeType = pathArgument.getNodeType().toString();
+            for (org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.
+                                            PathArgument pathArgument : path.getPathArguments()) {
+                NormalizedNodeMessages.PathArgument serializablePathArgument;
+                if(context == null) {
+                    String nodeType = "";
+                    if(!(pathArgument instanceof YangInstanceIdentifier.AugmentationIdentifier)){
+                        nodeType = pathArgument.getNodeType().toString();
+                    }
+
+                    serializablePathArgument = NormalizedNodeMessages.PathArgument.newBuilder()
+                            .setValue(pathArgument.toString())
+                            .setType(pathArgument.getClass().getSimpleName())
+                            .setNodeType(NormalizedNodeMessages.QName.newBuilder().setValue(nodeType))
+                            .addAllAttributes(getPathArgumentAttributes(pathArgument)).build();
+                } else {
+                    serializablePathArgument = PathArgumentSerializer.serialize(context, pathArgument);
                 }
 
-                NormalizedNodeMessages.PathArgument serializablePathArgument =
-                    NormalizedNodeMessages.PathArgument.newBuilder()
-                        .setValue(pathArgument.toString())
-                        .setType(pathArgument.getClass().getSimpleName())
-                        .setNodeType(NormalizedNodeMessages.QName.newBuilder()
-                            .setValue(nodeType))
-                        .addAllAttributes(getPathArgumentAttributes(
-                            pathArgument))
-                        .build();
-
                 builder.addArguments(serializablePathArgument);
             }
-
         } catch(Exception e){
             logger.error("An exception occurred", e);
         }
-        return builder.build();
+
+        return builder;
     }
 
 
@@ -106,21 +104,24 @@ public class InstanceIdentifierUtils {
      * @param path a protocol buffer version of the MD-SAL YangInstanceIdentifier
      * @return  an MD-SAL YangInstanceIdentifier
      */
-    public static YangInstanceIdentifier fromSerializable(NormalizedNodeMessages.InstanceIdentifier path){
-
-        List<YangInstanceIdentifier.PathArgument> pathArguments =
-            new ArrayList<>();
+    public static YangInstanceIdentifier fromSerializable(NormalizedNodeMessages.InstanceIdentifier path) {
+        return fromSerializable(path, new QNameDeSerializationContextImpl(path.getCodeList()));
+    }
 
-        for(NormalizedNodeMessages.PathArgument pathArgument : path.getArgumentsList()){
+    public static YangInstanceIdentifier fromSerializable(NormalizedNodeMessages.InstanceIdentifier path,
+            QNameDeSerializationContext context) {
 
-            pathArguments
-                .add(parsePathArgument(pathArgument));
+        List<YangInstanceIdentifier.PathArgument> pathArguments = new ArrayList<>();
 
+        for(NormalizedNodeMessages.PathArgument pathArgument : path.getArgumentsList()) {
+            if(context == null || pathArgument.hasType()) {
+                pathArguments.add(parsePathArgument(pathArgument));
+            } else {
+                pathArguments.add(PathArgumentSerializer.deSerialize(context, pathArgument));
+            }
         }
 
-        final YangInstanceIdentifier instanceIdentifier = YangInstanceIdentifier.create(pathArguments);
-
-        return instanceIdentifier;
+        return YangInstanceIdentifier.create(pathArguments);
     }
 
     /**
@@ -218,7 +219,8 @@ public class InstanceIdentifierUtils {
      * @param pathArgument protocol buffer PathArgument
      * @return MD-SAL PathArgument
      */
-    private static YangInstanceIdentifier.PathArgument parsePathArgument(NormalizedNodeMessages.PathArgument pathArgument) {
+    private static YangInstanceIdentifier.PathArgument parsePathArgument(
+            NormalizedNodeMessages.PathArgument pathArgument) {
         if (YangInstanceIdentifier.NodeWithValue.class.getSimpleName().equals(pathArgument.getType())) {
 
             YangInstanceIdentifier.NodeWithValue nodeWithValue =
index 3926bc7dc347d611a67854ab14015734424d749b..e7f2c361aeb0615c52ff44002ee1b35451396b46 100644 (file)
@@ -4176,6 +4176,50 @@ public final class NormalizedNodeMessages {
      */
     org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.PathArgumentOrBuilder getArgumentsOrBuilder(
         int index);
+
+    // repeated string code = 2;
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    java.util.List<java.lang.String>
+    getCodeList();
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    int getCodeCount();
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    java.lang.String getCode(int index);
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    com.google.protobuf.ByteString
+        getCodeBytes(int index);
   }
   /**
    * Protobuf type {@code org.opendaylight.controller.mdsal.InstanceIdentifier}
@@ -4236,6 +4280,14 @@ public final class NormalizedNodeMessages {
               arguments_.add(input.readMessage(org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages.PathArgument.PARSER, extensionRegistry));
               break;
             }
+            case 18: {
+              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+                code_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000002;
+              }
+              code_.add(input.readBytes());
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -4247,6 +4299,9 @@ public final class NormalizedNodeMessages {
         if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           arguments_ = java.util.Collections.unmodifiableList(arguments_);
         }
+        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+          code_ = new com.google.protobuf.UnmodifiableLazyStringList(code_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -4314,8 +4369,63 @@ public final class NormalizedNodeMessages {
       return arguments_.get(index);
     }
 
+    // repeated string code = 2;
+    public static final int CODE_FIELD_NUMBER = 2;
+    private com.google.protobuf.LazyStringList code_;
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    public java.util.List<java.lang.String>
+        getCodeList() {
+      return code_;
+    }
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    public int getCodeCount() {
+      return code_.size();
+    }
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    public java.lang.String getCode(int index) {
+      return code_.get(index);
+    }
+    /**
+     * <code>repeated string code = 2;</code>
+     *
+     * <pre>
+     * A list of string codes which can be used for any repeated strings in the path args. This is
+     * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+     * that contains the codes.
+     * </pre>
+     */
+    public com.google.protobuf.ByteString
+        getCodeBytes(int index) {
+      return code_.getByteString(index);
+    }
+
     private void initFields() {
       arguments_ = java.util.Collections.emptyList();
+      code_ = com.google.protobuf.LazyStringArrayList.EMPTY;
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -4338,6 +4448,9 @@ public final class NormalizedNodeMessages {
       for (int i = 0; i < arguments_.size(); i++) {
         output.writeMessage(1, arguments_.get(i));
       }
+      for (int i = 0; i < code_.size(); i++) {
+        output.writeBytes(2, code_.getByteString(i));
+      }
       getUnknownFields().writeTo(output);
     }
 
@@ -4351,6 +4464,15 @@ public final class NormalizedNodeMessages {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, arguments_.get(i));
       }
+      {
+        int dataSize = 0;
+        for (int i = 0; i < code_.size(); i++) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(code_.getByteString(i));
+        }
+        size += dataSize;
+        size += 1 * getCodeList().size();
+      }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
@@ -4474,6 +4596,8 @@ public final class NormalizedNodeMessages {
         } else {
           argumentsBuilder_.clear();
         }
+        code_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000002);
         return this;
       }
 
@@ -4510,6 +4634,12 @@ public final class NormalizedNodeMessages {
         } else {
           result.arguments_ = argumentsBuilder_.build();
         }
+        if (((bitField0_ & 0x00000002) == 0x00000002)) {
+          code_ = new com.google.protobuf.UnmodifiableLazyStringList(
+              code_);
+          bitField0_ = (bitField0_ & ~0x00000002);
+        }
+        result.code_ = code_;
         onBuilt();
         return result;
       }
@@ -4551,6 +4681,16 @@ public final class NormalizedNodeMessages {
             }
           }
         }
+        if (!other.code_.isEmpty()) {
+          if (code_.isEmpty()) {
+            code_ = other.code_;
+            bitField0_ = (bitField0_ & ~0x00000002);
+          } else {
+            ensureCodeIsMutable();
+            code_.addAll(other.code_);
+          }
+          onChanged();
+        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -4824,6 +4964,153 @@ public final class NormalizedNodeMessages {
         return argumentsBuilder_;
       }
 
+      // repeated string code = 2;
+      private com.google.protobuf.LazyStringList code_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      private void ensureCodeIsMutable() {
+        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+          code_ = new com.google.protobuf.LazyStringArrayList(code_);
+          bitField0_ |= 0x00000002;
+         }
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public java.util.List<java.lang.String>
+          getCodeList() {
+        return java.util.Collections.unmodifiableList(code_);
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public int getCodeCount() {
+        return code_.size();
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public java.lang.String getCode(int index) {
+        return code_.get(index);
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public com.google.protobuf.ByteString
+          getCodeBytes(int index) {
+        return code_.getByteString(index);
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public Builder setCode(
+          int index, java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureCodeIsMutable();
+        code_.set(index, value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public Builder addCode(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureCodeIsMutable();
+        code_.add(value);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public Builder addAllCode(
+          java.lang.Iterable<java.lang.String> values) {
+        ensureCodeIsMutable();
+        super.addAll(values, code_);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public Builder clearCode() {
+        code_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+        bitField0_ = (bitField0_ & ~0x00000002);
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>repeated string code = 2;</code>
+       *
+       * <pre>
+       * A list of string codes which can be used for any repeated strings in the path args. This is
+       * optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+       * that contains the codes.
+       * </pre>
+       */
+      public Builder addCodeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  ensureCodeIsMutable();
+        code_.add(value);
+        onChanged();
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:org.opendaylight.controller.mdsal.InstanceIdentifier)
     }
 
@@ -9998,30 +10285,30 @@ public final class NormalizedNodeMessages {
       "controller.mdsal.PathArgumentAttribute\022@" +
       "\n\nattributes\030\005 \003(\0132,.org.opendaylight.co" +
       "ntroller.mdsal.Attribute\022\017\n\007intType\030\006 \001(" +
-      "\005\"X\n\022InstanceIdentifier\022B\n\targuments\030\001 \003" +
+      "\005\"f\n\022InstanceIdentifier\022B\n\targuments\030\001 \003" +
       "(\0132/.org.opendaylight.controller.mdsal.P" +
-      "athArgument\"\245\003\n\004Node\022\014\n\004path\030\001 \001(\t\022\014\n\004ty" +
-      "pe\030\002 \001(\t\022E\n\014pathArgument\030\003 \001(\0132/.org.ope" +
-      "ndaylight.controller.mdsal.PathArgument\022" +
-      "\017\n\007intType\030\004 \001(\005\022@\n\nattributes\030\005 \003(\0132,.o",
-      "rg.opendaylight.controller.mdsal.Attribu" +
-      "te\0226\n\005child\030\006 \003(\0132\'.org.opendaylight.con" +
-      "troller.mdsal.Node\022\r\n\005value\030\007 \001(\t\022\021\n\tval" +
-      "ueType\030\010 \001(\t\022\024\n\014intValueType\030\t \001(\005\022V\n\027in" +
-      "stanceIdentifierValue\030\n \001(\01325.org.openda" +
-      "ylight.controller.mdsal.InstanceIdentifi" +
-      "er\022\021\n\tbitsValue\030\013 \003(\t\022\014\n\004code\030\014 \003(\t\"`\n\tC" +
-      "ontainer\022\022\n\nparentPath\030\001 \002(\t\022?\n\016normaliz" +
-      "edNode\030\002 \001(\0132\'.org.opendaylight.controll" +
-      "er.mdsal.Node\"\246\001\n\014NodeMapEntry\022U\n\026instan",
-      "ceIdentifierPath\030\001 \002(\01325.org.opendayligh" +
-      "t.controller.mdsal.InstanceIdentifier\022?\n" +
-      "\016normalizedNode\030\002 \001(\0132\'.org.opendaylight" +
-      ".controller.mdsal.Node\"N\n\007NodeMap\022C\n\nmap" +
-      "Entries\030\001 \003(\0132/.org.opendaylight.control" +
-      "ler.mdsal.NodeMapEntryBO\n5org.opendaylig" +
-      "ht.controller.protobuff.messages.commonB" +
-      "\026NormalizedNodeMessages"
+      "athArgument\022\014\n\004code\030\002 \003(\t\"\245\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",
+      "utes\030\005 \003(\0132,.org.opendaylight.controller" +
+      ".mdsal.Attribute\0226\n\005child\030\006 \003(\0132\'.org.op" +
+      "endaylight.controller.mdsal.Node\022\r\n\005valu" +
+      "e\030\007 \001(\t\022\021\n\tvalueType\030\010 \001(\t\022\024\n\014intValueTy" +
+      "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"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -10057,7 +10344,7 @@ public final class NormalizedNodeMessages {
           internal_static_org_opendaylight_controller_mdsal_InstanceIdentifier_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_org_opendaylight_controller_mdsal_InstanceIdentifier_descriptor,
-              new java.lang.String[] { "Arguments", });
+              new java.lang.String[] { "Arguments", "Code", });
           internal_static_org_opendaylight_controller_mdsal_Node_descriptor =
             getDescriptor().getMessageTypes().get(5);
           internal_static_org_opendaylight_controller_mdsal_Node_fieldAccessorTable = new
index 0b3ff21eb78737aa58450db900f5877b217718b1..356bfbf684295a0392198dd0b02d92fcf12b4d25 100644 (file)
@@ -37,6 +37,11 @@ message PathArgument {
 
 message InstanceIdentifier {
   repeated PathArgument arguments=1;
+  
+  // A list of string codes which can be used for any repeated strings in the path args. This is
+  // optional - an InstanceIdentifier may be encoded as part of another message, eg NormalizedNode,
+  // that contains the codes. 
+  repeated string code = 2;
 }
 
 message Node{
index a9f9c722deefd942f3259fea3f05a929d42aa827..6de1083cbed63bbbf2f6ccff5f854c57dbc2c00a 100644 (file)
@@ -68,15 +68,12 @@ public class NormalizedNodeToNodeCodecTest {
         new NormalizedNodeToNodeCodec(schemaContext);
     long start = System.currentTimeMillis();
     Container container =
-        codec.encode(instanceIdentifierFromString(id), output);
+        codec.encode(output);
     long end = System.currentTimeMillis();
 
     System.out.println("Timetaken to encode :"+(end-start));
 
     assertNotNull(container);
-    assertEquals(id, container.getParentPath() + "/"
-        + NormalizedNodeSerializer.deSerialize(container.getNormalizedNode(),
-        container.getNormalizedNode().getPathArgument()));
 
     // Decode the normalized node from the ProtocolBuffer form
     // first get the node representation of normalized node
@@ -84,7 +81,7 @@ public class NormalizedNodeToNodeCodecTest {
 
     start = System.currentTimeMillis();
     NormalizedNode<?, ?> normalizedNode =
-        codec.decode(instanceIdentifierFromString(id), node);
+        codec.decode(node);
     end = System.currentTimeMillis();
 
     System.out.println("Timetaken to decode :"+(end-start));
@@ -102,26 +99,18 @@ public class NormalizedNodeToNodeCodecTest {
         new NormalizedNodeToNodeCodec(schemaContext);
 
     Container container =
-        normalizedNodeToNodeCodec.encode(YangInstanceIdentifier.builder()
-            .build(), documentOne);
+        normalizedNodeToNodeCodec.encode(documentOne);
 
 
     final NormalizedNode<?, ?> decode =
         normalizedNodeToNodeCodec
             .decode(
-                instanceIdentifierFromString("/(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test"),
                 container.getNormalizedNode());
     assertNotNull(decode);
 
     // let us ensure that the return decode normalized node encode returns same container
     Container containerResult =
-        normalizedNodeToNodeCodec.encode(YangInstanceIdentifier.builder()
-            .build(), decode);
-
-    assertEquals(container.getParentPath(), containerResult.getParentPath());
-
-    assertEquals(containerResult.getNormalizedNode().getChildCount(),
-        container.getNormalizedNode().getChildCount());
+        normalizedNodeToNodeCodec.encode(decode);
 
     // check first level children are proper
     List<Node> childrenResult =
@@ -174,11 +163,11 @@ public class NormalizedNodeToNodeCodecTest {
     NormalizedNodeToNodeCodec codec =
         new NormalizedNodeToNodeCodec(schemaContext);
 
-    Container encode = codec.encode(identifier, uno);
+    Container encode = codec.encode(uno);
 
     System.out.println(encode.getNormalizedNode());
 
-    codec.decode(identifier, encode.getNormalizedNode());
+    codec.decode(encode.getNormalizedNode());
   }
 
 }
index ffa8a1059eb49d77195f29954c9ead671abd2d68..d1e3eb202f8faefcafeb548cf2b48ca013b42e91 100644 (file)
@@ -14,15 +14,6 @@ import static junit.framework.TestCase.assertEquals;
 
 public class PathUtilsTest {
 
-    @Test
-    public void getParentPath(){
-        assertEquals("", PathUtils.getParentPath("foobar"));
-        assertEquals("", PathUtils.getParentPath("/a"));
-        assertEquals("/a", PathUtils.getParentPath("/a/b"));
-        assertEquals("/a/b", PathUtils.getParentPath("/a/b/c"));
-        assertEquals("/a/b", PathUtils.getParentPath("a/b/c"));
-    }
-
     @Test
     public void toStringNodeIdentifier(){
         YangInstanceIdentifier.PathArgument pathArgument = nodeIdentifier();
index d1f21ee6f419cacd760ef5c140b51552380e99e4..0990cdd4aa5265bcdaff278fd194b4e659eeaa82 100644 (file)
@@ -40,8 +40,7 @@ public class PathArgumentSerializerTest{
         expectedException.expect(NullPointerException.class);
         expectedException.expectMessage("pathArgument should not be null");
 
-        PathArgumentSerializer.serialize(mock(
-            NormalizedNodeSerializationContext.class), null);
+        PathArgumentSerializer.serialize(mock(QNameSerializationContext.class), null);
 
     }
 
@@ -59,14 +58,13 @@ public class PathArgumentSerializerTest{
         expectedException.expect(NullPointerException.class);
         expectedException.expectMessage("pathArgument should not be null");
 
-        PathArgumentSerializer.deSerialize(mock(NormalizedNodeDeSerializationContext.class), null);
+        PathArgumentSerializer.deSerialize(mock(QNameDeSerializationContext.class), null);
 
     }
 
     @Test
     public void testSerializeNodeIdentifier(){
-        NormalizedNodeSerializationContext serializationContext =
-            mock(NormalizedNodeSerializationContext.class);
+        QNameSerializationContext serializationContext = mock(QNameSerializationContext.class);
 
         when(serializationContext.addLocalName(anyString())).thenReturn(5);
         when(serializationContext.addNamespace(any(URI.class))).thenReturn(10);
@@ -87,8 +85,7 @@ public class PathArgumentSerializerTest{
 
     @Test
     public void testSerializeNodeIdentifierWithValue(){
-        NormalizedNodeSerializationContext serializationContext =
-            mock(NormalizedNodeSerializationContext.class);
+        QNameSerializationContext serializationContext = mock(QNameSerializationContext.class);
 
         when(serializationContext.addLocalName(anyString())).thenReturn(5);
         when(serializationContext.addNamespace(any(URI.class))).thenReturn(10);
@@ -110,9 +107,7 @@ public class PathArgumentSerializerTest{
 
     @Test
     public void testSerializeNodeIdentifierWithPredicates(){
-        NormalizedNodeSerializationContext serializationContext =
-            mock(NormalizedNodeSerializationContext.class);
-
+        QNameSerializationContext serializationContext = mock(QNameSerializationContext.class);
 
         when(serializationContext.addLocalName("test")).thenReturn(5);
         when(serializationContext.addLocalName("child-name")).thenReturn(55);
@@ -150,8 +145,7 @@ public class PathArgumentSerializerTest{
 
     @Test
     public void testSerializeAugmentationIdentifier(){
-        NormalizedNodeSerializationContext serializationContext =
-            mock(NormalizedNodeSerializationContext.class);
+        QNameSerializationContext serializationContext = mock(QNameSerializationContext.class);
 
         when(serializationContext.addLocalName(anyString())).thenReturn(55);
         when(serializationContext.addNamespace(any(URI.class))).thenReturn(66);
index af7a385cbbe0876000eb6d8a457ef4e5312f8fa3..88c269507538ab8f55d40cb06eece12c6a39ac0e 100644 (file)
@@ -5,15 +5,14 @@ import com.google.common.collect.ImmutableSet;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
 import org.opendaylight.controller.cluster.datastore.util.TestModel;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Set;
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
@@ -27,14 +26,15 @@ public class ValueSerializerTest{
     public void testSerializeShort(){
         short v1 = 5;
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.SHORT_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("5", builder.getValue());
 
-        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
+        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 =
+                NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.SHORT_TYPE.ordinal(), builder1.getType());
         assertEquals("5", builder.getValue());
@@ -49,16 +49,15 @@ public class ValueSerializerTest{
 
 
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), expected);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), expected);
 
         assertEquals(ValueType.INT_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("243", builder.getValue());
 
-        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
+        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 =
+                NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), expected);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), expected);
 
         assertEquals(ValueType.INT_TYPE.ordinal(), builder1.getType());
         assertEquals("243", builder1.getValue());
@@ -71,16 +70,14 @@ public class ValueSerializerTest{
     public void testSerializeLong(){
         long v1 = 5;
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.LONG_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("5", builder.getValue());
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.LONG_TYPE.ordinal(), builder1.getType());
         assertEquals("5", builder1.getValue());
@@ -91,16 +88,14 @@ public class ValueSerializerTest{
     public void testSerializeByte(){
         byte v1 = 5;
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BYTE_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("5", builder.getValue());
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BYTE_TYPE.ordinal(), builder1.getType());
         assertEquals("5", builder1.getValue());
@@ -110,8 +105,7 @@ public class ValueSerializerTest{
     @Test
     public void testSerializeBits(){
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class),
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),
             ImmutableSet.of("foo", "bar"));
 
         assertEquals(ValueType.BITS_TYPE.ordinal(), builder.getIntValueType());
@@ -120,8 +114,7 @@ public class ValueSerializerTest{
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class),
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),
             ImmutableSet.of("foo", "bar"));
 
         assertEquals(ValueType.BITS_TYPE.ordinal(), builder1.getType());
@@ -134,8 +127,7 @@ public class ValueSerializerTest{
         expectedException.expect(IllegalArgumentException.class);
         expectedException.expectMessage("Expected value type to be Bits but was :");
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-                NormalizedNodeSerializationContext.class),
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),
             ImmutableSet.of(1, 2));
 
     }
@@ -143,16 +135,14 @@ public class ValueSerializerTest{
     @Test
     public void testSerializeEmptyString(){
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class),"");
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),"");
 
         assertEquals(ValueType.STRING_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("", builder.getValue());
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class),"");
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),"");
 
         assertEquals(ValueType.STRING_TYPE.ordinal(), builder1.getType());
         assertEquals("", builder1.getValue());
@@ -162,16 +152,15 @@ public class ValueSerializerTest{
     @Test
     public void testSerializeString(){
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class),"foo");
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class),"foo");
 
         assertEquals(ValueType.STRING_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("foo", builder.getValue());
 
-        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
+        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 =
+                NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class),"foo");
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class),"foo");
 
         assertEquals(ValueType.STRING_TYPE.ordinal(), builder1.getType());
         assertEquals("foo", builder1.getValue());
@@ -183,15 +172,14 @@ public class ValueSerializerTest{
     public void testSerializeBoolean(){
         boolean v1 = true;
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BOOL_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("true", builder.getValue());
 
-        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 =
+                NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BOOL_TYPE.ordinal(), builder1.getType());
         assertEquals("true", builder1.getValue());
@@ -201,16 +189,14 @@ public class ValueSerializerTest{
     public void testSerializeQName(){
         QName v1 = TestModel.TEST_QNAME;
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.QNAME_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test", builder.getValue());
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.QNAME_TYPE.ordinal(), builder1.getType());
         assertEquals("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test", builder1.getValue());
@@ -222,32 +208,30 @@ public class ValueSerializerTest{
         YangInstanceIdentifier v1 = TestModel.TEST_PATH;
 
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
-
+        QNameSerializationContext mockContext = mock(QNameSerializationContext.class);
+        ValueSerializer.serialize(builder, mockContext, v1);
 
         assertEquals(ValueType.YANG_IDENTIFIER_TYPE.ordinal(), builder.getIntValueType());
         NormalizedNodeMessages.InstanceIdentifier serializedYangInstanceIdentifier =
             builder.getInstanceIdentifierValue();
 
         assertEquals(1, serializedYangInstanceIdentifier.getArgumentsCount());
-        assertEquals(TestModel.TEST_QNAME.toString(), serializedYangInstanceIdentifier.getArguments(0).getNodeType().getValue());
+        Mockito.verify(mockContext).addLocalName(TestModel.TEST_QNAME.getLocalName());
+        Mockito.verify(mockContext).addNamespace(TestModel.TEST_QNAME.getNamespace());
     }
 
     @Test
     public void testSerializeBigInteger(){
         BigInteger v1 = new BigInteger("1000000000000000000000000");
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BIG_INTEGER_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("1000000000000000000000000", builder.getValue());
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
 
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BIG_INTEGER_TYPE.ordinal(), builder1.getType());
         assertEquals("1000000000000000000000000", builder1.getValue());
@@ -258,15 +242,13 @@ public class ValueSerializerTest{
     public void testSerializeBigDecimal(){
         BigDecimal v1 = new BigDecimal("1000000000000000000000000.51616");
         NormalizedNodeMessages.Node.Builder builder = NormalizedNodeMessages.Node.newBuilder();
-        ValueSerializer.serialize(builder, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BIG_DECIMAL_TYPE.ordinal(), builder.getIntValueType());
         assertEquals("1000000000000000000000000.51616", builder.getValue());
 
         NormalizedNodeMessages.PathArgumentAttribute.Builder builder1 = NormalizedNodeMessages.PathArgumentAttribute.newBuilder();
-        ValueSerializer.serialize(builder1, mock(
-            NormalizedNodeSerializationContext.class), v1);
+        ValueSerializer.serialize(builder1, mock(QNameSerializationContext.class), v1);
 
         assertEquals(ValueType.BIG_DECIMAL_TYPE.ordinal(), builder1.getType());
         assertEquals("1000000000000000000000000.51616", builder1.getValue());
@@ -280,7 +262,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("25");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof Short);
@@ -294,7 +276,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("25");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof Byte);
@@ -309,7 +291,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("25");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof Integer);
@@ -324,7 +306,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("25");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof Long);
@@ -339,7 +321,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("false");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof Boolean);
@@ -354,7 +336,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue(TestModel.TEST_QNAME.toString());
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof QName);
@@ -369,7 +351,7 @@ public class ValueSerializerTest{
         nodeBuilder.addAllBitsValue(ImmutableList.of("foo", "bar"));
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof Set);
@@ -384,7 +366,6 @@ public class ValueSerializerTest{
         NormalizedNodeMessages.InstanceIdentifier.Builder idBuilder = NormalizedNodeMessages.InstanceIdentifier.newBuilder();
         NormalizedNodeMessages.PathArgument.Builder pathBuilder = NormalizedNodeMessages.PathArgument.newBuilder();
 
-        pathBuilder.setValue(TestModel.TEST_QNAME.toString());
         pathBuilder.setIntType(PathArgumentType.NODE_IDENTIFIER.ordinal());
 
         idBuilder.addArguments(pathBuilder);
@@ -392,9 +373,15 @@ public class ValueSerializerTest{
         nodeBuilder.setIntValueType(ValueType.YANG_IDENTIFIER_TYPE.ordinal());
         nodeBuilder.setInstanceIdentifierValue(idBuilder);
 
-        Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
-                nodeBuilder.build());
+        QNameDeSerializationContext mockContext = mock(QNameDeSerializationContext.class);
+        Mockito.doReturn(TestModel.TEST_QNAME.getNamespace().toString()).when(mockContext).
+                getNamespace(Mockito.anyInt());
+        Mockito.doReturn(TestModel.TEST_QNAME.getLocalName()).when(mockContext).
+                getLocalName(Mockito.anyInt());
+        Mockito.doReturn(TestModel.TEST_QNAME.getFormattedRevision()).when(mockContext).
+                getRevision(Mockito.anyInt());
+
+        Object o = ValueSerializer.deSerialize(mockContext, nodeBuilder.build());
 
         assertTrue(o instanceof YangInstanceIdentifier);
         assertEquals(TestModel.TEST_PATH, o);
@@ -407,8 +394,7 @@ public class ValueSerializerTest{
         nodeBuilder.setIntValueType(ValueType.STRING_TYPE.ordinal());
         nodeBuilder.setValue("25");
 
-        Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+        Object o = ValueSerializer.deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof String);
@@ -423,7 +409,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("25");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof BigInteger);
@@ -438,7 +424,7 @@ public class ValueSerializerTest{
         nodeBuilder.setValue("25");
 
         Object o = ValueSerializer
-            .deSerialize(mock(NormalizedNodeDeSerializationContext.class),
+            .deSerialize(mock(QNameDeSerializationContext.class),
                 nodeBuilder.build());
 
         assertTrue(o instanceof BigDecimal);
index 136748e3416ffa176f60d03cf489e20df0967ced..6cd06e9c1cea610edc3b1fa2799513cfa539c72c 100644 (file)
@@ -12,10 +12,12 @@ package org.opendaylight.controller.cluster.datastore.util;
 
 import org.junit.Assert;
 import org.junit.Test;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContext;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameDeSerializationContextImpl;
+import org.opendaylight.controller.cluster.datastore.node.utils.serialization.QNameSerializationContextImpl;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
 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;
@@ -23,139 +25,137 @@ import java.util.List;
 
 public class InstanceIdentifierUtilsTest {
 
-  private static QName TEST_QNAME =
-      QName
-          .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test");
-  private static QName NODE_WITH_VALUE_QNAME =
-      QName
-          .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)value");
-  private static QName NODE_WITH_PREDICATES_QNAME =
-      QName
-          .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)pred");
-  private static QName NAME_QNAME =
-      QName
-          .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)name");
-
-  @Test
-  public void testSerializationOfNodeIdentifier() {
-    YangInstanceIdentifier.PathArgument p1 =
-        new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
-
-    List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
-
-    arguments.add(p1);
+    private static QName TEST_QNAME = QName
+            .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)test");
+    private static QName NODE_WITH_VALUE_QNAME = QName
+            .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)value");
+    private static QName NODE_WITH_PREDICATES_QNAME = QName
+            .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)pred");
+    private static QName NAME_QNAME = QName
+            .create("(urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:store:test?revision=2014-03-13)name");
 
-    YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+    @Test
+    public void testSerializationOfNodeIdentifier() {
+        YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
 
-    NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
-        InstanceIdentifierUtils.toSerializable(expected);
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
 
-    YangInstanceIdentifier actual =
-        InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+        arguments.add(p1);
 
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
 
-    Assert.assertEquals(expected.getLastPathArgument(),
-        actual.getLastPathArgument());
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+                InstanceIdentifierUtils.toSerializable(expected);
 
+        YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
 
-  }
+        Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
+    }
 
-  @Test
-  public void testSerializationOfNodeWithValue() {
+    @Test
+    public void testSerializationOfNodeWithValue() {
 
-    withValue((short) 1);
-    withValue((long) 2);
-    withValue(3);
-    withValue(true);
+        withValue((short) 1);
+        withValue((long) 2);
+        withValue(3);
+        withValue(true);
 
-  }
+    }
 
-  private void withValue(Object value) {
-    YangInstanceIdentifier.PathArgument p1 =
-        new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
+    private void withValue(Object value) {
+        YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
 
-    YangInstanceIdentifier.PathArgument p2 =
-        new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, value);
+        YangInstanceIdentifier.PathArgument p2 =
+                new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, value);
 
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
 
-    List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+        arguments.add(p1);
+        arguments.add(p2);
 
-    arguments.add(p1);
-    arguments.add(p2);
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
 
-    YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+                InstanceIdentifierUtils.toSerializable(expected);
 
-    NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
-        InstanceIdentifierUtils.toSerializable(expected);
+        YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
 
-    YangInstanceIdentifier actual =
-        InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+        Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
+    }
 
+    @Test
+    public void testSerializationOfNodeIdentifierWithPredicates() {
 
-    Assert.assertEquals(expected.getLastPathArgument(),
-        actual.getLastPathArgument());
-  }
+        withPredicates((short) 1);
+        withPredicates((long) 2);
+        withPredicates(3);
+        withPredicates(true);
 
+    }
 
-  @Test
-  public void testSerializationOfNodeIdentifierWithPredicates() {
+    private void withPredicates(Object value) {
+        YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
 
-    withPredicates((short) 1);
-    withPredicates((long) 2);
-    withPredicates(3);
-    withPredicates(true);
+        YangInstanceIdentifier.PathArgument p2 = new YangInstanceIdentifier.NodeIdentifierWithPredicates(
+                NODE_WITH_PREDICATES_QNAME, NAME_QNAME, value);
 
-  }
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
 
-  private void withPredicates(Object value) {
-    YangInstanceIdentifier.PathArgument p1 =
-        new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME);
+        arguments.add(p1);
+        arguments.add(p2);
 
-    YangInstanceIdentifier.PathArgument p2 =
-        new YangInstanceIdentifier.NodeIdentifierWithPredicates(
-            NODE_WITH_PREDICATES_QNAME, NAME_QNAME, value);
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
 
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+                InstanceIdentifierUtils.toSerializable(expected);
 
-    List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+        YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
 
-    arguments.add(p1);
-    arguments.add(p2);
+        Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
+    }
 
-    YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+    @Test
+    public void testAugmentationIdentifier() {
+        YangInstanceIdentifier.PathArgument p1 = new YangInstanceIdentifier.AugmentationIdentifier(new HashSet(
+                Arrays.asList(TEST_QNAME)));
 
-    NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
-        InstanceIdentifierUtils.toSerializable(expected);
+        List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
 
-    YangInstanceIdentifier actual =
-        InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+        arguments.add(p1);
 
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
 
-    Assert.assertEquals(expected.getLastPathArgument(),
-        actual.getLastPathArgument());
-  }
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+                InstanceIdentifierUtils.toSerializable(expected);
 
-  @Test
-  public void testAugmentationIdentifier() {
-    YangInstanceIdentifier.PathArgument p1 =
-        new YangInstanceIdentifier.AugmentationIdentifier(new HashSet(
-            Arrays.asList(TEST_QNAME)));
+        YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
 
-    List<YangInstanceIdentifier.PathArgument> arguments = new ArrayList<>();
+        Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
 
-    arguments.add(p1);
+    }
 
-    YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
+    @Test
+    public void testSerializationWithContext() {
+        List<YangInstanceIdentifier.PathArgument> arguments =
+                                                Arrays.<YangInstanceIdentifier.PathArgument>asList(
+                new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME),
+                new YangInstanceIdentifier.NodeWithValue(NODE_WITH_VALUE_QNAME, 1),
+                new YangInstanceIdentifier.NodeIdentifierWithPredicates(
+                        NODE_WITH_PREDICATES_QNAME, NAME_QNAME, 2));
 
-    NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
-        InstanceIdentifierUtils.toSerializable(expected);
+        YangInstanceIdentifier expected = YangInstanceIdentifier.create(arguments);
 
-    YangInstanceIdentifier actual =
-        InstanceIdentifierUtils.fromSerializable(instanceIdentifier);
+        QNameSerializationContextImpl serializationContext = new QNameSerializationContextImpl();
 
+        NormalizedNodeMessages.InstanceIdentifier instanceIdentifier =
+                InstanceIdentifierUtils.toSerializable(expected, serializationContext);
 
-    Assert.assertEquals(expected.getLastPathArgument(),
-        actual.getLastPathArgument());
+        QNameDeSerializationContext deserializationContext = new QNameDeSerializationContextImpl(
+                serializationContext.getCodes());
 
-  }
+        YangInstanceIdentifier actual = InstanceIdentifierUtils.fromSerializable(
+                instanceIdentifier, deserializationContext);
 
+        Assert.assertEquals(expected.getLastPathArgument(), actual.getLastPathArgument());
+    }
 }
index 91c0b5caa1ebd0854f44943164d9f9a89aec855d..1c018cade1b01f82a3fa7a8d550ab2c10ed080e5 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-clustering-config</artifactId>
   <description>Configuration files for md-sal clustering</description>
index e46fe1fe78405d912ae8c12ebcfde944abdc4bc8..6af20c0fb886c74c2a03755a4489c1e157e3c43c 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>sal-common-api</artifactId>
index 82bd716c59c69c67a054e3a54cd554a85d9a3eac..542a1f390522a23080fc157e291a81e4854c3613 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-common-impl</artifactId>
   <packaging>bundle</packaging>
index e42c86a993f14dc1362b6c7ac96e1f2a16f81b0a..b285c991e5b53b254e007bf1d39fcb01efaffd6a 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-common-util</artifactId>
 
index f200b5551f22678b9e3cad899cd8121ca40774a8..e5450b24871cf719aee6a1b56912f763d6ad6986 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-common</artifactId>
 
index 4e7d82dad31ee6e7c26d2abb325cf44ae6aeb64a..e45e24dd567038c8401876676a5945d6c19aff63 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-connector-api</artifactId>
 
index 82998226b68e3049093a8be77f96227824db123e..d7e7d56d495d4e66f24d6c85ca12fc9d46b10104 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-distributed-datastore</artifactId>
   <packaging>bundle</packaging>
@@ -80,7 +80,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>sal-inmemory-datastore</artifactId>
-      <version>1.1-SNAPSHOT</version>
+      <version>1.2.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
     <dependency>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>sal-clustering-commons</artifactId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </dependency>
 
     <dependency>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>sal-akka-raft</artifactId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </dependency>
 
       <dependency>
index c780881a2ffad1ed50695b7a38111068ec2f8e3f..5195a2f918c6248463e26663b953378948c8e0dc 100644 (file)
@@ -12,6 +12,7 @@ import akka.actor.ActorRef;
 import akka.actor.ActorSystem;
 import akka.dispatch.OnComplete;
 import akka.util.Timeout;
+import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import org.opendaylight.controller.cluster.datastore.identifiers.ShardManagerIdentifier;
 import org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListener;
@@ -76,44 +77,44 @@ public class DistributedDataStore implements DOMStore, SchemaContextListener, Au
 
         Preconditions.checkNotNull(path, "path should not be null");
         Preconditions.checkNotNull(listener, "listener should not be null");
-        if(LOG.isDebugEnabled()) {
-            LOG.debug("Registering listener: {} for path: {} scope: {}", listener, path, scope);
-        }
-        ActorRef dataChangeListenerActor = actorContext.getActorSystem().actorOf(
-            DataChangeListener.props(listener ));
+
+        LOG.debug("Registering listener: {} for path: {} scope: {}", listener, path, scope);
 
         String shardName = ShardStrategyFactory.getStrategy(path).findShard(path);
 
-        Future future = actorContext.executeLocalShardOperationAsync(shardName,
-            new RegisterChangeListener(path, dataChangeListenerActor.path(), scope),
-            new Timeout(actorContext.getOperationDuration().$times(
-                REGISTER_DATA_CHANGE_LISTENER_TIMEOUT_FACTOR)));
+        Optional<ActorRef> shard = actorContext.findLocalShard(shardName);
 
-        if (future != null) {
-            final DataChangeListenerRegistrationProxy listenerRegistrationProxy =
+        //if shard is NOT local
+        if (!shard.isPresent()) {
+            LOG.debug("No local shard for shardName {} was found so returning a noop registration", shardName);
+            return new NoOpDataChangeListenerRegistration(listener);
+        }
+        //if shard is local
+        ActorRef dataChangeListenerActor = actorContext.getActorSystem().actorOf(DataChangeListener.props(listener));
+        Future future = actorContext.executeOperationAsync(shard.get(),
+                new RegisterChangeListener(path, dataChangeListenerActor.path(), scope),
+                new Timeout(actorContext.getOperationDuration().$times(REGISTER_DATA_CHANGE_LISTENER_TIMEOUT_FACTOR)));
+
+        final DataChangeListenerRegistrationProxy listenerRegistrationProxy =
                 new DataChangeListenerRegistrationProxy(listener, dataChangeListenerActor);
 
-            future.onComplete(new OnComplete(){
+        future.onComplete(new OnComplete() {
 
-                @Override public void onComplete(Throwable failure, Object result)
+            @Override
+            public void onComplete(Throwable failure, Object result)
                     throws Throwable {
-                    if(failure != null){
-                        LOG.error("Failed to register listener at path " + path.toString(), failure);
-                        return;
-                    }
-                    RegisterChangeListenerReply reply = (RegisterChangeListenerReply) result;
-                    listenerRegistrationProxy.setListenerRegistrationActor(actorContext
-                        .actorSelection(reply.getListenerRegistrationPath()));
+                if (failure != null) {
+                    LOG.error("Failed to register listener at path " + path.toString(), failure);
+                    return;
                 }
-            }, actorContext.getActorSystem().dispatcher());
-            return listenerRegistrationProxy;
-        }
-        if(LOG.isDebugEnabled()) {
-            LOG.debug(
-                "No local shard for shardName {} was found so returning a noop registration",
-                shardName);
-        }
-        return new NoOpDataChangeListenerRegistration(listener);
+                RegisterChangeListenerReply reply = (RegisterChangeListenerReply) result;
+                listenerRegistrationProxy.setListenerRegistrationActor(actorContext
+                        .actorSelection(reply.getListenerRegistrationPath()));
+            }
+        }, actorContext.getActorSystem().dispatcher());
+
+        return listenerRegistrationProxy;
+
     }
 
     @Override
index ddb5989f096145cddd3b716afa8dfc1dce3311e3..3934489646530c136d9cc3bfc2e41e8028cbb9ba 100644 (file)
@@ -33,6 +33,7 @@ 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;
 import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStats;
+import org.opendaylight.controller.cluster.datastore.messages.ActorInitialized;
 import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionChain;
 import org.opendaylight.controller.cluster.datastore.messages.CommitTransactionReply;
 import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction;
@@ -222,7 +223,9 @@ public class Shard extends RaftActor {
                 getLeader().forward(message, getContext());
             } else {
                 getSender().tell(new akka.actor.Status.Failure(new IllegalStateException(
-                    "Could not find leader so transaction cannot be created")), getSelf());
+                    "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" +
+                            " later.")), getSelf());
             }
         } else if (message instanceof PeerAddressResolved) {
             PeerAddressResolved resolved = (PeerAddressResolved) message;
@@ -522,6 +525,9 @@ public class Shard extends RaftActor {
         recoveryCoordinator = null;
         currentLogRecoveryBatch = null;
         updateJournalStats();
+
+        //notify shard manager
+        getContext().parent().tell(new ActorInitialized(), getSelf());
     }
 
     @Override
@@ -588,7 +594,7 @@ public class Shard extends RaftActor {
             DOMStoreWriteTransaction transaction = store.newWriteOnlyTransaction();
             NormalizedNodeMessages.Node serializedNode = NormalizedNodeMessages.Node.parseFrom(snapshot);
             NormalizedNode<?, ?> node = new NormalizedNodeToNodeCodec(schemaContext)
-                .decode(YangInstanceIdentifier.builder().build(), serializedNode);
+                .decode(serializedNode);
 
             // delete everything first
             transaction.delete(YangInstanceIdentifier.builder().build());
index a8a182380911db26f8c9530e363441d2d2b491cc..e68628dbf5c1fc992afb30ae986fff8ed8f6eef1 100644 (file)
@@ -24,11 +24,13 @@ import akka.persistence.RecoveryCompleted;
 import akka.persistence.RecoveryFailure;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor;
+import org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActorWithMetering;
 import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
 import org.opendaylight.controller.cluster.datastore.identifiers.ShardManagerIdentifier;
 import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shardmanager.ShardManagerInfo;
 import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shardmanager.ShardManagerInfoMBean;
+import org.opendaylight.controller.cluster.datastore.messages.ActorInitialized;
+import org.opendaylight.controller.cluster.datastore.messages.ActorNotInitialized;
 import org.opendaylight.controller.cluster.datastore.messages.FindLocalShard;
 import org.opendaylight.controller.cluster.datastore.messages.FindPrimary;
 import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound;
@@ -59,7 +61,7 @@ import java.util.Set;
  * <li> Monitor the cluster members and store their addresses
  * <ul>
  */
-public class ShardManager extends AbstractUntypedPersistentActor {
+public class ShardManager extends AbstractUntypedPersistentActorWithMetering {
 
     protected final LoggingAdapter LOG =
         Logging.getLogger(getContext().system(), this);
@@ -127,6 +129,8 @@ public class ShardManager extends AbstractUntypedPersistentActor {
             findLocalShard((FindLocalShard) message);
         } else if (message instanceof UpdateSchemaContext) {
             updateSchemaContext(message);
+        } else if(message instanceof ActorInitialized) {
+            onActorInitialized(message);
         } else if (message instanceof ClusterEvent.MemberUp){
             memberUp((ClusterEvent.MemberUp) message);
         } else if(message instanceof ClusterEvent.MemberRemoved) {
@@ -139,6 +143,31 @@ public class ShardManager extends AbstractUntypedPersistentActor {
 
     }
 
+    private void onActorInitialized(Object message) {
+        final ActorRef sender = getSender();
+
+        if (sender == null) {
+            return; //why is a non-actor sending this message? Just ignore.
+        }
+
+        String actorName = sender.path().name();
+        //find shard name from actor name; actor name is stringified shardId
+        ShardIdentifier shardId = ShardIdentifier.builder().fromShardIdString(actorName).build();
+
+        if (shardId.getShardName() == null) {
+            return;
+        }
+        markShardAsInitialized(shardId.getShardName());
+    }
+
+    @VisibleForTesting protected void markShardAsInitialized(String shardName) {
+        LOG.debug("Initializing shard [{}]", shardName);
+        ShardInformation shardInformation = localShards.get(shardName);
+        if (shardInformation != null) {
+            shardInformation.setShardInitialized(true);
+        }
+    }
+
     @Override protected void handleRecover(Object message) throws Exception {
 
         if(message instanceof SchemaContextModules){
@@ -157,16 +186,23 @@ public class ShardManager extends AbstractUntypedPersistentActor {
     }
 
     private void findLocalShard(FindLocalShard message) {
-        ShardInformation shardInformation =
-            localShards.get(message.getShardName());
+        ShardInformation shardInformation = localShards.get(message.getShardName());
 
-        if(shardInformation != null){
-            getSender().tell(new LocalShardFound(shardInformation.getActor()), getSelf());
+        if(shardInformation == null){
+            getSender().tell(new LocalShardNotFound(message.getShardName()), getSelf());
             return;
         }
 
-        getSender().tell(new LocalShardNotFound(message.getShardName()),
-            getSelf());
+        sendResponse(shardInformation, new LocalShardFound(shardInformation.getActor()));
+    }
+
+    private void sendResponse(ShardInformation shardInformation, Object message) {
+        if (!shardInformation.isShardInitialized()) {
+            getSender().tell(new ActorNotInitialized(), getSelf());
+            return;
+        }
+
+        getSender().tell(message, getSelf());
     }
 
     private void memberRemoved(ClusterEvent.MemberRemoved message) {
@@ -176,7 +212,7 @@ public class ShardManager extends AbstractUntypedPersistentActor {
     private void memberUp(ClusterEvent.MemberUp message) {
         String memberName = message.member().roles().head();
 
-        memberNameToAddress.put(memberName , message.member().address());
+        memberNameToAddress.put(memberName, message.member().address());
 
         for(ShardInformation info : localShards.values()){
             String shardName = info.getShardName();
@@ -229,28 +265,27 @@ public class ShardManager extends AbstractUntypedPersistentActor {
     }
 
     private void findPrimary(FindPrimary message) {
+        final ActorRef sender = getSender();
         String shardName = message.getShardName();
 
         // First see if the there is a local replica for the shard
         ShardInformation info = localShards.get(shardName);
-        if(info != null) {
+        if (info != null) {
             ActorPath shardPath = info.getActorPath();
-            if (shardPath != null) {
-                getSender()
-                    .tell(
-                        new PrimaryFound(shardPath.toString()).toSerializable(),
-                        getSelf());
-                return;
-            }
+            sendResponse(info, new PrimaryFound(shardPath.toString()).toSerializable());
+            return;
         }
 
-        List<String> members =
-            configuration.getMembersFromShardName(shardName);
+        List<String> members = configuration.getMembersFromShardName(shardName);
 
         if(cluster.getCurrentMemberName() != null) {
             members.remove(cluster.getCurrentMemberName());
         }
 
+        /**
+         * FIXME: Instead of sending remote shard actor path back to sender,
+         * forward FindPrimary message to remote shard manager
+         */
         // There is no way for us to figure out the primary (for now) so assume
         // that one of the remote nodes is a primary
         for(String memberName : members) {
@@ -376,6 +411,7 @@ public class ShardManager extends AbstractUntypedPersistentActor {
         private final ActorRef actor;
         private final ActorPath actorPath;
         private final Map<ShardIdentifier, String> peerAddresses;
+        private boolean shardInitialized = false; //flag that determines if the actor is ready for business
 
         private ShardInformation(String shardName, ActorRef actor,
             Map<ShardIdentifier, String> peerAddresses) {
@@ -413,6 +449,14 @@ public class ShardManager extends AbstractUntypedPersistentActor {
 
             }
         }
+
+        public boolean isShardInitialized() {
+            return shardInitialized;
+        }
+
+        public void setShardInitialized(boolean shardInitialized) {
+            this.shardInitialized = shardInitialized;
+        }
     }
 
     private static class ShardManagerCreator implements Creator<ShardManager> {
index 8afdb4c2801d186e0627669bc38ac6da7bdd3df7..94fb5841021ea994e019d946e3e106f7d95256c3 100644 (file)
@@ -142,7 +142,7 @@ class ShardRecoveryCoordinator {
             try {
                 NormalizedNodeMessages.Node serializedNode = NormalizedNodeMessages.Node.parseFrom(snapshot);
                 NormalizedNode<?, ?> node = new NormalizedNodeToNodeCodec(schemaContext).decode(
-                        YangInstanceIdentifier.builder().build(), serializedNode);
+                        serializedNode);
 
                 // delete everything first
                 resultingTx.delete(YangInstanceIdentifier.builder().build());
index a7a5b31b174e4e0d03db192aa367a43ebe67ad62..515be372e8c76b7008b7356a666bbf94e19a1972 100644 (file)
@@ -157,7 +157,7 @@ public class ThreePhaseCommitCohortProxy implements DOMStoreThreePhaseCommitCoho
             }
             ActorSelection cohort = actorContext.actorSelection(actorPath);
 
-            futureList.add(actorContext.executeRemoteOperationAsync(cohort, message));
+            futureList.add(actorContext.executeOperationAsync(cohort, message));
         }
 
         return Futures.sequence(futureList, actorContext.getActorSystem().dispatcher());
index 6cf16b44268c6c16e26e0658632f61994ee33971..19d9a66a528eb417d5bff41948641b68e9c8e481 100644 (file)
@@ -22,6 +22,7 @@ import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.SettableFuture;
 
+import org.opendaylight.controller.cluster.datastore.exceptions.PrimaryNotFoundException;
 import org.opendaylight.controller.cluster.datastore.identifiers.TransactionIdentifier;
 import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction;
 import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction;
@@ -156,7 +157,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
             if(remoteTransactionActorsMB.get()) {
                 for(ActorSelection actor : remoteTransactionActors) {
                     LOG.trace("Sending CloseTransaction to {}", actor);
-                    actorContext.sendRemoteOperationAsync(actor,
+                    actorContext.sendOperationAsync(actor,
                             new CloseTransaction().toSerializable());
                 }
             }
@@ -379,9 +380,14 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
         }
 
         try {
-            Object response = actorContext.executeShardOperation(shardName,
-                new CreateTransaction(identifier.toString(), this.transactionType.ordinal(),
-                    getTransactionChainId()).toSerializable());
+            Optional<ActorSelection> primaryShard = actorContext.findPrimaryShard(shardName);
+            if (!primaryShard.isPresent()) {
+                throw new PrimaryNotFoundException("Primary could not be found for shard " + shardName);
+            }
+
+            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);
@@ -502,7 +508,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
             if(LOG.isDebugEnabled()) {
                 LOG.debug("Tx {} closeTransaction called", identifier);
             }
-            actorContext.sendRemoteOperationAsync(getActor(), new CloseTransaction().toSerializable());
+            actorContext.sendOperationAsync(getActor(), new CloseTransaction().toSerializable());
         }
 
         @Override
@@ -513,7 +519,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
             }
             // Send the ReadyTransaction message to the Tx actor.
 
-            final Future<Object> replyFuture = actorContext.executeRemoteOperationAsync(getActor(),
+            final Future<Object> replyFuture = actorContext.executeOperationAsync(getActor(),
                     new ReadyTransaction().toSerializable());
 
             // Combine all the previously recorded put/merge/delete operation reply Futures and the
@@ -576,8 +582,8 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
             if(LOG.isDebugEnabled()) {
                 LOG.debug("Tx {} deleteData called path = {}", identifier, path);
             }
-            recordedOperationFutures.add(actorContext.executeRemoteOperationAsync(getActor(),
-                    new DeleteData(path).toSerializable() ));
+            recordedOperationFutures.add(actorContext.executeOperationAsync(getActor(),
+                    new DeleteData(path).toSerializable()));
         }
 
         @Override
@@ -585,7 +591,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
             if(LOG.isDebugEnabled()) {
                 LOG.debug("Tx {} mergeData called path = {}", identifier, path);
             }
-            recordedOperationFutures.add(actorContext.executeRemoteOperationAsync(getActor(),
+            recordedOperationFutures.add(actorContext.executeOperationAsync(getActor(),
                     new MergeData(path, data, schemaContext).toSerializable()));
         }
 
@@ -594,7 +600,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
             if(LOG.isDebugEnabled()) {
                 LOG.debug("Tx {} writeData called path = {}", identifier, path);
             }
-            recordedOperationFutures.add(actorContext.executeRemoteOperationAsync(getActor(),
+            recordedOperationFutures.add(actorContext.executeOperationAsync(getActor(),
                     new WriteData(path, data, schemaContext).toSerializable()));
         }
 
@@ -686,7 +692,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
                 }
             };
 
-            Future<Object> readFuture = actorContext.executeRemoteOperationAsync(getActor(),
+            Future<Object> readFuture = actorContext.executeOperationAsync(getActor(),
                     new ReadData(path).toSerializable());
             readFuture.onComplete(onComplete, actorContext.getActorSystem().dispatcher());
         }
@@ -773,7 +779,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
                 }
             };
 
-            Future<Object> future = actorContext.executeRemoteOperationAsync(getActor(),
+            Future<Object> future = actorContext.executeOperationAsync(getActor(),
                     new DataExists(path).toSerializable());
             future.onComplete(onComplete, actorContext.getActorSystem().dispatcher());
         }
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
new file mode 100644 (file)
index 0000000..302d684
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * 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.exceptions;
+
+public class NotInitializedException extends RuntimeException {
+    public NotInitializedException(String message) {
+        super(message);
+    }
+}
index c6928815938058dbddc7bdb8b920c60fa2e0f7da..d65af61ba3f8a957b6f67bdc355035fa93297431 100644 (file)
@@ -10,11 +10,17 @@ package org.opendaylight.controller.cluster.datastore.identifiers;
 
 import com.google.common.base.Preconditions;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 public class ShardIdentifier {
     private final String shardName;
     private final String memberName;
     private final String type;
 
+    //format and pattern should be in sync
+    private final String format = "%s-shard-%s-%s";
+    private static final Pattern pattern = Pattern.compile("(\\S+)-shard-(\\S+)-(\\S+)");
 
     public ShardIdentifier(String shardName, String memberName, String type) {
 
@@ -60,15 +66,31 @@ public class ShardIdentifier {
     }
 
     @Override public String toString() {
-        StringBuilder builder = new StringBuilder();
-        builder.append(memberName).append("-shard-").append(shardName).append("-").append(type);
-        return builder.toString();
+        //ensure the output of toString matches the pattern above
+        return new StringBuilder(memberName)
+                    .append("-shard-")
+                    .append(shardName)
+                    .append("-")
+                    .append(type)
+                    .toString();
     }
 
     public static Builder builder(){
         return new Builder();
     }
 
+    public String getShardName() {
+        return shardName;
+    }
+
+    public String getMemberName() {
+        return memberName;
+    }
+
+    public String getType() {
+        return type;
+    }
+
     public static class Builder {
         private String shardName;
         private String memberName;
@@ -93,5 +115,15 @@ public class ShardIdentifier {
             return this;
         }
 
+        public Builder fromShardIdString(String shardId){
+            Matcher matcher = pattern.matcher(shardId);
+
+            if (matcher.matches()) {
+                memberName = matcher.group(1);
+                shardName = matcher.group(2);
+                type = matcher.group(3);
+            }
+            return this;
+        }
     }
 }
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
new file mode 100644 (file)
index 0000000..b034f87
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * 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.messages;
+
+import java.io.Serializable;
+
+public class ActorInitialized implements Serializable {
+}
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
new file mode 100644 (file)
index 0000000..de25ef9
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * 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.messages;
+
+import java.io.Serializable;
+
+public class ActorNotInitialized implements Serializable {
+}
index a8827bebf4386b1a63918a30cb1b31faa81335a8..5b5f076d43713b48e6245a35a6d21684ecf909cb 100644 (file)
@@ -9,14 +9,13 @@
 package org.opendaylight.controller.cluster.datastore.messages;
 
 import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
+import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
 import org.opendaylight.controller.protobuff.messages.datachange.notification.DataChangeListenerMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -26,8 +25,9 @@ import java.util.Map;
 import java.util.Set;
 
 public class DataChanged implements SerializableMessage {
-    public static final Class SERIALIZABLE_CLASS =
+    public static final Class<DataChangeListenerMessages.DataChanged> SERIALIZABLE_CLASS =
         DataChangeListenerMessages.DataChanged.class;
+
     final private SchemaContext schemaContext;
     private final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>>
         change;
@@ -50,7 +50,7 @@ public class DataChanged implements SerializableMessage {
         NormalizedNode<?, ?> normalizedNode) {
 
         return new NormalizedNodeToNodeCodec(schemaContext)
-            .encode(YangInstanceIdentifier.builder().build(), normalizedNode)
+            .encode(normalizedNode)
             .getNormalizedNode();
 
     }
@@ -62,6 +62,7 @@ public class DataChanged implements SerializableMessage {
             removedPathInstanceIds.add(InstanceIdentifierUtils.toSerializable(id));
         }
         return new Iterable<NormalizedNodeMessages.InstanceIdentifier>() {
+            @Override
             public Iterator<NormalizedNodeMessages.InstanceIdentifier> iterator() {
                 return removedPathInstanceIds.iterator();
             }
@@ -86,7 +87,7 @@ public class DataChanged implements SerializableMessage {
 
             builder.setInstanceIdentifierPath(instanceIdentifier)
                 .setNormalizedNode(normalizedNodeToNodeCodec
-                    .encode(entry.getKey(), entry.getValue())
+                    .encode(entry.getValue())
                     .getNormalizedNode());
             nodeMapBuilder.addMapEntries(builder.build());
         }
@@ -146,7 +147,6 @@ public class DataChanged implements SerializableMessage {
 
     static class DataChangedEvent implements
         AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> {
-        private final SchemaContext schemaContext;
         private Map<YangInstanceIdentifier, NormalizedNode<?, ?>> createdData;
         private final NormalizedNodeToNodeCodec nodeCodec;
         private Map<YangInstanceIdentifier, NormalizedNode<?, ?>> updatedData;
@@ -156,7 +156,6 @@ public class DataChanged implements SerializableMessage {
         private Set<YangInstanceIdentifier> removedPathIds;
 
         DataChangedEvent(SchemaContext schemaContext) {
-            this.schemaContext = schemaContext;
             nodeCodec = new NormalizedNodeToNodeCodec(schemaContext);
         }
 
@@ -183,7 +182,7 @@ public class DataChanged implements SerializableMessage {
                 YangInstanceIdentifier id = InstanceIdentifierUtils
                     .fromSerializable(nodeMapEntry.getInstanceIdentifierPath());
                 mapEntries.put(id,
-                    nodeCodec.decode(id, nodeMapEntry.getNormalizedNode()));
+                    nodeCodec.decode(nodeMapEntry.getNormalizedNode()));
             }
             return mapEntries;
         }
@@ -240,7 +239,7 @@ public class DataChanged implements SerializableMessage {
 
         DataChangedEvent setOriginalSubtree(NormalizedNodeMessages.Node node,
             YangInstanceIdentifier instanceIdentifierPath) {
-            originalSubTree = nodeCodec.decode(instanceIdentifierPath, node);
+            originalSubTree = nodeCodec.decode(node);
             return this;
         }
 
@@ -251,7 +250,7 @@ public class DataChanged implements SerializableMessage {
 
         DataChangedEvent setUpdatedSubtree(NormalizedNodeMessages.Node node,
             YangInstanceIdentifier instanceIdentifierPath) {
-            updatedSubTree = nodeCodec.decode(instanceIdentifierPath, node);
+            updatedSubTree = nodeCodec.decode(node);
             return this;
         }
 
index 9ae851e76c0f4db04776d14e7cfeab1ab20fefaa..6d3051c8c7ab9779ca252082868e95e30f8a962c 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.controller.cluster.datastore.messages;
 
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
+import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
index ba790816c4aefa72d5db0e97b392af205e979f4b..eb1f3495bdf2c04328ad5336eb44b248149bd242 100644 (file)
@@ -9,8 +9,8 @@
 package org.opendaylight.controller.cluster.datastore.messages;
 
 import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Decoded;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Encoded;
 import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -18,31 +18,26 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public class MergeData extends ModifyData{
 
-    public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.MergeData.class;
+    public static final Class<ShardTransactionMessages.MergeData> SERIALIZABLE_CLASS =
+            ShardTransactionMessages.MergeData.class;
 
     public MergeData(YangInstanceIdentifier path, NormalizedNode<?, ?> data,
         SchemaContext context) {
         super(path, data, context);
     }
 
-    @Override public Object toSerializable() {
-
-        NormalizedNodeMessages.Node normalizedNode =
-            new NormalizedNodeToNodeCodec(schemaContext).encode(path, data)
-                .getNormalizedNode();
+    @Override
+    public Object toSerializable() {
+        Encoded encoded = new NormalizedNodeToNodeCodec(schemaContext).encode(path, data);
         return ShardTransactionMessages.MergeData.newBuilder()
-            .setInstanceIdentifierPathArguments(InstanceIdentifierUtils.toSerializable(path))
-            .setNormalizedNode(normalizedNode).build();
+            .setInstanceIdentifierPathArguments(encoded.getEncodedPath())
+            .setNormalizedNode(encoded.getEncodedNode().getNormalizedNode()).build();
     }
 
     public static MergeData fromSerializable(Object serializable, SchemaContext schemaContext){
         ShardTransactionMessages.MergeData o = (ShardTransactionMessages.MergeData) serializable;
-        YangInstanceIdentifier identifier = InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments());
-
-        NormalizedNode<?, ?> normalizedNode =
-            new NormalizedNodeToNodeCodec(schemaContext)
-                .decode(identifier, o.getNormalizedNode());
-
-        return new MergeData(identifier, normalizedNode, schemaContext);
+        Decoded decoded = new NormalizedNodeToNodeCodec(schemaContext).decode(
+                o.getInstanceIdentifierPathArguments(), o.getNormalizedNode());
+        return new MergeData(decoded.getDecodedPath(), decoded.getDecodedNode(), schemaContext);
     }
 }
index a698f4634797116875871d20bf5d68d90ffb1ff7..d743d99fcc12cee6b4da25d306d9d97a567ede0a 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.controller.cluster.datastore.messages;
 
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
+import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
index fc6bcff64a3c1afa691abb54650434c9f6af4886..43dd81252c3a52f35da645e6993d716e2a0d7715 100644 (file)
@@ -15,41 +15,44 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
-public class ReadDataReply implements SerializableMessage{
-
-  private final NormalizedNode<?, ?> normalizedNode;
-  private final SchemaContext schemaContext;
-  public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.ReadDataReply.class;
-  public ReadDataReply(SchemaContext context,NormalizedNode<?, ?> normalizedNode){
-
-    this.normalizedNode = normalizedNode;
-    this.schemaContext = context;
-  }
-
-  public NormalizedNode<?, ?> getNormalizedNode() {
-    return normalizedNode;
-  }
-
-  public Object toSerializable(){
-    if(normalizedNode != null) {
-      return ShardTransactionMessages.ReadDataReply.newBuilder()
-          .setNormalizedNode(new NormalizedNodeToNodeCodec(schemaContext)
-                  .encode(YangInstanceIdentifier.builder().build(), normalizedNode).getNormalizedNode()
-          ).build();
-    }else{
-      return ShardTransactionMessages.ReadDataReply.newBuilder().build();
+public class ReadDataReply implements SerializableMessage {
+    public static final Class<ShardTransactionMessages.ReadDataReply> SERIALIZABLE_CLASS =
+            ShardTransactionMessages.ReadDataReply.class;
 
+    private final NormalizedNode<?, ?> normalizedNode;
+    private final SchemaContext schemaContext;
+
+    public ReadDataReply(SchemaContext context,NormalizedNode<?, ?> normalizedNode){
+
+        this.normalizedNode = normalizedNode;
+        this.schemaContext = context;
+    }
+
+    public NormalizedNode<?, ?> getNormalizedNode() {
+        return normalizedNode;
     }
 
-  }
+    @Override
+    public Object toSerializable(){
+        if(normalizedNode != null) {
+            return ShardTransactionMessages.ReadDataReply.newBuilder()
+                    .setNormalizedNode(new NormalizedNodeToNodeCodec(schemaContext)
+                        .encode(normalizedNode).getNormalizedNode()).build();
+        } else {
+            return ShardTransactionMessages.ReadDataReply.newBuilder().build();
 
-  public static ReadDataReply fromSerializable(SchemaContext schemaContext,YangInstanceIdentifier id,Object serializable){
-    ShardTransactionMessages.ReadDataReply o = (ShardTransactionMessages.ReadDataReply) serializable;
-    return new ReadDataReply(schemaContext,new NormalizedNodeToNodeCodec(schemaContext).decode(id, o.getNormalizedNode()));
-  }
+        }
+    }
+
+    public static ReadDataReply fromSerializable(SchemaContext schemaContext,
+            YangInstanceIdentifier id, Object serializable) {
+        ShardTransactionMessages.ReadDataReply o = (ShardTransactionMessages.ReadDataReply) serializable;
+        return new ReadDataReply(schemaContext, new NormalizedNodeToNodeCodec(schemaContext).decode(
+                o.getNormalizedNode()));
+    }
 
-  public static ByteString getNormalizedNodeByteString(Object serializable){
-      ShardTransactionMessages.ReadDataReply o = (ShardTransactionMessages.ReadDataReply) serializable;
-      return ((ShardTransactionMessages.ReadDataReply) serializable).getNormalizedNode().toByteString();
-  }
+    public static ByteString getNormalizedNodeByteString(Object serializable){
+        ShardTransactionMessages.ReadDataReply o = (ShardTransactionMessages.ReadDataReply) serializable;
+        return ((ShardTransactionMessages.ReadDataReply) serializable).getNormalizedNode().toByteString();
+    }
 }
index c1ec0a87cba2c64db745879fa08211cea9821b2c..dea085153bbc202f7da357d71f1bfbe1aaaecd27 100644 (file)
@@ -10,13 +10,15 @@ package org.opendaylight.controller.cluster.datastore.messages;
 
 import akka.actor.ActorPath;
 import akka.actor.ActorSystem;
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
+import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.protobuff.messages.registration.ListenerRegistrationMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
 public class RegisterChangeListener implements SerializableMessage {
-  public static final Class SERIALIZABLE_CLASS = ListenerRegistrationMessages.RegisterChangeListener.class;
+    public static final Class<ListenerRegistrationMessages.RegisterChangeListener> SERIALIZABLE_CLASS =
+            ListenerRegistrationMessages.RegisterChangeListener.class;
+
     private final YangInstanceIdentifier path;
     private final ActorPath dataChangeListenerPath;
     private final AsyncDataBroker.DataChangeScope scope;
index 87fa010b373d679eae58ff306a262de406c9c148..8aa63ef262a1366b63de5844979ed0caafb27208 100644 (file)
@@ -9,41 +9,34 @@
 package org.opendaylight.controller.cluster.datastore.messages;
 
 import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Decoded;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Encoded;
 import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
-public class WriteData extends ModifyData{
+public class WriteData extends ModifyData {
 
-  public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.WriteData.class;
+    public static final Class<ShardTransactionMessages.WriteData> SERIALIZABLE_CLASS =
+            ShardTransactionMessages.WriteData.class;
 
-  public WriteData(YangInstanceIdentifier path, NormalizedNode<?, ?> data, SchemaContext schemaContext) {
-    super(path, data, schemaContext);
-  }
-
-    @Override public Object toSerializable() {
+    public WriteData(YangInstanceIdentifier path, NormalizedNode<?, ?> data, SchemaContext schemaContext) {
+        super(path, data, schemaContext);
+    }
 
-        NormalizedNodeMessages.Node normalizedNode =
-            new NormalizedNodeToNodeCodec(schemaContext).encode(path, data)
-                .getNormalizedNode();
+    @Override
+    public Object toSerializable() {
+        Encoded encoded = new NormalizedNodeToNodeCodec(schemaContext).encode(path, data);
         return ShardTransactionMessages.WriteData.newBuilder()
-            .setInstanceIdentifierPathArguments(InstanceIdentifierUtils.toSerializable(path))
-            .setNormalizedNode(normalizedNode).build();
-
+                .setInstanceIdentifierPathArguments(encoded.getEncodedPath())
+                .setNormalizedNode(encoded.getEncodedNode().getNormalizedNode()).build();
     }
 
     public static WriteData fromSerializable(Object serializable, SchemaContext schemaContext){
         ShardTransactionMessages.WriteData o = (ShardTransactionMessages.WriteData) serializable;
-        YangInstanceIdentifier identifier = InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments());
-
-        NormalizedNode<?, ?> normalizedNode =
-            new NormalizedNodeToNodeCodec(schemaContext)
-                .decode(identifier, o.getNormalizedNode());
-
-        return new WriteData(identifier, normalizedNode, schemaContext);
+        Decoded decoded = new NormalizedNodeToNodeCodec(schemaContext).decode(
+                o.getInstanceIdentifierPathArguments(), o.getNormalizedNode());
+        return new WriteData(decoded.getDecodedPath(), decoded.getDecodedNode(), schemaContext);
     }
-
 }
index 169397bf877168cee54be4fd013870e158c17b0c..4f4f0fb8f17b3baf065c2340e97819ff97f2a43e 100644 (file)
@@ -26,4 +26,8 @@ public abstract class AbstractModification implements Modification,
     protected AbstractModification(YangInstanceIdentifier path) {
         this.path = path;
     }
+
+    public YangInstanceIdentifier getPath() {
+        return path;
+    }
 }
index 593f458afa314f458ad314e6af22701160810c35..056fe756371589c7d055d054b8884f50db5bd60f 100644 (file)
@@ -8,7 +8,7 @@
 
 package org.opendaylight.controller.cluster.datastore.modification;
 
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
+import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages;
 import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -17,23 +17,24 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
  * DeleteModification store all the parameters required to delete a path from the data tree
  */
 public class DeleteModification extends AbstractModification {
-  public DeleteModification(YangInstanceIdentifier path) {
-    super(path);
-  }
+    private static final long serialVersionUID = 1L;
 
-  @Override
-  public void apply(DOMStoreWriteTransaction transaction) {
-    transaction.delete(path);
-  }
+    public DeleteModification(YangInstanceIdentifier path) {
+        super(path);
+    }
+
+    @Override
+    public void apply(DOMStoreWriteTransaction transaction) {
+        transaction.delete(path);
+    }
 
-    @Override public Object toSerializable() {
-        return PersistentMessages.Modification.newBuilder()
-            .setType(this.getClass().toString())
-            .setPath(InstanceIdentifierUtils.toSerializable(this.path))
-            .build();
+    @Override
+    public Object toSerializable() {
+        return PersistentMessages.Modification.newBuilder().setType(this.getClass().toString())
+                .setPath(InstanceIdentifierUtils.toSerializable(this.path)).build();
     }
 
-    public static DeleteModification fromSerializable(Object serializable){
+    public static DeleteModification fromSerializable(Object serializable) {
         PersistentMessages.Modification o = (PersistentMessages.Modification) serializable;
         return new DeleteModification(InstanceIdentifierUtils.fromSerializable(o.getPath()));
     }
index f06adcf96f9ff7c16f1842187bbc98119b53152c..24c4c6c50a63fe171ca001bafe25ec7ee62e0970 100644 (file)
@@ -9,8 +9,7 @@
 package org.opendaylight.controller.cluster.datastore.modification;
 
 import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Decoded;
 import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages;
 import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -20,16 +19,11 @@ 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 AbstractModification {
-    private final NormalizedNode data;
-    private final SchemaContext schemaContext;
-
+public class MergeModification extends WriteModification {
 
     public MergeModification(YangInstanceIdentifier path, NormalizedNode data,
         SchemaContext schemaContext) {
-        super(path);
-        this.data = data;
-        this.schemaContext = schemaContext;
+        super(path, data, schemaContext);
     }
 
     @Override
@@ -37,29 +31,9 @@ public class MergeModification extends AbstractModification {
         transaction.merge(path, data);
     }
 
-    @Override public Object toSerializable() {
-        NormalizedNodeMessages.Container encode =
-            new NormalizedNodeToNodeCodec(schemaContext).encode(
-                path, data);
-
-        return PersistentMessages.Modification.newBuilder()
-            .setType(this.getClass().toString())
-            .setPath(InstanceIdentifierUtils.toSerializable(this.path))
-            .setData(encode.getNormalizedNode())
-            .build();
-
-    }
-
-    public static MergeModification fromSerializable(
-        Object serializable,
-        SchemaContext schemaContext) {
+    public static MergeModification fromSerializable(Object serializable, SchemaContext schemaContext) {
         PersistentMessages.Modification o = (PersistentMessages.Modification) serializable;
-
-        YangInstanceIdentifier path = InstanceIdentifierUtils.fromSerializable(o.getPath());
-        NormalizedNode data = new NormalizedNodeToNodeCodec(schemaContext).decode(
-            path, o.getData());
-
-        return new MergeModification(path, data, schemaContext);
+        Decoded decoded = new NormalizedNodeToNodeCodec(schemaContext).decode(o.getPath(), o.getData());
+        return new MergeModification(decoded.getDecodedPath(), decoded.getDecodedNode(), schemaContext);
     }
-
 }
index b4a7dd62d00121debd5cde36c358e02f4c264df8..53cc35a88be26f2ba9f9e0fda8994e8fdfb20584 100644 (file)
@@ -9,8 +9,8 @@
 package org.opendaylight.controller.cluster.datastore.modification;
 
 import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
-import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Decoded;
+import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec.Encoded;
 import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages;
 import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -22,43 +22,38 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
  */
 public class WriteModification extends AbstractModification {
 
-  private final NormalizedNode data;
+    protected final NormalizedNode data;
     private final SchemaContext schemaContext;
 
     public WriteModification(YangInstanceIdentifier path, NormalizedNode data, SchemaContext schemaContext) {
-    super(path);
-    this.data = data;
+        super(path);
+        this.data = data;
         this.schemaContext = schemaContext;
     }
 
-  @Override
-  public void apply(DOMStoreWriteTransaction transaction) {
-    transaction.write(path, data);
-  }
+    @Override
+    public void apply(DOMStoreWriteTransaction transaction) {
+        transaction.write(path, data);
+    }
 
-    @Override public Object toSerializable() {
-        NormalizedNodeMessages.Container encode =
-            new NormalizedNodeToNodeCodec(schemaContext).encode(
-                path, data);
+    public NormalizedNode getData() {
+        return data;
+    }
 
+    @Override
+    public Object toSerializable() {
+        Encoded encoded = new NormalizedNodeToNodeCodec(schemaContext).encode(path, data);
 
         return PersistentMessages.Modification.newBuilder()
-            .setType(this.getClass().toString())
-            .setPath(InstanceIdentifierUtils.toSerializable(this.path))
-            .setData(encode.getNormalizedNode())
-            .build();
-
+                .setType(this.getClass().toString())
+                .setPath(encoded.getEncodedPath())
+                .setData(encoded.getEncodedNode().getNormalizedNode())
+                .build();
     }
 
-    public static WriteModification fromSerializable(
-        Object serializable,
-        SchemaContext schemaContext) {
+    public static WriteModification fromSerializable(Object serializable, SchemaContext schemaContext) {
         PersistentMessages.Modification o = (PersistentMessages.Modification) serializable;
-
-        YangInstanceIdentifier path = InstanceIdentifierUtils.fromSerializable(o.getPath());
-        NormalizedNode data = new NormalizedNodeToNodeCodec(schemaContext).decode(
-            path, o.getData());
-
-        return new WriteModification(path, data, schemaContext);
+        Decoded decoded = new NormalizedNodeToNodeCodec(schemaContext).decode(o.getPath(), o.getData());
+        return new WriteModification(decoded.getDecodedPath(), decoded.getDecodedNode(), schemaContext);
     }
 }
index 8ba333d2799a5177c7b1b8b5b09ab6b4ec87d126..44f4ef77d7ff057dbea32ebfd9d3404f5b30f862 100644 (file)
@@ -13,12 +13,14 @@ import akka.actor.ActorRef;
 import akka.actor.ActorSelection;
 import akka.actor.ActorSystem;
 import akka.actor.PoisonPill;
-import akka.pattern.Patterns;
 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.exceptions.PrimaryNotFoundException;
+import org.opendaylight.controller.cluster.datastore.exceptions.NotInitializedException;
 import org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException;
+import org.opendaylight.controller.cluster.datastore.messages.ActorNotInitialized;
 import org.opendaylight.controller.cluster.datastore.messages.FindLocalShard;
 import org.opendaylight.controller.cluster.datastore.messages.FindPrimary;
 import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound;
@@ -101,14 +103,17 @@ public class ActorContext {
     }
 
     /**
-     * Finds the primary for a given shard
+     * Finds the primary shard for the given shard name
      *
      * @param shardName
      * @return
      */
-    public ActorSelection findPrimary(String shardName) {
-        String path = findPrimaryPath(shardName);
-        return actorSystem.actorSelection(path);
+    public Optional<ActorSelection> findPrimaryShard(String shardName) {
+        String path = findPrimaryPathOrNull(shardName);
+        if (path == null){
+            return Optional.absent();
+        }
+        return Optional.of(actorSystem.actorSelection(path));
     }
 
     /**
@@ -118,36 +123,36 @@ public class ActorContext {
      * @return a reference to a local shard actor which represents the shard
      *         specified by the shardName
      */
-    public ActorRef findLocalShard(String shardName) {
-        Object result = executeLocalOperation(shardManager,
-            new FindLocalShard(shardName));
+    public Optional<ActorRef> findLocalShard(String shardName) {
+        Object result = executeOperation(shardManager, new FindLocalShard(shardName));
 
         if (result instanceof LocalShardFound) {
             LocalShardFound found = (LocalShardFound) result;
-
-            if(LOG.isDebugEnabled()) {
-                LOG.debug("Local shard found {}", found.getPath());
-            }
-            return found.getPath();
+            LOG.debug("Local shard found {}", found.getPath());
+            return Optional.of(found.getPath());
         }
 
-        return null;
+        return Optional.absent();
     }
 
 
-    public String findPrimaryPath(String shardName) {
-        Object result = executeLocalOperation(shardManager,
-            new FindPrimary(shardName).toSerializable());
+    private String findPrimaryPathOrNull(String shardName) {
+        Object result = executeOperation(shardManager, new FindPrimary(shardName).toSerializable());
 
         if (result.getClass().equals(PrimaryFound.SERIALIZABLE_CLASS)) {
             PrimaryFound found = PrimaryFound.fromSerializable(result);
 
-            if(LOG.isDebugEnabled()) {
-                LOG.debug("Primary found {}", found.getPrimaryPath());
-            }
+            LOG.debug("Primary found {}", found.getPrimaryPath());
             return found.getPrimaryPath();
+
+        } else if (result.getClass().equals(ActorNotInitialized.class)){
+            throw new NotInitializedException(
+                String.format("Found primary shard[%s] but its not initialized yet. Please try again later", shardName)
+            );
+
+        } else {
+            return null;
         }
-        throw new PrimaryNotFoundException("Could not find primary for shardName " + shardName);
     }
 
 
@@ -158,16 +163,25 @@ public class ActorContext {
      * @param message
      * @return The response of the operation
      */
-    public Object executeLocalOperation(ActorRef actor, Object message) {
-        Future<Object> future = ask(actor, message, operationTimeout);
+    public Object executeOperation(ActorRef actor, Object message) {
+        Future<Object> future = executeOperationAsync(actor, message, operationTimeout);
 
         try {
             return Await.result(future, operationDuration);
         } catch (Exception e) {
-            throw new TimeoutException("Sending message " + message.getClass().toString() + " to actor " + actor.toString() + " failed" , e);
+            throw new TimeoutException("Sending message " + message.getClass().toString() +
+                    " to actor " + actor.toString() + " failed. Try again later.", e);
         }
     }
 
+    public Future<Object> executeOperationAsync(ActorRef 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, timeout);
+    }
+
     /**
      * Execute an operation on a remote actor and wait for it's response
      *
@@ -175,19 +189,14 @@ public class ActorContext {
      * @param message
      * @return
      */
-    public Object executeRemoteOperation(ActorSelection actor, Object message) {
-
-        if(LOG.isDebugEnabled()) {
-            LOG.debug("Sending remote message {} to {}", message.getClass().toString(),
-                actor.toString());
-        }
-        Future<Object> future = ask(actor, message, operationTimeout);
+    public Object executeOperation(ActorSelection actor, Object message) {
+        Future<Object> future = executeOperationAsync(actor, message);
 
         try {
             return Await.result(future, operationDuration);
         } catch (Exception e) {
             throw new TimeoutException("Sending message " + message.getClass().toString() +
-                    " to actor " + actor.toString() + " failed, e);
+                    " to actor " + actor.toString() + " failed. Try again later.", e);
         }
     }
 
@@ -198,11 +207,12 @@ public class ActorContext {
      * @param message the message to send
      * @return a Future containing the eventual result
      */
-    public Future<Object> executeRemoteOperationAsync(ActorSelection actor, Object message) {
+    public Future<Object> executeOperationAsync(ActorSelection actor, Object message) {
+        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());
 
-        if(LOG.isDebugEnabled()) {
-            LOG.debug("Sending remote message {} to {}", message.getClass().toString(), actor.toString());
-        }
         return ask(actor, message, operationTimeout);
     }
 
@@ -213,86 +223,15 @@ public class ActorContext {
      * @param actor the ActorSelection
      * @param message the message to send
      */
-    public void sendRemoteOperationAsync(ActorSelection actor, Object message) {
-        actor.tell(message, ActorRef.noSender());
-    }
-
-    public void sendShardOperationAsync(String shardName, Object message) {
-        ActorSelection primary = findPrimary(shardName);
-
-        primary.tell(message, ActorRef.noSender());
-    }
+    public void sendOperationAsync(ActorSelection actor, Object message) {
+        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());
 
-    /**
-     * Execute an operation on the primary for a given shard
-     * <p>
-     * This method first finds the primary for a given shard ,then sends
-     * the message to the remote shard and waits for a response
-     * </p>
-     *
-     * @param shardName
-     * @param message
-     * @return
-     * @throws org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException         if the message to the remote shard times out
-     * @throws org.opendaylight.controller.cluster.datastore.exceptions.PrimaryNotFoundException if the primary shard is not found
-     */
-    public Object executeShardOperation(String shardName, Object message) {
-        ActorSelection primary = findPrimary(shardName);
-
-        return executeRemoteOperation(primary, message);
-    }
-
-    /**
-     * Execute an operation on the the local shard only
-     * <p>
-     *     This method first finds the address of the local shard if any. It then
-     *     executes the operation on it.
-     * </p>
-     *
-     * @param shardName the name of the shard on which the operation needs to be executed
-     * @param message the message that needs to be sent to the shard
-     * @return the message that was returned by the local actor on which the
-     *         the operation was executed. If a local shard was not found then
-     *         null is returned
-     * @throws org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException
-     *         if the operation does not complete in a specified time duration
-     */
-    public Object executeLocalShardOperation(String shardName, Object message) {
-        ActorRef local = findLocalShard(shardName);
-
-        if(local != null) {
-            return executeLocalOperation(local, message);
-        }
-
-        return null;
-    }
-
-
-    /**
-     * Execute an operation on the the local shard only asynchronously
-     *
-     * <p>
-     *     This method first finds the address of the local shard if any. It then
-     *     executes the operation on it.
-     * </p>
-     *
-     * @param shardName the name of the shard on which the operation needs to be executed
-     * @param message the message that needs to be sent to the shard
-     * @param timeout the amount of time that this method should wait for a response before timing out
-     * @return null if the shard could not be located else a future on which the caller can wait
-     *
-     */
-    public Future executeLocalShardOperationAsync(String shardName, Object message, Timeout timeout) {
-        ActorRef local = findLocalShard(shardName);
-        if(local == null){
-            return null;
-        }
-        return Patterns.ask(local, message, timeout);
+        actor.tell(message, ActorRef.noSender());
     }
 
-
-
     public void shutdown() {
         shardManager.tell(PoisonPill.getInstance(), null);
         actorSystem.shutdown();
@@ -337,10 +276,13 @@ public class ActorContext {
      */
     public void broadcast(Object message){
         for(String shardName : configuration.getAllShardNames()){
-            try {
-                sendShardOperationAsync(shardName, message);
-            } catch(Exception e){
-                LOG.warn("broadcast failed to send message " +  message.getClass().getSimpleName() + " to shard " + shardName, e);
+
+            Optional<ActorSelection> primary = findPrimaryShard(shardName);
+            if (primary.isPresent()) {
+                primary.get().tell(message, ActorRef.noSender());
+            } else {
+                LOG.warn("broadcast failed to send message {} to shard {}. Primary not found",
+                        message.getClass().getSimpleName(), shardName);
             }
         }
     }
diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/InstanceIdentifierUtils.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/InstanceIdentifierUtils.java
deleted file mode 100644 (file)
index c154b81..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.opendaylight.controller.cluster.datastore.utils;
-
-import org.opendaylight.controller.cluster.datastore.node.utils.NodeIdentifierFactory;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author: syedbahm
- */
-public class InstanceIdentifierUtils {
-
-    protected static final Logger logger = LoggerFactory
-        .getLogger(InstanceIdentifierUtils.class);
-
-    public static String getParentPath(String currentElementPath) {
-
-        StringBuilder parentPath = new StringBuilder();
-
-        if (currentElementPath != null) {
-            String[] parentPaths = currentElementPath.split("/");
-            if (parentPaths.length > 2) {
-                for (int i = 0; i < parentPaths.length - 1; i++) {
-                    if (parentPaths[i].length() > 0) {
-                        parentPath.append( "/");
-                        parentPath.append( parentPaths[i]);
-                    }
-                }
-            }
-        }
-        return parentPath.toString();
-    }
-
-    @Deprecated
-    public static YangInstanceIdentifier from(String path) {
-        String[] ids = path.split("/");
-
-        List<YangInstanceIdentifier.PathArgument> pathArguments =
-            new ArrayList<>();
-        for (String nodeId : ids) {
-            if (!"".equals(nodeId)) {
-                pathArguments
-                    .add(NodeIdentifierFactory.getArgument(nodeId));
-            }
-        }
-        final YangInstanceIdentifier instanceIdentifier =
-            YangInstanceIdentifier.create(pathArguments);
-        return instanceIdentifier;
-    }
-
-    /**
-     * @deprecated Use {@link org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils} instead
-     * @param path
-     * @return
-     */
-    @Deprecated
-    public static NormalizedNodeMessages.InstanceIdentifier toSerializable(YangInstanceIdentifier path){
-        return org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils.toSerializable(path);
-    }
-
-    /**
-     * @deprecated Use {@link org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils} instead
-     * @param path
-     * @return
-     */
-    @Deprecated
-    public static YangInstanceIdentifier fromSerializable(NormalizedNodeMessages.InstanceIdentifier path){
-        return org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils.fromSerializable(path);
-    }
-}
index 2ed11cfbda21eff65b3cb6223b671731c891ab67..c79d76203589c51126dbd281adfd7dcaf4712db4 100644 (file)
@@ -82,7 +82,7 @@ public class DataChangeListenerProxyTest extends AbstractActorTest {
         ActorContext
             testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration());
         Object messages = testContext
-            .executeLocalOperation(actorRef, "messages");
+            .executeOperation(actorRef, "messages");
 
         Assert.assertNotNull(messages);
 
index ab3ff795d3cb4a4e66e3ddd708236a8d15eec365..aaf080bdf7d8d50de4a3f31713143389994872a6 100644 (file)
@@ -66,7 +66,7 @@ public class DataChangeListenerRegistrationProxyTest extends AbstractActorTest{
         ActorContext
             testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)),new MockClusterWrapper(), new MockConfiguration());
         Object messages = testContext
-            .executeLocalOperation(actorRef, "messages");
+            .executeOperation(actorRef, "messages");
 
         assertNotNull(messages);
 
@@ -95,7 +95,7 @@ public class DataChangeListenerRegistrationProxyTest extends AbstractActorTest{
         ActorContext
             testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)),new MockClusterWrapper(), new MockConfiguration());
         Object messages = testContext
-            .executeLocalOperation(actorRef, "messages");
+            .executeOperation(actorRef, "messages");
 
         assertNotNull(messages);
 
index 08c3ea9602adb9cd891f9e1fe573ded671e5d6d7..d57a5eea4a684c2572376e303f227907426b10ce 100644 (file)
@@ -8,6 +8,7 @@ import akka.actor.Props;
 import akka.dispatch.ExecutionContexts;
 import akka.dispatch.Futures;
 import akka.util.Timeout;
+import com.google.common.base.Optional;
 import com.google.common.util.concurrent.MoreExecutors;
 import org.junit.After;
 import org.junit.Before;
@@ -97,11 +98,11 @@ public class DistributedDataStoreTest extends AbstractActorTest{
 
         ListenerRegistration registration =
                 distributedDataStore.registerChangeListener(TestModel.TEST_PATH, new AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>() {
-            @Override
-            public void onDataChanged(AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change) {
-                throw new UnsupportedOperationException("onDataChanged");
-            }
-        }, AsyncDataBroker.DataChangeScope.BASE);
+                    @Override
+                    public void onDataChanged(AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change) {
+                        throw new UnsupportedOperationException("onDataChanged");
+                    }
+                }, AsyncDataBroker.DataChangeScope.BASE);
 
         // Since we do not expect the shard to be local registration will return a NoOpRegistration
         assertTrue(registration instanceof NoOpDataChangeListenerRegistration);
@@ -119,8 +120,9 @@ public class DistributedDataStoreTest extends AbstractActorTest{
         Future future = mock(Future.class);
         when(actorContext.getOperationDuration()).thenReturn(FiniteDuration.apply(5, TimeUnit.SECONDS));
         when(actorContext.getActorSystem()).thenReturn(getSystem());
+        when(actorContext.findLocalShard(anyString())).thenReturn(Optional.of(doNothingActorRef));
         when(actorContext
-            .executeLocalShardOperationAsync(anyString(), anyObject(), any(Timeout.class))).thenReturn(future);
+                .executeOperationAsync(eq(doNothingActorRef), anyObject(), any(Timeout.class))).thenReturn(future);
 
         ListenerRegistration registration =
             distributedDataStore.registerChangeListener(TestModel.TEST_PATH,
@@ -153,8 +155,9 @@ public class DistributedDataStoreTest extends AbstractActorTest{
         when(actorSystem.dispatcher()).thenReturn(executor);
         when(actorSystem.actorOf(any(Props.class))).thenReturn(doNothingActorRef);
         when(actorContext.getActorSystem()).thenReturn(actorSystem);
+        when(actorContext.findLocalShard(anyString())).thenReturn(Optional.of(doNothingActorRef));
         when(actorContext
-            .executeLocalShardOperationAsync(anyString(), anyObject(), any(Timeout.class))).thenReturn(f);
+            .executeOperationAsync(eq(doNothingActorRef), anyObject(), any(Timeout.class))).thenReturn(f);
         when(actorContext.actorSelection(any(ActorPath.class))).thenReturn(actorSelection);
 
         ListenerRegistration registration =
@@ -195,8 +198,9 @@ public class DistributedDataStoreTest extends AbstractActorTest{
         when(actorSystem.dispatcher()).thenReturn(executor);
         when(actorSystem.actorOf(any(Props.class))).thenReturn(doNothingActorRef);
         when(actorContext.getActorSystem()).thenReturn(actorSystem);
+        when(actorContext.findLocalShard(anyString())).thenReturn(Optional.of(doNothingActorRef));
         when(actorContext
-            .executeLocalShardOperationAsync(anyString(), anyObject(), any(Timeout.class))).thenReturn(f);
+            .executeOperationAsync(eq(doNothingActorRef), anyObject(), any(Timeout.class))).thenReturn(f);
         when(actorContext.actorSelection(any(ActorPath.class))).thenReturn(actorSelection);
 
         ListenerRegistration registration =
index 8a3cdd0c8aa3b9890811c8a52318c8c18051d7b8..ed7b6866bf5fffff21cae1f61379a3126257ea07 100644 (file)
@@ -22,6 +22,8 @@ import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
+import org.opendaylight.controller.cluster.datastore.messages.ActorInitialized;
 import org.opendaylight.controller.cluster.datastore.messages.FindLocalShard;
 import org.opendaylight.controller.cluster.datastore.messages.FindPrimary;
 import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound;
@@ -29,6 +31,7 @@ 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.controller.cluster.datastore.utils.DoNothingActor;
 import org.opendaylight.controller.cluster.datastore.utils.MockClusterWrapper;
 import org.opendaylight.controller.cluster.datastore.utils.MockConfiguration;
 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
@@ -53,6 +56,8 @@ import static org.mockito.Mockito.when;
 
 public class ShardManagerTest {
     private static ActorSystem system;
+    Configuration mockConfig = new MockConfiguration();
+    private static ActorRef defaultShardMockActor;
 
     @BeforeClass
     public static void setUpClass() {
@@ -60,13 +65,18 @@ public class ShardManagerTest {
         myJournal.put("class", "org.opendaylight.controller.cluster.datastore.ShardManagerTest$MyJournal");
         myJournal.put("plugin-dispatcher", "akka.actor.default-dispatcher");
         Config config = ConfigFactory.load()
-            .withValue("akka.persistence.journal.plugin",
-                ConfigValueFactory.fromAnyRef("my-journal"))
-            .withValue("my-journal", ConfigValueFactory.fromMap(myJournal));
+                .withValue("akka.persistence.journal.plugin",
+                        ConfigValueFactory.fromAnyRef("my-journal"))
+                .withValue("my-journal", ConfigValueFactory.fromMap(myJournal));
 
         MyJournal.clear();
 
         system = ActorSystem.create("test", config);
+
+        String name = new ShardIdentifier(Shard.DEFAULT_NAME, "member-1","config").toString();
+        defaultShardMockActor = system.actorOf(Props.create(DoNothingActor.class), name);
+
+
     }
 
     @AfterClass
@@ -86,15 +96,15 @@ public class ShardManagerTest {
         new JavaTestKit(system) {
             {
                 final Props props = ShardManager
-                    .props("config", new MockClusterWrapper(),
-                        new MockConfiguration(), new DatastoreContext());
+                        .props("config", new MockClusterWrapper(),
+                                new MockConfiguration(), new DatastoreContext());
 
                 final ActorRef subject = getSystem().actorOf(props);
 
                 subject.tell(new FindPrimary("inventory").toSerializable(), getRef());
 
                 expectMsgEquals(duration("2 seconds"),
-                    new PrimaryNotFound("inventory").toSerializable());
+                        new PrimaryNotFound("inventory").toSerializable());
             }};
     }
 
@@ -103,17 +113,19 @@ public class ShardManagerTest {
 
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
 
             final ActorRef subject = getSystem().actorOf(props);
 
             subject.tell(new UpdateSchemaContext(TestModel.createTestContext()), getRef());
+            subject.tell(new ActorInitialized(), defaultShardMockActor);
 
             subject.tell(new FindPrimary(Shard.DEFAULT_NAME).toSerializable(), getRef());
 
             expectMsgClass(duration("1 seconds"), PrimaryFound.SERIALIZABLE_CLASS);
-        }};
+        }
+        };
     }
 
     @Test
@@ -121,8 +133,8 @@ public class ShardManagerTest {
 
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
 
             final ActorRef subject = getSystem().actorOf(props);
 
@@ -150,12 +162,13 @@ public class ShardManagerTest {
 
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", mockClusterWrapper,
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", mockClusterWrapper,
+                            new MockConfiguration(), new DatastoreContext());
 
             final ActorRef subject = getSystem().actorOf(props);
 
             subject.tell(new UpdateSchemaContext(TestModel.createTestContext()), getRef());
+            subject.tell(new ActorInitialized(), defaultShardMockActor);
 
             subject.tell(new FindLocalShard(Shard.DEFAULT_NAME), getRef());
 
@@ -171,7 +184,7 @@ public class ShardManagerTest {
             }.get(); // this extracts the received message
 
             assertTrue(out.path().toString(),
-                out.path().toString().contains("member-1-shard-default-config"));
+                    out.path().toString().contains("member-1-shard-default-config"));
         }};
     }
 
@@ -180,8 +193,8 @@ public class ShardManagerTest {
 
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
 
             final ActorRef subject = getSystem().actorOf(props);
 
@@ -211,8 +224,8 @@ public class ShardManagerTest {
 
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
 
             final ActorRef subject = getSystem().actorOf(props);
 
@@ -233,14 +246,14 @@ public class ShardManagerTest {
     @Test
     public void testOnRecoveryJournalIsEmptied(){
         MyJournal.addToJournal(1L, new ShardManager.SchemaContextModules(
-            ImmutableSet.of("foo")));
+                ImmutableSet.of("foo")));
 
         assertEquals(1, MyJournal.get().size());
 
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
 
             final ActorRef subject = getSystem().actorOf(props);
 
@@ -257,10 +270,10 @@ public class ShardManagerTest {
     public void testOnRecoveryPreviouslyKnownModulesAreDiscovered() throws Exception {
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
             final TestActorRef<ShardManager> subject =
-                TestActorRef.create(system, props);
+                    TestActorRef.create(system, props);
 
             subject.underlyingActor().onReceiveRecover(new ShardManager.SchemaContextModules(ImmutableSet.of("foo")));
 
@@ -272,13 +285,13 @@ public class ShardManagerTest {
 
     @Test
     public void testOnUpdateSchemaContextUpdateKnownModulesIfTheyContainASuperSetOfTheKnownModules()
-        throws Exception {
+            throws Exception {
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
             final TestActorRef<ShardManager> subject =
-                TestActorRef.create(system, props);
+                    TestActorRef.create(system, props);
 
             Collection<String> knownModules = subject.underlyingActor().getKnownModules();
 
@@ -318,13 +331,13 @@ public class ShardManagerTest {
 
     @Test
     public void testOnUpdateSchemaContextDoNotUpdateKnownModulesIfTheyDoNotContainASuperSetOfKnownModules()
-        throws Exception {
+            throws Exception {
         new JavaTestKit(system) {{
             final Props props = ShardManager
-                .props("config", new MockClusterWrapper(),
-                    new MockConfiguration(), new DatastoreContext());
+                    .props("config", new MockClusterWrapper(),
+                            new MockConfiguration(), new DatastoreContext());
             final TestActorRef<ShardManager> subject =
-                TestActorRef.create(system, props);
+                    TestActorRef.create(system, props);
 
             Collection<String> knownModules = subject.underlyingActor().getKnownModules();
 
@@ -386,7 +399,7 @@ public class ShardManagerTest {
         }
 
         @Override public Future<Void> doAsyncReplayMessages(final String persistenceId, long fromSequenceNr, long toSequenceNr, long max,
-            final Procedure<PersistentRepr> replayCallback) {
+                                                            final Procedure<PersistentRepr> replayCallback) {
             if(journal.size() == 0){
                 return Futures.successful(null);
             }
@@ -395,8 +408,8 @@ public class ShardManagerTest {
                 public Void call() throws Exception {
                     for (Map.Entry<Long, Object> entry : journal.entrySet()) {
                         PersistentRepr persistentMessage =
-                            new PersistentImpl(entry.getValue(), entry.getKey(), persistenceId,
-                                false, null, null);
+                                new PersistentImpl(entry.getValue(), entry.getKey(), persistenceId,
+                                        false, null, null);
                         replayCallback.apply(persistentMessage);
                     }
                     return null;
@@ -409,7 +422,7 @@ public class ShardManagerTest {
         }
 
         @Override public Future<Void> doAsyncWriteMessages(
-            final Iterable<PersistentRepr> persistentReprs) {
+                final Iterable<PersistentRepr> persistentReprs) {
             return Futures.future(new Callable<Void>() {
                 @Override
                 public Void call() throws Exception {
@@ -424,12 +437,12 @@ public class ShardManagerTest {
         }
 
         @Override public Future<Void> doAsyncWriteConfirmations(
-            Iterable<PersistentConfirmation> persistentConfirmations) {
+                Iterable<PersistentConfirmation> persistentConfirmations) {
             return Futures.successful(null);
         }
 
         @Override public Future<Void> doAsyncDeleteMessages(Iterable<PersistentId> persistentIds,
-            boolean b) {
+                                                            boolean b) {
             clear();
             return Futures.successful(null);
         }
index a3e0b3a07d70993b5c403e7712dfeb1c3ad0c96d..2051c9debe88c69c071663df511fbff130f325ed 100644 (file)
@@ -208,7 +208,7 @@ public class ShardTest extends AbstractActorTest {
         YangInstanceIdentifier root = YangInstanceIdentifier.builder().build();
         NormalizedNode<?,?> expected = ref.underlyingActor().readStore(root);
 
-        NormalizedNodeMessages.Container encode = codec.encode(root, expected);
+        NormalizedNodeMessages.Container encode = codec.encode(expected);
 
         ApplySnapshot applySnapshot = new ApplySnapshot(Snapshot.create(
                 encode.getNormalizedNode().toByteString().toByteArray(),
@@ -260,7 +260,7 @@ public class ShardTest extends AbstractActorTest {
 
         InMemorySnapshotStore.addSnapshot(IDENTIFIER.toString(), Snapshot.create(
                 new NormalizedNodeToNodeCodec(SCHEMA_CONTEXT).encode(
-                        YangInstanceIdentifier.builder().build(), root).
+                        root).
                                 getNormalizedNode().toByteString().toByteArray(),
                                 Collections.<ReplicatedLogEntry>emptyList(), 0, 1, -1, -1));
 
index 1cd0f85fa1917057f77144f23009a7edb65c0150..3c9d857fe81db981d341233e2c7249f06273bee6 100644 (file)
@@ -91,12 +91,12 @@ public class ThreePhaseCommitCohortProxyTest extends AbstractActorTest {
                     .successful(((SerializableMessage) responses[i]).toSerializable()));
         }
 
-        stubber.when(actorContext).executeRemoteOperationAsync(any(ActorSelection.class),
+        stubber.when(actorContext).executeOperationAsync(any(ActorSelection.class),
                 isA(requestType));
     }
 
     private void verifyCohortInvocations(int nCohorts, Class<?> requestType) {
-        verify(actorContext, times(nCohorts)).executeRemoteOperationAsync(
+        verify(actorContext, times(nCohorts)).executeOperationAsync(
                 any(ActorSelection.class), isA(requestType));
     }
 
index e5392e025158704f44d152306aaa727b64d460e8..bdcca42d15c45553d6feb8ff6cc9bd7a792795dc 100644 (file)
@@ -1,28 +1,17 @@
 package org.opendaylight.controller.cluster.datastore;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 import akka.actor.ActorPath;
 import akka.actor.ActorRef;
 import akka.actor.ActorSelection;
 import akka.actor.Props;
 import akka.dispatch.Futures;
-
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-
-import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.READ_ONLY;
-import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.WRITE_ONLY;
-import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.READ_WRITE;
-
 import org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType;
 import org.opendaylight.controller.cluster.datastore.exceptions.PrimaryNotFoundException;
 import org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException;
@@ -52,22 +41,29 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCoh
 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.Await;
 import scala.concurrent.Future;
 import scala.concurrent.duration.Duration;
+
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 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.argThat;
 import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.isA;
 import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.READ_ONLY;
+import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.READ_WRITE;
+import static org.opendaylight.controller.cluster.datastore.TransactionProxy.TransactionType.WRITE_ONLY;
 
 @SuppressWarnings("resource")
 public class TransactionProxyTest extends AbstractActorTest {
@@ -224,11 +220,17 @@ public class TransactionProxyTest extends AbstractActorTest {
         ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class));
         doReturn(getSystem().actorSelection(actorRef.path())).
                 when(mockActorContext).actorSelection(actorRef.path().toString());
+
+        doReturn(Optional.of(getSystem().actorSelection(actorRef.path()))).
+                when(mockActorContext).findPrimaryShard(eq(DefaultShardStrategy.DEFAULT_SHARD));
+
         doReturn(createTransactionReply(actorRef)).when(mockActorContext).
-                executeShardOperation(eq(DefaultShardStrategy.DEFAULT_SHARD),
+                executeOperation(eq(getSystem().actorSelection(actorRef.path())),
                         eqCreateTransaction(memberName, type));
+
         doReturn(actorRef.path().toString()).when(mockActorContext).resolvePath(
                 anyString(), eq(actorRef.path().toString()));
+
         doReturn(actorRef.path()).when(mockActorContext).actorFor(actorRef.path().toString());
 
         return actorRef;
@@ -252,7 +254,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 READ_ONLY);
 
-        doReturn(readDataReply(null)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readDataReply(null)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqReadData());
 
         Optional<NormalizedNode<?, ?>> readOptional = transactionProxy.read(
@@ -262,7 +264,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> expectedNode = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(readDataReply(expectedNode)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readDataReply(expectedNode)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqReadData());
 
         readOptional = transactionProxy.read(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS);
@@ -277,7 +279,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         setupActorContextWithInitialCreateTransaction(READ_ONLY);
 
         doReturn(Futures.successful(new Object())).when(mockActorContext).
-                executeRemoteOperationAsync(any(ActorSelection.class), any());
+                executeOperationAsync(any(ActorSelection.class), any());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 READ_ONLY);
@@ -290,7 +292,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         setupActorContextWithInitialCreateTransaction(READ_ONLY);
 
         doReturn(Futures.failed(new TestException())).when(mockActorContext).
-                executeRemoteOperationAsync(any(ActorSelection.class), any());
+                executeOperationAsync(any(ActorSelection.class), any());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 READ_ONLY);
@@ -300,12 +302,17 @@ public class TransactionProxyTest extends AbstractActorTest {
 
     private void testExceptionOnInitialCreateTransaction(Exception exToThrow, Invoker invoker)
             throws Throwable {
+        ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class));
 
-        doThrow(exToThrow).when(mockActorContext).executeShardOperation(
-                anyString(), any());
+        if (exToThrow instanceof PrimaryNotFoundException) {
+            doReturn(Optional.absent()).when(mockActorContext).findPrimaryShard(anyString());
+        } else {
+            doReturn(Optional.of(getSystem().actorSelection(actorRef.path()))).
+                    when(mockActorContext).findPrimaryShard(anyString());
+        }
+        doThrow(exToThrow).when(mockActorContext).executeOperation(any(ActorSelection.class), any());
 
-        TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
-                READ_ONLY);
+        TransactionProxy transactionProxy = new TransactionProxy(mockActorContext, READ_ONLY);
 
         propagateReadFailedExceptionCause(invoker.invoke(transactionProxy));
     }
@@ -341,13 +348,13 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
         doReturn(Futures.failed(new TestException())).when(mockActorContext).
-                executeRemoteOperationAsync(eq(actorSelection(actorRef)), eqDeleteData());
+                executeOperationAsync(eq(actorSelection(actorRef)), eqDeleteData());
 
-        doReturn(readDataReply(null)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readDataReply(null)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqReadData());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -360,7 +367,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         try {
             propagateReadFailedExceptionCause(transactionProxy.read(TestModel.TEST_PATH));
         } finally {
-            verify(mockActorContext, times(0)).executeRemoteOperationAsync(
+            verify(mockActorContext, times(0)).executeOperationAsync(
                     eq(actorSelection(actorRef)), eqReadData());
         }
     }
@@ -371,10 +378,10 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> expectedNode = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(expectedNode));
 
-        doReturn(readDataReply(expectedNode)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readDataReply(expectedNode)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqReadData());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -406,14 +413,14 @@ public class TransactionProxyTest extends AbstractActorTest {
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 READ_ONLY);
 
-        doReturn(dataExistsReply(false)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(dataExistsReply(false)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqDataExists());
 
         Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet();
 
         assertEquals("Exists response", false, exists);
 
-        doReturn(dataExistsReply(true)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(dataExistsReply(true)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqDataExists());
 
         exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet();
@@ -436,7 +443,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         setupActorContextWithInitialCreateTransaction(READ_ONLY);
 
         doReturn(Futures.successful(new Object())).when(mockActorContext).
-                executeRemoteOperationAsync(any(ActorSelection.class), any());
+                executeOperationAsync(any(ActorSelection.class), any());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 READ_ONLY);
@@ -449,7 +456,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         setupActorContextWithInitialCreateTransaction(READ_ONLY);
 
         doReturn(Futures.failed(new TestException())).when(mockActorContext).
-                executeRemoteOperationAsync(any(ActorSelection.class), any());
+                executeOperationAsync(any(ActorSelection.class), any());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 READ_ONLY);
@@ -463,13 +470,13 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
         doReturn(Futures.failed(new TestException())).when(mockActorContext).
-                executeRemoteOperationAsync(eq(actorSelection(actorRef)), eqDeleteData());
+                executeOperationAsync(eq(actorSelection(actorRef)), eqDeleteData());
 
-        doReturn(dataExistsReply(false)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(dataExistsReply(false)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqDataExists());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -482,7 +489,7 @@ public class TransactionProxyTest extends AbstractActorTest {
         try {
             propagateReadFailedExceptionCause(transactionProxy.exists(TestModel.TEST_PATH));
         } finally {
-            verify(mockActorContext, times(0)).executeRemoteOperationAsync(
+            verify(mockActorContext, times(0)).executeOperationAsync(
                     eq(actorSelection(actorRef)), eqDataExists());
         }
     }
@@ -493,10 +500,10 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
-        doReturn(dataExistsReply(true)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(dataExistsReply(true)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqDataExists());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -547,7 +554,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -555,7 +562,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         transactionProxy.write(TestModel.TEST_PATH, nodeToWrite);
 
-        verify(mockActorContext).executeRemoteOperationAsync(
+        verify(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
         verifyRecordingOperationFutures(transactionProxy.getRecordedOperationFutures(),
@@ -590,7 +597,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(mergeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(mergeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqMergeData(nodeToWrite));
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -598,7 +605,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         transactionProxy.merge(TestModel.TEST_PATH, nodeToWrite);
 
-        verify(mockActorContext).executeRemoteOperationAsync(
+        verify(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqMergeData(nodeToWrite));
 
         verifyRecordingOperationFutures(transactionProxy.getRecordedOperationFutures(),
@@ -609,7 +616,7 @@ public class TransactionProxyTest extends AbstractActorTest {
     public void testDelete() throws Exception {
         ActorRef actorRef = setupActorContextWithInitialCreateTransaction(WRITE_ONLY);
 
-        doReturn(deleteDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(deleteDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqDeleteData());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -617,7 +624,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         transactionProxy.delete(TestModel.TEST_PATH);
 
-        verify(mockActorContext).executeRemoteOperationAsync(
+        verify(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqDeleteData());
 
         verifyRecordingOperationFutures(transactionProxy.getRecordedOperationFutures(),
@@ -656,13 +663,13 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(readDataReply(null)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readDataReply(null)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqReadData());
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
-        doReturn(readyTxReply(actorRef.path())).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readyTxReply(actorRef.path())).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), isA(ReadyTransaction.SERIALIZABLE_CLASS));
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -691,13 +698,13 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(mergeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(mergeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqMergeData(nodeToWrite));
 
         doReturn(Futures.failed(new TestException())).when(mockActorContext).
-                executeRemoteOperationAsync(eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
+                executeOperationAsync(eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
-        doReturn(readyTxReply(actorRef.path())).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readyTxReply(actorRef.path())).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), isA(ReadyTransaction.SERIALIZABLE_CLASS));
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -726,11 +733,11 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(mergeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(mergeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqMergeData(nodeToWrite));
 
         doReturn(Futures.failed(new TestException())).when(mockActorContext).
-                executeRemoteOperationAsync(eq(actorSelection(actorRef)),
+                executeOperationAsync(eq(actorSelection(actorRef)),
                         isA(ReadyTransaction.SERIALIZABLE_CLASS));
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -753,8 +760,9 @@ public class TransactionProxyTest extends AbstractActorTest {
     @Test
     public void testReadyWithInitialCreateTransactionFailure() throws Exception {
 
-        doThrow(new PrimaryNotFoundException("mock")).when(mockActorContext).executeShardOperation(
-                anyString(), any());
+        doReturn(Optional.absent()).when(mockActorContext).findPrimaryShard(anyString());
+//        doThrow(new PrimaryNotFoundException("mock")).when(mockActorContext).executeShardOperation(
+//                anyString(), any());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
                 WRITE_ONLY);
@@ -783,11 +791,11 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         NormalizedNode<?, ?> nodeToWrite = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
-        doReturn(writeDataReply()).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(writeDataReply()).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqWriteData(nodeToWrite));
 
         doReturn(Futures.successful(new Object())).when(mockActorContext).
-                executeRemoteOperationAsync(eq(actorSelection(actorRef)),
+                executeOperationAsync(eq(actorSelection(actorRef)),
                         isA(ReadyTransaction.SERIALIZABLE_CLASS));
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -820,7 +828,7 @@ public class TransactionProxyTest extends AbstractActorTest {
     public void testClose() throws Exception{
         ActorRef actorRef = setupActorContextWithInitialCreateTransaction(READ_WRITE);
 
-        doReturn(readDataReply(null)).when(mockActorContext).executeRemoteOperationAsync(
+        doReturn(readDataReply(null)).when(mockActorContext).executeOperationAsync(
                 eq(actorSelection(actorRef)), eqReadData());
 
         TransactionProxy transactionProxy = new TransactionProxy(mockActorContext,
@@ -830,7 +838,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         transactionProxy.close();
 
-        verify(mockActorContext).sendRemoteOperationAsync(
+        verify(mockActorContext).sendOperationAsync(
                 eq(actorSelection(actorRef)), isA(CloseTransaction.SERIALIZABLE_CLASS));
     }
 }
index afcd045434450d4dee2e89a8efb13b7866e77320..0b5e7132c77791cab3e2c4276fe1fb966bb6445e 100644 (file)
@@ -14,5 +14,14 @@ public class ShardIdentifierTest {
         assertEquals("member-1-shard-inventory-config", id.toString());
     }
 
+    @Test
+    public void testFromShardIdString(){
+        String shardIdStr = "member-1-shard-inventory-config";
+
+        ShardIdentifier id = ShardIdentifier.builder().fromShardIdString(shardIdStr).build();
 
+        assertEquals("member-1", id.getMemberName());
+        assertEquals("inventory", id.getShardName());
+        assertEquals("config", id.getType());
+    }
 }
index 75128e6a254633d1a20bfd2174f20a96dc6a1af1..8f3ca9c535a06a1ae5a67f80c16dec2a2c5c2e48 100644 (file)
@@ -1,47 +1,21 @@
 package org.opendaylight.controller.cluster.datastore.messages;
 
-import junit.framework.Assert;
+import org.junit.Assert;
 import org.junit.Test;
-import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
-import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
-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;
 
 public class MergeDataTest {
 
     @Test
-    public void testBasic(){
-        MergeData mergeData = new MergeData(TestModel.TEST_PATH, ImmutableNodes
-            .containerNode(TestModel.TEST_QNAME),
-            TestModel.createTestContext());
-
-        MergeData output = MergeData
-            .fromSerializable(mergeData.toSerializable(),
-                TestModel.createTestContext());
-
-    }
-
-    @Test
-    public void testNormalizedNodeEncodeDecode(){
-        NormalizedNode<?, ?> expected =
-            ImmutableNodes.containerNode(TestModel.TEST_QNAME);
-
-
-        NormalizedNodeMessages.Container node =
-            new NormalizedNodeToNodeCodec(TestModel.createTestContext())
-                .encode(TestModel.TEST_PATH,
-                    expected);
-
-        String parentPath = node.getParentPath();
-
-        NormalizedNodeMessages.Node normalizedNode =
-            node.getNormalizedNode();
-
-        NormalizedNode<?,?> actual = new NormalizedNodeToNodeCodec(TestModel.createTestContext()).decode(TestModel.TEST_PATH,
-            normalizedNode);
-
-
-        Assert.assertEquals(expected, actual);
+    public void testSerialization() {
+        SchemaContext schemaContext = TestModel.createTestContext();
+        MergeData expected = new MergeData(TestModel.TEST_PATH, ImmutableNodes
+            .containerNode(TestModel.TEST_QNAME), schemaContext);
+
+        MergeData actual = MergeData.fromSerializable(expected.toSerializable(), schemaContext);
+        Assert.assertEquals("getPath", expected.getPath(), actual.getPath());
+        Assert.assertEquals("getData", expected.getData(), actual.getData());
     }
 }
diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/WriteDataTest.java
new file mode 100644 (file)
index 0000000..6a5d65f
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * 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.messages;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+
+/**
+ * Unit tests for WriteData.
+ *
+ * @author Thomas Pantelis
+ */
+public class WriteDataTest {
+
+    @Test
+    public void testSerialization() {
+        SchemaContext schemaContext = TestModel.createTestContext();
+        WriteData expected = new WriteData(TestModel.TEST_PATH, ImmutableNodes
+            .containerNode(TestModel.TEST_QNAME), schemaContext);
+
+        WriteData actual = WriteData.fromSerializable(expected.toSerializable(), schemaContext);
+        Assert.assertEquals("getPath", expected.getPath(), actual.getPath());
+        Assert.assertEquals("getData", expected.getData(), actual.getData());
+    }
+}
index 9af3439ae196d95ca55148465d02b7beb8b9e5a6..5d2021167b52564c76a636fc29dc8c94e2d80e66 100644 (file)
@@ -7,22 +7,38 @@ import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
 import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction;
 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;
 
 public class MergeModificationTest extends AbstractModificationTest{
 
-  @Test
-  public void testApply() throws Exception {
-    //TODO : Need to write a better test for this
+    @Test
+    public void testApply() throws Exception {
+        //TODO : Need to write a better test for this
 
-    //Write something into the datastore
-    DOMStoreReadWriteTransaction writeTransaction = store.newReadWriteTransaction();
-    MergeModification writeModification = new MergeModification(TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME), TestModel.createTestContext());
-    writeModification.apply(writeTransaction);
-    commitTransaction(writeTransaction);
+        //Write something into the datastore
+        DOMStoreReadWriteTransaction writeTransaction = store.newReadWriteTransaction();
+        MergeModification writeModification = new MergeModification(TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME), TestModel.createTestContext());
+        writeModification.apply(writeTransaction);
+        commitTransaction(writeTransaction);
 
-    //Check if it's in the datastore
-    Optional<NormalizedNode<?,?>> data = readData(TestModel.TEST_PATH);
-    Assert.assertTrue(data.isPresent());
+        //Check if it's in the datastore
+        Optional<NormalizedNode<?,?>> data = readData(TestModel.TEST_PATH);
+        Assert.assertTrue(data.isPresent());
 
-  }
+    }
+
+    @Test
+    public void testSerialization() {
+        SchemaContext schemaContext = TestModel.createTestContext();
+        NormalizedNode<?, ?> node = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
+        MergeModification mergeModification = new MergeModification(TestModel.TEST_PATH,
+                node, schemaContext);
+
+        Object serialized = mergeModification.toSerializable();
+
+        MergeModification newModification = MergeModification.fromSerializable(serialized, schemaContext);
+
+        Assert.assertEquals("getPath", TestModel.TEST_PATH, newModification.getPath());
+        Assert.assertEquals("getData", node, newModification.getData());
+    }
 }
index 03aaace0e354543f63d8e9f7ed5d74f998fc142c..f8116aa78d72f4b08597cee693d592ca8c32ed87 100644 (file)
@@ -35,8 +35,9 @@ public class MutableCompositeModificationTest extends AbstractModificationTest {
         MutableCompositeModification compositeModification = new MutableCompositeModification();
         compositeModification.addModification(new WriteModification(TestModel.TEST_PATH,
             ImmutableNodes.containerNode(TestModel.TEST_QNAME), TestModel.createTestContext()));
-
-        assertNotEquals(compositeModification.toSerializable(), compositeModification.toSerializable());
-
+        Object one = compositeModification.toSerializable();
+        try{Thread.sleep(10);}catch(Exception err){}
+        Object two = compositeModification.toSerializable();
+        assertNotEquals(one,two);
     }
 }
index 75d8c00db8bb2c54bf7ab433c118d9a867914980..3a82fffccb16ffe9e02b3e85c2106213e749dce1 100644 (file)
@@ -7,20 +7,36 @@ import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
 import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction;
 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;
 
 public class WriteModificationTest extends AbstractModificationTest{
 
-  @Test
-  public void testApply() throws Exception {
-    //Write something into the datastore
-    DOMStoreReadWriteTransaction writeTransaction = store.newReadWriteTransaction();
-    WriteModification writeModification = new WriteModification(TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME), TestModel.createTestContext());
-    writeModification.apply(writeTransaction);
-    commitTransaction(writeTransaction);
+    @Test
+    public void testApply() throws Exception {
+        //Write something into the datastore
+        DOMStoreReadWriteTransaction writeTransaction = store.newReadWriteTransaction();
+        WriteModification writeModification = new WriteModification(TestModel.TEST_PATH,
+                ImmutableNodes.containerNode(TestModel.TEST_QNAME), TestModel.createTestContext());
+        writeModification.apply(writeTransaction);
+        commitTransaction(writeTransaction);
 
-    //Check if it's in the datastore
-    Optional<NormalizedNode<?,?>> data = readData(TestModel.TEST_PATH);
-    Assert.assertTrue(data.isPresent());
+        //Check if it's in the datastore
+        Optional<NormalizedNode<?,?>> data = readData(TestModel.TEST_PATH);
+        Assert.assertTrue(data.isPresent());
+    }
 
-  }
+    @Test
+    public void testSerialization() {
+        SchemaContext schemaContext = TestModel.createTestContext();
+        NormalizedNode<?, ?> node = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
+        WriteModification writeModification = new WriteModification(TestModel.TEST_PATH,
+                node, schemaContext);
+
+        Object serialized = writeModification.toSerializable();
+
+        WriteModification newModification = WriteModification.fromSerializable(serialized, schemaContext);
+
+        Assert.assertEquals("getPath", TestModel.TEST_PATH, newModification.getPath());
+        Assert.assertEquals("getData", node, newModification.getData());
+    }
 }
index 5d8fb8393d6c4fd773a0a94b6fd156ac02fe1c14..fa6d0b060f222f28ec723f1b4bc52b2f1ade3aa4 100644 (file)
@@ -1,6 +1,5 @@
 package org.opendaylight.controller.cluster.datastore.utils;
 
-import java.util.concurrent.TimeUnit;
 import akka.actor.ActorRef;
 import akka.actor.ActorSelection;
 import akka.actor.ActorSystem;
@@ -8,7 +7,7 @@ import akka.actor.Props;
 import akka.actor.UntypedActor;
 import akka.japi.Creator;
 import akka.testkit.JavaTestKit;
-
+import com.google.common.base.Optional;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.datastore.AbstractActorTest;
 import org.opendaylight.controller.cluster.datastore.ClusterWrapper;
@@ -16,12 +15,14 @@ import org.opendaylight.controller.cluster.datastore.Configuration;
 import org.opendaylight.controller.cluster.datastore.messages.FindLocalShard;
 import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound;
 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.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
 public class ActorContextTest extends AbstractActorTest{
@@ -100,63 +101,6 @@ public class ActorContextTest extends AbstractActorTest{
         }
     }
 
-    @Test
-    public void testExecuteLocalShardOperationWithShardFound(){
-        new JavaTestKit(getSystem()) {{
-
-            new Within(duration("1 seconds")) {
-                @Override
-                protected void run() {
-
-                    ActorRef shardActorRef = getSystem().actorOf(Props.create(EchoActor.class));
-
-                    ActorRef shardManagerActorRef = getSystem()
-                        .actorOf(MockShardManager.props(true, shardActorRef));
-
-                    ActorContext actorContext =
-                        new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class),
-                            mock(Configuration.class));
-
-                    Object out = actorContext.executeLocalShardOperation("default", "hello");
-
-                    assertEquals("hello", out);
-
-
-                    expectNoMsg();
-                }
-            };
-        }};
-
-    }
-
-    @Test
-    public void testExecuteLocalShardOperationWithShardNotFound(){
-        new JavaTestKit(getSystem()) {{
-
-            new Within(duration("1 seconds")) {
-                @Override
-                protected void run() {
-
-                    ActorRef shardManagerActorRef = getSystem()
-                        .actorOf(MockShardManager.props(false, null));
-
-                    ActorContext actorContext =
-                        new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class),
-                            mock(Configuration.class));
-
-                    Object out = actorContext.executeLocalShardOperation("default", "hello");
-
-                    assertNull(out);
-
-
-                    expectNoMsg();
-                }
-            };
-        }};
-
-    }
-
-
     @Test
     public void testFindLocalShardWithShardFound(){
         new JavaTestKit(getSystem()) {{
@@ -174,9 +118,9 @@ public class ActorContextTest extends AbstractActorTest{
                         new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class),
                             mock(Configuration.class));
 
-                    Object out = actorContext.findLocalShard("default");
+                    Optional<ActorRef> out = actorContext.findLocalShard("default");
 
-                    assertEquals(shardActorRef, out);
+                    assertEquals(shardActorRef, out.get());
 
 
                     expectNoMsg();
@@ -201,11 +145,8 @@ public class ActorContextTest extends AbstractActorTest{
                         new ActorContext(getSystem(), shardManagerActorRef , mock(ClusterWrapper.class),
                             mock(Configuration.class));
 
-                    Object out = actorContext.findLocalShard("default");
-
-                    assertNull(out);
-
-
+                    Optional<ActorRef> out = actorContext.findLocalShard("default");
+                    assertTrue(!out.isPresent());
                     expectNoMsg();
                 }
             };
@@ -232,7 +173,7 @@ public class ActorContextTest extends AbstractActorTest{
 
                     ActorSelection actor = actorContext.actorSelection(shardActorRef.path());
 
-                    Object out = actorContext.executeRemoteOperation(actor, "hello");
+                    Object out = actorContext.executeOperation(actor, "hello");
 
                     assertEquals("hello", out);
 
@@ -261,7 +202,7 @@ public class ActorContextTest extends AbstractActorTest{
 
                     ActorSelection actor = actorContext.actorSelection(shardActorRef.path());
 
-                    Future<Object> future = actorContext.executeRemoteOperationAsync(actor, "hello");
+                    Future<Object> future = actorContext.executeOperationAsync(actor, "hello");
 
                     try {
                         Object result = Await.result(future, Duration.create(3, TimeUnit.SECONDS));
index 8fa3a17f901541f79be1ec45a373ebe097ba69a1..81b6bccaf08ea0f35b5d4ed8c8a0fea8f3524796 100644 (file)
@@ -12,6 +12,7 @@ import static org.junit.Assert.assertNotNull;
 import akka.actor.ActorRef;
 import akka.actor.ActorSelection;
 import akka.actor.ActorSystem;
+import com.google.common.base.Optional;
 
 public class MockActorContext extends ActorContext {
 
@@ -30,19 +31,13 @@ public class MockActorContext extends ActorContext {
         super(actorSystem, shardManager, new MockClusterWrapper(), new MockConfiguration());
     }
 
-
-    @Override public Object executeShardOperation(String shardName,
-        Object message) {
-        return executeShardOperationResponse;
-    }
-
-    @Override public Object executeRemoteOperation(ActorSelection actor,
-        Object message) {
+    @Override public Object executeOperation(ActorSelection actor,
+                                             Object message) {
         return executeRemoteOperationResponse;
     }
 
-    @Override public ActorSelection findPrimary(String shardName) {
-        return null;
+    @Override public Optional<ActorSelection> findPrimaryShard(String shardName) {
+        return Optional.absent();
     }
 
     public void setExecuteShardOperationResponse(Object response){
@@ -74,14 +69,9 @@ public class MockActorContext extends ActorContext {
     }
 
     @Override
-    public Object executeLocalOperation(ActorRef actor,
-        Object message) {
+    public Object executeOperation(ActorRef actor,
+                                   Object message) {
         return this.executeLocalOperationResponse;
     }
 
-    @Override
-    public Object executeLocalShardOperation(String shardName,
-        Object message) {
-        return this.executeLocalShardOperationResponse;
-    }
 }
index 4ddba2f1b9d773b3c4783d3e401fa7df43d32a0e..3bad4689506525bf683254534d44036ff8a61d7e 100644 (file)
@@ -21,7 +21,7 @@ public class TestUtils {
         ActorContext testContext = new ActorContext(actorSystem, actorSystem.actorOf(
             Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration());
         Object messages = testContext
-            .executeLocalOperation(actorRef, "messages");
+            .executeOperation(actorRef, "messages");
 
         Assert.assertNotNull(messages);
 
index be8713c7020c5848e7eec03278a95a9794a095ad..2300f9d130bcea6049326b3e42b2ac3084df6051 100644 (file)
@@ -12,7 +12,6 @@ import junit.framework.Assert;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.datastore.node.NormalizedNodeToNodeCodec;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 public class SampleModelsTest {
@@ -23,14 +22,12 @@ public class SampleModelsTest {
 
         final NormalizedNodeMessages.Container node =
             new NormalizedNodeToNodeCodec(SchemaContextHelper.full())
-                .encode(YangInstanceIdentifier.of(PeopleModel.BASE_QNAME),
-                    expected);
+                .encode(expected);
 
         final NormalizedNodeMessages.Node normalizedNode =
             node.getNormalizedNode();
 
-        final NormalizedNode<?,?> actual = new NormalizedNodeToNodeCodec(SchemaContextHelper.full()).decode(YangInstanceIdentifier.of(PeopleModel.BASE_QNAME),
-            normalizedNode);
+        final NormalizedNode<?,?> actual = new NormalizedNodeToNodeCodec(SchemaContextHelper.full()).decode(normalizedNode);
 
 
         Assert.assertEquals(expected, actual);
@@ -45,14 +42,12 @@ public class SampleModelsTest {
 
         final NormalizedNodeMessages.Container node =
             new NormalizedNodeToNodeCodec(SchemaContextHelper.full())
-                .encode(YangInstanceIdentifier.of(CarsModel.BASE_QNAME),
-                    expected);
+                .encode(expected);
 
         final NormalizedNodeMessages.Node normalizedNode =
             node.getNormalizedNode();
 
         final NormalizedNode<?,?> actual = new NormalizedNodeToNodeCodec(SchemaContextHelper.full()).decode(
-            YangInstanceIdentifier.of(CarsModel.BASE_QNAME),
             normalizedNode);
 
 
index ab392a06f852a4ec2794bcf2a3dbe60b0861ac6f..0302a7d920bc248a2566569dbaa7680f286df1fc 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-core-api</artifactId>
   <packaging>bundle</packaging>
index 96e353b80e23c284885a48cf2302e9759cb29386..dc20296ff52d2fe3256507dc90022ab6a7a89918 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-broker-impl</artifactId>
   <packaging>bundle</packaging>
@@ -45,7 +45,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>sal-inmemory-datastore</artifactId>
-      <version>1.1-SNAPSHOT</version>
+      <version>1.2.0-SNAPSHOT</version>
 
     </dependency>
     <dependency>
index 88ac86a45e3f6259a53da0e71f4fb5f2f6a8ed50..6cc721e68ddc5f58f172a096fd4336b27504273b 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-core-spi</artifactId>
   <packaging>bundle</packaging>
index 077405fe6ea94cb3827deca2c409b9d6a5645bb1..e8919d0ee1a4c277541d842b6763e9ca18a9f747 100644 (file)
@@ -12,7 +12,7 @@
   <parent>\r
     <artifactId>sal-parent</artifactId>\r
     <groupId>org.opendaylight.controller</groupId>\r
-    <version>1.1-SNAPSHOT</version>\r
+    <version>1.2.0-SNAPSHOT</version>\r
   </parent>\r
   <artifactId>sal-dom-xsql-config</artifactId>\r
   <groupId>org.opendaylight.controller</groupId>\r
index 2ab80daf3bbffc9928a6266af3998a41ebd54262..f5898a2bb9dfe15dd71ee560b2fe5bc8c581a1de 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-dom-xsql</artifactId>
   <packaging>bundle</packaging>
similarity index 84%
rename from opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCDriver.java
rename to opendaylight/md-sal/sal-dom-xsql/src/main/java/org/odl/xsql/JDBCDriver.java
index e4b4e249dfe01b14730e4d4c83210e6ddd3953b9..cc92b48a157abc00a9baf5c80b8b37aa034fcf30 100644 (file)
@@ -1,4 +1,4 @@
-package org.opendaylight.controller.md.sal.dom.xsql.jdbc;
+package org.odl.xsql;
 
 import java.sql.Connection;
 import java.sql.Driver;
@@ -9,6 +9,8 @@ import java.sql.SQLFeatureNotSupportedException;
 import java.util.Properties;
 import java.util.logging.Logger;
 
+import org.opendaylight.controller.md.sal.dom.xsql.jdbc.JDBCConnection;
+
 public class JDBCDriver implements Driver {
 
     public static JDBCDriver drv = new JDBCDriver();
@@ -34,11 +36,12 @@ public class JDBCDriver implements Driver {
             if (url.equals("svr")) {
                 return new JDBCConnection(true);
             } else {
-                return new JDBCConnection(url);
+                return new JDBCConnection(url).getProxy();
             }
         } catch (Exception err) {
             err.printStackTrace();
         }
+        System.err.println("Error JDBC Connection");
         return null;
     }
 
@@ -55,7 +58,7 @@ public class JDBCDriver implements Driver {
     @Override
     public DriverPropertyInfo[] getPropertyInfo(String arg0, Properties arg1)
         throws SQLException {
-        DriverPropertyInfo i = new DriverPropertyInfo("NQL", "NQL");
+        DriverPropertyInfo i = new DriverPropertyInfo("OpenDayLight", "OpenDayLight");
         return new DriverPropertyInfo[] {i};
     }
 
index d1f11ba9a36e693e223930b2fb4269e03acf21da..beab6d2fb1a0014e3dece9b1c07f77aa611ee090 100644 (file)
@@ -63,6 +63,18 @@ public class XSQLAdapter extends Thread implements SchemaContextListener {
 
     }
 
+    public void loadBluePrint(){
+        try{
+            InputStream in = this.getClass().getClassLoader().getResourceAsStream("BluePrintCache.dat");
+            if(in!=null){
+                this.bluePrint =  XSQLBluePrint.load(in);
+            }
+            in.close();
+        }catch(Exception err){
+            err.printStackTrace();
+        }
+    }
+
     public static XSQLAdapter getInstance() {
         return a;
     }
@@ -164,6 +176,10 @@ public class XSQLAdapter extends Thread implements SchemaContextListener {
     }
 
     public void execute(JDBCResultSet rs) {
+        if(this.domDataBroker==null){
+            rs.setFinished(true);
+            return;
+        }
         List<XSQLBluePrintNode> tables = rs.getTables();
         List<Object> roots = collectModuleRoots(tables.get(0),LogicalDatastoreType.OPERATIONAL);
         roots.addAll(collectModuleRoots(tables.get(0),LogicalDatastoreType.CONFIGURATION));
@@ -282,6 +298,8 @@ public class XSQLAdapter extends Thread implements SchemaContextListener {
                 sout.close();
             } catch (Exception err) {
             }
+        } else if (input.equals("save")) {
+            XSQLBluePrint.save(this.bluePrint);
         } else if (input.equals("tocsv")) {
             toCsv = !toCsv;
             sout.println("to csv file is " + toCsv);
index 1a31662020e8dc6856e9e68adee83e5a10ac6c71..7b51d03a97aaa6c9a9d1592eb5ba963ec63e6d8c 100644 (file)
@@ -1,5 +1,12 @@
 package org.opendaylight.controller.md.sal.dom.xsql;
 
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
@@ -17,18 +24,20 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-public class XSQLBluePrint implements DatabaseMetaData {
+public class XSQLBluePrint implements DatabaseMetaData, Serializable {
 
-    public static final String CACHE_FILE_NAME = "BluePrintCache.dat";
+    private static final long serialVersionUID = 1L;
+
+    public static final String CACHE_FILE_NAME = "./BluePrintCache.dat";
 
     private Map<String, XSQLBluePrintNode> tableNameToBluePrint = new HashMap<String, XSQLBluePrintNode>();
-    private Map<String, Map<String,XSQLBluePrintNode>> odlNameToBluePrint = new HashMap<String, Map<String,XSQLBluePrintNode>>();
+    private Map<String, Map<String, XSQLBluePrintNode>> odlNameToBluePrint = new HashMap<String, Map<String, XSQLBluePrintNode>>();
 
     private boolean cacheLoadedSuccessfuly = false;
     private DatabaseMetaData myProxy = null;
 
     public static final String replaceAll(String source, String toReplace,
-        String withThis) {
+            String withThis) {
         int index = source.indexOf(toReplace);
         int index2 = 0;
         StringBuffer result = new StringBuffer();
@@ -47,9 +56,41 @@ public class XSQLBluePrint implements DatabaseMetaData {
     public XSQLBluePrint() {
     }
 
+    public static void save(XSQLBluePrint bp) {
+        ObjectOutputStream out = null;
+        try {
+            out = new ObjectOutputStream(new DataOutputStream(
+                    new FileOutputStream(CACHE_FILE_NAME)));
+            out.writeObject(bp);
+        } catch (Exception err) {
+            err.printStackTrace();
+        } finally {
+            try {
+                out.close();
+            } catch (Exception err) {
+            }
+        }
+    }
+
+    public static XSQLBluePrint load(InputStream ins) {
+        ObjectInputStream in = null;
+        try {
+            in = new ObjectInputStream(new DataInputStream(ins));
+            return (XSQLBluePrint) in.readObject();
+        } catch (Exception err) {
+            err.printStackTrace();
+        } finally {
+            try {
+                in.close();
+            } catch (Exception err) {
+            }
+        }
+        return null;
+    }
+
     private class NQLBluePrintProxy implements InvocationHandler {
         public Object invoke(Object proxy, Method method, Object[] args)
-            throws Throwable {
+                throws Throwable {
             System.out.println("Method " + method);
             return method.invoke(XSQLBluePrint.this, args);
         }
@@ -58,9 +99,9 @@ public class XSQLBluePrint implements DatabaseMetaData {
     public DatabaseMetaData getProxy() {
         if (myProxy == null) {
             try {
-                myProxy = (DatabaseMetaData) Proxy
-                    .newProxyInstance(getClass().getClassLoader(),
-                        new Class[] {DatabaseMetaData.class},
+                myProxy = (DatabaseMetaData) Proxy.newProxyInstance(getClass()
+                        .getClassLoader(),
+                        new Class[] { DatabaseMetaData.class },
                         new NQLBluePrintProxy());
             } catch (Exception err) {
                 err.printStackTrace();
@@ -69,22 +110,12 @@ public class XSQLBluePrint implements DatabaseMetaData {
         return myProxy;
     }
 
-    /*
-    public void loadBluePrintCache(String hostName) {
-        try {
-            ObjectInputStream in = new ObjectInputStream(
-                new FileInputStream(hostName + "-" + CACHE_FILE_NAME));
-            cache = (Map) in.readObject();
-            in.close();
-            cacheLoadedSuccessfuly = true;
-        } catch (Exception err) {
-            //err.printStackTrace();
-        }
-    }*/
-
-    public XSQLBluePrintNode[] getBluePrintNodeByODLTableName(String odlTableName) {
-        Map<String,XSQLBluePrintNode> map = this.odlNameToBluePrint.get(odlTableName);
-        if(map==null) return null;
+    public XSQLBluePrintNode[] getBluePrintNodeByODLTableName(
+            String odlTableName) {
+        Map<String, XSQLBluePrintNode> map = this.odlNameToBluePrint
+                .get(odlTableName);
+        if (map == null)
+            return null;
         return map.values().toArray(new XSQLBluePrintNode[map.size()]);
     }
 
@@ -106,26 +137,28 @@ public class XSQLBluePrint implements DatabaseMetaData {
         }
 
         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
-            if (n.getBluePrintNodeName().toLowerCase().endsWith(tableName.toLowerCase())) {
+            if (n.getBluePrintNodeName().toLowerCase()
+                    .endsWith(tableName.toLowerCase())) {
                 return n;
             }
         }
 
         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
-            if (n.getBluePrintNodeName().toLowerCase().equals(tableName.toLowerCase())) {
+            if (n.getBluePrintNodeName().toLowerCase()
+                    .equals(tableName.toLowerCase())) {
                 return n;
             }
         }
 
         for (XSQLBluePrintNode n : tableNameToBluePrint.values()) {
-            if (n.getBluePrintNodeName().toLowerCase().indexOf(tableName.toLowerCase())!= -1) {
+            if (n.getBluePrintNodeName().toLowerCase()
+                    .indexOf(tableName.toLowerCase()) != -1) {
                 return n;
             }
         }
         return null;
     }
 
-
     public boolean isCacheLoaded() {
         return cacheLoadedSuccessfuly;
     }
@@ -133,7 +166,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
     private static Map<Class, Set<Class>> superClassMap = new HashMap<Class, Set<Class>>();
 
     public static Set<Class> getInheritance(Class myObjectClass,
-        Class returnType) {
+            Class returnType) {
 
         if (returnType != null && myObjectClass.equals(returnType)) {
             return new HashSet<Class>();
@@ -171,10 +204,11 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     public void addToBluePrintCache(XSQLBluePrintNode blNode) {
         this.tableNameToBluePrint.put(blNode.getBluePrintNodeName(), blNode);
-        Map<String,XSQLBluePrintNode> map = this.odlNameToBluePrint.get(blNode.getODLTableName());
-        if(map==null){
-            map = new HashMap<String,XSQLBluePrintNode>();
-            this.odlNameToBluePrint.put(blNode.getODLTableName(),map);
+        Map<String, XSQLBluePrintNode> map = this.odlNameToBluePrint.get(blNode
+                .getODLTableName());
+        if (map == null) {
+            map = new HashMap<String, XSQLBluePrintNode>();
+            this.odlNameToBluePrint.put(blNode.getODLTableName(), map);
         }
         map.put(blNode.getBluePrintNodeName(), blNode);
     }
@@ -265,15 +299,15 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getAttributes(String catalog, String schemaPattern,
-        String typeNamePattern, String attributeNamePattern)
-        throws SQLException {
+            String typeNamePattern, String attributeNamePattern)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getBestRowIdentifier(String catalog, String schema,
-        String table, int scope, boolean nullable) throws SQLException {
+            String table, int scope, boolean nullable) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -304,15 +338,15 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getColumnPrivileges(String catalog, String schema,
-        String table, String columnNamePattern) throws SQLException {
+            String table, String columnNamePattern) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getColumns(String catalog, String schemaPattern,
-        String tableNamePattern, String columnNamePattern)
-        throws SQLException {
+            String tableNamePattern, String columnNamePattern)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -325,8 +359,8 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getCrossReference(String parentCatalog,
-        String parentSchema, String parentTable, String foreignCatalog,
-        String foreignSchema, String foreignTable) throws SQLException {
+            String parentSchema, String parentTable, String foreignCatalog,
+            String foreignSchema, String foreignTable) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -344,7 +378,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public String getDatabaseProductName() throws SQLException {
-        return "VNE Query Language";
+        return "OpenDayLight";
     }
 
     @Override
@@ -383,9 +417,8 @@ public class XSQLBluePrint implements DatabaseMetaData {
     }
 
     @Override
-    public ResultSet getExportedKeys(String catalog, String schema,
-        String table)
-        throws SQLException {
+    public ResultSet getExportedKeys(String catalog, String schema, String table)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -398,15 +431,15 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getFunctionColumns(String catalog, String schemaPattern,
-        String functionNamePattern, String columnNamePattern)
-        throws SQLException {
+            String functionNamePattern, String columnNamePattern)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getFunctions(String catalog, String schemaPattern,
-        String functionNamePattern) throws SQLException {
+            String functionNamePattern) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -418,16 +451,15 @@ public class XSQLBluePrint implements DatabaseMetaData {
     }
 
     @Override
-    public ResultSet getImportedKeys(String catalog, String schema,
-        String table)
-        throws SQLException {
+    public ResultSet getImportedKeys(String catalog, String schema, String table)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getIndexInfo(String catalog, String schema, String table,
-        boolean unique, boolean approximate) throws SQLException {
+            boolean unique, boolean approximate) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -572,22 +604,22 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getPrimaryKeys(String catalog, String schema, String table)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getProcedureColumns(String catalog, String schemaPattern,
-        String procedureNamePattern, String columnNamePattern)
-        throws SQLException {
+            String procedureNamePattern, String columnNamePattern)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getProcedures(String catalog, String schemaPattern,
-        String procedureNamePattern) throws SQLException {
+            String procedureNamePattern) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -618,7 +650,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getSchemas(String catalog, String schemaPattern)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -655,14 +687,14 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getSuperTables(String catalog, String schemaPattern,
-        String tableNamePattern) throws SQLException {
+            String tableNamePattern) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getSuperTypes(String catalog, String schemaPattern,
-        String typeNamePattern) throws SQLException {
+            String typeNamePattern) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -675,14 +707,14 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getTablePrivileges(String catalog, String schemaPattern,
-        String tableNamePattern) throws SQLException {
+            String tableNamePattern) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public ResultSet getTables(String catalog, String schemaPattern,
-        String tableNamePattern, String[] types) throws SQLException {
+            String tableNamePattern, String[] types) throws SQLException {
         return new TablesResultSet(this);
     }
 
@@ -706,7 +738,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getUDTs(String catalog, String schemaPattern,
-        String typeNamePattern, int[] types) throws SQLException {
+            String typeNamePattern, int[] types) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -725,7 +757,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getVersionColumns(String catalog, String schema,
-        String table) throws SQLException {
+            String table) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -905,8 +937,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
     }
 
     @Override
-    public boolean supportsCatalogsInPrivilegeDefinitions()
-        throws SQLException {
+    public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -937,7 +968,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public boolean supportsConvert(int fromType, int toType)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -956,21 +987,20 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public boolean supportsDataDefinitionAndDataManipulationTransactions()
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
     public boolean supportsDataManipulationTransactionsOnly()
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
-    public boolean supportsDifferentTableCorrelationNames()
-        throws SQLException {
+    public boolean supportsDifferentTableCorrelationNames() throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -1133,14 +1163,14 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public boolean supportsResultSetConcurrency(int type, int concurrency)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
     public boolean supportsResultSetHoldability(int holdability)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -1200,8 +1230,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
     }
 
     @Override
-    public boolean supportsStoredFunctionsUsingCallSyntax()
-        throws SQLException {
+    public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -1244,7 +1273,7 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public boolean supportsTransactionIsolationLevel(int level)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -1299,8 +1328,8 @@ public class XSQLBluePrint implements DatabaseMetaData {
 
     @Override
     public ResultSet getPseudoColumns(String catalog, String schemaPattern,
-        String tableNamePattern, String columnNamePattern)
-        throws SQLException {
+            String tableNamePattern, String columnNamePattern)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
index fbd818e63216c40e6c6cb3a053c214584a5bc248..8d905f208132aed258886a58b5c01ab56682e76c 100644 (file)
@@ -3,7 +3,9 @@ package org.opendaylight.controller.md.sal.dom.xsql;
 import java.io.Serializable;
 import java.sql.SQLException;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 public class XSQLBluePrintNode implements Serializable {
@@ -11,10 +13,8 @@ public class XSQLBluePrintNode implements Serializable {
     private static final long serialVersionUID = 1L;
     private Class<?> myInterface = null;
     private String myInterfaceString = null;
-    private Set<XSQLBluePrintRelation> relations =
-        new HashSet<XSQLBluePrintRelation>();
-    private Set<XSQLBluePrintNode> inheritingNodes =
-        new HashSet<XSQLBluePrintNode>();
+    private Set<XSQLBluePrintRelation> relations = new HashSet<XSQLBluePrintRelation>();
+    private Set<XSQLBluePrintNode> inheritingNodes = new HashSet<XSQLBluePrintNode>();
     private Set<XSQLBluePrintNode> children = new HashSet<XSQLBluePrintNode>();
     private XSQLBluePrintNode parent = null;
 
@@ -22,11 +22,20 @@ public class XSQLBluePrintNode implements Serializable {
     private transient Set<String> parentHierarchySet = null;
     private String myInterfaceName = null;
     private Set<XSQLColumn> columns = new HashSet<XSQLColumn>();
+    private Map<String, XSQLColumn> origNameToColumn = new HashMap<String, XSQLColumn>();
 
     private transient Object odlNode = null;
     private boolean module = false;
     private String bluePrintTableName = null;
     private String odlTableName = null;
+    private String origName = null;
+
+    public XSQLBluePrintNode(String name, String _origName, int _level) {
+        this.level = _level;
+        this.odlTableName = name;
+        this.bluePrintTableName = name;
+        this.origName = _origName;
+    }
 
     public XSQLBluePrintNode(Class<?> _myInterface, int _level) {
         this.myInterface = _myInterface;
@@ -35,16 +44,21 @@ public class XSQLBluePrintNode implements Serializable {
         this.level = _level;
     }
 
-    public XSQLBluePrintNode(Object _odlNode, int _level,XSQLBluePrintNode _parent) {
+    public XSQLBluePrintNode(Object _odlNode, int _level,
+            XSQLBluePrintNode _parent) {
         this.odlNode = _odlNode;
         this.level = _level;
         this.module = XSQLODLUtils.isModule(_odlNode);
         this.parent = _parent;
         this.bluePrintTableName = XSQLODLUtils.getBluePrintName(_odlNode);
+        this.odlTableName = XSQLODLUtils.getODLNodeName(this.odlNode);
+    }
 
+    public String getOrigName() {
+        return this.origName;
     }
 
-    public String getBluePrintNodeName(){
+    public String getBluePrintNodeName() {
         return this.bluePrintTableName;
     }
 
@@ -82,10 +96,11 @@ public class XSQLBluePrintNode implements Serializable {
         }
         for (XSQLBluePrintRelation dtr : this.relations) {
             XSQLBluePrintNode parent = dtr.getParent();
-            if (!parent.getInterface().equals(this.getInterface()) && !parent
-                .getInterface().isAssignableFrom(this.getInterface()) &&
-                this.getInterface().isAssignableFrom(parent.getInterface())
-                && parent.isModelChild(p)) {
+            if (!parent.getInterface().equals(this.getInterface())
+                    && !parent.getInterface().isAssignableFrom(
+                            this.getInterface())
+                    && this.getInterface().isAssignableFrom(
+                            parent.getInterface()) && parent.isModelChild(p)) {
                 return true;
             }
         }
@@ -109,8 +124,16 @@ public class XSQLBluePrintNode implements Serializable {
     }
 
     public void addColumn(Object node, String tableName) {
-        XSQLColumn c = new XSQLColumn(node,getBluePrintNodeName(), this);
+        XSQLColumn c = new XSQLColumn(node, getBluePrintNodeName(), this);
+        this.columns.add(c);
+    }
+
+    public XSQLColumn addColumn(String name, String tableName, String origName,
+            String origTableName) {
+        XSQLColumn c = new XSQLColumn(name, tableName, origName, origTableName);
         this.columns.add(c);
+        this.origNameToColumn.put(origName, c);
+        return c;
     }
 
     public void addColumn(String methodName) {
@@ -165,17 +188,16 @@ public class XSQLBluePrintNode implements Serializable {
         throw new SQLException("Unknown field name '" + name + "'");
     }
 
-
     public void addParent(XSQLBluePrintNode parent, String property) {
         try {
             if (property.equals("ContainingTPs")) {
                 return;
             }
-            //Method m = parent.getInterface().getMethod("get"+property, null);
-            //if(!m.getDeclaringClass().equals(parent.getInterface()))
-            //return;
-            XSQLBluePrintRelation rel =
-                new XSQLBluePrintRelation(parent, property, myInterface);
+            // Method m = parent.getInterface().getMethod("get"+property, null);
+            // if(!m.getDeclaringClass().equals(parent.getInterface()))
+            // return;
+            XSQLBluePrintRelation rel = new XSQLBluePrintRelation(parent,
+                    property, myInterface);
             relations.add(rel);
         } catch (Exception err) {
             err.printStackTrace();
@@ -187,8 +209,7 @@ public class XSQLBluePrintNode implements Serializable {
     }
 
     public Set<XSQLBluePrintRelation> getClonedParents() {
-        Set<XSQLBluePrintRelation> result =
-            new HashSet<XSQLBluePrintRelation>();
+        Set<XSQLBluePrintRelation> result = new HashSet<XSQLBluePrintRelation>();
         result.addAll(this.relations);
         return result;
     }
@@ -200,6 +221,9 @@ public class XSQLBluePrintNode implements Serializable {
         if (odlNode != null) {
             return getBluePrintNodeName();
         }
+        if (odlTableName != null) {
+            return odlTableName;
+        }
         return "Unknown";
     }
 
@@ -216,11 +240,12 @@ public class XSQLBluePrintNode implements Serializable {
         XSQLBluePrintNode other = (XSQLBluePrintNode) obj;
         if (odlNode != null) {
             return getBluePrintNodeName().equals(other.getBluePrintNodeName());
-        } else if (this.odlTableName != null) {
+        } else if (this.odlTableName == null && other.odlTableName != null)
+            return false;
+        if (this.odlTableName != null && other.odlTableName == null)
+            return false;
+        else
             return this.odlTableName.equals(other.odlTableName);
-        } else {
-            return other.myInterface.equals(myInterface);
-        }
     }
 
     @Override
index 55ac600f4a3010ccd0b8e63e240fb00b23d31351..4c6cca7fa612d9d00be8bdb47f8f6dd52f339b94 100644 (file)
@@ -8,6 +8,8 @@ public class XSQLColumn implements Serializable, Comparable {
     private int charWidth = -1;
     private Class type = null;
     private transient Object bluePrintNode = null;
+    private String origName = null;
+    private String origTableName = null;
 
     public XSQLColumn(Object odlNode, String _tableName, Object _bluePrintNode) {
         this.name = XSQLODLUtils.getNodeNameFromDSN(odlNode);
@@ -16,6 +18,13 @@ public class XSQLColumn implements Serializable, Comparable {
         this.type = XSQLODLUtils.getTypeForODLColumn(odlNode);
     }
 
+    public XSQLColumn(String _name, String _tableName,String _origName, String _origTableName){
+        this.name = _name;
+        this.tableName = _tableName;
+        this.origName = _origName;
+        this.origTableName = _origTableName;
+    }
+
     public String getName() {
         return name;
     }
index 85ce0e5392b7f249ebe0e095931309fce68ed63f..019711157cc30db5bb7a2e43a6d4f5b2725858f2 100644 (file)
@@ -3,6 +3,8 @@ package org.opendaylight.controller.md.sal.dom.xsql.jdbc;
 import java.io.Serializable;
 import java.util.Map;
 
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint;
+
 public class JDBCCommand implements Serializable {
     public int type = 0;
     public static final int TYPE_EXECUTE_QUERY = 1;
@@ -10,11 +12,22 @@ public class JDBCCommand implements Serializable {
     public static final int TYPE_QUERY_RECORD = 3;
     public static final int TYPE_QUERY_FINISH = 4;
     public static final int TYPE_QUERY_ERROR = 5;
+    public static final int TYPE_METADATA = 6;
+    public static final int TYPE_METADATA_REPLY = 7;
 
     private JDBCResultSet rs = null;
     private Map record = null;
     private int rsID = -1;
     private Exception err = null;
+    private XSQLBluePrint bluePrint = null;
+
+    public JDBCCommand() {
+
+    }
+
+    public void setType(int t) {
+        this.type = t;
+    }
 
     public JDBCCommand(Exception _err, int _RSID) {
         this.type = TYPE_QUERY_ERROR;
@@ -22,6 +35,11 @@ public class JDBCCommand implements Serializable {
         this.rsID = _RSID;
     }
 
+    public JDBCCommand(XSQLBluePrint bl) {
+        this.type = TYPE_METADATA_REPLY;
+        this.bluePrint = bl;
+    }
+
     public JDBCCommand(JDBCResultSet _rs, int _type) {
         this.type = TYPE_EXECUTE_QUERY;
         this.rs = _rs;
@@ -59,4 +77,8 @@ public class JDBCCommand implements Serializable {
     public Exception getERROR() {
         return this.err;
     }
+
+    public XSQLBluePrint getBluePrint() {
+        return this.bluePrint;
+    }
 }
index 3e72dc95ee83a572d9b45f240afcf5b34468df0c..bf1244f2e3cd90787984105d5395cb7df3c9e853 100644 (file)
@@ -31,38 +31,59 @@ import java.util.Properties;
 import java.util.concurrent.Executor;
 
 import org.opendaylight.controller.md.sal.dom.xsql.XSQLAdapter;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint;
 
-public class JDBCConnection extends Thread implements Connection {
+public class JDBCConnection implements Connection, Runnable {
     private Socket socket = null;
     private DataInputStream in = null;
     private DataOutputStream out = null;
     private LinkedList<byte[]> queue = new LinkedList<byte[]>();
     private XSQLAdapter adapter = null;
+    private XSQLBluePrint metaData = null;
+    private String addr = null;
+    private boolean wasClosed = false;
 
     public JDBCConnection(Socket s, XSQLAdapter _a) {
         this.socket = s;
         this.adapter = _a;
         try {
             in = new DataInputStream(
-                new BufferedInputStream(s.getInputStream()));
-            out = new DataOutputStream(
-                new BufferedOutputStream(s.getOutputStream()));
+                    new BufferedInputStream(s.getInputStream()));
+            out = new DataOutputStream(new BufferedOutputStream(
+                    s.getOutputStream()));
             new JDBCObjectReader();
-            this.start();
+            new Thread(this).start();
         } catch (Exception err) {
             err.printStackTrace();
         }
     }
 
-    public JDBCConnection(String addr) throws Exception {
+    public Connection getProxy() {
+        return this;
+        /*
+        return (Connection) Proxy.newProxyInstance(this.getClass()
+                .getClassLoader(), new Class[] { Connection.class },
+                new JDBCProxy(this));
+                */
+    }
+
+    public JDBCConnection(String _addr) throws Exception {
+        this.addr = _addr;
+        init();
+    }
+
+    private void init() throws Exception {
+        if (addr.startsWith("http://"))
+            addr = addr.substring(7);
+        System.err.print("Address is:" + addr);
         socket = new Socket(addr, 40004);
         try {
-            in = new DataInputStream(
-                new BufferedInputStream(socket.getInputStream()));
-            out = new DataOutputStream(
-                new BufferedOutputStream(socket.getOutputStream()));
+            in = new DataInputStream(new BufferedInputStream(
+                    socket.getInputStream()));
+            out = new DataOutputStream(new BufferedOutputStream(
+                    socket.getOutputStream()));
             new JDBCObjectReader();
-            this.start();
+            new Thread(this).start();
         } catch (Exception err) {
             err.printStackTrace();
         }
@@ -73,12 +94,12 @@ public class JDBCConnection extends Thread implements Connection {
             ServerSocket s = new ServerSocket(50003);
             socket = s.accept();
             try {
-                in = new DataInputStream(
-                    new BufferedInputStream(socket.getInputStream()));
-                out = new DataOutputStream(
-                    new BufferedOutputStream(socket.getOutputStream()));
+                in = new DataInputStream(new BufferedInputStream(
+                        socket.getInputStream()));
+                out = new DataOutputStream(new BufferedOutputStream(
+                        socket.getOutputStream()));
                 new JDBCObjectReader();
-                this.start();
+                new Thread(this).start();
             } catch (Exception err) {
                 err.printStackTrace();
             }
@@ -87,7 +108,6 @@ public class JDBCConnection extends Thread implements Connection {
         }
     }
 
-
     private boolean isStopped() {
         if (adapter != null && adapter.stopped) {
             return true;
@@ -109,11 +129,21 @@ public class JDBCConnection extends Thread implements Connection {
 
             } catch (Exception err) {
                 System.out.println("Connection Lost or Closed.");
+                try {
+                    out.close();
+                } catch (Exception er) {
+                }
+                out = null;
+                try {
+                    in.close();
+                } catch (Exception er) {
+                }
+                in = null;
                 try {
                     socket.close();
                 } catch (Exception err2) {
                 }
-                //err.printStackTrace();
+                socket = null;
             }
         }
     }
@@ -167,38 +197,46 @@ public class JDBCConnection extends Thread implements Connection {
 
     public void processCommand(JDBCCommand cmd) {
         switch (cmd.getType()) {
-            case JDBCCommand.TYPE_EXECUTE_QUERY:
-                try {
-                    JDBCServer.execute(cmd.getRS(), adapter);
-                    send(new JDBCCommand(cmd.getRS(),
-                        JDBCCommand.TYPE_QUERY_REPLY));
-                    QueryUpdater u = new QueryUpdater(cmd.getRS());
-                    new Thread(u).start();
-                } catch (Exception err) {
-                    send(new JDBCCommand(err, cmd.getRSID()));
-                }
-                break;
-            case JDBCCommand.TYPE_QUERY_REPLY:
-                JDBCResultSet rs1 = JDBCStatement.getQuery(cmd.getRS().getID());
-                rs1.updateData(cmd.getRS());
-                break;
-            case JDBCCommand.TYPE_QUERY_RECORD:
-                JDBCResultSet rs2 = JDBCStatement.getQuery(cmd.getRSID());
-                rs2.addRecord(cmd.getRecord());
-                break;
-            case JDBCCommand.TYPE_QUERY_FINISH:
-                JDBCResultSet rs3 = JDBCStatement.removeQuery(cmd.getRSID());
-                rs3.setFinished(true);
-                break;
-            case JDBCCommand.TYPE_QUERY_ERROR:
-                System.err.println("ERROR Executing Query\n");
-                cmd.getERROR().printStackTrace();
-                JDBCResultSet rs4 = JDBCStatement.removeQuery(cmd.getRSID());
-                rs4.setError(cmd.getERROR());
-                rs4.setFinished(true);
-                synchronized (rs4) {
-                    rs4.notifyAll();
-                }
+        case JDBCCommand.TYPE_METADATA_REPLY:
+            this.metaData = cmd.getBluePrint();
+            synchronized (this) {
+                this.notifyAll();
+            }
+            break;
+        case JDBCCommand.TYPE_METADATA:
+            send(new JDBCCommand(this.adapter.getBluePrint()));
+            break;
+        case JDBCCommand.TYPE_EXECUTE_QUERY:
+            try {
+                JDBCServer.execute(cmd.getRS(), adapter);
+                send(new JDBCCommand(cmd.getRS(), JDBCCommand.TYPE_QUERY_REPLY));
+                QueryUpdater u = new QueryUpdater(cmd.getRS());
+                new Thread(u).start();
+            } catch (Exception err) {
+                send(new JDBCCommand(err, cmd.getRSID()));
+            }
+            break;
+        case JDBCCommand.TYPE_QUERY_REPLY:
+            JDBCResultSet rs1 = JDBCStatement.getQuery(cmd.getRS().getID());
+            rs1.updateData(cmd.getRS());
+            break;
+        case JDBCCommand.TYPE_QUERY_RECORD:
+            JDBCResultSet rs2 = JDBCStatement.getQuery(cmd.getRSID());
+            rs2.addRecord(cmd.getRecord());
+            break;
+        case JDBCCommand.TYPE_QUERY_FINISH:
+            JDBCResultSet rs3 = JDBCStatement.removeQuery(cmd.getRSID());
+            rs3.setFinished(true);
+            break;
+        case JDBCCommand.TYPE_QUERY_ERROR:
+            System.err.println("ERROR Executing Query\n");
+            cmd.getERROR().printStackTrace();
+            JDBCResultSet rs4 = JDBCStatement.removeQuery(cmd.getRSID());
+            rs4.setError(cmd.getERROR());
+            rs4.setFinished(true);
+            synchronized (rs4) {
+                rs4.notifyAll();
+            }
         }
     }
 
@@ -221,6 +259,15 @@ public class JDBCConnection extends Thread implements Connection {
     }
 
     public void send(Object o) {
+
+        if (this.socket == null) {
+            try {
+                init();
+            } catch (Exception err) {
+                err.printStackTrace();
+            }
+        }
+
         try {
             ByteArrayOutputStream bout = new ByteArrayOutputStream();
             ObjectOutputStream oout = new ObjectOutputStream(bout);
@@ -256,6 +303,7 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public void close() throws SQLException {
+        wasClosed = true;
         try {
             socket.close();
         } catch (Exception err) {
@@ -271,7 +319,7 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public Array createArrayOf(String typeName, Object[] elements)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -302,28 +350,25 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public Statement createStatement() throws SQLException {
-        return new JDBCStatement(this);
+        return new JDBCStatement(this).getProxy();
     }
 
     @Override
     public Statement createStatement(int resultSetType,
-        int resultSetConcurrency, int resultSetHoldability)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            int resultSetConcurrency, int resultSetHoldability)
+            throws SQLException {
+        return new JDBCStatement(this).getProxy();
     }
 
     @Override
-    public Statement createStatement(int resultSetType,
-        int resultSetConcurrency)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+    public Statement createStatement(int resultSetType, int resultSetConcurrency)
+            throws SQLException {
+        return new JDBCStatement(this).getProxy();
     }
 
     @Override
     public Struct createStruct(String typeName, Object[] attributes)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -360,8 +405,19 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public DatabaseMetaData getMetaData() throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+        if (this.metaData == null) {
+            JDBCCommand cmd = new JDBCCommand();
+            cmd.setType(JDBCCommand.TYPE_METADATA);
+            synchronized (this) {
+                send(cmd);
+                try {
+                    this.wait();
+                } catch (Exception err) {
+                    err.printStackTrace();
+                }
+            }
+        }
+        return metaData;
     }
 
     @Override
@@ -384,7 +440,6 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public boolean isClosed() throws SQLException {
-        // TODO Auto-generated method stub
         return false;
     }
 
@@ -408,15 +463,15 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public CallableStatement prepareCall(String sql, int resultSetType,
-        int resultSetConcurrency, int resultSetHoldability)
-        throws SQLException {
+            int resultSetConcurrency, int resultSetHoldability)
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
     @Override
     public CallableStatement prepareCall(String sql, int resultSetType,
-        int resultSetConcurrency) throws SQLException {
+            int resultSetConcurrency) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -429,44 +484,44 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public PreparedStatement prepareStatement(String sql, int resultSetType,
-        int resultSetConcurrency, int resultSetHoldability)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            int resultSetConcurrency, int resultSetHoldability)
+            throws SQLException {
+        System.err.println("SQL 1=" + sql);
+        return new JDBCStatement(this, sql).getProxy();
     }
 
     @Override
     public PreparedStatement prepareStatement(String sql, int resultSetType,
-        int resultSetConcurrency) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            int resultSetConcurrency) throws SQLException {
+        System.err.println("SQL 2=" + sql);
+        return new JDBCStatement(this, sql).getProxy();
     }
 
     @Override
     public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            throws SQLException {
+        System.err.println("SQL 3=" + sql);
+        return new JDBCStatement(this, sql).getProxy();
     }
 
     @Override
     public PreparedStatement prepareStatement(String sql, int[] columnIndexes)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            throws SQLException {
+        System.err.println("SQL 4=" + sql);
+        return new JDBCStatement(this, sql).getProxy();
     }
 
     @Override
     public PreparedStatement prepareStatement(String sql, String[] columnNames)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            throws SQLException {
+        System.err.println("SQL 5=" + sql);
+        return new JDBCStatement(this, sql).getProxy();
     }
 
     @Override
     public PreparedStatement prepareStatement(String sql) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+        System.err.println("SQL 6=" + sql);
+        return new JDBCStatement(this, sql).getProxy();
     }
 
     @Override
@@ -501,14 +556,14 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public void setClientInfo(Properties properties)
-        throws SQLClientInfoException {
+            throws SQLClientInfoException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void setClientInfo(String name, String value)
-        throws SQLClientInfoException {
+            throws SQLClientInfoException {
         // TODO Auto-generated method stub
 
     }
@@ -569,7 +624,7 @@ public class JDBCConnection extends Thread implements Connection {
 
     @Override
     public void setNetworkTimeout(Executor executor, int milliseconds)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -579,5 +634,5 @@ public class JDBCConnection extends Thread implements Connection {
         // TODO Auto-generated method stub
         return 0;
     }
-}
 
+}
diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCProxy.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCProxy.java
new file mode 100644 (file)
index 0000000..7e29947
--- /dev/null
@@ -0,0 +1,24 @@
+package org.opendaylight.controller.md.sal.dom.xsql.jdbc;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+public class JDBCProxy implements InvocationHandler {
+
+    private Object myObject = null;
+    private Class<?> myObjectClass = null;
+
+    public JDBCProxy(Object obj) {
+        this.myObject = obj;
+        this.myObjectClass = this.myObject.getClass();
+    }
+
+    @Override
+    public Object invoke(Object proxy, Method method, Object[] args)
+            throws Throwable {
+        System.err.println("Class " + this.myObjectClass.getSimpleName()
+                + " Method " + method.getName());
+        return method.invoke(this.myObject, args);
+    }
+
+}
index 7603a3e9ae34aac783b0f049e8e671d7bbd1a549..021f6ee19b7d0bfdb71cdfc8f954783191e99f4f 100644 (file)
@@ -4,6 +4,7 @@ import java.io.InputStream;
 import java.io.Reader;
 import java.io.Serializable;
 import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.math.BigDecimal;
 import java.net.URL;
 import java.sql.Array;
@@ -37,15 +38,13 @@ import org.opendaylight.controller.md.sal.dom.xsql.XSQLColumn;
 import org.opendaylight.controller.md.sal.dom.xsql.XSQLCriteria;
 import org.opendaylight.controller.md.sal.dom.xsql.XSQLODLUtils;
 
-public class JDBCResultSet
-    implements Serializable, ResultSet, ResultSetMetaData {
+public class JDBCResultSet implements Serializable, ResultSet,
+        ResultSetMetaData {
     private static final long serialVersionUID = -7450200738431047057L;
 
     private String sql = null;
-    private List<XSQLBluePrintNode> tablesInQuery =
-        new ArrayList<XSQLBluePrintNode>();
-    private Map<String, XSQLBluePrintNode> tablesInQueryMap =
-        new ConcurrentHashMap<String, XSQLBluePrintNode>();
+    private List<XSQLBluePrintNode> tablesInQuery = new ArrayList<XSQLBluePrintNode>();
+    private Map<String, XSQLBluePrintNode> tablesInQueryMap = new ConcurrentHashMap<String, XSQLBluePrintNode>();
     private List<XSQLColumn> fieldsInQuery = new ArrayList<XSQLColumn>();
     private transient LinkedList<Map> records = new LinkedList<Map>();
     private transient Map currentRecord = null;
@@ -53,10 +52,32 @@ public class JDBCResultSet
     private int id = 0;
     private static Integer nextID = new Integer(0);
     public int numberOfTasks = 0;
-    private Map<String, Map<XSQLColumn, List<XSQLCriteria>>> criteria =
-        new ConcurrentHashMap<String, Map<XSQLColumn, List<XSQLCriteria>>>();
+    private Map<String, Map<XSQLColumn, List<XSQLCriteria>>> criteria = new ConcurrentHashMap<String, Map<XSQLColumn, List<XSQLCriteria>>>();
     private Exception err = null;
     private List<Record> EMPTY_RESULT = new LinkedList<Record>();
+    private transient Map<String,JDBCResultSet> subQueries = new HashMap<String,JDBCResultSet>();
+
+    public ResultSet getProxy() {
+         return (ResultSet) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] {ResultSet.class }, new JDBCProxy(this));
+    }
+
+    public void setSQL(String _sql) {
+        this.sql = _sql;
+    }
+
+    public JDBCResultSet addSubQuery(String _sql,String logicalName) {
+        if(subQueries == null)
+            subQueries = new HashMap<String,JDBCResultSet>();
+        JDBCResultSet rs = new JDBCResultSet(_sql);
+        this.subQueries.put(logicalName,rs);
+        return rs;
+    }
+
+    public Map<String,JDBCResultSet> getSubQueries() {
+        if(this.subQueries==null)
+            this.subQueries = new HashMap<>();
+        return this.subQueries;
+    }
 
     public JDBCResultSet(String _sql) {
         synchronized (JDBCResultSet.class) {
@@ -88,12 +109,13 @@ public class JDBCResultSet
     }
 
     public int isObjectFitCriteria(Map objValues, String tableName) {
-        Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria.get(tableName);
+        Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria
+                .get(tableName);
         if (tblCriteria == null) {
             return 1;
         }
         for (Map.Entry<XSQLColumn, List<XSQLCriteria>> cc : tblCriteria
-            .entrySet()) {
+                .entrySet()) {
             for (XSQLCriteria c : cc.getValue()) {
                 Object value = objValues.get(cc.getKey().toString());
                 int result = c.checkValue(value);
@@ -106,16 +128,16 @@ public class JDBCResultSet
     }
 
     public int isObjectFitCriteria(Object element, Class cls) {
-        Map<XSQLColumn, List<XSQLCriteria>> tblCriteria =
-            criteria.get(cls.getName());
+        Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = criteria.get(cls
+                .getName());
         if (tblCriteria == null) {
             return 1;
         }
         for (Map.Entry<XSQLColumn, List<XSQLCriteria>> cc : tblCriteria
-            .entrySet()) {
+                .entrySet()) {
             for (XSQLCriteria c : cc.getValue()) {
-                int result =
-                    c.isObjectFitCriteria(element, cc.getKey().getName());
+                int result = c.isObjectFitCriteria(element, cc.getKey()
+                        .getName());
                 if (result == 0) {
                     return 0;
                 }
@@ -185,16 +207,15 @@ public class JDBCResultSet
         }
     }
 
-
     public void addRecord(ArrayList hierarchy) {
         Map rec = new HashMap();
         for (int i = hierarchy.size() - 1; i >= 0; i--) {
             Object element = hierarchy.get(i);
             for (XSQLColumn c : fieldsInQuery) {
-                if (c.getTableName()
-                    .equals(element.getClass().getSimpleName())) {
+                if (c.getTableName().equals(element.getClass().getSimpleName())) {
                     try {
-                        Method m = element.getClass().getMethod(c.getName(), null);
+                        Method m = element.getClass().getMethod(c.getName(),
+                                null);
                         Object value = m.invoke(element, null);
                         rec.put(c.getName(), value);
                     } catch (Exception err) {
@@ -276,18 +297,16 @@ public class JDBCResultSet
         Map subChildren = XSQLODLUtils.getChildren(node);
         Map result = new HashMap();
         for (Object stc : subChildren.values()) {
-            if (stc.getClass().getName()
-                .endsWith("ImmutableAugmentationNode")) {
+            if (stc.getClass().getName().endsWith("ImmutableAugmentationNode")) {
                 Map values = XSQLODLUtils.getChildren(stc);
                 for (Object key : values.keySet()) {
                     Object val = values.get(key);
-                    if (val.getClass().getName()
-                        .endsWith("ImmutableLeafNode")) {
+                    if (val.getClass().getName().endsWith("ImmutableLeafNode")) {
                         Object value = XSQLODLUtils.getValue(val);
                         String k = XSQLODLUtils.getNodeName(val);
                         if (value != null) {
                             result.put(bpn.getBluePrintNodeName() + "." + k,
-                                value.toString());
+                                    value.toString());
                         }
                     }
                 }
@@ -295,20 +314,27 @@ public class JDBCResultSet
                 String k = XSQLODLUtils.getNodeName(stc);
                 Object value = XSQLODLUtils.getValue(stc);
                 if (value != null) {
-                    result.put(bpn.getBluePrintNodeName() + "." + k, value.toString());
+                    result.put(bpn.getBluePrintNodeName() + "." + k,
+                            value.toString());
                 }
             }
         }
         return result;
     }
 
-    private void addToData(Record rec, XSQLBluePrintNode bpn, XSQLBluePrint bluePrint, Map fullRecord) {
-        XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(XSQLODLUtils.getNodeIdentiofier(rec.element));
+    private void addToData(Record rec, XSQLBluePrintNode bpn,
+            XSQLBluePrint bluePrint, Map fullRecord) {
+        XSQLBluePrintNode eNodes[] = bluePrint
+                .getBluePrintNodeByODLTableName(XSQLODLUtils
+                        .getNodeIdentiofier(rec.element));
         if (bpn != null) {
             for (XSQLColumn c : fieldsInQuery) {
-                for(XSQLBluePrintNode eNode:eNodes){
-                    if (((XSQLBluePrintNode) c.getBluePrintNode()).getBluePrintNodeName().equals(eNode.getBluePrintNodeName())) {
-                        //Object value = Criteria.getValue(rec.element, c.getName());
+                for (XSQLBluePrintNode eNode : eNodes) {
+                    if (((XSQLBluePrintNode) c.getBluePrintNode())
+                            .getBluePrintNodeName().equals(
+                                    eNode.getBluePrintNodeName())) {
+                        // Object value = Criteria.getValue(rec.element,
+                        // c.getName());
                         String columnName = c.toString();
                         Object value = fullRecord.get(columnName);
                         if (value != null) {
@@ -346,7 +372,8 @@ public class JDBCResultSet
         return false;
     }
 
-    public List<Object> getChildren(Object node, String tableName,XSQLBluePrint bluePrint) {
+    public List<Object> getChildren(Object node, String tableName,
+            XSQLBluePrint bluePrint) {
 
         List<Object> children = XSQLODLUtils.getMChildren(node);
         List<Object> result = new LinkedList<Object>();
@@ -354,28 +381,33 @@ public class JDBCResultSet
         for (Object child : children) {
 
             String odlNodeName = XSQLODLUtils.getNodeIdentiofier(child);
-            if(odlNodeName==null) continue;
+            if (odlNodeName == null)
+                continue;
 
-            XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(odlNodeName);
-            if(eNodes==null) continue;
+            XSQLBluePrintNode eNodes[] = bluePrint
+                    .getBluePrintNodeByODLTableName(odlNodeName);
+            if (eNodes == null)
+                continue;
 
             boolean match = false;
-            for(XSQLBluePrintNode enode:eNodes){
-                if(tableName.startsWith(enode.toString())){
+            for (XSQLBluePrintNode enode : eNodes) {
+                if (tableName.startsWith(enode.toString())) {
                     match = true;
                     break;
                 }
             }
 
-            if(!match) continue;
+            if (!match)
+                continue;
 
             if (child.getClass().getName().endsWith("ImmutableContainerNode")) {
                 result.add(child);
-            }else
-            if (child.getClass().getName().endsWith("ImmutableAugmentationNode")) {
+            } else if (child.getClass().getName()
+                    .endsWith("ImmutableAugmentationNode")) {
                 List<Object> _children = XSQLODLUtils.getMChildren(child);
                 for (Object c : _children) {
-                    if (c.getClass().getName().endsWith("ImmutableContainerNode")) {
+                    if (c.getClass().getName()
+                            .endsWith("ImmutableContainerNode")) {
                         result.add(c);
                     }
                 }
@@ -386,21 +418,26 @@ public class JDBCResultSet
         return result;
     }
 
-    public List<Record> addRecords(Object element, XSQLBluePrintNode node,boolean root, String tableName,XSQLBluePrint bluePrint) {
+    public List<Record> addRecords(Object element, XSQLBluePrintNode node,
+            boolean root, String tableName, XSQLBluePrint bluePrint) {
 
         List<Record> result = new LinkedList<Record>();
         String nodeID = XSQLODLUtils.getNodeIdentiofier(element);
         if (node.getODLTableName().equals(nodeID)) {
-            XSQLBluePrintNode bluePrintNode = bluePrint.getBluePrintNodeByODLTableName(nodeID)[0];
+            XSQLBluePrintNode bluePrintNode = bluePrint
+                    .getBluePrintNodeByODLTableName(nodeID)[0];
             Record rec = new Record();
             rec.element = element;
-            XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode.getBluePrintNodeName());
-            if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName()) || bpn != null) {
+            XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode
+                    .getBluePrintNodeName());
+            if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName())
+                    || bpn != null) {
                 Map<?, ?> allKeyValues = collectColumnValues(element, bpn);
-                if (!(isObjectFitCriteria(allKeyValues, bpn.getBluePrintNodeName()) == 1)) {
+                if (!(isObjectFitCriteria(allKeyValues,
+                        bpn.getBluePrintNodeName()) == 1)) {
                     return EMPTY_RESULT;
                 }
-                addToData(rec, bpn, bluePrint,allKeyValues);
+                addToData(rec, bpn, bluePrint, allKeyValues);
             }
             if (root) {
                 addRecord(rec.data);
@@ -411,9 +448,11 @@ public class JDBCResultSet
         }
 
         XSQLBluePrintNode parent = node.getParent();
-        List<Record> subRecords = addRecords(element, parent, false, tableName,bluePrint);
+        List<Record> subRecords = addRecords(element, parent, false, tableName,
+                bluePrint);
         for (Record subRec : subRecords) {
-            List<Object> subO = getChildren(subRec.element, tableName,bluePrint);
+            List<Object> subO = getChildren(subRec.element, tableName,
+                    bluePrint);
             if (subO != null) {
                 for (Object subData : subO) {
                     Record rec = new Record();
@@ -421,18 +460,21 @@ public class JDBCResultSet
                     rec.data.putAll(subRec.data);
 
                     String recID = XSQLODLUtils.getNodeIdentiofier(rec.element);
-                    XSQLBluePrintNode eNodes[] = bluePrint.getBluePrintNodeByODLTableName(recID);
+                    XSQLBluePrintNode eNodes[] = bluePrint
+                            .getBluePrintNodeByODLTableName(recID);
                     XSQLBluePrintNode bpn = null;
-                    for(XSQLBluePrintNode eNode:eNodes){
-                        bpn = this.tablesInQueryMap.get(eNode.getBluePrintNodeName());
-                        if(bpn!=null)
+                    for (XSQLBluePrintNode eNode : eNodes) {
+                        bpn = this.tablesInQueryMap.get(eNode
+                                .getBluePrintNodeName());
+                        if (bpn != null)
                             break;
                     }
                     boolean isObjectInCriteria = true;
                     if (bpn != null) {
                         Map allKeyValues = collectColumnValues(rec.element, bpn);
-                        if ((isObjectFitCriteria(allKeyValues, bpn.getBluePrintNodeName()) == 1)) {
-                            addToData(rec, bpn,bluePrint,allKeyValues);
+                        if ((isObjectFitCriteria(allKeyValues,
+                                bpn.getBluePrintNodeName()) == 1)) {
+                            addToData(rec, bpn, bluePrint, allKeyValues);
                         } else {
                             isObjectInCriteria = false;
                         }
@@ -440,7 +482,7 @@ public class JDBCResultSet
 
                     if (isObjectInCriteria) {
                         if (root) {
-                            if(!rec.data.isEmpty())
+                            if (!rec.data.isEmpty())
                                 addRecord(rec.data);
                         } else {
                             result.add(rec);
@@ -545,7 +587,7 @@ public class JDBCResultSet
 
     @Override
     public BigDecimal getBigDecimal(int columnIndex, int scale)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -558,7 +600,7 @@ public class JDBCResultSet
 
     @Override
     public BigDecimal getBigDecimal(String columnLabel, int scale)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -798,22 +840,20 @@ public class JDBCResultSet
 
     @Override
     public Object getObject(int columnIndex, Map<String, Class<?>> map)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            throws SQLException {
+        return getObject(columnIndex);
     }
 
     @Override
     public Object getObject(int columnIndex) throws SQLException {
-        return currentRecord
-            .get(this.fieldsInQuery.get(columnIndex - 1).toString());
+        return currentRecord.get(this.fieldsInQuery.get(columnIndex - 1)
+                .toString());
     }
 
     @Override
     public Object getObject(String columnLabel, Map<String, Class<?>> map)
-        throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+            throws SQLException {
+        return getObject(columnLabel);
     }
 
     @Override
@@ -883,14 +923,12 @@ public class JDBCResultSet
 
     @Override
     public String getString(int columnIndex) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+        return "Kuku";
     }
 
     @Override
     public String getString(String columnLabel) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
+        return "Kuku";
     }
 
     @Override
@@ -919,7 +957,7 @@ public class JDBCResultSet
 
     @Override
     public Timestamp getTimestamp(int columnIndex, Calendar cal)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -932,7 +970,7 @@ public class JDBCResultSet
 
     @Override
     public Timestamp getTimestamp(String columnLabel, Calendar cal)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -945,8 +983,7 @@ public class JDBCResultSet
 
     @Override
     public int getType() throws SQLException {
-        // TODO Auto-generated method stub
-        return 0;
+        return ResultSet.TYPE_FORWARD_ONLY;
     }
 
     @Override
@@ -968,8 +1005,7 @@ public class JDBCResultSet
     }
 
     @Override
-    public InputStream getUnicodeStream(String columnLabel)
-        throws SQLException {
+    public InputStream getUnicodeStream(String columnLabel) throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
@@ -1096,100 +1132,98 @@ public class JDBCResultSet
 
     @Override
     public void updateAsciiStream(int columnIndex, InputStream x, int length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateAsciiStream(int columnIndex, InputStream x, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateAsciiStream(int columnIndex, InputStream x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateAsciiStream(String columnLabel, InputStream x, int length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
-    public void updateAsciiStream(String columnLabel, InputStream x,
-        long length)
-        throws SQLException {
+    public void updateAsciiStream(String columnLabel, InputStream x, long length)
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateAsciiStream(String columnLabel, InputStream x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBigDecimal(int columnIndex, BigDecimal x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBigDecimal(String columnLabel, BigDecimal x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBinaryStream(int columnIndex, InputStream x, int length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBinaryStream(int columnIndex, InputStream x, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBinaryStream(int columnIndex, InputStream x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
-    public void updateBinaryStream(String columnLabel, InputStream x,
-        int length)
-        throws SQLException {
+    public void updateBinaryStream(String columnLabel, InputStream x, int length)
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBinaryStream(String columnLabel, InputStream x,
-        long length) throws SQLException {
+            long length) throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBinaryStream(String columnLabel, InputStream x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1201,16 +1235,15 @@ public class JDBCResultSet
     }
 
     @Override
-    public void updateBlob(int columnIndex, InputStream inputStream,
-        long length)
-        throws SQLException {
+    public void updateBlob(int columnIndex, InputStream inputStream, long length)
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBlob(int columnIndex, InputStream inputStream)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1223,14 +1256,14 @@ public class JDBCResultSet
 
     @Override
     public void updateBlob(String columnLabel, InputStream inputStream,
-        long length) throws SQLException {
+            long length) throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateBlob(String columnLabel, InputStream inputStream)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1243,7 +1276,7 @@ public class JDBCResultSet
 
     @Override
     public void updateBoolean(String columnLabel, boolean x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1274,42 +1307,42 @@ public class JDBCResultSet
 
     @Override
     public void updateCharacterStream(int columnIndex, Reader x, int length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateCharacterStream(int columnIndex, Reader x, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateCharacterStream(int columnIndex, Reader x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateCharacterStream(String columnLabel, Reader reader,
-        int length) throws SQLException {
+            int length) throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateCharacterStream(String columnLabel, Reader reader,
-        long length) throws SQLException {
+            long length) throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateCharacterStream(String columnLabel, Reader reader)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1322,7 +1355,7 @@ public class JDBCResultSet
 
     @Override
     public void updateClob(int columnIndex, Reader reader, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1341,14 +1374,14 @@ public class JDBCResultSet
 
     @Override
     public void updateClob(String columnLabel, Reader reader, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateClob(String columnLabel, Reader reader)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1415,28 +1448,28 @@ public class JDBCResultSet
 
     @Override
     public void updateNCharacterStream(int columnIndex, Reader x, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNCharacterStream(int columnIndex, Reader x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNCharacterStream(String columnLabel, Reader reader,
-        long length) throws SQLException {
+            long length) throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNCharacterStream(String columnLabel, Reader reader)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1449,49 +1482,48 @@ public class JDBCResultSet
 
     @Override
     public void updateNClob(int columnIndex, Reader reader, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
-    public void updateNClob(int columnIndex, Reader reader)
-        throws SQLException {
+    public void updateNClob(int columnIndex, Reader reader) throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNClob(String columnLabel, NClob nClob)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNClob(String columnLabel, Reader reader, long length)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNClob(String columnLabel, Reader reader)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNString(int columnIndex, String nString)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateNString(String columnLabel, String nString)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1510,7 +1542,7 @@ public class JDBCResultSet
 
     @Override
     public void updateObject(int columnIndex, Object x, int scaleOrLength)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1523,7 +1555,7 @@ public class JDBCResultSet
 
     @Override
     public void updateObject(String columnLabel, Object x, int scaleOrLength)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1566,14 +1598,14 @@ public class JDBCResultSet
 
     @Override
     public void updateSQLXML(int columnIndex, SQLXML xmlObject)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateSQLXML(String columnLabel, SQLXML xmlObject)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1616,14 +1648,14 @@ public class JDBCResultSet
 
     @Override
     public void updateTimestamp(int columnIndex, Timestamp x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
 
     @Override
     public void updateTimestamp(String columnLabel, Timestamp x)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
 
     }
@@ -1670,8 +1702,7 @@ public class JDBCResultSet
 
     @Override
     public int getColumnType(int column) throws SQLException {
-        // TODO Auto-generated method stub
-        return 0;
+        return 12;
     }
 
     @Override
@@ -1766,15 +1797,11 @@ public class JDBCResultSet
 
     @Override
     public <T> T getObject(String columnLabel, Class<T> type)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return null;
     }
 
-
-
-    ////Metadata
-
-
+    // //Metadata
 
 }
index 26b8c70b8bd82afc1dc2d9c3f9ffa9f268b27fde..5be701f82e64497fea4ef863dfd7a147bd360499 100644 (file)
@@ -1,20 +1,22 @@
 package org.opendaylight.controller.md.sal.dom.xsql.jdbc;
 
-import org.opendaylight.controller.md.sal.dom.xsql.XSQLAdapter;
-import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint;
-import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrintNode;
-import org.opendaylight.controller.md.sal.dom.xsql.XSQLColumn;
-import org.opendaylight.controller.md.sal.dom.xsql.XSQLCriteria;
-
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLAdapter;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrintNode;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLColumn;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLCriteria;
+
 public class JDBCServer extends Thread {
     private ServerSocket socket = null;
     private XSQLAdapter adapter = null;
@@ -47,19 +49,179 @@ public class JDBCServer extends Thread {
     }
 
     public static void execute(JDBCResultSet rs, XSQLAdapter adapter)
-        throws SQLException {
-        parseTables(rs, adapter.getBluePrint());
-        parseFields(rs, adapter.getBluePrint());
-        parseCriteria(rs, adapter.getBluePrint());
+            throws SQLException {
+        if(rs.getSQL().toLowerCase().trim().equals("select 1")){
+            rs.setFinished(true);
+            return;
+        }
+        checkAndBreakSubQueries(rs, adapter);
+        if (rs.getSubQueries().size() == 0) {
+            parseTables(rs, adapter.getBluePrint());
+            parseFields(rs, adapter.getBluePrint());
+            parseCriteria(rs, adapter.getBluePrint());
+            try {
+                adapter.execute(rs);
+            } catch (Exception err) {
+                throw new SQLException("Error", err);
+            }
+        } else {
+            parseExternalQuery(rs);
+        }
+    }
+
+    public static void parseExternalQuery(JDBCResultSet rs) throws SQLException {
+        String sql = rs.getSQL();
+        for (Map.Entry<String, JDBCResultSet> entry : rs.getSubQueries()
+                .entrySet()) {
+            int index = sql.toLowerCase().indexOf(entry.getValue().getSQL());
+            String extSql = sql.substring(0, index);
+            index = extSql.lastIndexOf("(");
+            extSql = extSql.substring(0, index);
+            System.out.println("External SQL=" + extSql);
+            parseLogicalFields(extSql, rs);
+        }
+    }
+
+    public static void parseLogicalFields(String sql, JDBCResultSet rs)
+            throws SQLException {
+        if(sql.trim().toLowerCase().equals("select * from")){
+            for (Map.Entry<String, JDBCResultSet> entry : rs.getSubQueries().entrySet()) {
+                for(XSQLBluePrintNode node:entry.getValue().getTables()){
+                    rs.addTableToQuery(node);
+                }
+                rs.getFields().addAll(entry.getValue().getFields());
+                while (entry.getValue().next()) {
+                    Map rec = entry.getValue().getCurrent();
+                    Map newRec = new HashMap();
+                    newRec.putAll(rec);
+                    rs.addRecord(newRec);
+                }
+            }
+            rs.setFinished(true);
+            return;
+        }
+
+        Map<String, XSQLBluePrintNode> logicalNameToNode = new HashMap<String, XSQLBluePrintNode>();
+        Map<String, String> origNameToName = new HashMap<String, String>();
+        List<XSQLColumn> columnOrder = new ArrayList<>();
+        int nextLogField = addNextLogicalField(sql, 0,
+                logicalNameToNode, origNameToName,columnOrder);
+        int next = sql.toLowerCase().indexOf(" as ", nextLogField);
+        while (next != -1) {
+            nextLogField = addNextLogicalField(sql, nextLogField + 1,
+                    logicalNameToNode, origNameToName,columnOrder);
+            next = sql.toLowerCase().indexOf(" as ", nextLogField + 1);
+        }
+
+        for (XSQLBluePrintNode node : logicalNameToNode.values()) {
+            rs.addTableToQuery(node);
+        }
+        rs.getFields().addAll(columnOrder);
+        for (Map.Entry<String, JDBCResultSet> entry : rs.getSubQueries().entrySet()) {
+            while (entry.getValue().next()) {
+                Map rec = entry.getValue().getCurrent();
+                Map newRec = new HashMap();
+                for (Iterator iter = rec.entrySet().iterator(); iter.hasNext();) {
+                    Map.Entry e = (Map.Entry) iter.next();
+                    String key = (String) e.getKey();
+                    Object value = e.getValue();
+                    String logicalKey = origNameToName.get(key);
+                    if (value != null && logicalKey != null) {
+                        newRec.put(logicalKey, value);
+                    }
+                }
+                rs.addRecord(newRec);
+            }
+        }
+        rs.setFinished(true);
+    }
+
+    public static void main(String args[]) {
+        String sql = "SELECT DISTINCT"
+                + "\"LOGICAL_TABLE_1\".\"nodes/node.id\" AS \"COL0\"\n"
+                + ",\"LOGICAL_TABLE_1\".\"nodes/node.id\" AS \"COL1\"\n"
+                + ",\"LOGICAL_TABLE_1\".\"nodes/node.id\" AS \"COL2\"\n"
+                + "FROM\n"
+                + "(select * from nodes/node;) \"LOGICAL_TABLE_1\"\n";
+        JDBCResultSet rs = new JDBCResultSet(sql);
         try {
-            adapter.execute(rs);
+            parseLogicalFields(sql, rs);
         } catch (Exception err) {
-            throw new SQLException("Error", err);
+            err.printStackTrace();
+        }
+    }
+
+    public static int addNextLogicalField(String sql, int startIndex,
+            Map<String, XSQLBluePrintNode> logicalNameToNode,
+            Map<String, String> origNameToName, List<XSQLColumn> columnOrder) {
+        int index1 = sql.indexOf("\"", startIndex);
+        int index2 = sql.indexOf("\".\"", index1);
+        int index3 = sql.indexOf("\"", index2 + 3);
+        int index4 = sql.toLowerCase().indexOf(" as ", startIndex);
+        int index5 = sql.indexOf("\"", index4);
+        int index6 = sql.indexOf("\"", index5 + 1);
+
+        String tblName = sql.substring(index1 + 1, index2);
+        String origFieldNameFull = sql.substring(index2 + 3, index3);
+        String origTableName = "";
+        String origFieldName = "";
+        if (origFieldNameFull.indexOf(".") != -1) {
+            origTableName = origFieldNameFull.substring(0,origFieldNameFull.indexOf("."));
+            origFieldName = origFieldNameFull.substring(origFieldNameFull.indexOf(".") + 1);
+        }
+        String logicalFieldName = sql.substring(index5 + 1, index6);
+        XSQLBluePrintNode node = logicalNameToNode.get(tblName);
+        if (node == null) {
+            node = new XSQLBluePrintNode(tblName, origTableName, 0);
+            logicalNameToNode.put(tblName, node);
+        }
+        columnOrder.add(node.addColumn(logicalFieldName, tblName, origFieldName, origTableName));
+        origNameToName.put(origFieldNameFull, tblName + "." + logicalFieldName);
+        return index6;
+    }
+
+    public static void checkAndBreakSubQueries(JDBCResultSet rs,XSQLAdapter adapter) throws SQLException {
+        String sql = rs.getSQL().toLowerCase();
+        int index = sql.indexOf("select");
+        if (index == -1)
+            throw new SQLException("Select statement is missing...");
+        int index2 = sql.indexOf("select", index + 6);
+        if (index2 != -1) {
+            int startSubQuery = index2;
+            for (int i = startSubQuery; i >= 0; i--) {
+                if (sql.charAt(i) == '(') {
+                    startSubQuery = i;
+                    break;
+                }
+            }
+            int braketCount = 0;
+            int endSubQuery = startSubQuery;
+            do {
+                if (sql.charAt(endSubQuery) == '(')
+                    braketCount++;
+                else if (sql.charAt(endSubQuery) == ')')
+                    braketCount--;
+                endSubQuery++;
+            } while (braketCount > 0 || endSubQuery == sql.length());
+            String subQuerySQL = sql.substring(startSubQuery + 1,endSubQuery - 1);
+            if(rs.getSQL().toLowerCase().substring(0,startSubQuery).trim().equals("select * from")){
+                rs.setSQL(subQuerySQL);
+                return;
+            }
+            index = sql.indexOf("\"", endSubQuery);
+            index2 = sql.indexOf("\"", index + 1);
+            if(index==-1){
+                index = endSubQuery;
+                index2 = sql.length();
+            }
+            String logicalName = rs.getSQL().substring(index + 1, index2).trim();
+            JDBCResultSet subRS = rs.addSubQuery(subQuerySQL, logicalName);
+            JDBCServer.execute(subRS, adapter);
         }
     }
 
     public static void parseTables(JDBCResultSet rs, XSQLBluePrint bp)
-        throws SQLException {
+            throws SQLException {
         String lowSQL = rs.getSQL().toLowerCase();
         int from = lowSQL.indexOf("from");
         int where = lowSQL.indexOf("where");
@@ -90,20 +252,19 @@ public class JDBCServer extends Thread {
             String tableName = tokens.nextToken().trim();
             XSQLBluePrintNode table = bp.getBluePrintNodeByTableName(tableName);
             if (table == null) {
-                throw new SQLException(
-                    "Unknown table name \"" + tableName + "\"");
+                throw new SQLException("Unknown table name \"" + tableName
+                        + "\"");
             }
             rs.addTableToQuery(table);
         }
     }
 
     public static void addCriteria(XSQLColumn col, XSQLCriteria c,
-        JDBCResultSet rs) {
-        Map<XSQLColumn, List<XSQLCriteria>> tblCriteria =
-            rs.getCriteria().get(col.getTableName());
+            JDBCResultSet rs) {
+        Map<XSQLColumn, List<XSQLCriteria>> tblCriteria = rs.getCriteria().get(
+                col.getTableName());
         if (tblCriteria == null) {
-            tblCriteria =
-                new ConcurrentHashMap<XSQLColumn, List<XSQLCriteria>>();
+            tblCriteria = new ConcurrentHashMap<XSQLColumn, List<XSQLCriteria>>();
             rs.getCriteria().put(col.getTableName(), tblCriteria);
         }
         List<XSQLCriteria> lstCriteria = tblCriteria.get(col);
@@ -115,7 +276,7 @@ public class JDBCServer extends Thread {
     }
 
     public static void parseFields(JDBCResultSet rs, XSQLBluePrint bp)
-        throws SQLException {
+            throws SQLException {
         String lowSQL = rs.getSQL().toLowerCase();
         if (!lowSQL.startsWith("select")) {
             throw new SQLException("Missing 'select' statement.");
@@ -135,8 +296,8 @@ public class JDBCServer extends Thread {
                 return;
             }
             if (token.indexOf(".") != -1) {
-                XSQLBluePrintNode tbl = bp.getBluePrintNodeByTableName(
-                    token.substring(0, token.indexOf(".")).trim());
+                XSQLBluePrintNode tbl = bp.getBluePrintNodeByTableName(token
+                        .substring(0, token.indexOf(".")).trim());
                 String p = token.substring(token.indexOf(".") + 1);
                 if (p.equals("*")) {
                     for (XSQLColumn c : tbl.getColumns()) {
@@ -158,8 +319,8 @@ public class JDBCServer extends Thread {
                     }
                 }
                 if (col == null) {
-                    throw new SQLException(
-                        "Unknown field name '" + token + "'.");
+                    throw new SQLException("Unknown field name '" + token
+                            + "'.");
                 }
 
                 rs.getFields().add(col);
@@ -171,28 +332,21 @@ public class JDBCServer extends Thread {
         String lowSQL = rs.getSQL().toLowerCase();
         int where = lowSQL.indexOf("where");
         int order = lowSQL.indexOf("order");
-        int subQuery = lowSQL.indexOf("select", 2);
         int whereTo = lowSQL.indexOf(";");
 
         if (where == -1) {
             return;
         }
 
-        if (where != -1 && subQuery != -1 && subQuery < where) {
-            return;
-        }
-
-        if (order != -1 && subQuery != -1 && order < subQuery) {
-            whereTo = order;
-        } else if (order != -1 && subQuery != -1 && order > subQuery) {
-            whereTo = subQuery;
-        } else if (order != -1) {
+        if (order != -1) {
             whereTo = order;
-        } else if (subQuery != -1) {
-            whereTo = subQuery;
         }
-        String whereStatement =
-            rs.getSQL().substring(where + 5, whereTo).trim();
+
+        if(whereTo==-1)
+            whereTo=lowSQL.length();
+
+        String whereStatement = rs.getSQL().substring(where + 5, whereTo)
+                .trim();
         XSQLCriteria cr = new XSQLCriteria(whereStatement, -1);
         for (XSQLBluePrintNode tbl : rs.getTables()) {
             for (XSQLColumn col : tbl.getColumns()) {
index a9ce1dd9bfe171059414ec32e19d7f44c9b445e5..b71b0153512ba51051c513564fe3e7594ef7b903 100644 (file)
@@ -1,28 +1,63 @@
 package org.opendaylight.controller.md.sal.dom.xsql.jdbc;
 
+import java.io.InputStream;
+import java.io.Reader;
+import java.math.BigDecimal;
+import java.net.URL;
+import java.sql.Array;
+import java.sql.Blob;
+import java.sql.Clob;
 import java.sql.Connection;
+import java.sql.Date;
+import java.sql.NClob;
+import java.sql.ParameterMetaData;
+import java.sql.PreparedStatement;
+import java.sql.Ref;
 import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.RowId;
 import java.sql.SQLException;
 import java.sql.SQLWarning;
-import java.sql.Statement;
+import java.sql.SQLXML;
+import java.sql.Time;
+import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class JDBCStatement implements Statement {
+public class JDBCStatement implements PreparedStatement {
     private JDBCResultSet rs = null;
     private transient JDBCConnection connection = null;
-    private static Map<Integer, JDBCResultSet> queries =
-        new ConcurrentHashMap<Integer, JDBCResultSet>();
+    private static Map<Integer, JDBCResultSet> queries = new ConcurrentHashMap<Integer, JDBCResultSet>();
+    private String sql = null;
+
+    public JDBCStatement(JDBCConnection con,String _sql) {
+        this.connection = con;
+        this.sql = _sql;
+    }
 
     public JDBCStatement(JDBCConnection con) {
         this.connection = con;
     }
 
+    public void setSQL(String _sql){
+        this.sql = _sql;
+    }
+
     public JDBCStatement() {
 
     }
 
+    public PreparedStatement getProxy() {
+        return this;
+        /*
+        return (PreparedStatement) Proxy.newProxyInstance(this.getClass()
+                .getClassLoader(), new Class[] { PreparedStatement.class },
+                new JDBCProxy(this));
+                */
+    }
+
     public static JDBCResultSet getQuery(int id) {
         return queries.get(id);
     }
@@ -36,8 +71,8 @@ public class JDBCStatement implements Statement {
         rs = new JDBCResultSet(_sql);
         queries.put(rs.getID(), rs);
         synchronized (rs) {
-            this.connection
-                .send(new JDBCCommand(rs, JDBCCommand.TYPE_EXECUTE_QUERY));
+            this.connection.send(new JDBCCommand(rs,
+                    JDBCCommand.TYPE_EXECUTE_QUERY));
             try {
                 rs.wait();
             } catch (Exception err) {
@@ -46,7 +81,7 @@ public class JDBCStatement implements Statement {
                 throw ((SQLException) rs.getError());
             }
         }
-        return rs;
+        return rs.getProxy();
     }
 
     @Override
@@ -118,21 +153,20 @@ public class JDBCStatement implements Statement {
 
     @Override
     public boolean execute(String sql, int autoGeneratedKeys)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
-    public boolean execute(String sql, int[] columnIndexes)
-        throws SQLException {
+    public boolean execute(String sql, int[] columnIndexes) throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
     public boolean execute(String sql, String[] columnNames)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return false;
     }
@@ -145,21 +179,21 @@ public class JDBCStatement implements Statement {
 
     @Override
     public int executeUpdate(String sql, int autoGeneratedKeys)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return 0;
     }
 
     @Override
     public int executeUpdate(String sql, int[] columnIndexes)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return 0;
     }
 
     @Override
     public int executeUpdate(String sql, String[] columnNames)
-        throws SQLException {
+            throws SQLException {
         // TODO Auto-generated method stub
         return 0;
     }
@@ -202,8 +236,7 @@ public class JDBCStatement implements Statement {
 
     @Override
     public int getMaxRows() throws SQLException {
-        // TODO Auto-generated method stub
-        return 0;
+        return 200;
     }
 
     @Override
@@ -326,5 +359,358 @@ public class JDBCStatement implements Statement {
         return false;
     }
 
+    @Override
+    public ResultSet executeQuery() throws SQLException {
+        return this.executeQuery(this.sql);
+    }
+
+    @Override
+    public int executeUpdate() throws SQLException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public void setNull(int parameterIndex, int sqlType) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBoolean(int parameterIndex, boolean x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setByte(int parameterIndex, byte x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setShort(int parameterIndex, short x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setInt(int parameterIndex, int x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setLong(int parameterIndex, long x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setFloat(int parameterIndex, float x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setDouble(int parameterIndex, double x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBigDecimal(int parameterIndex, BigDecimal x)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setString(int parameterIndex, String x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBytes(int parameterIndex, byte[] x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setDate(int parameterIndex, Date x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setTime(int parameterIndex, Time x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setTimestamp(int parameterIndex, Timestamp x)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setAsciiStream(int parameterIndex, InputStream x, int length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setUnicodeStream(int parameterIndex, InputStream x, int length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBinaryStream(int parameterIndex, InputStream x, int length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void clearParameters() throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setObject(int parameterIndex, Object x, int targetSqlType)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setObject(int parameterIndex, Object x) throws SQLException {
+        // TODO Auto-generated method stub
+    }
+
+    @Override
+    public boolean execute() throws SQLException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public void addBatch() throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setCharacterStream(int parameterIndex, Reader reader, int length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setRef(int parameterIndex, Ref x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBlob(int parameterIndex, Blob x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setClob(int parameterIndex, Clob x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setArray(int parameterIndex, Array x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public ResultSetMetaData getMetaData() throws SQLException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void setDate(int parameterIndex, Date x, Calendar cal)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setTime(int parameterIndex, Time x, Calendar cal)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNull(int parameterIndex, int sqlType, String typeName)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setURL(int parameterIndex, URL x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public ParameterMetaData getParameterMetaData() throws SQLException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void setRowId(int parameterIndex, RowId x) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNString(int parameterIndex, String value)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNCharacterStream(int parameterIndex, Reader value,
+            long length) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNClob(int parameterIndex, NClob value) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setClob(int parameterIndex, Reader reader, long length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBlob(int parameterIndex, InputStream inputStream, long length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNClob(int parameterIndex, Reader reader, long length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setSQLXML(int parameterIndex, SQLXML xmlObject)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setObject(int parameterIndex, Object x, int targetSqlType,
+            int scaleOrLength) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setAsciiStream(int parameterIndex, InputStream x, long length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBinaryStream(int parameterIndex, InputStream x, long length)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setCharacterStream(int parameterIndex, Reader reader,
+            long length) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setAsciiStream(int parameterIndex, InputStream x)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBinaryStream(int parameterIndex, InputStream x)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setCharacterStream(int parameterIndex, Reader reader)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNCharacterStream(int parameterIndex, Reader value)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setClob(int parameterIndex, Reader reader) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setBlob(int parameterIndex, InputStream inputStream)
+            throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setNClob(int parameterIndex, Reader reader) throws SQLException {
+        // TODO Auto-generated method stub
+
+    }
 
 }
diff --git a/opendaylight/md-sal/sal-dom-xsql/src/test/java/org/opendaylight/xsql/test/XSQLTest.java b/opendaylight/md-sal/sal-dom-xsql/src/test/java/org/opendaylight/xsql/test/XSQLTest.java
new file mode 100644 (file)
index 0000000..8a6b184
--- /dev/null
@@ -0,0 +1,170 @@
+package org.opendaylight.xsql.test;
+
+import java.io.InputStream;
+import java.sql.SQLException;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLAdapter;
+import org.opendaylight.controller.md.sal.dom.xsql.XSQLBluePrint;
+import org.opendaylight.controller.md.sal.dom.xsql.jdbc.JDBCResultSet;
+import org.opendaylight.controller.md.sal.dom.xsql.jdbc.JDBCServer;
+
+public class XSQLTest {
+
+    XSQLBluePrint bluePrint = null;
+
+    @Before
+    public void before() {
+        try{
+            InputStream in = this.getClass().getClassLoader().getResourceAsStream("BluePrintCache.dat");
+            if(in!=null){
+                bluePrint = XSQLBluePrint.load(in);
+                log("Loaded Blue Print!");
+            }else{
+                log("Can't find Blue Print!");
+            }
+            in.close();
+        }catch(Exception err){
+            err.printStackTrace();
+        }
+    }
+
+    @Test
+    public void testQueryParsingSimpleNoCriteria() {
+        String sql = "select * from nodes/node;";
+        JDBCResultSet rs = new JDBCResultSet(sql);
+        parseTables(sql,bluePrint, rs);
+        parseFields(sql, bluePrint, rs);
+        JDBCServer.parseCriteria(rs, bluePrint);
+        if(rs.getCriteria().isEmpty()){
+            log("Test Criteria parsing of \""+sql+"\" Passed!");
+            Assert.assertEquals(true, true);
+        }else{
+            log("Test Criteria parsing of \""+sql+"\" Failed!");
+            Assert.assertEquals(false, true);
+        }
+    }
+
+    @Test
+    public void testQueryParsingComplexNoCriteria() {
+        String sql = "select nodes/node.id,nodes/node/node-connector.id,nodes/node/node-connector.hardware-address from nodes/node,nodes/node/node-connector;";
+        JDBCResultSet rs = new JDBCResultSet(sql);
+        parseTables(sql,bluePrint, rs);
+        parseFields(sql, bluePrint, rs);
+        JDBCServer.parseCriteria(rs, bluePrint);
+        if(rs.getCriteria().isEmpty()){
+            log("Test Criteria parsing of \""+sql+"\" Passed!");
+            Assert.assertEquals(true, true);
+        }else{
+            log("Test Criteria parsing of \""+sql+"\" Failed!");
+            Assert.assertEquals(false, true);
+        }
+    }
+
+    @Test
+    public void testQueryParsingComplexWithCriteria() {
+        String sql = "select nodes/node.id,nodes/node/node-connector.id,nodes/node/node-connector.hardware-address from nodes/node,nodes/node/node-connector where hardware-address like 'AB';";
+        JDBCResultSet rs = new JDBCResultSet(sql);
+        parseTables(sql,bluePrint, rs);
+        parseFields(sql, bluePrint, rs);
+        JDBCServer.parseCriteria(rs, bluePrint);
+        if(!rs.getCriteria().isEmpty()){
+            log("Test Criteria parsing of \""+sql+"\" Passed!");
+            Assert.assertEquals(true, true);
+        }else{
+            log("Test Criteria parsing of \""+sql+"\" Failed!");
+            Assert.assertEquals(false, true);
+        }
+    }
+
+    @Test
+    public void testQueryParsingSimpleWithCriteria() {
+        String sql = "select * from nodes/node where nodes/node.id like 'something...';";
+        JDBCResultSet rs = new JDBCResultSet(sql);
+        parseTables(sql,bluePrint, rs);
+        parseFields(sql, bluePrint, rs);
+        JDBCServer.parseCriteria(rs, bluePrint);
+        if(!rs.getCriteria().isEmpty()){
+            log("Test Criteria parsing of \""+sql+"\" Passed!");
+            Assert.assertEquals(true, true);
+        }else{
+            log("Test Criteria parsing of \""+sql+"\" Failed!");
+            Assert.assertEquals(false, true);
+        }
+    }
+
+    private static void parseTables(String sql,XSQLBluePrint bp,JDBCResultSet rs){
+        try{
+            JDBCServer.parseTables(rs, bp);
+            log("Test Table parsing of \""+sql+"\" Passed!");
+            Assert.assertEquals(true,true);
+        }catch(SQLException err){
+            log("Test Table parsing of \""+sql+"\" Failed!");
+            err.printStackTrace();
+            Assert.assertEquals(false,true);
+        }
+    }
+
+    @Test
+    public void testQueryParsingComplexWithCriteriaAndGrouping() {
+
+        String sub_sql = "select nodes/node.id,nodes/node/node-connector.id,nodes/node/node-connector.hardware-address from nodes/node,nodes/node/node-connector where hardware-address like 'AB';";
+
+        String sql = "SELECT DISTINCT"
+                + "\"LOGICAL_TABLE_1\".\"nodes/node.id\" AS \"COL0\"\n"
+                + ",\"LOGICAL_TABLE_1\".\"nodes/node.address\" AS \"COL1\"\n"
+                + ",\"LOGICAL_TABLE_1\".\"nodes/node/node-connector.hardware-address\" AS \"COL2\"\n"
+                + "FROM\n"
+                + "("+sub_sql+") \"LOGICAL_TABLE_1\"\n";
+
+
+
+        JDBCResultSet rs = new JDBCResultSet(sql);
+        XSQLAdapter.getInstance().loadBluePrint();
+        try{
+            JDBCServer.checkAndBreakSubQueries(rs, XSQLAdapter.getInstance());
+            if(rs.getSubQueries().isEmpty()){
+                log("Logical table parsing for "+sql+" Failed!");
+            }else{
+                JDBCServer.parseExternalQuery(rs);
+                log("Fields="+rs.getFields().size());
+                Assert.assertEquals(rs.getFields().size(), 3);
+                Assert.assertEquals(rs.getTables().size(), 1);
+                Assert.assertEquals(rs.getTables().get(0).getODLTableName(), "LOGICAL_TABLE_1");
+
+                JDBCResultSet subRS = rs.getSubQueries().values().iterator().next();
+                parseTables(sql,bluePrint, subRS);
+                parseFields(sql, bluePrint, subRS);
+                JDBCServer.parseCriteria(subRS, bluePrint);
+                if(!subRS.getCriteria().isEmpty()){
+                    log("Test Criteria parsing of \""+sql+"\" Passed!");
+                    Assert.assertEquals(true, true);
+                }else{
+                    log("Test Criteria parsing of \""+sql+"\" Failed!");
+                    Assert.assertEquals(false, true);
+                }
+            }
+        }catch(SQLException err){
+            err.printStackTrace();
+        }
+    }
+
+    private static void parseFields(String sql,XSQLBluePrint bp,JDBCResultSet rs){
+        try{
+            JDBCServer.parseFields(rs, bp);
+            log("Test Fields parsing of \""+sql+"\" Passed!");
+            Assert.assertEquals(true,true);
+        }catch(SQLException err){
+            log("Test Fields parsing of \""+sql+"\" Failed!");
+            err.printStackTrace();
+            Assert.assertEquals(false,true);
+        }
+    }
+
+    private static void log(String str) {
+        System.out.print("*** XSQL Tests -");
+        System.out.println(str);
+    }
+}
diff --git a/opendaylight/md-sal/sal-dom-xsql/src/test/resources/BluePrintCache.dat b/opendaylight/md-sal/sal-dom-xsql/src/test/resources/BluePrintCache.dat
new file mode 100644 (file)
index 0000000..b6b34ac
Binary files /dev/null and b/opendaylight/md-sal/sal-dom-xsql/src/test/resources/BluePrintCache.dat differ
index 725b24cd9e733c342d26adf5b07076aa7348c49e..473b065b597707a04305d4430e01e4c5fa579def 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>sal-inmemory-datastore</artifactId>
index a1bf2c806e7ad587cf63bc732d1ece972a05229d..9ed3707d3d98a616472c8b2992ed1fb5b8feb2fd 100644 (file)
@@ -23,7 +23,7 @@
     <parent>\r
     <artifactId>sal-parent</artifactId>\r
     <groupId>org.opendaylight.controller</groupId>\r
-    <version>1.1-SNAPSHOT</version>\r
+    <version>1.2.0-SNAPSHOT</version>\r
   </parent>\r
 \r
     <groupId>org.opendaylight.controller</groupId>\r
@@ -63,7 +63,7 @@
         <dependency>\r
             <groupId>org.opendaylight.controller</groupId>\r
             <artifactId>sal-dom-xsql</artifactId>\r
-            <version>1.1-SNAPSHOT</version>\r
+            <version>1.2.0-SNAPSHOT</version>\r
         </dependency>\r
     </dependencies>\r
 \r
index 049f8c2e3c7a4e6869d83bff20a8f0dad97c30de..c8836d1b88e136fc4a757d8f4c95f32592d3b5a3 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>sal-netconf-connector</artifactId>
index 31f1f026931b0e7ef2082c36bafa3db7cb64e801..d47cf4ca07609a903bfeb0812fdf9a4283199c22 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-remote</artifactId>
   <packaging>bundle</packaging>
index 0fb468be868be7dfa3081530b5068bdef13882cc..d16f67209f1cb152e9d332525f682c1225b44d91 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-remoterpc-connector</artifactId>
   <packaging>bundle</packaging>
index fa91f0398d75cac155269ab83dd6f804e940acec..dc3dd8e476eb5b632da3d059e3ca5ca4b5ab60e4 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-rest-connector-config</artifactId>
   <description>Configuration files for sal-rest-connector</description>
index 6da9e8fff78ead485a507c353311a880fa459056..4a9684717574e8d55741abb62741cdfaf875b305 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-rest-connector</artifactId>
   <packaging>bundle</packaging>
index 5fbb60555814f11267bba0012a650adf4b040b0d..552e2bbd190d154280e1a8ce7a3bc22d89de908b 100644 (file)
@@ -29,7 +29,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 class JsonToCompositeNodeReader {
-    private static final Logger LOG = LoggerFactory.getLogger(JsonReader.class);
+    private static final Logger LOG = LoggerFactory.getLogger(JsonToCompositeNodeReader.class);
     private static final Splitter COLON_SPLITTER = Splitter.on(':');
 
     private JsonToCompositeNodeReader() {
@@ -113,14 +113,29 @@ class JsonToCompositeNodeReader {
         }
     }
 
+    /**
+     * Transform input value to URI instance.
+     *
+     * Input string has to be in format moduleName:localName. moduleName part is then transformed to URI instance.
+     * If moduleName part contains character like "<" or ">" then null value is returned because they
+     * aren't valid URI characters.
+     *
+     * @param jsonElementName
+     *  value in format moduleName:localName
+     * @return
+     */
     private static URI getNamespaceFor(final String jsonElementName) {
         final Iterator<String> it = COLON_SPLITTER.split(jsonElementName).iterator();
 
-        // The string needs to me in form "moduleName:localName"
+        // The string needs to be in form "moduleName:localName"
         if (it.hasNext()) {
             final String maybeURI = it.next();
             if (Iterators.size(it) == 1) {
-                return URI.create(maybeURI);
+                try {
+                    return URI.create(maybeURI);
+                } catch (IllegalArgumentException e) {
+                    LOG.debug("Value {} couldn't be interpreted as URI.", maybeURI);
+                }
             }
         }
 
@@ -144,7 +159,7 @@ class JsonToCompositeNodeReader {
             }
         }
 
-        // it could be identityref Built-In Type
+        // it could be identityref Built-In Type therefore it is necessary to look at value as module_name:local_name
         URI namespace = getNamespaceFor(value);
         if (namespace != null) {
             return new IdentityValuesDTO(namespace.toString(), getLocalNameFor(value), null, value);
index 3699e4924fe25ca2c8a4b1399fe005376de3a86d..d65cb1bdbfe48bc02d132faab0e2cf82756cb785 100644 (file)
@@ -422,4 +422,36 @@ public class JsonToCnSnTest {
         assertTrue(exceptionMessage.contains("Root element of Json has to be Object"));
     }
 
+    /**
+     * Tests case when JSON input data value is in format string1:string2 and first string contain characters "<" or ">" (invalid URI characters).
+     *
+     * During loading data it is also interpreting as data value in moduleName:localName (potential leafref value).
+     * ModuleName part is transformed to URI which causes exception which is caught and URI value is null which cause that potential value in simple node is
+     * simple string (value from JSON input) and not IdentityValueDTO instance which is used for leaf-ref candidates.
+     */
+    @Test
+    public void invalidUriCharacterInValue() {
+        final Node<?> rootNode = TestUtils.readInputToCnSn("/json-to-cnsn/invalid-uri-character-in-value.json", true,
+                    JsonToCompositeNodeProvider.INSTANCE);
+
+        assertTrue(rootNode instanceof CompositeNode);
+        Node<?> lf1 = null;
+        Node<?> lf2 = null;
+        for(Node<?> child : ((CompositeNode)rootNode).getChildren()) {
+            if (child.getNodeType().getLocalName().equals("lf1")) {
+                lf1 = child;
+            } else if (child.getNodeType().getLocalName().equals("lf2")) {
+                lf2 = child;
+            }
+        }
+
+        assertNotNull(lf1);
+        assertNotNull(lf2);
+        assertTrue(lf1 instanceof SimpleNode<?>);
+        assertTrue(lf2 instanceof SimpleNode<?>);
+
+        assertEquals("module<Name:value lf1", ((SimpleNode<?>) lf1).getValue());
+        assertEquals("module>Name:value lf2", ((SimpleNode<?>) lf2).getValue());
+    }
+
 }
diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-cnsn/invalid-uri-character-in-value.json b/opendaylight/md-sal/sal-rest-connector/src/test/resources/json-to-cnsn/invalid-uri-character-in-value.json
new file mode 100644 (file)
index 0000000..6a78e9f
--- /dev/null
@@ -0,0 +1,6 @@
+{
+    "moduleName:cont":{
+       "lf1":"module<Name:value lf1",
+       "lf2":"module>Name:value lf2"
+       }
+}
\ No newline at end of file
index d5a68c3a28db10fbdf69b510be73464765f32f32..5abb4f891043076d673cc416f867c57470b69f87 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>sal-rest-docgen</artifactId>
index f4274870c9305d84f1ee53798bb934f8721748a4..3b503ebba35c016382d390ad695c4bda7c553ef2 100644 (file)
@@ -146,8 +146,10 @@ public class ModelGenerator {
 
         for (DataSchemaNode childNode : module.getChildNodes()) {
             // For every container and list in the module
-            processDataNodeContainer((DataNodeContainer) childNode, moduleName, models, true, schemaContext);
-            processDataNodeContainer((DataNodeContainer) childNode, moduleName, models, false, schemaContext);
+            if (childNode instanceof ContainerSchemaNode || childNode instanceof ListSchemaNode) {
+                processDataNodeContainer((DataNodeContainer) childNode, moduleName, models, true, schemaContext);
+                processDataNodeContainer((DataNodeContainer) childNode, moduleName, models, false, schemaContext);
+            }
         }
 
     }
@@ -306,6 +308,9 @@ public class ModelGenerator {
                 property.put(TYPE_KEY, childNode instanceof ListSchemaNode ? ARRAY_TYPE : OBJECT_TYPE);
                 property.put(ITEMS_KEY, items);
                 properties.put(childNode.getQName().getLocalName(), property);
+            } else if (childNode instanceof LeafSchemaNode){
+                JSONObject property = processLeafNode((LeafSchemaNode)childNode);
+                properties.put(childNode.getQName().getLocalName(), property);
             }
         }
         return properties;
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGeneratorTest.java b/opendaylight/md-sal/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ModelGeneratorTest.java
new file mode 100644 (file)
index 0000000..5918a0e
--- /dev/null
@@ -0,0 +1,45 @@
+package org.opendaylight.controller.sal.rest.doc.impl;
+
+import com.google.common.base.Preconditions;
+import org.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Map;
+
+
+public class ModelGeneratorTest {
+
+    private DocGenTestHelper helper;
+    private SchemaContext schemaContext;
+
+    @Before
+    public void setUp() throws Exception {
+        helper = new DocGenTestHelper();
+        helper.setUp();
+        schemaContext = new YangParserImpl().resolveSchemaContext(new HashSet<Module>(helper.getModules().values()));
+    }
+
+    @Test
+    public void testConvertToJsonSchema() throws Exception {
+
+        Preconditions.checkArgument(helper.getModules() != null, "No modules found");
+
+        ModelGenerator generator = new ModelGenerator();
+
+        for (Map.Entry<File, Module> m : helper.getModules().entrySet()) {
+            if (m.getKey().getAbsolutePath().endsWith("opflex.yang")) {
+
+                JSONObject jsonObject = generator.convertToJsonSchema(m.getValue(), schemaContext);
+                Assert.assertNotNull(jsonObject);
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/opflex.yang b/opendaylight/md-sal/sal-rest-docgen/src/test/resources/yang/opflex.yang
new file mode 100644 (file)
index 0000000..8e598dd
--- /dev/null
@@ -0,0 +1,50 @@
+module opflex {
+    yang-version 1;
+
+    namespace "urn:opendaylight:groupbasedpolicy:opflex";
+    prefix "opflex";
+
+
+
+
+
+    description
+        "This module defines the group-based policy OpFlex renderer model.";
+
+    revision "2014-05-28" {
+        description
+            "Initial revision.";
+    }
+
+    typedef serialization {
+        description
+            "The serialization to use for OpFlex messages.";
+
+        type enumeration {
+            enum json {
+                description
+                "JSON 1.0 serialization.";
+            }
+            enum xml {
+                description
+                "XML serialization.";
+            }
+            enum binary {
+                description
+                "OpFlex binary serialization.";
+            }
+        }
+    }
+
+    // ******************
+    // Configuration Data
+    // ******************
+    leaf domain {
+        description
+            "The OpFlex administrative domain.";
+
+        config true;
+
+        type string;
+    }
+}
\ No newline at end of file
index 20bbd78622eb839d9679e3909769ed188ebd3c22..ffddc8c3daa0f36f8ea51a2e4e39000b44438fe6 100644 (file)
@@ -20,11 +20,19 @@ module toaster {
         "Toaster module in progress.";
     }
 
+    leaf domain {
+        description
+            "Toaster domain.";
+
+        config true;
+
+        type string;
+    }
 
     identity toast-type {
       description
           "Base for all bread types supported by the toaster.
-           New bread types not listed here nay be added in the 
+           New bread types not listed here nay be added in the
            future.";
     }
 
@@ -72,7 +80,7 @@ module toaster {
         "Indicates the toaster service is available";
       description
         "Top-level container for all toaster database objects.";
-        
+
       leaf testToasterBits {
          type bits {
              bit testbit1 {
@@ -84,21 +92,21 @@ module toaster {
          }
          default "testbit2";
      }
-     
+
      leaf testUnion {
         type union {
          type int32;
          type string;
         }
-        
-     } 
-     
+
+     }
+
      leaf-list allow-user  {
           type string;
           description "A list of user name patterns to allow";
-        
+
         }
-        
+
         choice how {
              default interval;
              case interval {
@@ -123,14 +131,14 @@ module toaster {
                      type string;
                  }
              }
-         } 
-        
+         }
+
       leaf toasterManufacturer {
         type DisplayString;
         config false;
         mandatory true;
         description
-          "The name of the toaster's manufacturer. For instance, 
+          "The name of the toaster's manufacturer. For instance,
                 Microsoft Toaster.";
       }
 
@@ -161,7 +169,7 @@ module toaster {
         config false;
         mandatory true;
         description
-          "This variable indicates the current state of 
+          "This variable indicates the current state of
                the toaster.";
       }
     }
@@ -169,11 +177,11 @@ module toaster {
     rpc make-toast {
       description
         "Make some toast.
-           The toastDone notification will be sent when 
+           The toastDone notification will be sent when
            the toast is finished.
            An 'in-use' error will be returned if toast
            is already being made.
-           A 'resource-denied' error will be returned 
+           A 'resource-denied' error will be returned
            if the toaster service is disabled.";
       input {
         leaf toasterDoneness {
@@ -182,10 +190,10 @@ module toaster {
           }
           default '5';
           description
-            "This variable controls how well-done is the 
+            "This variable controls how well-done is the
                    ensuing toast. It should be on a scale of 1 to 10.
-                   Toast made at 10 generally is considered unfit 
-                   for human consumption; toast made at 1 is warmed 
+                   Toast made at 10 generally is considered unfit
+                   for human consumption; toast made at 1 is warmed
                    lightly.";
         }
 
@@ -195,23 +203,23 @@ module toaster {
           }
           default 'wheat-bread';
           description
-            "This variable informs the toaster of the type of 
-                   material that is being toasted. The toaster 
-                   uses this information, combined with 
-                   toasterDoneness, to compute for how 
-                   long the material must be toasted to achieve 
+            "This variable informs the toaster of the type of
+                   material that is being toasted. The toaster
+                   uses this information, combined with
+                   toasterDoneness, to compute for how
+                   long the material must be toasted to achieve
                    the required doneness.";
         }
       }
-    }  
+    }
 
     rpc cancel-toast {
       description
         "Stop making toast, if any is being made.
-           A 'resource-denied' error will be returned 
+           A 'resource-denied' error will be returned
            if the toaster service is disabled.";
-    }  
-    
+    }
+
     notification toastDone {
       description
         "Indicates that the toast in progress has completed.";
@@ -236,5 +244,5 @@ module toaster {
         description
           "Indicates the final toast status";
       }
-    }  
-  }  
+    }
+  }
index 9e64c3aed68acc6903b5434f2d21d85e7f61f174..db2b06e71454b3e3ee4cccd000a021c5b137f845 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sal-restconf-broker</artifactId>
   <packaging>bundle</packaging>
index 11a0ef211ae2cb20eac661ff789acf9c2e1412eb..2a8a80da09131fed382d4daa06e6533d0085c17d 100644 (file)
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>sal-parent</artifactId>
         <groupId>org.opendaylight.controller</groupId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
index 8d4bbbd64ce70591254350431643a8397e4097a2..33a8a92f9f7839a859803a646ad092f273c6074a 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <artifactId>clustering-it</artifactId>
         <groupId>org.opendaylight.controller.samples</groupId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
     <artifactId>clustering-it-config</artifactId>
   <packaging>jar</packaging>
index a23e32df2b91e0971e154c2c3f599886423bd7db..60eeba64c7d5bf664c68e60a2b32ccd20497c0fe 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <artifactId>clustering-it</artifactId>
         <groupId>org.opendaylight.controller.samples</groupId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
     <artifactId>clustering-it-model</artifactId>
     <packaging>bundle</packaging>
index 863bbecdf91922808d646ea9e03c38b753ded320..58246213316c8fb801df0fa25c95f2f6bdfc1e41 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <groupId>org.opendaylight.controller.samples</groupId>
         <artifactId>sal-samples</artifactId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
     <artifactId>clustering-it</artifactId>
     <packaging>pom</packaging>
index 093b681125d9543697612b9c43e928ca12c0388c..d4d55b04c0bde2ddcc4c883e55af5248d7145c91 100644 (file)
@@ -4,7 +4,7 @@
     <parent>
         <artifactId>clustering-it</artifactId>
         <groupId>org.opendaylight.controller.samples</groupId>
-        <version>1.1-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
     </parent>
     <artifactId>clustering-it-provider</artifactId>
     <packaging>bundle</packaging>
index 8824284785bccea43ca82615b45ba09b66bcc4b7..a0e119b49c4cce891892feb7fd95d8cadf80d18f 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>org.opendaylight.controller.samples.l2switch.md</groupId>
index 0ccc74d95276361d3fd0d395c592627ca63af805..fa35c1f6cd11ef409f72e9bd29f88fb9beba7716 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../..</relativePath>
   </parent>
   <groupId>org.opendaylight.controller.samples.l2switch.md</groupId>
index e0a51a8e3c0a7d46cfbda3447d42aa0cba64bc6d..6a715c74ab0a26e179118399c1a5ae62e2fa7360 100644 (file)
@@ -7,12 +7,12 @@
   <parent>
      <groupId>org.opendaylight.controller.samples</groupId>
      <artifactId>sal-samples</artifactId>
-     <version>1.1-SNAPSHOT</version>
+     <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>l2switch.aggregator</artifactId>
   <groupId>org.opendaylight.controller.samples.l2switch</groupId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <modules>
index d13200e4e8c9a12bce5a3a989472c13147b4a75f..6070c72472226dadeabdfd6cc0957c0aeac3df2e 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.opendaylight.controller.samples</groupId>
index b30c4ba12f1f11bb45b9a1828f5a320ad077cbe2..b0592b654de3159cb5d591426d88bfaaffea363e 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>toaster-config</artifactId>
   <description>Configuration files for toaster</description>
index 6e720299d8364e21d058e9603f86e33544697b1d..fb6828a2507e108ad073f387dc15d1922f98fa81 100644 (file)
@@ -4,13 +4,13 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sample-toaster-consumer</artifactId>
   <packaging>bundle</packaging>
 
   <properties>
-    <sal-binding-api.version>1.1-SNAPSHOT</sal-binding-api.version>
+    <sal-binding-api.version>1.2.0-SNAPSHOT</sal-binding-api.version>
   </properties>
 
   <dependencies>
index 56ed9a07a6481e046e9a39ea9b7bb799cd09faa7..804da597acf77b64ec6a6e0a549578b0bde103c1 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sample-toaster-it</artifactId>
 
index 89dcab2c3da1dfc45857ffe89a76c9e74c56a450..08f0988b5c92cd6db60bd963ae91f743f0e0cceb 100644 (file)
@@ -4,13 +4,13 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sample-toaster-provider</artifactId>
   <packaging>bundle</packaging>
 
   <properties>
-    <sal-binding-api.version>1.1-SNAPSHOT</sal-binding-api.version>
+    <sal-binding-api.version>1.2.0-SNAPSHOT</sal-binding-api.version>
   </properties>
 
   <dependencies>
index 5c8b20a4e36bacdad1c0a5a041d94ee67e87f406..ab761fd6bf383385c4c7401c3459839226cce559 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller.samples</groupId>
     <artifactId>sal-samples</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <artifactId>sample-toaster</artifactId>
   <packaging>bundle</packaging>
index 5b8c6268e293641f9e6b33dc3c3b8d19b988e308..1a443177c68a4ef8fa44ee2db7a461ff184ff8c1 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller.md</groupId>
   <artifactId>statistics-manager</artifactId>
index 97ed15df191d8159300e5754aa111d2c0ee8ea51..e6a9a75337a50635cf4a132cfd5f2fa93bb2e734 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <groupId>org.opendaylight.controller.md</groupId>
index 57313d2948960b038791d75a5fdb9287cce41530..bfef646da1dc69194725762a585962f67640d1b5 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>sal-parent</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
   </parent>
   <groupId>org.opendaylight.controller.md</groupId>
   <artifactId>topology-manager</artifactId>
index 8a29139854c3f801cc372c7c7ac94a1995c20ce4..edba4e11da8661a69660b89051286b4faaa4854e 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>config-netconf-connector</artifactId>
   <packaging>bundle</packaging>
index 2e2b622bd2fa40a6212ff6c5ebe9ffeb58763a81..2b297fbadd348bdafa6bf2f874c583a6410b5bcc 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>config-persister-impl</artifactId>
index 330bcc879694175695a02376d8fdcf73db79b06f..33e4ef005061eac421c54504e11a92017525f1c1 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>ietf-netconf-monitoring-extension</artifactId>
   <packaging>bundle</packaging>
index 8d4b99bf03148308847dd99796346fcad8458518..5a6c66b95cf36b9bd23c35a3bbe7c076ff8e08b2 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>ietf-netconf-monitoring</artifactId>
   <packaging>bundle</packaging>
index a15047224bfbd91d46bb91f731ef3eea34d61c47..c5fd8f1894fb78bd207486b6c1f3ced16b343318 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-api</artifactId>
   <packaging>bundle</packaging>
index e19359adb8c09e91882430b2258de458c99a50f9..6f1fafff40f8f82fe58e8baa4070c44abfc1341b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>netconf-subsystem</artifactId>
-        <version>0.2.5-SNAPSHOT</version>
+        <version>0.3.0-SNAPSHOT</version>
         <relativePath>../</relativePath>
     </parent>
     <artifactId>netconf-auth</artifactId>
index 55a87150008ab51f0a96cc163ed218e629e31201..c292d93206559fcf268866e75df86a9db3b7c2ba 100644 (file)
@@ -10,7 +10,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-cli</artifactId>
   <packaging>jar</packaging>
index 6bb67d0681fc7aa559ba888d057a260cc82b24d6..7fbb54165c27ef30b4dfb53e62a5f49e98162ff6 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-client</artifactId>
   <packaging>bundle</packaging>
index db5d14d75af8b03861997a74259cf8c7093cb16f..77551f708018996708fb459d38dcab68b269fafb 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-config</artifactId>
   <description>Configuration files for netconf</description>
index d9cc5eab43f65b6a311d85e10c0b4649eaf5b366..f4e6e99ea0c8ae426e2ae99a721b012841f319f6 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-connector-config</artifactId>
   <description>Configuration files for netconf-connector</description>
index c6544466d4ea2ae49904ce1787adb4823070d166..a987ceefc821681c5ded1111245433b1c45db093 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-impl</artifactId>
   <packaging>bundle</packaging>
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
new file mode 100644 (file)
index 0000000..1b078be
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * 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.impl;
+
+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;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.opendaylight.controller.netconf.api.monitoring.NetconfManagementSession;
+import org.opendaylight.controller.netconf.impl.NetconfServerSession;
+import org.opendaylight.controller.netconf.impl.NetconfServerSessionListener;
+import org.opendaylight.controller.netconf.impl.osgi.NetconfMonitoringServiceImpl;
+import org.opendaylight.controller.netconf.mapping.api.Capability;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationProvider;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationService;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceSnapshot;
+import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.*;
+
+public class NetconfMonitoringServiceImplTest {
+
+    private NetconfMonitoringServiceImpl service;
+
+    @Mock
+    private NetconfOperationProvider operationProvider;
+    @Mock
+    private NetconfManagementSession managementSession;
+    @Mock
+    private NetconfOperationServiceSnapshot snapshot;
+    @Mock
+    private NetconfOperationService operationService;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        service = new NetconfMonitoringServiceImpl(operationProvider);
+    }
+
+    @Test
+    public void testSessions() throws Exception {
+        doReturn("sessToStr").when(managementSession).toString();
+        service.onSessionUp(managementSession);
+        List list = Lists.newArrayList(managementSession);
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void testGetSchemas() throws Exception {
+        doThrow(RuntimeException.class).when(operationProvider).openSnapshot(anyString());
+        service.getSchemas();
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void testGetSchemas2() throws Exception {
+        doThrow(Exception.class).when(operationProvider).openSnapshot(anyString());
+        service.getSchemas();
+    }
+
+    @Test
+    public void testGetSchemas3() throws Exception {
+        doReturn("").when(managementSession).toString();
+        Capability cap = mock(Capability.class);
+        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);
+        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");
+        doReturn(optRev).when(cap).getRevision();
+        doReturn(Optional.of("modName")).when(cap).getModuleName();
+        doReturn(Optional.of(Lists.newArrayList("loc"))).when(cap).getLocation();
+        doNothing().when(snapshot).close();
+
+        assertNotNull(service.getSchemas());
+        verify(snapshot, times(1)).close();
+
+        NetconfServerSessionListener sessionListener = mock(NetconfServerSessionListener.class);
+        Channel channel = mock(Channel.class);
+        NetconfHelloMessageAdditionalHeader header = new NetconfHelloMessageAdditionalHeader("name", "addr", "2", "tcp", "id");
+        NetconfServerSession sm = new NetconfServerSession(sessionListener, channel, 10, header);
+        doNothing().when(sessionListener).onSessionUp(any(NetconfServerSession.class));
+        sm.sessionUp();
+        service.onSessionUp(sm);
+        assertEquals(1, service.getSessions().getSession().size());
+
+        assertEquals(Long.valueOf(10), service.getSessions().getSession().get(0).getSessionId());
+
+        service.onSessionDown(sm);
+        assertEquals(0, service.getSessions().getSession().size());
+    }
+}
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
new file mode 100644 (file)
index 0000000..ae3d656
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * 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.impl.mapping.operations;
+
+import org.junit.Test;
+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;
+
+public class DefaultCloseSessionTest {
+    @Test
+    public void testDefaultCloseSession() throws Exception {
+        AutoCloseable res = mock(AutoCloseable.class);
+        doNothing().when(res).close();
+        DefaultCloseSession session = new DefaultCloseSession("", res);
+        Document doc = XmlUtil.newDocument();
+        XmlElement elem = XmlElement.fromDomElement(XmlUtil.readXmlToElement("<elem/>"));
+        session.handleWithNoSubsequentOperations(doc, elem);
+    }
+
+    @Test(expected = NetconfDocumentedException.class)
+    public void testDefaultCloseSession2() throws Exception {
+        AutoCloseable res = mock(AutoCloseable.class);
+        doThrow(NetconfDocumentedException.class).when(res).close();
+        DefaultCloseSession session = new DefaultCloseSession("", res);
+        Document doc = XmlUtil.newDocument();
+        XmlElement elem = XmlElement.fromDomElement(XmlUtil.readXmlToElement("<elem/>"));
+        session.handleWithNoSubsequentOperations(doc, elem);
+    }
+}
diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCommitTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCommitTest.java
new file mode 100644 (file)
index 0000000..98050de
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * 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.impl.mapping.operations;
+
+import com.google.common.collect.Sets;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
+import org.opendaylight.controller.netconf.impl.DefaultCommitNotificationProducer;
+import org.opendaylight.controller.netconf.impl.NetconfServerSession;
+import org.opendaylight.controller.netconf.impl.mapping.CapabilityProvider;
+import org.opendaylight.controller.netconf.impl.osgi.NetconfOperationRouter;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationChainedExecution;
+import org.opendaylight.controller.netconf.util.test.XmlFileLoader;
+import org.opendaylight.controller.netconf.util.xml.XmlUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import static org.mockito.Mockito.*;
+
+public class DefaultCommitTest {
+
+    private NetconfOperationChainedExecution operation;
+    private Document requestMessage;
+    private NetconfOperationRouter router;
+    private DefaultCommitNotificationProducer notifier;
+    private CapabilityProvider cap;
+    private DefaultCommit commit;
+
+    @Before
+    public void setUp() throws Exception {
+        operation = mock(NetconfOperationChainedExecution.class);
+        doReturn(XmlUtil.newDocument()).when(operation).execute(any(Document.class));
+        router = mock(NetconfOperationRouter.class);
+        doReturn(false).when(operation).isExecutionTermination();
+        notifier = mock(DefaultCommitNotificationProducer.class);
+        doNothing().when(notifier).sendCommitNotification(anyString(), any(Element.class), anySetOf(String.class));
+        cap = mock(CapabilityProvider.class);
+        doReturn(Sets.newHashSet()).when(cap).getCapabilities();
+        Document rpcData = XmlFileLoader.xmlFileToDocument("netconfMessages/editConfig_expectedResult.xml");
+        doReturn(rpcData).when(router).onNetconfMessage(any(Document.class), any(NetconfServerSession.class));
+        commit = new DefaultCommit(notifier, cap, "", router);
+    }
+
+    @Test
+    public void testHandleWithNotification() throws Exception {
+        requestMessage = XmlFileLoader.xmlFileToDocument("netconfMessages/commit.xml");
+        commit.handle(requestMessage, operation);
+        verify(operation, times(1)).execute(requestMessage);
+        verify(notifier, times(1)).sendCommitNotification(anyString(), any(Element.class), anySetOf(String.class));
+    }
+
+    @Test
+    public void testHandleWithoutNotification() throws Exception {
+        requestMessage = XmlFileLoader.xmlFileToDocument("netconfMessages/commit.xml");
+        Element elem = requestMessage.getDocumentElement();
+        elem.setAttribute("notify", "false");
+        commit.handle(requestMessage, operation);
+        verify(operation, times(1)).execute(requestMessage);
+        verify(notifier, never()).sendCommitNotification(anyString(), any(Element.class), anySetOf(String.class));
+    }
+
+    @Test(expected = NetconfDocumentedException.class)
+    public void testHandle() throws Exception {
+        Document rpcData = XmlFileLoader.xmlFileToDocument("netconfMessages/get.xml");
+        doReturn(rpcData).when(router).onNetconfMessage(any(Document.class), any(NetconfServerSession.class));
+        requestMessage = XmlFileLoader.xmlFileToDocument("netconfMessages/commit.xml");
+        commit.handle(requestMessage, operation);
+    }
+}
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
new file mode 100644 (file)
index 0000000..b655e90
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * 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.impl.mapping.operations;
+
+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;
+import org.opendaylight.controller.netconf.impl.mapping.CapabilityProvider;
+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;
+    private Document doc;
+    private String getSchema;
+
+    @Before
+    public void setUp() throws Exception {
+        cap = mock(CapabilityProvider.class);
+        doc = XmlUtil.newDocument();
+        getSchema = "<get-schema xmlns=\"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\">\n" +
+                "        <identifier>threadpool-api</identifier>\n" +
+                "        <version>2010-09-24</version>\n" +
+                "        <format\n" +
+                "                xmlns:ncm=\"urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring\">ncm:yang\n" +
+                "        </format>\n" +
+                "    </get-schema>";
+    }
+
+    @Test(expected = NetconfDocumentedException.class)
+    public void testDefaultGetSchema() throws Exception {
+        DefaultGetSchema schema = new DefaultGetSchema(cap, "");
+        doThrow(IllegalStateException.class).when(cap).getSchemaForCapability(anyString(), any(Optional.class));
+        schema.handleWithNoSubsequentOperations(doc, XmlElement.fromDomElement(XmlUtil.readXmlToElement(getSchema)));
+    }
+
+    @Test
+    public void handleWithNoSubsequentOperations() throws Exception {
+        DefaultGetSchema schema = new DefaultGetSchema(cap, "");
+        doReturn("").when(cap).getSchemaForCapability(anyString(), any(Optional.class));
+        assertNotNull(schema.handleWithNoSubsequentOperations(doc, XmlElement.fromDomElement(XmlUtil.readXmlToElement(getSchema))));
+    }
+}
diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExiTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultStopExiTest.java
new file mode 100644 (file)
index 0000000..b335165
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * 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.impl.mapping.operations;
+
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelPipeline;
+import org.junit.Test;
+import org.opendaylight.controller.netconf.impl.NetconfServerSession;
+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.Mockito.*;
+
+public class DefaultStopExiTest {
+    @Test
+    public void testHandleWithNoSubsequentOperations() throws Exception {
+        DefaultStopExi exi = new DefaultStopExi("");
+        Document doc = XmlUtil.newDocument();
+        Channel channel = mock(Channel.class);
+        ChannelPipeline pipeline = mock(ChannelPipeline.class);
+        doReturn(pipeline).when(channel).pipeline();
+        ChannelHandler channelHandler = mock(ChannelHandler.class);
+        doReturn(channelHandler).when(pipeline).replace(anyString(), anyString(), any(ChannelHandler.class));
+
+        NetconfServerSession serverSession = new NetconfServerSession(null, channel, 2L, null);
+        exi.setNetconfSession(serverSession);
+
+        assertNotNull(exi.handleWithNoSubsequentOperations(doc, XmlElement.fromDomElement(XmlUtil.readXmlToElement("<elem/>"))));
+        verify(pipeline, times(1)).replace(anyString(), anyString(), any(ChannelHandler.class));
+    }
+}
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
new file mode 100644 (file)
index 0000000..b59ea88
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * 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.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 static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
+public class NetconfImplActivatorTest {
+
+    @Mock
+    private BundleContext bundle;
+    @Mock
+    private Filter filter;
+    @Mock
+    private ServiceReference reference;
+    @Mock
+    private ServiceRegistration registration;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        doReturn(filter).when(bundle).createFilter(anyString());
+        doNothing().when(bundle).addServiceListener(any(ServiceListener.class), anyString());
+
+        ServiceReference[] refs = new ServiceReference[0];
+        doReturn(refs).when(bundle).getServiceReferences(anyString(), anyString());
+        doReturn(Arrays.asList(refs)).when(bundle).getServiceReferences(any(Class.class), anyString());
+        doReturn("").when(bundle).getProperty(anyString());
+        doReturn(registration).when(bundle).registerService(any(Class.class), any(NetconfOperationServiceFactoryListenerImpl.class), any(Dictionary.class));
+        doNothing().when(registration).unregister();
+        doNothing().when(bundle).removeServiceListener(any(ServiceListener.class));
+    }
+
+    @Test
+    public void testStart() throws Exception {
+        NetconfImplActivator activator = new NetconfImplActivator();
+        activator.start(bundle);
+        verify(bundle, times(2)).registerService(any(Class.class), any(NetconfOperationServiceFactoryListenerImpl.class), any(Dictionary.class));
+        activator.stop(bundle);
+    }
+}
diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfOperationServiceFactoryTrackerTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/osgi/NetconfOperationServiceFactoryTrackerTest.java
new file mode 100644 (file)
index 0000000..374e8ae
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * 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.impl.osgi;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.opendaylight.controller.netconf.mapping.api.NetconfOperationServiceFactory;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Filter;
+import org.osgi.framework.ServiceReference;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.*;
+
+public class NetconfOperationServiceFactoryTrackerTest {
+
+    @Mock
+    private Filter filter;
+    @Mock
+    private BundleContext context;
+    @Mock
+    private NetconfOperationServiceFactoryListener listener;
+    @Mock
+    private NetconfOperationServiceFactory factory;
+    @Mock
+    private ServiceReference reference;
+
+    private NetconfOperationServiceFactoryTracker tracker;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        doNothing().when(listener).onRemoveNetconfOperationServiceFactory(any(NetconfOperationServiceFactory.class));
+        doReturn(filter).when(context).createFilter(anyString());
+        doReturn("").when(reference).toString();
+        doReturn(factory).when(context).getService(any(ServiceReference.class));
+        doReturn("").when(factory).toString();
+        doNothing().when(listener).onAddNetconfOperationServiceFactory(any(NetconfOperationServiceFactory.class));
+        tracker = new NetconfOperationServiceFactoryTracker(context, listener);
+    }
+
+    @Test
+    public void testNetconfOperationServiceFactoryTracker() throws Exception {
+        tracker.removedService(null, factory);
+        verify(listener, times(1)).onRemoveNetconfOperationServiceFactory(any(NetconfOperationServiceFactory.class));
+    }
+
+    @Test
+    public void testAddingService() throws Exception {
+        assertNotNull(tracker.addingService(reference));
+        verify(listener, times(1)).onAddNetconfOperationServiceFactory(any(NetconfOperationServiceFactory.class));
+    }
+}
diff --git a/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/util/DeserializerExceptionHandlerTest.java b/opendaylight/netconf/netconf-impl/src/test/java/org/opendaylight/controller/netconf/impl/util/DeserializerExceptionHandlerTest.java
new file mode 100644 (file)
index 0000000..6512b4b
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * 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.impl.util;
+
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.util.concurrent.GenericFutureListener;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.mockito.Mockito.*;
+
+public class DeserializerExceptionHandlerTest {
+
+    private DeserializerExceptionHandler handler;
+    private ChannelFuture channelFuture;
+    private ChannelHandlerContext context;
+    private Channel channel;
+
+    @Before
+    public void setUp() throws Exception {
+        handler = new DeserializerExceptionHandler();
+        context = mock(ChannelHandlerContext.class);
+        channel = mock(Channel.class);
+        doReturn(channel).when(context).channel();
+        channelFuture = mock(ChannelFuture.class);
+        doReturn(channelFuture).when(channelFuture).addListener(any(GenericFutureListener.class));
+        doReturn(channelFuture).when(channel).writeAndFlush(anyObject());
+    }
+
+    @Test
+    public void testExceptionCaught() throws Exception {
+        handler.exceptionCaught(context, new Exception());
+        verify(context, times(1)).channel();
+    }
+}
index 3a70a399bb8f82f563eb5e9f7eaa252c9f28eeb0..b2c5c4c8f7a6fa4a6818ba5a740cae1b29ebb7c2 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>netconf-it</artifactId>
index 1a510f939c24dcae4e07b1928a08ba06d4012a9f..7d51f6db9940144e2b87720e17c0736eccd17014 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-mapping-api</artifactId>
 
index 03193b84923d98e69e7f6262d5e2e135eb45ab92..22c61954c3d02b93f790347ab343f4379d843cf6 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-monitoring</artifactId>
   <packaging>bundle</packaging>
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
new file mode 100644 (file)
index 0000000..4049356
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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.monitoring.osgi;
+
+import java.util.Arrays;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.osgi.framework.BundleContext;
+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
+    BundleContext context;
+    @Mock
+    Filter filter;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        doReturn(filter).when(context).createFilter(anyString());
+        doNothing().when(context).addServiceListener(any(ServiceListener.class), anyString());
+        ServiceReference[] refs = new ServiceReference[2];
+        doReturn(Arrays.asList(refs)).when(context).getServiceReferences(any(Class.class), anyString());
+        doReturn(refs).when(context).getServiceReferences(anyString(), anyString());
+    }
+
+    @Test
+    public void testNetconfMonitoringActivator() throws Exception {
+        NetconfMonitoringActivator activator = new NetconfMonitoringActivator();
+        activator.start(context);
+        verify(context, times(1)).addServiceListener(any(ServiceListener.class), anyString());
+
+        activator.stop(context);
+        verify(context, times(1)).removeServiceListener(any(ServiceListener.class));
+    }
+}
diff --git a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringOperationServiceTest.java b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/osgi/NetconfMonitoringOperationServiceTest.java
new file mode 100644 (file)
index 0000000..b8e35e9
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * 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.monitoring.osgi;
+
+import com.google.common.base.Optional;
+import org.junit.Test;
+import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringService;
+import org.opendaylight.controller.netconf.monitoring.MonitoringConstants;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
+public class NetconfMonitoringOperationServiceTest {
+    @Test
+    public void testGetters() throws Exception {
+        NetconfMonitoringService monitor = mock(NetconfMonitoringService.class);
+        NetconfMonitoringOperationService service = new NetconfMonitoringOperationService(monitor);
+
+        assertEquals(1, service.getNetconfOperations().size());
+
+        assertEquals(Optional.absent(), service.getCapabilities().iterator().next().getCapabilitySchema());
+        assertEquals(Optional.absent(), service.getCapabilities().iterator().next().getLocation());
+        assertEquals(Optional.of(MonitoringConstants.MODULE_REVISION), service.getCapabilities().iterator().next().getRevision());
+        assertEquals(Optional.of(MonitoringConstants.MODULE_NAME), service.getCapabilities().iterator().next().getModuleName());
+        assertEquals(Optional.of(MonitoringConstants.NAMESPACE), service.getCapabilities().iterator().next().getModuleNamespace());
+        assertEquals(MonitoringConstants.URI, service.getCapabilities().iterator().next().getCapabilityUri());
+    }
+}
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
new file mode 100644 (file)
index 0000000..2a53a6c
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * 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.monitoring.osgi;
+
+import java.util.Hashtable;
+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.NetconfOperationServiceFactory;
+import org.osgi.framework.BundleContext;
+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;
+    @Mock
+    private BundleContext context;
+    @Mock
+    private ServiceRegistration serviceRegistration;
+    @Mock
+    private Filter filter;
+    @Mock
+    private NetconfMonitoringService monitoringService;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        doReturn(serviceRegistration).when(context).registerService(any(Class.class), any(NetconfOperationServiceFactory.class), any(Hashtable.class));
+        doNothing().when(serviceRegistration).unregister();
+        doReturn(filter).when(context).createFilter(anyString());
+        doReturn("").when(reference).toString();
+        doReturn(monitoringService).when(context).getService(any(ServiceReference.class));
+    }
+
+    @Test
+    public void testAddingService() throws Exception {
+        NetconfMonitoringServiceTracker tracker = new NetconfMonitoringServiceTracker(context);
+        tracker.addingService(reference);
+        verify(context, times(1)).registerService(any(Class.class), any(NetconfOperationServiceFactory.class), any(Hashtable.class));
+        tracker.removedService(reference, null);
+        verify(serviceRegistration, times(1)).unregister();
+    }
+}
index cb8461a29965816320f1de6087e7a13629c4be9e..e2afcc42f54f317d19490a7f9edfe864e9907acf 100644 (file)
@@ -12,7 +12,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-netty-util</artifactId>
   <packaging>bundle</packaging>
index 6dd23776ce0c0b2f642ffb71d833b577bae10fa8..221626b7410a4fa166dbcb63616d93dff2994abd 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>netconf-ssh</artifactId>
index 3c4ee4728d9f311664f2c04e1b7c1d4f2c278580..8ec33286a7e76c51fd47d7a9907669cb6511fe17 100644 (file)
@@ -11,7 +11,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>netconf-tcp</artifactId>
index ae0bb76832469f4f7e6c9e22095087239fd5a96f..c9de92b9d5e22799233a846e4ec1100041dcb025 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>netconf-subsystem</artifactId>
-        <version>0.2.5-SNAPSHOT</version>
+        <version>0.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>netconf-testtool</artifactId>
index f8c3e5a504dafd32251bdbb769a555a1bce03f69..44e6c614725c18b48df15061e94d37ae4845924d 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>netconf-subsystem</artifactId>
-        <version>0.2.5-SNAPSHOT</version>
+        <version>0.3.0-SNAPSHOT</version>
         <relativePath>../</relativePath>
     </parent>
     <artifactId>netconf-usermanager</artifactId>
index bed58beb0f3494a6914986c339af55611c3572b4..de9b2a0a06b762e78cfb1978464252431913e0e8 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>netconf-subsystem</artifactId>
-    <version>0.2.5-SNAPSHOT</version>
+    <version>0.3.0-SNAPSHOT</version>
   </parent>
   <artifactId>netconf-util</artifactId>
   <packaging>bundle</packaging>
index 8abf67ec8c5fe198315be84d8f8d5d9d424347e0..2bb6a2003568cbe5f990f410e6a60f0a22d5d6fa 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
   <artifactId>netconf-subsystem</artifactId>
 
-  <version>0.2.5-SNAPSHOT</version>
+  <version>0.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>${project.artifactId}</name>
   <prerequisites>
index c8f1dd270d91ed7863806f1724c3ce3eda56ce8d..a9061d57d1fc3af4c17fa3e87a4b125586cfc6d5 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>networkconfig.neutron.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <properties>
     <enunciate.version>1.26.2</enunciate.version>
index 998dd4488cdef15ddd68dab6c9ef86ad4a856790..75ab2816cccef11818b0e8e99fb510d181c79941 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>networkconfig.neutron</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <properties>
     <enunciate.version>1.26.2</enunciate.version>
index 558bf4191560245629426de8f65628ea9bfa3c1d..67c111f94de58ef1fefa51770ffde600701433c7 100644 (file)
@@ -4,7 +4,7 @@
 
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>app-northbound</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <name>app-northbound</name>
index da1bd411923e096bb9f6d13b740363b304632366..adb0c9870503e16ed7f2d0763a857181be1c5f6c 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.1-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
index ee83c9358093e6663a40749c4825020d0c09e499..78bfd385796a16a4ef914e967dfc92c8cd3956c8 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>bundlescanner</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencies>
index c06f8b42156b3a596171ed7b87b5d9938c2327b4..5694b2adcf43b9a2d12cdd03b123d1d14eb56c3e 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>bundlescanner.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <dependencies>
index cbc1f0c328e58be31f53304c657ed050f746ffe1..9d229e4e7072d27970ea1a3602443a0e11d78134 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>commons.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index ad315ac008e78e78712fc6bbc7a6f74e8b12b7b3..893dcd14f34104c96533a5bae72d0e20d75e3202 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>connectionmanager.northbound</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 2e6bb7d40ca0d5245200699822198b8d9ba1c697..74fd115dee1fbb8033be1ea0d4532d300cb10707 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>containermanager.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 89d2b99cadb7b89409a11fb600638edd8897ed2d..33f9a06246a55b9cbbdc002b52ebac6c90e0a8dc 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>controllermanager.northbound</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 43797f5c6558d84cca3f256d6f2bbdcf4f380407..083a7a2cb8539d475b00e246954e4ea7ccbe766f 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>flowprogrammer.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index c8415f8b4f77cc63496d3a8abaa5abe0810da9b4..3cd3f36be04c2e9912dba333bc79dfe2a011280e 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>hosttracker.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index c7b9cfc9a06bf4a65223879e284ace31c6235d4a..deeabd9d00c0ef3a6a422468847ab6b12b1058bb 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>httpservice-bridge</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <description>HttpService bridge web application</description>
 
index 6f0d897f99ebdf9db7edfebe573d1fcbf8f90934..df0d1139afa73fe0acff6a13d9e0e65b757a3c6b 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>northbound.integrationtest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <dependencies>
     <dependency>
       <groupId>ch.qos.logback</groupId>
index ae8924feb6aaf79970c042b4a88af698e23e2bb7..a4bcde461ecb9c21433d4b93d7206cea6af8df8c 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>northbound.client</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <properties>
index 62af41ab46964cd64445805f7b3f8e07aa8c93ad..07e3a7d36ba3109677d291134b9f44a0a5656453 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>jolokia-bridge</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <description>Jolokia bridge web application</description>
 
index f11297808047edac9bf33663e434cdf1363e6fa9..8b552ba25a6625b1978078473f973739f709c8c4 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>networkconfig.bridgedomain.northbound</artifactId>
-  <version>0.0.3-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 19bcfe44ec5b18835b328a3f291b15eecb192c06..8111e69c19bb0b7874387da1ecea394381f1bd5c 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>networkconfig.neutron.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 83f8191e025e1c4d23d3bd8673f2ed0046ff9408..761f1f08e9b65ed73091f634902d564fd71c9722 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>forwarding.staticrouting.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 7e2919bc44c1a7f698f2afe77c31d3347de3fc4a..4ae3d8746c44f3e0d6339892e07b49eea313f1b2 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>statistics.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 630221fcc2dac2b0c53a945cbeaf41ef63c9a1cd..1efb974b51467036add7c2fddcc4ee02f68fbde9 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>subnets.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 18eaed98ec17c35d3847746677c0e704e3fe8bde..bbb80a7811f45ef07831c65bedf0c203d79c9fd6 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>swagger-ui</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <properties>
index 614ec8847658d87800de3f6319c076357020d269..1b876f4420cf2cafc01f8eef90cf8bae2eed5cd8 100644 (file)
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>switchmanager.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 3f1a7701102467edf00dd974c254407728049176..270148420c2e16f6498997fca6d5b85b2a8b40a9 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>topology.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index c7ab2fa71201a44622d2ab3b2208a430b7e67af8..fe32bcf5d3840ddbcd735cc48eb5b91c6b593bfa 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>usermanager.northbound</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 5a0f5f3254518733ddb7060ba6fba0cbb24dd3a7..11c885db308c9ad1a96f8a1120f599385e25db98 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.0-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../opendaylight/commons/opendaylight</relativePath>
   </parent>
   <scm>
@@ -16,7 +16,7 @@
 
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>northboundtest</artifactId>
-        <version>0.4.0-SNAPSHOT</version>
+        <version>0.5.0-SNAPSHOT</version>
         <packaging>bundle</packaging>
 
         <build>
index a8fceec2bfc435f2a4d3d01332ed720f3f9b588a..16fadee1cc9c5a65d8b0920c15a0d940e975cb34 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>protocol_plugins.openflow</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 540c9afb2c01544eee6f3dc496d29846fe953a91..4c7b8965fbbfc4383810c95583d0c39d963d8da0 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>protocol_plugins.stub</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index b691308e971cc269fd10338ad7f15e6cf369b58a..b1b68b8cb7a47dd927b6c526c54730f93d933110 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>routing.dijkstra_implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 3ee239a0f4fd990a469b7a9de40187c294c6b27e..50ac61fccbe94875cdafb33da26dfc54e8abd959 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal</artifactId>
-  <version>0.8.1-SNAPSHOT</version>
+  <version>0.9.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index b194f76a455d6d0aedce563cec5b3b28f4236192..780631791d64e9fa96c5e0313fcd762147b368a6 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal.connection</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 71506835978eb2591a33977fe108d4d781108673..a7d5dfafb9919bf1a894976b30b4de28bf371d0a 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal.connection.implementation</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 88986dcdd0d405292d52dbdfebc54383d44ac161..3f1aa86be8151db5a89e5c42ac1cfcbffeccf6e4 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 5b2269ae6d3cae45bba2461826bf5b1fdf3c5b73..4b183497450dcb7c0d29819c02ebb55692be7ce0 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal.networkconfiguration</artifactId>
-  <version>0.0.3-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 508c9bd3f5f98b66f61b484b6ec5d046b2db3da4..bf476a924aea347aeaf1dae87a0ed9ee0222a588 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>sal.networkconfiguration.implementation</artifactId>
-  <version>0.0.3-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index f72e47b283893f31e87c53a1a582726832039595..10ae20ca630758d2ab5f3055413816c1adc81c72 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>clustersession</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
@@ -43,7 +43,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>clustering.services</artifactId>
-      <version>0.5.1-SNAPSHOT</version>
+      <version>0.6.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
index 79390838919c54d40382cbf7047e2499f53977b9..a7b41096d7dc4d969d21f221f9c2db1799699c79 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>samples.loadbalancer</artifactId>
-  <version>0.5.2-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index d39241757fea07732c7920340fd3fdd5ebf37c7d..18aa4e1d62a35ca41f261114cf83170766d33b01 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>samples.loadbalancer.northbound</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 1208506bd5fb9bc010aaf19889a0149656e6082d..50410f85afc288b020c421a82af9e75c01592db5 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>samples.simpleforwarding</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 896e7184b223dda4455c7124d34f52bf2d8813da..49889de7f192a6336d9e9c31d4fc7a5453f9de52 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>security</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index aa9b88e1b2e19d18e1675095b4c20b08b8b3c873..23edfa399131dd4cf579d4466edf54b72363c00d 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>statisticsmanager</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
+  <version>0.6.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 10abb3d2516ff815da2d7c7cd1024970a413eaa2..08db43a0f04f9e407b86f0eaa48896a9ed81d0f1 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>statisticsmanager.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <properties>
     <!-- Sonar properties using jacoco to retrieve integration test results -->
index 2946e698fe21a28f9ff5b66d28877999f5f9cb2f..22696b71e6e77660425f092832b3d84a8d51f112 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>statisticsmanager.integrationtest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <properties>
     <sonar.jacoco.itReportPath>../implementation/target/jacoco-it.exec</sonar.jacoco.itReportPath>
     <!-- Sonar jacoco plugin to get integration test coverage info -->
index 94ba0216cc1b848948c8bde003fba275c9dd8ccd..a29341ee6f7c203cf7e4653bf08f3142fe6977c8 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>switchmanager</artifactId>
-  <version>0.7.1-SNAPSHOT</version>
+  <version>0.8.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <properties>
index a0718db48a1c4ae28128831336f3bd03978020ba..fe7a0c0bcb407f42c5e975974bd6817e472c6b88 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>switchmanager.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <properties>
index 4a8d93f3b3d822eace16344fe1929ef9bf5bd5a5..708ac32763b3f12e394809ec054c89a5ffa3a75d 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>switchmanager.integrationtest</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <properties>
     <sonar.jacoco.itReportPath>../implementation/target/jacoco-it.exec</sonar.jacoco.itReportPath>
     <!-- Sonar jacoco plugin to get integration test coverage info -->
index 746135891ea5acf3b976ae64421dda9a393c4f07..430dfca74db3f50394f156a6dcb27f59bf098c3b 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>topologymanager</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index e278ecffd9c911fb1e5bb53e8e1375048cdd270a..ce6422c8c1d6dbafd3223957d76410d549c48f69 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.integrationtest</artifactId>
-    <version>0.5.2-SNAPSHOT</version>
+    <version>0.6.0-SNAPSHOT</version>
     <relativePath>../../commons/integrationtest</relativePath>
   </parent>
 
   <artifactId>topologymanager.integrationtest</artifactId>
-  <version>0.4.1-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <properties>
     <sonar.jacoco.itReportPath>../implementaiton/target/jacoco-it.exec</sonar.jacoco.itReportPath>
     <!-- Sonar jacoco plugin to get integration test coverage info -->
index 078b55c596ef8167851a5fd8f7a45333dafbbd85..2de8c5c26c6c05cbac6d8400853393107048fb99 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
   <artifactId>topologymanager.shell</artifactId>
index c932a7cb31b201eb2a62246def052b428c47c6c2..e21337242aa5693f95e04882d2bd1d955cebfb80 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>usermanager</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 9567db0293dc29cb981b00184246f6cc430bc175..d973f670b207b0a36a4d98e19422e2d497aa5907 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>usermanager.implementation</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index 541dbcadfd8644023b03055f3109220cf604ecd3..25f62f059e0b229c5879faf7227b073bde24565c 100644 (file)
@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>commons.opendaylight</artifactId>
-        <version>1.4.0-SNAPSHOT</version>
+        <version>1.5.0-SNAPSHOT</version>
         <relativePath>../../commons/opendaylight</relativePath>
     </parent>
   <scm>
@@ -17,7 +17,7 @@
 
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>web.brandfragment</artifactId>
-    <version>0.4.0-SNAPSHOT</version>
+    <version>0.5.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <build>
index 890694642348f55e4856acd0a5c1c21dae1fab60..8e7c9248ddc4b90d87784b1ba226f8637967f48a 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>devices.web</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index f62c6ac4d4f5169bfab268852c5f167159f16657..99238c6aad52f2d769258f57d46f04618db66d48 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>flows.web</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index fc04088961473353ac4df5731b7b8d423055be1e..adea8ace621b2b8cf987c4dd75b3bb9324ac018b 100644 (file)
@@ -5,12 +5,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>osgi-brandfragment.web</artifactId>
-  <version>0.0.2-SNAPSHOT</version>
+  <version>0.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <description>OSGi management web application brand fragment</description>
 
index 6f0a0989b86865633bfcffd5175beee51c2afecf..cd82f8b07fbeadcc09f5265fac5666da232fcad2 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>web</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index e65c19ff849abe33c0d0b08e6f97446c23758c1b..24b53db7676abb038391ac67f5242326ea77b22a 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>topology.web</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
index b66889284d0c6d48f0b434a04fa6a8dc91045c3d..14817bd186cfe8acafdf87ec212605e5577fdb55 100644 (file)
@@ -4,12 +4,12 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.opendaylight</artifactId>
-    <version>1.4.2-SNAPSHOT</version>
+    <version>1.5.0-SNAPSHOT</version>
     <relativePath>../../commons/opendaylight</relativePath>
   </parent>
 
   <artifactId>troubleshoot.web</artifactId>
-  <version>0.4.2-SNAPSHOT</version>
+  <version>0.5.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <dependencies>
     <dependency>
diff --git a/pom.xml b/pom.xml
index 10c05e254f84d88d25f1e3e9b5ef3da3af84b7a1..bb8ad1dbeba6459a1b9e5acb90070febc1b5a72a 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -4,11 +4,11 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.parent</artifactId>
-    <version>1.0.2-SNAPSHOT</version>
+    <version>1.1.0-SNAPSHOT</version>
     <relativePath>opendaylight/commons/parent</relativePath>
   </parent>
   <artifactId>releasepom</artifactId>
-  <version>0.1.2-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <prerequisites>
     <maven>3.0</maven>
index 3fc3a3bd6a9fd680e584eb9c2ac7ac9aec49f222..ad3c27523e4ac7a2596ef7405de4de4bed067938 100644 (file)
@@ -6,7 +6,7 @@
   </prerequisites>
   <groupId>org.opendaylight.controller</groupId>
   <artifactId>commons.thirdparty</artifactId>
-  <version>1.1.2-SNAPSHOT</version>
+  <version>1.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <scm>
     <connection>scm:git:ssh://git.opendaylight.org:29418/controller.git</connection>
index f67828bdab68fb678a67c038568b34d3a87321af..676e2a24f1d07fb5f1a1b7f966005c0914e47ecf 100644 (file)
@@ -5,13 +5,13 @@
     <parent>
         <groupId>org.opendaylight.controller</groupId>
         <artifactId>commons.thirdparty</artifactId>
-        <version>1.1.2-SNAPSHOT</version>
+        <version>1.2.0-SNAPSHOT</version>
         <relativePath>../commons/thirdparty</relativePath>
     </parent>
 
     <groupId>org.opendaylight.controller.thirdparty</groupId>
     <artifactId>ganymed</artifactId>
-    <version>1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
index 7e944c15da41cf46ebaf14a4b7aa2e2ca7046ab6..27d503e89814c893a540aa191e18d5097a16c870 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.thirdparty</artifactId>
-    <version>1.1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../commons/thirdparty</relativePath>
   </parent>
   <scm>
@@ -17,7 +17,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.opendaylight.controller.thirdparty</groupId>
   <artifactId>com.sun.jersey.jersey-servlet</artifactId>
-  <version>1.18-SNAPSHOT</version>
+  <version>1.19.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <build>
     <plugins>
index fe15316023f41d306be25e2759addf6943cf7ced..63455dc8beacde617a67a02ceefcf0639796d8d7 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.thirdparty</artifactId>
-    <version>1.1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../commons/thirdparty</relativePath>
   </parent>
   <scm>
@@ -17,7 +17,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.opendaylight.controller.thirdparty</groupId>
   <artifactId>net.sf.jung2</artifactId>
-  <version>2.0.2-SNAPSHOT</version>
+  <version>2.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <build>
     <plugins>
index 8d8724dcebcaec03bf50d6f668d437e77a8dea3c..9e04a70b838a179a52e923b72b61b75829aa0c7d 100644 (file)
@@ -2,7 +2,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.opendaylight.controller.thirdparty</groupId>
   <artifactId>org.openflow.openflowj</artifactId>
-  <version>1.0.3-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <name>OpenFlow Java</name>
   <description>A Java implemention of the OpenFlow v1.0 protocol</description>
 
@@ -10,7 +10,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.thirdparty</artifactId>
-    <version>1.1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../commons/thirdparty</relativePath>
   </parent>
   
index 85e631686e77eb43042e87c5c8536432bd76362b..78996da2cb4fb8ecfd1aa19f85cbfeb7c035b0f2 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>org.opendaylight.controller</groupId>
     <artifactId>commons.thirdparty</artifactId>
-    <version>1.1.1-SNAPSHOT</version>
+    <version>1.2.0-SNAPSHOT</version>
     <relativePath>../commons/thirdparty</relativePath>
   </parent>
   <scm>
@@ -16,7 +16,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.opendaylight.controller.thirdparty</groupId>
   <artifactId>org.apache.catalina.filters.CorsFilter</artifactId>
-  <version>7.0.43-SNAPSHOT</version>
+  <version>7.1.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
   <build>
     <plugins>