Adjust to yangtools-2.0.0 changes 75/64175/42
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 11 Oct 2017 19:31:07 +0000 (21:31 +0200)
committerStephen Kitt <skitt@redhat.com>
Thu, 11 Jan 2018 17:57:11 +0000 (18:57 +0100)
Change-Id: Ib86747e5ed19c0c00bb46b8d7e4936f4d90c4364
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Signed-off-by: Stephen Kitt <skitt@redhat.com>
135 files changed:
features/config/odl-config-netty-config-api/src/main/feature/feature.xml [new file with mode: 0644]
features/mdsal/odl-mdsal-broker-local/src/main/feature/feature.xml
features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml [new file with mode: 0644]
features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml [new file with mode: 0644]
opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigDefaultXMLReader.java
opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/RpcUtil.java
opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ValidationException.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/ConfigSubsystemFacade.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/ConfigSubsystemFacadeFactory.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/attributes/fromxml/ObjectXmlReader.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/attributes/fromxml/SimpleIdentityRefAttributeReadingStrategy.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/attributes/mapping/SimpleAttributeMappingStrategy.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/attributes/resolving/SimpleAttributeResolvingStrategy.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Config.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/InstanceConfig.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/ModuleConfig.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreContext.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreService.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreSnapshot.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/rpc/InstanceRuntimeRpc.java
opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/util/Util.java
opendaylight/config/config-manager-facade-xml/src/test/java/org/opendaylight/controller/config/facade/xml/mapping/attributes/fromxml/SimpleIdentityRefAttributeReadingStrategyTest.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/mapping/RefreshingSCPModuleInfoRegistry.java
opendaylight/config/config-persister-impl/src/test/java/org/opendaylight/controller/config/persist/impl/ConfigPusherImplTest.java
opendaylight/config/config-util/src/main/java/org/opendaylight/controller/config/util/capability/YangModuleCapability.java
opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGenerator.java
opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Annotation.java
opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorFileNamesValidationTest.java
opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java
opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntry.java
opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryBuilder.java
opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ServiceInterfaceEntry.java
opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java
opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/ListAttribute.java
opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/TOAttribute.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/AbstractYangTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryNameConflictTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntryTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/RuntimeBeanEntryTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/RuntimeRegistratorTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/SchemaContextTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/ServiceInterfaceEntryTest.java
opendaylight/config/yang-jmx-generator/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/unknownextension/UnknownExtensionTest.java
opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ConnectClientSuccessTest.java
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingStructuralType.java
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingToNormalizedNodeCodec.java
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/FutureSchema.java
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazyDataObjectModification.java
opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LazySerializedContainerNode.java
opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/impl/BindingNormalizedCodecTest.java
opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/WriteParentListenAugmentTest.java
opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/WriteParentReadChildTest.java
opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/DOMRpcServiceTestBugfix560.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeOutputStreamWriter.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/util/AbstractDataTreeModificationCursor.java
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/schema/provider/impl/YangTextSchemaSourceSerializationProxy.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeStreamReaderWriterTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/node/utils/transformer/NormalizedNodePrunerTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/datastore/util/TestModel.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/schema/provider/impl/RemoteSchemaProviderTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/schema/provider/impl/RemoteYangTextSourceProviderImplTest.java
opendaylight/md-sal/sal-clustering-commons/src/test/java/org/opendaylight/controller/cluster/schema/provider/impl/YangTextSourceSerializationProxyTest.java
opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizationOperation.java
opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataSchemaContainerProxy.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.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/ShardDataTree.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/AbstractEntityOwnerChangeListener.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipCandidateRegistration.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipListenerRegistration.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipService.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListener.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnersModel.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipShard.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipStatistics.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/AbstractDataTreeCandidateNode.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DeletedDataTreeCandidateNode.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ModifiedDataTreeCandidateNode.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/shardmanager/ShardManager.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/PruningDataTreeModification.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardChangePublisher.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/ShardProxyTransaction.java
opendaylight/md-sal/sal-distributed-datastore/src/main/resources/org/opendaylight/blueprint/clustered-datastore.xml
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractDataStoreClientBehaviorTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshotTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransactionTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadOnlyProxyTransactionTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransactionTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractShardTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DatastoreSnapshotRestoreTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinatorTest.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/TransactionProxyTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/AbstractEntityOwnershipTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipStatisticsTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/ReadyLocalTransactionSerializerTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/persisted/CommitTransactionPayloadTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MockDataTreeChangeListener.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/PruningDataTreeModificationTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/CompositeModel.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/TestModel.java
opendaylight/md-sal/sal-dom-api/src/test/java/org/opendaylight/controller/md/sal/dom/api/AbstractDOMDataTreeServiceTestSuite.java
opendaylight/md-sal/sal-dom-broker-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/DomInmemoryDataBrokerModule.java
opendaylight/md-sal/sal-dom-broker-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModule.java
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRoutingTable.java
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/RoutedDOMRpcRoutingTableEntry.java
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadWriteTransaction.java
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/mount/DOMMountPointServiceImpl.java
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/util/ProxySchemaContext.java
opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/util/YangSchemaUtils.java
opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMBrokerTest.java
opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMDataTreeListenerTest.java
opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/TestModel.java
opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/sal/core/spi/data/SnapshotBackedReadTransaction.java
opendaylight/md-sal/sal-dom-spi/src/main/java/org/opendaylight/controller/sal/core/spi/data/SnapshotBackedWriteTransaction.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStore.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStoreFactory.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMStoreTreeChangePublisher.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ResolveDataChangeEventsTask.java
opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/ListenerNode.java
opendaylight/md-sal/sal-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/AbstractDataChangeListenerTest.java
opendaylight/md-sal/sal-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/TestModel.java
opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/AbstractRpcTest.java
opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java
opendaylight/md-sal/sal-schema-service/src/main/java/org/opendaylight/controller/sal/schema/service/impl/GlobalBundleScanningSchemaServiceImpl.java
opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/CarEntryDataTreeCommitCohort.java

diff --git a/features/config/odl-config-netty-config-api/src/main/feature/feature.xml b/features/config/odl-config-netty-config-api/src/main/feature/feature.xml
new file mode 100644 (file)
index 0000000..63903bf
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright Â© 2017 Red Hat, Inc. and others.
+  ~
+  ~ 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
+  -->
+<features name="odl-controller-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
+    <feature name="odl-config-netty-config-api" version="${project.version}">
+        <feature version="[3.0.0,4)">odl-netty-4</feature>
+    </feature>
+</features>
index 654311ab6fcb7d760af055dd70b093263dda4f4c..3593abfbb7b28864951b89fed20b9e829ca10094 100644 (file)
@@ -10,6 +10,7 @@
     <!-- This needs to be added manually until we resolve the odl-mdsal-common situation -->
     <repository>mvn:org.opendaylight.controller/odl-mdsal-common/${project.version}/xml/features</repository>
     <feature name="odl-mdsal-broker-local" version="${project.version}">
     <!-- This needs to be added manually until we resolve the odl-mdsal-common situation -->
     <repository>mvn:org.opendaylight.controller/odl-mdsal-common/${project.version}/xml/features</repository>
     <feature name="odl-mdsal-broker-local" version="${project.version}">
+        <feature version="[3.0.0,4)">odl-lmax-3</feature>
         <bundle start-level="70">mvn:org.opendaylight.controller/sal-schema-service/${project.version}</bundle>
         <bundle start-level="40">mvn:org.opendaylight.controller/blueprint/${blueprint.version}</bundle>
         <configfile finalname="${config.configfile.directory}/${config.mdsal.configfile}" override="true">
         <bundle start-level="70">mvn:org.opendaylight.controller/sal-schema-service/${project.version}</bundle>
         <bundle start-level="40">mvn:org.opendaylight.controller/blueprint/${blueprint.version}</bundle>
         <configfile finalname="${config.configfile.directory}/${config.mdsal.configfile}" override="true">
diff --git a/features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml b/features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml
new file mode 100644 (file)
index 0000000..2c9dfd0
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright Â© 2017 Red Hat, Inc. and others.
+  ~
+  ~ 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
+  -->
+<features name="odl-controller-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
+    <feature name="odl-mdsal-clustering-commons" version="${project.version}">
+        <feature version="[3.0.0,4)">odl-akka-system-2.5</feature>
+        <feature version="[3.0.0,4)">odl-akka-persistence-2.5</feature>
+        <feature version="[3.0.0,4)">odl-akka-clustering-2.5</feature>
+    </feature>
+</features>
diff --git a/features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml b/features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml
new file mode 100644 (file)
index 0000000..e64822e
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright Â© 2017 Red Hat, Inc. and others.
+  ~
+  ~ 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
+  -->
+<features name="odl-controller-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
+    <feature name="odl-mdsal-remoterpc-connector" version="${project.version}">
+        <feature version="[3.0.0,4)">odl-akka-leveldb-0.7</feature>
+    </feature>
+</features>
index ece690112a0d2b519f789dfd6bdd968cf5a04899..9f909c40844c004b9623cd8435018db8a2d8b112 100644 (file)
@@ -112,8 +112,7 @@ public class DataStoreAppConfigDefaultXMLReader<T extends DataObject> {
 
         SchemaContext schemaContext = schemaService.getGlobalContext();
 
 
         SchemaContext schemaContext = schemaService.getGlobalContext();
 
-        Module module = schemaContext.findModuleByNamespaceAndRevision(bindingContext.bindingQName.getNamespace(),
-                bindingContext.bindingQName.getRevision());
+        Module module = schemaContext.findModule(bindingContext.bindingQName.getModule()).orElse(null);
         checkNotNull(module, "%s: Could not obtain the module schema for namespace %s, revision %s",
                 logName, bindingContext.bindingQName.getNamespace(), bindingContext.bindingQName.getRevision());
 
         checkNotNull(module, "%s: Could not obtain the module schema for namespace %s, revision %s",
                 logName, bindingContext.bindingQName.getNamespace(), bindingContext.bindingQName.getRevision());
 
@@ -138,13 +137,13 @@ public class DataStoreAppConfigDefaultXMLReader<T extends DataObject> {
         return (T) appConfig;
     }
 
         return (T) appConfig;
     }
 
-    private static void checkNotNull(Object reference, String errorMessageFormat, Object... formatArgs)
-            throws ConfigXMLReaderException {
+    private static void checkNotNull(final Object reference, final String errorMessageFormat,
+            final Object... formatArgs) throws ConfigXMLReaderException {
         checkCondition(reference != null, errorMessageFormat, formatArgs);
     }
 
         checkCondition(reference != null, errorMessageFormat, formatArgs);
     }
 
-    private static void checkCondition(boolean expression, String errorMessageFormat, Object... formatArgs)
-            throws ConfigXMLReaderException {
+    private static void checkCondition(final boolean expression, final String errorMessageFormat,
+            final Object... formatArgs) throws ConfigXMLReaderException {
         if (!expression) {
             throw new ConfigXMLReaderException(String.format(errorMessageFormat, formatArgs));
         }
         if (!expression) {
             throw new ConfigXMLReaderException(String.format(errorMessageFormat, formatArgs));
         }
index ee9e36e9d24995c9b41338546e56c3c4ad105af4..dc65d9b918206aafd06627620767cba8a3435926 100644 (file)
@@ -36,8 +36,7 @@ final class RpcUtil {
     static Collection<SchemaPath> decomposeRpcService(final Class<RpcService> service,
             final SchemaContext schemaContext, final Predicate<RpcRoutingStrategy> filter) {
         final QNameModule moduleName = BindingReflections.getQNameModule(service);
     static Collection<SchemaPath> decomposeRpcService(final Class<RpcService> service,
             final SchemaContext schemaContext, final Predicate<RpcRoutingStrategy> filter) {
         final QNameModule moduleName = BindingReflections.getQNameModule(service);
-        final Module module = schemaContext.findModuleByNamespaceAndRevision(moduleName.getNamespace(),
-                moduleName.getRevision());
+        final Module module = schemaContext.findModule(moduleName).get();
         LOG.debug("Resolved service {} to module {}", service, module);
 
         final Collection<RpcDefinition> rpcs = module.getRpcs();
         LOG.debug("Resolved service {} to module {}", service, module);
 
         final Collection<RpcDefinition> rpcs = module.getRpcs();
index 760853e93b7f88d100c740f1f9f6e4de51e2fa9a..9daacd16dcffcbf1b2de9fdbbf4146124d9832ca 100644 (file)
@@ -102,8 +102,8 @@ public class ValidationException extends Exception {
             this.message = message;
         }
 
             this.message = message;
         }
 
-        public void setStackTrace(final String stackTrace) {
-            this.stackTrace = stackTrace;
+        public void setStackTrace(final String trace) {
+            this.stackTrace = trace;
         }
 
         @Override
         }
 
         @Override
index 0f9e6f3ac02661d96417d560ddaca1132d38af2d..4ee3c7ae6eb055834b11b25e0da9977fe9d9750e 100644 (file)
@@ -10,17 +10,13 @@ package org.opendaylight.controller.config.facade.xml;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.Multimap;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.Multimap;
-
 import java.io.Closeable;
 import java.io.Closeable;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import javax.management.InstanceNotFoundException;
 import javax.management.ObjectName;
 import javax.management.InstanceNotFoundException;
 import javax.management.ObjectName;
-
 import org.opendaylight.controller.config.api.ConflictingVersionException;
 import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
 import org.opendaylight.controller.config.api.ConflictingVersionException;
 import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.api.jmx.CommitStatus;
@@ -53,6 +49,7 @@ import org.opendaylight.controller.config.util.xml.XmlMappingConstants;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.slf4j.Logger;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.slf4j.Logger;
@@ -205,7 +202,7 @@ public class ConfigSubsystemFacade implements Closeable {
         setOnTransaction(ta, configExecution);
     }
 
         setOnTransaction(ta, configExecution);
     }
 
-    private void setServicesOnTransaction(final ConfigTransactionClient ta, final ConfigExecution execution)
+    private static void setServicesOnTransaction(final ConfigTransactionClient ta, final ConfigExecution execution)
             throws DocumentedException {
         Services services = execution.getServices();
 
             throws DocumentedException {
         Services services = execution.getServices();
 
@@ -244,11 +241,12 @@ public class ConfigSubsystemFacade implements Closeable {
         }
     }
 
         }
     }
 
-    private String getQname(final ConfigTransactionClient ta, final String namespace, final String serviceName) {
+    private static String getQname(final ConfigTransactionClient ta, final String namespace,
+            final String serviceName) {
         return ta.getServiceInterfaceName(namespace, serviceName);
     }
 
         return ta.getServiceInterfaceName(namespace, serviceName);
     }
 
-    private void setOnTransaction(final ConfigTransactionClient ta, final ConfigExecution execution)
+    private static void setOnTransaction(final ConfigTransactionClient ta, final ConfigExecution execution)
             throws DocumentedException {
 
         for (Multimap<String, ModuleElementResolved> modulesToResolved : execution.getResolvedXmlElements(ta)
             throws DocumentedException {
 
         for (Multimap<String, ModuleElementResolved> modulesToResolved : execution.getResolvedXmlElements(ta)
@@ -268,8 +266,8 @@ public class ConfigSubsystemFacade implements Closeable {
         }
     }
 
         }
     }
 
-    private void handleMisssingInstancesOnTransaction(final ConfigTransactionClient ta, final ConfigExecution execution)
-            throws DocumentedException {
+    private static void handleMisssingInstancesOnTransaction(final ConfigTransactionClient ta,
+            final ConfigExecution execution) throws DocumentedException {
 
         for (Multimap<String, ModuleElementDefinition> modulesToResolved : execution.getModulesDefinition(ta)
                 .values()) {
 
         for (Multimap<String, ModuleElementDefinition> modulesToResolved : execution.getModulesDefinition(ta)
                 .values()) {
@@ -289,18 +287,20 @@ public class ConfigSubsystemFacade implements Closeable {
         final YangStoreContext snapshot = yangStoreService.getCurrentSnapshot();
         Map<String, Map<String, ModuleConfig>> factories = transformMbeToModuleConfigs(
                 snapshot.getModuleMXBeanEntryMap());
         final YangStoreContext snapshot = yangStoreService.getCurrentSnapshot();
         Map<String, Map<String, ModuleConfig>> factories = transformMbeToModuleConfigs(
                 snapshot.getModuleMXBeanEntryMap());
-        Map<String, Map<Date, IdentityMapping>> identitiesMap = transformIdentities(snapshot.getModules());
+        Map<String, Map<Optional<Revision>, IdentityMapping>> identitiesMap =
+            transformIdentities(snapshot.getModules());
         return new Config(factories, identitiesMap, snapshot.getEnumResolver());
     }
 
         return new Config(factories, identitiesMap, snapshot.getEnumResolver());
     }
 
-    private static Map<String, Map<Date, IdentityMapping>> transformIdentities(final Set<Module> modules) {
-        Map<String, Map<Date, IdentityMapping>> mappedIds = new HashMap<>();
+    private static Map<String, Map<Optional<Revision>, IdentityMapping>> transformIdentities(
+            final Set<Module> modules) {
+        Map<String, Map<Optional<Revision>, IdentityMapping>> mappedIds = new HashMap<>();
         for (Module module : modules) {
             String namespace = module.getNamespace().toString();
         for (Module module : modules) {
             String namespace = module.getNamespace().toString();
-            Map<Date, IdentityMapping> revisionsByNamespace = mappedIds.computeIfAbsent(namespace,
+            Map<Optional<Revision>, IdentityMapping> revisionsByNamespace = mappedIds.computeIfAbsent(namespace,
                 k -> new HashMap<>());
 
                 k -> new HashMap<>());
 
-            Date revision = module.getRevision();
+            Optional<Revision> revision = Optional.fromJavaUtil(module.getRevision());
 
             IdentityMapping identityMapping = revisionsByNamespace.computeIfAbsent(revision,
                 k -> new IdentityMapping());
 
             IdentityMapping identityMapping = revisionsByNamespace.computeIfAbsent(revision,
                 k -> new IdentityMapping());
index 895bcc5a30987a8c72e89d19c0afd8ac8272af03..1d680a95adadf04c8ddb36c8326a67af5154ac14 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.controller.config.util.ConfigRegistryJMXClient;
 import org.opendaylight.controller.config.util.capability.Capability;
 import org.opendaylight.controller.config.util.capability.YangModuleCapability;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.controller.config.util.capability.Capability;
 import org.opendaylight.controller.config.util.capability.YangModuleCapability;
 import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 
 public class ConfigSubsystemFacadeFactory {
 
 
 public class ConfigSubsystemFacadeFactory {
 
@@ -47,7 +48,8 @@ public class ConfigSubsystemFacadeFactory {
         Set<Module> modules = yangStoreService.getModules();
         final Set<Capability> capabilities = Sets.newHashSet();
         for (Module module : modules) {
         Set<Module> modules = yangStoreService.getModules();
         final Set<Capability> capabilities = Sets.newHashSet();
         for (Module module : modules) {
-            capabilities.add(new YangModuleCapability(module, yangStoreService.getModuleSource(module)));
+            capabilities.add(new YangModuleCapability(module, yangStoreService.getModuleSource(
+                RevisionSourceIdentifier.create(module.getName(), module.getRevision()))));
         }
         return capabilities;
     }
         }
         return capabilities;
     }
index 4fa679645f127c7dbcae4bff0921dbaddf976bf2..c99d21d6ac6c011bc49f8aebd27f81f26efcb94a 100644 (file)
@@ -8,9 +8,9 @@
 
 package org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml;
 
 
 package org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml;
 
+import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
-import java.util.Date;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -25,15 +25,16 @@ import org.opendaylight.controller.config.yangjmxgenerator.attribute.JavaAttribu
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListAttribute;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListDependenciesAttribute;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.TOAttribute;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListAttribute;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.ListDependenciesAttribute;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.TOAttribute;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public class ObjectXmlReader extends AttributeIfcSwitchStatement<AttributeReadingStrategy> {
 
     private String key;
 
 public class ObjectXmlReader extends AttributeIfcSwitchStatement<AttributeReadingStrategy> {
 
     private String key;
-    private Map<String, Map<Date, IdentityMapping>> identityMap;
+    private Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap;
 
     @SuppressWarnings("checkstyle:hiddenField")
     public Map<String, AttributeReadingStrategy> prepareReading(final Map<String, AttributeIfc> yangToAttrConfig,
 
     @SuppressWarnings("checkstyle:hiddenField")
     public Map<String, AttributeReadingStrategy> prepareReading(final Map<String, AttributeIfc> yangToAttrConfig,
-            final Map<String, Map<Date, IdentityMapping>> identityMap) {
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap) {
         Map<String, AttributeReadingStrategy> strategies = Maps.newHashMap();
         this.identityMap = identityMap;
 
         Map<String, AttributeReadingStrategy> strategies = Maps.newHashMap();
         this.identityMap = identityMap;
 
index c64731e26f7e1866714a3c6814dd600a0a5985aa..679631b24cbe1db1803d69a93fedee0baf589d89 100644 (file)
@@ -8,24 +8,25 @@
 
 package org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml;
 
 
 package org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml;
 
+import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
 import java.net.URI;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
 import java.net.URI;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import org.opendaylight.controller.config.facade.xml.mapping.IdentityMapping;
 import org.opendaylight.controller.config.util.xml.DocumentedException;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.yangtools.yang.common.QName;
 import java.util.HashMap;
 import java.util.Map;
 import org.opendaylight.controller.config.facade.xml.mapping.IdentityMapping;
 import org.opendaylight.controller.config.util.xml.DocumentedException;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public class SimpleIdentityRefAttributeReadingStrategy extends SimpleAttributeReadingStrategy {
 
     private final String key;
 
 public class SimpleIdentityRefAttributeReadingStrategy extends SimpleAttributeReadingStrategy {
 
     private final String key;
-    private final Map<String, Map<Date, IdentityMapping>> identityMap;
+    private final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap;
 
     public SimpleIdentityRefAttributeReadingStrategy(final String nullableDefault, final String key,
 
     public SimpleIdentityRefAttributeReadingStrategy(final String nullableDefault, final String key,
-            final Map<String, Map<Date, IdentityMapping>> identityMap) {
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap) {
         super(nullableDefault);
         this.key = key;
         this.identityMap = identityMap;
         super(nullableDefault);
         this.key = key;
         this.identityMap = identityMap;
@@ -49,10 +50,10 @@ public class SimpleIdentityRefAttributeReadingStrategy extends SimpleAttributeRe
             namespace = namespaceOfTextContent.getValue();
         }
 
             namespace = namespaceOfTextContent.getValue();
         }
 
-        Date revision = null;
-        Map<Date, IdentityMapping> revisions = identityMap.get(namespace);
+        Optional<Revision> revision = null;
+        Map<Optional<Revision>, IdentityMapping> revisions = identityMap.get(namespace);
         if (revisions.keySet().size() > 1) {
         if (revisions.keySet().size() > 1) {
-            for (Map.Entry<Date, IdentityMapping> revisionToIdentityEntry : revisions.entrySet()) {
+            for (Map.Entry<Optional<Revision>, IdentityMapping> revisionToIdentityEntry : revisions.entrySet()) {
                 if (revisionToIdentityEntry.getValue().containsIdName(localName)) {
                     Preconditions.checkState(revision == null,
                             "Duplicate identity %s, in namespace %s, "
                 if (revisionToIdentityEntry.getValue().containsIdName(localName)) {
                     Preconditions.checkState(revision == null,
                             "Duplicate identity %s, in namespace %s, "
@@ -64,7 +65,7 @@ public class SimpleIdentityRefAttributeReadingStrategy extends SimpleAttributeRe
         } else {
             revision = revisions.keySet().iterator().next();
         }
         } else {
             revision = revisions.keySet().iterator().next();
         }
-        return QName.create(URI.create(namespace), revision, localName).toString();
+        return QName.create(URI.create(namespace), revision.toJavaUtil(), localName).toString();
     }
 
     @Override
     }
 
     @Override
index a79e96a23c5028c0545fc1f8078b08eed86b4f5c..782d2435505258ef8be9b348393e21e4e259f1f0 100644 (file)
@@ -11,10 +11,9 @@ package org.opendaylight.controller.config.facade.xml.mapping.attributes.mapping
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
-import java.util.Date;
 import java.util.Map;
 import javax.management.openmbean.SimpleType;
 import java.util.Map;
 import javax.management.openmbean.SimpleType;
-import org.opendaylight.controller.config.facade.xml.util.Util;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public class SimpleAttributeMappingStrategy extends AbstractAttributeMappingStrategy<String, SimpleType<?>> {
 
 
 public class SimpleAttributeMappingStrategy extends AbstractAttributeMappingStrategy<String, SimpleType<?>> {
 
@@ -43,7 +42,7 @@ public class SimpleAttributeMappingStrategy extends AbstractAttributeMappingStra
 
     static {
         WRITER_PLUGINS.put(DEFAULT_WRITER_PLUGIN, new DefaultWriterPlugin());
 
     static {
         WRITER_PLUGINS.put(DEFAULT_WRITER_PLUGIN, new DefaultWriterPlugin());
-        WRITER_PLUGINS.put(Date.class.getCanonicalName(), new DatePlugin());
+        WRITER_PLUGINS.put(Revision.class.getCanonicalName(), new RevisionPlugin());
     }
 
     /**
     }
 
     /**
@@ -61,12 +60,12 @@ public class SimpleAttributeMappingStrategy extends AbstractAttributeMappingStra
         }
     }
 
         }
     }
 
-    static class DatePlugin implements WriterPlugin {
+    static class RevisionPlugin implements WriterPlugin {
 
         @Override
         public String writeObject(final Object value) {
 
         @Override
         public String writeObject(final Object value) {
-            Preconditions.checkArgument(value instanceof Date, "Attribute must be Date");
-            return Util.writeDate((Date) value);
+            Preconditions.checkArgument(value instanceof Revision, "Attribute must be Date");
+            return ((Revision) value).toString();
         }
     }
 
         }
     }
 
index 12f48e37776d323511a4ba47eaa46551e58078cd..f7952528d19eef479980f80106b4852d27105078 100644 (file)
@@ -14,12 +14,13 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.text.ParseException;
+import java.time.format.DateTimeParseException;
 import java.util.Date;
 import java.util.Map;
 import javax.management.openmbean.SimpleType;
 import org.opendaylight.controller.config.facade.xml.util.Util;
 import org.opendaylight.controller.config.util.xml.DocumentedException;
 import java.util.Date;
 import java.util.Map;
 import javax.management.openmbean.SimpleType;
 import org.opendaylight.controller.config.facade.xml.util.Util;
 import org.opendaylight.controller.config.util.xml.DocumentedException;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -138,8 +139,8 @@ final class SimpleAttributeResolvingStrategy extends AbstractAttributeResolvingS
         @Override
         protected Object parseObject(final Class<?> type, final String value) throws DocumentedException {
             try {
         @Override
         protected Object parseObject(final Class<?> type, final String value) throws DocumentedException {
             try {
-                return Util.readDate(value);
-            } catch (final ParseException e) {
+                return Revision.ofNullable(value).orElse(null);
+            } catch (final DateTimeParseException e) {
                 LOG.trace("Unable parse value {} due to ", value, e);
                 throw new DocumentedException("Unable to parse value " + value + " as date.", e,
                         DocumentedException.ErrorType.APPLICATION, DocumentedException.ErrorTag.OPERATION_FAILED,
                 LOG.trace("Unable parse value {} due to ", value, e);
                 throw new DocumentedException("Unable to parse value " + value + " as date.", e,
                         DocumentedException.ErrorType.APPLICATION, DocumentedException.ErrorTag.OPERATION_FAILED,
index 1b62183be1bf2b509d40623af9bfb48ee6317370..381934ae130f92bf05eb37e8f92339bcd7fcc570 100644 (file)
@@ -18,7 +18,6 @@ import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 import java.util.Collection;
 import java.util.Collections;
 import com.google.common.collect.Multimap;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -32,6 +31,7 @@ import org.opendaylight.controller.config.util.xml.DocumentedException;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.controller.config.util.xml.XmlMappingConstants;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.controller.config.util.xml.XmlMappingConstants;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -41,16 +41,16 @@ public class Config {
         Map<String /* Name of module entry from yang file */,
         ModuleConfig>> moduleConfigs;
 
         Map<String /* Name of module entry from yang file */,
         ModuleConfig>> moduleConfigs;
 
-    private final Map<String, Map<Date, IdentityMapping>> identityMap;
+    private final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap;
 
     private final EnumResolver enumResolver;
 
     public Config(final Map<String, Map<String, ModuleConfig>> moduleConfigs, final EnumResolver enumResolver) {
 
     private final EnumResolver enumResolver;
 
     public Config(final Map<String, Map<String, ModuleConfig>> moduleConfigs, final EnumResolver enumResolver) {
-        this(moduleConfigs, Collections.<String, Map<Date, IdentityMapping>>emptyMap(), enumResolver);
+        this(moduleConfigs, Collections.<String, Map<Optional<Revision>, IdentityMapping>>emptyMap(), enumResolver);
     }
 
     public Config(final Map<String, Map<String, ModuleConfig>> moduleConfigs,
     }
 
     public Config(final Map<String, Map<String, ModuleConfig>> moduleConfigs,
-            final Map<String, Map<Date, IdentityMapping>> identityMap, final EnumResolver enumResolver) {
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap, final EnumResolver enumResolver) {
         this.moduleConfigs = moduleConfigs;
         this.identityMap = identityMap;
         this.enumResolver = enumResolver;
         this.moduleConfigs = moduleConfigs;
         this.identityMap = identityMap;
         this.enumResolver = enumResolver;
index ff9a9f6ff7632f2a1ee3f2626f163e9da1a3000f..1bea5c26384a2f8bea550c84803d01fce6e11177 100644 (file)
@@ -11,15 +11,11 @@ package org.opendaylight.controller.config.facade.xml.mapping.config;
 import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-
 import javax.management.ObjectName;
 import javax.management.openmbean.OpenType;
 import javax.management.ObjectName;
 import javax.management.openmbean.OpenType;
-
 import org.opendaylight.controller.config.facade.xml.mapping.IdentityMapping;
 import org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml.AttributeConfigElement;
 import org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml.AttributeReadingStrategy;
 import org.opendaylight.controller.config.facade.xml.mapping.IdentityMapping;
 import org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml.AttributeConfigElement;
 import org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml.AttributeReadingStrategy;
@@ -39,6 +35,7 @@ import org.opendaylight.controller.config.util.xml.XmlMappingConstants;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -142,9 +139,9 @@ public final class InstanceConfig {
     }
 
     public InstanceConfigElementResolved fromXml(XmlElement moduleElement, final ServiceRegistryWrapper services,
     }
 
     public InstanceConfigElementResolved fromXml(XmlElement moduleElement, final ServiceRegistryWrapper services,
-                                                 final String moduleNamespace, final EditStrategyType defaultStrategy,
-                                                 final Map<String, Map<Date, IdentityMapping>> identityMap,
-                                                 final EnumResolver enumResolver)
+            final String moduleNamespace, final EditStrategyType defaultStrategy,
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap,
+            final EnumResolver enumResolver)
             throws DocumentedException {
         Map<String, AttributeConfigElement> retVal = Maps.newHashMap();
 
             throws DocumentedException {
         Map<String, AttributeConfigElement> retVal = Maps.newHashMap();
 
index ca01f86fec12229355c5646dde2301dd00c91bf7..3746c35e7e264e77cdb025536ea1f269d0526447 100644 (file)
@@ -9,7 +9,6 @@
 package org.opendaylight.controller.config.facade.xml.mapping.config;
 
 import com.google.common.base.Optional;
 package org.opendaylight.controller.config.facade.xml.mapping.config;
 
 import com.google.common.base.Optional;
-import java.util.Date;
 import java.util.Map;
 import javax.management.ObjectName;
 import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
 import java.util.Map;
 import javax.management.ObjectName;
 import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
@@ -20,6 +19,7 @@ import org.opendaylight.controller.config.util.xml.DocumentedException;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.controller.config.util.xml.XmlMappingConstants;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.controller.config.util.xml.XmlMappingConstants;
 import org.opendaylight.controller.config.util.xml.XmlUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -59,7 +59,7 @@ public class ModuleConfig {
 
     public ModuleElementResolved fromXml(final XmlElement moduleElement, final ServiceRegistryWrapper depTracker,
             final String instanceName, final String moduleNamespace, final EditStrategyType defaultStrategy,
 
     public ModuleElementResolved fromXml(final XmlElement moduleElement, final ServiceRegistryWrapper depTracker,
             final String instanceName, final String moduleNamespace, final EditStrategyType defaultStrategy,
-            final Map<String, Map<Date, IdentityMapping>> identityMap, final EnumResolver enumResolver)
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap, final EnumResolver enumResolver)
             throws DocumentedException {
 
         InstanceConfigElementResolved ice = instanceConfig.fromXml(moduleElement, depTracker, moduleNamespace,
             throws DocumentedException {
 
         InstanceConfigElementResolved ice = instanceConfig.fromXml(moduleElement, depTracker, moduleNamespace,
index 868a5d859196ba7c5b681271e44e19fb645a79c9..8e97d76993e25eb7200a7b6ef04a48ece91829bf 100644 (file)
@@ -12,7 +12,7 @@ import java.util.Set;
 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 
 public interface YangStoreContext {
 
 
 public interface YangStoreContext {
 
@@ -38,7 +38,7 @@ public interface YangStoreContext {
      */
     Set<Module> getModules();
 
      */
     Set<Module> getModules();
 
-    String getModuleSource(ModuleIdentifier moduleIdentifier);
+    String getModuleSource(SourceIdentifier moduleIdentifier);
 
     EnumResolver getEnumResolver();
 }
 
     EnumResolver getEnumResolver();
 }
index 4eef7ee39eaeae9143214c45e343bf2f2e0a5a47..02865c2163c9a075dc134ffab79d45d920d7bbcc 100644 (file)
@@ -26,8 +26,9 @@ import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
 
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
 
@@ -94,7 +95,7 @@ public class YangStoreService implements YangStoreContext {
     }
 
     @Override
     }
 
     @Override
-    public String getModuleSource(final ModuleIdentifier moduleIdentifier) {
+    public String getModuleSource(final SourceIdentifier moduleIdentifier) {
         return this.snap.getModuleSource(moduleIdentifier);
     }
 
         return this.snap.getModuleSource(moduleIdentifier);
     }
 
@@ -146,6 +147,7 @@ public class YangStoreService implements YangStoreContext {
 
     private static Set<Capability> toCapabilities(final Set<Module> modules, final YangStoreContext current) {
         return ImmutableSet.copyOf(Collections2.transform(modules,
 
     private static Set<Capability> toCapabilities(final Set<Module> modules, final YangStoreContext current) {
         return ImmutableSet.copyOf(Collections2.transform(modules,
-            input -> new YangModuleCapability(input, current.getModuleSource(input))));
+            input -> new YangModuleCapability(input, current.getModuleSource(
+                RevisionSourceIdentifier.create(input.getName(), input.getRevision())))));
     }
 }
     }
 }
index ce34496810a2356b04b593bfd43dfc5c4bf1f6a8..452054518e54ed96b8026a3d20bf0015eeaa2faf 100644 (file)
@@ -8,13 +8,12 @@
 
 package org.opendaylight.controller.config.facade.xml.osgi;
 
 
 package org.opendaylight.controller.config.facade.xml.osgi;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.google.common.io.ByteStreams;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.google.common.io.ByteStreams;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.ref.SoftReference;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.ref.SoftReference;
@@ -25,6 +24,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
 import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
+import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.PackageTranslator;
 import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
 import org.opendaylight.controller.config.yangjmxgenerator.PackageTranslator;
 import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
@@ -35,7 +35,7 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
@@ -151,17 +151,15 @@ public final class YangStoreSnapshot implements YangStoreContext, EnumResolver {
     }
 
     @Override
     }
 
     @Override
-    public String getModuleSource(final org.opendaylight.yangtools.yang.model.api.ModuleIdentifier moduleIdentifier) {
-        final CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> source = this.sourceProvider
-                .getSource(SourceIdentifier.create(moduleIdentifier.getName(),
-                        Optional.fromNullable(QName.formattedRevision(moduleIdentifier.getRevision()))));
-
+    public String getModuleSource(final SourceIdentifier moduleIdentifier) {
+        final ListenableFuture<? extends YangTextSchemaSource> source = this.sourceProvider.getSource(
+            RevisionSourceIdentifier.create(moduleIdentifier.getName(), moduleIdentifier.getRevision()));
         try {
         try {
-            final YangTextSchemaSource yangTextSchemaSource = source.checkedGet();
+            final YangTextSchemaSource yangTextSchemaSource = source.get();
             try (InputStream inStream = yangTextSchemaSource.openStream()) {
                 return new String(ByteStreams.toByteArray(inStream), StandardCharsets.UTF_8);
             }
             try (InputStream inStream = yangTextSchemaSource.openStream()) {
                 return new String(ByteStreams.toByteArray(inStream), StandardCharsets.UTF_8);
             }
-        } catch (SchemaSourceException | IOException e) {
+        } catch (ExecutionException | InterruptedException | IOException e) {
             LOG.warn("Unable to provide source for {}", moduleIdentifier, e);
             throw new IllegalArgumentException("Unable to provide source for " + moduleIdentifier, e);
         }
             LOG.warn("Unable to provide source for {}", moduleIdentifier, e);
             throw new IllegalArgumentException("Unable to provide source for " + moduleIdentifier, e);
         }
index e0c78f8d48d702bf7e6250d3041f9376338df6e8..8c101be4f55e9271f3d5db47338a48b7bd0c8b54 100644 (file)
@@ -8,9 +8,9 @@
 
 package org.opendaylight.controller.config.facade.xml.rpc;
 
 
 package org.opendaylight.controller.config.facade.xml.rpc;
 
+import com.google.common.base.Optional;
 import com.google.common.collect.Maps;
 import java.util.Collections;
 import com.google.common.collect.Maps;
 import java.util.Collections;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -27,6 +27,7 @@ import org.opendaylight.controller.config.util.xml.XmlElement;
 import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry.Rpc;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.JavaAttribute;
 import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry.Rpc;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.JavaAttribute;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public final class InstanceRuntimeRpc {
 
 
 public final class InstanceRuntimeRpc {
 
@@ -75,7 +76,7 @@ public final class InstanceRuntimeRpc {
 
         // FIXME add identity map to runtime data
         Map<String, AttributeReadingStrategy> strats = new ObjectXmlReader().prepareReading(yangToAttrConfig,
 
         // FIXME add identity map to runtime data
         Map<String, AttributeReadingStrategy> strats = new ObjectXmlReader().prepareReading(yangToAttrConfig,
-                Collections.<String, Map<Date, IdentityMapping>>emptyMap());
+                Collections.<String, Map<Optional<Revision>, IdentityMapping>>emptyMap());
 
         for (Entry<String, AttributeReadingStrategy> readStratEntry : strats.entrySet()) {
             List<XmlElement> configNodes = configRootNode.getChildElements(readStratEntry.getKey());
 
         for (Entry<String, AttributeReadingStrategy> readStratEntry : strats.entrySet()) {
             List<XmlElement> configNodes = configRootNode.getChildElements(readStratEntry.getKey());
index 18ba37eace503a96104e23ef63089e885b99d96c..d704d63037b1fe5874dbf1fb5f95dc013621ed7e 100644 (file)
@@ -8,25 +8,13 @@
 
 package org.opendaylight.controller.config.facade.xml.util;
 
 
 package org.opendaylight.controller.config.facade.xml.util;
 
-import static org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil.getRevisionFormat;
-
 import com.google.common.base.Preconditions;
 import com.google.common.base.Preconditions;
-import java.text.ParseException;
-import java.util.Date;
 
 public final class Util {
 
     private Util() {
     }
 
 
 public final class Util {
 
     private Util() {
     }
 
-    public static String writeDate(final Date date) {
-        return getRevisionFormat().format(date);
-    }
-
-    public static Date readDate(final String string) throws ParseException {
-        return getRevisionFormat().parse(string);
-    }
-
     public static void checkType(final Object value, final Class<?> clazz) {
         Preconditions.checkArgument(clazz.isAssignableFrom(value.getClass()),
                 "Unexpected type " + value.getClass() + " should be " + clazz + " of " + value);
     public static void checkType(final Object value, final Class<?> clazz) {
         Preconditions.checkArgument(clazz.isAssignableFrom(value.getClass()),
                 "Unexpected type " + value.getClass() + " should be " + clazz + " of " + value);
index bf678ffed451f4c99214076b2cdce93d0bd6c89b..60d2118bdf022b0cabd57958731462511e103e2c 100644 (file)
@@ -10,40 +10,37 @@ package org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml
 
 import static org.junit.Assert.assertEquals;
 
 
 import static org.junit.Assert.assertEquals;
 
+import com.google.common.base.Optional;
 import com.google.common.collect.Maps;
 import java.net.URI;
 import java.util.Collections;
 import com.google.common.collect.Maps;
 import java.net.URI;
 import java.util.Collections;
-import java.util.Date;
 import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.controller.config.facade.xml.mapping.IdentityMapping;
 import org.opendaylight.controller.config.util.xml.XmlElement;
 import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.controller.config.facade.xml.mapping.IdentityMapping;
 import org.opendaylight.controller.config.util.xml.XmlElement;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public class SimpleIdentityRefAttributeReadingStrategyTest {
 
     @Test
     public void testReadIdRef() throws Exception {
 
 public class SimpleIdentityRefAttributeReadingStrategyTest {
 
     @Test
     public void testReadIdRef() throws Exception {
-        final Map<String, Map<Date, IdentityMapping>> identityMapping = Maps.newHashMap();
+        final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMapping = Maps.newHashMap();
         final IdentityMapping value = new IdentityMapping();
         final IdentityMapping value = new IdentityMapping();
-        final Date rev = new Date();
+        final Optional<Revision> rev = Optional.of(Revision.of("2017-10-10"));
         identityMapping.put("namespace", Collections.singletonMap(rev, value));
         identityMapping.put("inner", Collections.singletonMap(rev, value));
         final SimpleIdentityRefAttributeReadingStrategy key = new SimpleIdentityRefAttributeReadingStrategy(null, "key",
                 identityMapping);
 
         String read = key.readElementContent(XmlElement.fromString("<el xmlns=\"namespace\">local</el>"));
         identityMapping.put("namespace", Collections.singletonMap(rev, value));
         identityMapping.put("inner", Collections.singletonMap(rev, value));
         final SimpleIdentityRefAttributeReadingStrategy key = new SimpleIdentityRefAttributeReadingStrategy(null, "key",
                 identityMapping);
 
         String read = key.readElementContent(XmlElement.fromString("<el xmlns=\"namespace\">local</el>"));
-        assertEquals(
-                org.opendaylight.yangtools.yang.common.QName.create(URI.create("namespace"), rev, "local").toString(),
-                read);
+        assertEquals(QName.create(URI.create("namespace"), rev.toJavaUtil(), "local").toString(), read);
 
         read = key.readElementContent(XmlElement.fromString("<el xmlns:a=\"inner\" xmlns=\"namespace\">a:local</el>"));
 
         read = key.readElementContent(XmlElement.fromString("<el xmlns:a=\"inner\" xmlns=\"namespace\">a:local</el>"));
-        assertEquals(org.opendaylight.yangtools.yang.common.QName.create(URI.create("inner"), rev, "local").toString(),
-                read);
+        assertEquals(QName.create(URI.create("inner"), rev.toJavaUtil(), "local").toString(), read);
 
         read = key.readElementContent(
 
         read = key.readElementContent(
-                XmlElement.fromString("<top xmlns=\"namespace\"><el>local</el></top>").getOnlyChildElement());
-        assertEquals(
-                org.opendaylight.yangtools.yang.common.QName.create(URI.create("namespace"), rev, "local").toString(),
-                read);
+            XmlElement.fromString("<top xmlns=\"namespace\"><el>local</el></top>").getOnlyChildElement());
+        assertEquals(QName.create(URI.create("namespace"), rev.toJavaUtil(), "local").toString(), read);
     }
 }
     }
 }
index 97042f2c7db67d19840b1b556ee3c1bccf5c3abc..d59232cf08de0904b55f75009756124d2117d5c0 100644 (file)
@@ -89,7 +89,7 @@ public class RefreshingSCPModuleInfoRegistry implements ModuleInfoRegistry, Auto
         }
 
         @Override
         }
 
         @Override
-        public void close() throws Exception {
+        public void close() {
             this.inner.close();
             // send modify event when a bundle disappears
             updateService();
             this.inner.close();
             // send modify event when a bundle disappears
             updateService();
index bfb606e9ac3e71970aedffb82f84fcc87c9852dd..28f6ce83c8256ea712489547a598c61d4cdb3dda 100644 (file)
@@ -19,6 +19,7 @@ import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
@@ -46,7 +47,7 @@ import org.opendaylight.controller.config.persist.api.Persister;
 import org.opendaylight.controller.config.spi.Module;
 import org.opendaylight.controller.config.util.ConfigRegistryClient;
 import org.opendaylight.controller.config.util.capability.Capability;
 import org.opendaylight.controller.config.spi.Module;
 import org.opendaylight.controller.config.util.ConfigRegistryClient;
 import org.opendaylight.controller.config.util.capability.Capability;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.w3c.dom.Element;
 
 public class ConfigPusherImplTest {
 import org.w3c.dom.Element;
 
 public class ConfigPusherImplTest {
@@ -71,7 +72,7 @@ public class ConfigPusherImplTest {
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
     @Before
     public void setUp() throws Exception {
         MockitoAnnotations.initMocks(this);
-        doReturn("content").when(yangStoreService).getModuleSource(any(ModuleIdentifier.class));
+        doReturn("content").when(yangStoreService).getModuleSource(any(SourceIdentifier.class));
         doReturn("mocked snapshot").when(mockedConfigSnapshot).toString();
         doReturn("<mocked-snapshot/>").when(mockedConfigSnapshot).getConfigSnapshot();
         doReturn(Collections.<Module>emptySet()).when(yangStoreService).getModules();
         doReturn("mocked snapshot").when(mockedConfigSnapshot).toString();
         doReturn("<mocked-snapshot/>").when(mockedConfigSnapshot).getConfigSnapshot();
         doReturn(Collections.<Module>emptySet()).when(yangStoreService).getModules();
index dcf16b34edf0cade4f3a867dffb65d5ac5a04803..521a09f92181ac298056f1a00507976e44c7db9e 100644 (file)
@@ -9,7 +9,7 @@
 package org.opendaylight.controller.config.util.capability;
 
 import com.google.common.base.Optional;
 package org.opendaylight.controller.config.util.capability;
 
 import com.google.common.base.Optional;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 
 /**
 import org.opendaylight.yangtools.yang.model.api.Module;
 
 /**
@@ -27,7 +27,7 @@ public final class YangModuleCapability extends BasicCapability {
         this.content = moduleContent;
         this.moduleName = module.getName();
         this.moduleNamespace = module.getNamespace().toString();
         this.content = moduleContent;
         this.moduleName = module.getName();
         this.moduleNamespace = module.getNamespace().toString();
-        this.revision = SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision());
+        this.revision = module.getRevision().map(Revision::toString).orElse(null);
     }
 
     @Override
     }
 
     @Override
@@ -36,8 +36,14 @@ public final class YangModuleCapability extends BasicCapability {
     }
 
     private static String toCapabilityURI(final Module module) {
     }
 
     private static String toCapabilityURI(final Module module) {
-        return String.valueOf(module.getNamespace()) + "?module="
-                + module.getName() + "&revision=" + SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision());
+        final StringBuilder sb = new StringBuilder();
+        sb.append(module.getNamespace()).append("?module=").append(module.getName());
+
+        final java.util.Optional<Revision> rev = module.getRevision();
+        if (rev.isPresent()) {
+            sb.append("&revision=").append(rev.get());
+        }
+        return sb.toString();
     }
 
     @Override
     }
 
     @Override
index 34480b9d1086e77a0bc99295f199781f4767c9ff..18eb601747ca02ab32d826a02c046347f1f79f12 100644 (file)
@@ -9,19 +9,20 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
 import com.google.common.io.Files;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import com.google.common.io.Files;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Set;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.maven.project.MavenProject;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.maven.project.MavenProject;
@@ -80,15 +81,15 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
     }
 
     @Override
     }
 
     @Override
-    public Collection<File> generateSources(final SchemaContext context,
-                                            final File outputBaseDir, final Set<Module> yangModulesInCurrentMavenModule) {
+    public Collection<File> generateSources(final SchemaContext context, final File outputBaseDir,
+            final Set<Module> currentModules, final Function<Module, Optional<String>> moduleResourcePathResolver) {
 
         Preconditions.checkArgument(context != null, "Null context received");
         Preconditions.checkArgument(outputBaseDir != null,
                 "Null outputBaseDir received");
 
         Preconditions
 
         Preconditions.checkArgument(context != null, "Null context received");
         Preconditions.checkArgument(outputBaseDir != null,
                 "Null outputBaseDir received");
 
         Preconditions
-                .checkArgument((this.namespaceToPackageMapping != null) && !this.namespaceToPackageMapping.isEmpty(),
+                .checkArgument(this.namespaceToPackageMapping != null && !this.namespaceToPackageMapping.isEmpty(),
                         "No namespace to package mapping provided in additionalConfiguration");
 
         final PackageTranslator packageTranslator = new PackageTranslator(this.namespaceToPackageMapping);
                         "No namespace to package mapping provided in additionalConfiguration");
 
         final PackageTranslator packageTranslator = new PackageTranslator(this.namespaceToPackageMapping);
@@ -117,7 +118,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
                                 + sieEntry.getValue());
                 }
             }
                                 + sieEntry.getValue());
                 }
             }
-            if (yangModulesInCurrentMavenModule.contains(module)) {
+            if (currentModules.contains(module)) {
                 // write this sie to disk
                 for (final ServiceInterfaceEntry sie : namesToSIEntries.values()) {
                     try {
                 // write this sie to disk
                 for (final ServiceInterfaceEntry sie : namesToSIEntries.values()) {
                     try {
@@ -138,7 +139,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
 
         final StringBuilder fullyQualifiedNamesOfFactories = new StringBuilder();
         // create MBEs
 
         final StringBuilder fullyQualifiedNamesOfFactories = new StringBuilder();
         // create MBEs
-        for (final Module module : yangModulesInCurrentMavenModule) {
+        for (final Module module : currentModules) {
             final String packageName = packageTranslator.getPackageName(module);
             final Map<String /* MB identity local name */, ModuleMXBeanEntry> namesToMBEs = ModuleMXBeanEntry
                     .create(module, qNamesToSIEs, context, new TypeProviderWrapper(new TypeProviderImpl(context)),
             final String packageName = packageTranslator.getPackageName(module);
             final Map<String /* MB identity local name */, ModuleMXBeanEntry> namesToMBEs = ModuleMXBeanEntry
                     .create(module, qNamesToSIEs, context, new TypeProviderWrapper(new TypeProviderImpl(context)),
@@ -162,7 +163,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
             }
         }
         // create ModuleFactory file if needed
             }
         }
         // create ModuleFactory file if needed
-        if ((fullyQualifiedNamesOfFactories.length() > 0)
+        if (fullyQualifiedNamesOfFactories.length() > 0
                 && this.generateModuleFactoryFile) {
             final File serviceLoaderFile = JMXGenerator.concatFolders(
                     this.resourceBaseDir, "META-INF", "services",
                 && this.generateModuleFactoryFile) {
             final File serviceLoaderFile = JMXGenerator.concatFolders(
                     this.resourceBaseDir, "META-INF", "services",
@@ -171,7 +172,8 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
             serviceLoaderFile.getParentFile().mkdirs();
             try {
                 serviceLoaderFile.createNewFile();
             serviceLoaderFile.getParentFile().mkdirs();
             try {
                 serviceLoaderFile.createNewFile();
-                Files.write(fullyQualifiedNamesOfFactories.toString(), serviceLoaderFile, StandardCharsets.UTF_8);
+                Files.asCharSink(serviceLoaderFile, StandardCharsets.UTF_8).write(
+                    fullyQualifiedNamesOfFactories.toString());
             } catch (final IOException e) {
                 final String message = "Cannot write to " + serviceLoaderFile;
                 LOG.error(message, e);
             } catch (final IOException e) {
                 final String message = "Cannot write to " + serviceLoaderFile;
                 LOG.error(message, e);
@@ -204,7 +206,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
 
     private static Map<String, String> extractNamespaceMapping(
             final Map<String, String> additionalCfg) {
 
     private static Map<String, String> extractNamespaceMapping(
             final Map<String, String> additionalCfg) {
-        final Map<String, String> namespaceToPackage = Maps.newHashMap();
+        final Map<String, String> namespaceToPackage = new HashMap<>();
         for (final String key : additionalCfg.keySet()) {
             if (key.startsWith(NAMESPACE_TO_PACKAGE_PREFIX)) {
                 final String mapping = additionalCfg.get(key);
         for (final String key : additionalCfg.keySet()) {
             if (key.startsWith(NAMESPACE_TO_PACKAGE_PREFIX)) {
                 final String mapping = additionalCfg.get(key);
@@ -237,24 +239,21 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
 
     @VisibleForTesting
     static class GeneratedFilesTracker {
 
     @VisibleForTesting
     static class GeneratedFilesTracker {
-        private final Set<File> files = Sets.newHashSet();
+        private final Set<File> files = new HashSet<>();
 
         void addFile(final File file) {
             if (this.files.contains(file)) {
 
         void addFile(final File file) {
             if (this.files.contains(file)) {
-                final List<File> undeletedFiles = Lists.newArrayList();
+                final List<File> undeletedFiles = new ArrayList<>();
                 for (final File presentFile : this.files) {
                     if (!presentFile.delete()) {
                         undeletedFiles.add(presentFile);
                     }
                 }
                 if (!undeletedFiles.isEmpty()) {
                 for (final File presentFile : this.files) {
                     if (!presentFile.delete()) {
                         undeletedFiles.add(presentFile);
                     }
                 }
                 if (!undeletedFiles.isEmpty()) {
-                    LOG.error(
-                            "Illegal state occurred: Unable to delete already generated files, undeleted files: {}",
+                    LOG.error("Illegal state occurred: Unable to delete already generated files, undeleted files: {}",
                             undeletedFiles);
                 }
                             undeletedFiles);
                 }
-                throw new IllegalStateException(
-                        "Name conflict in generated files, file" + file
-                                + " present twice");
+                throw new IllegalStateException("Name conflict in generated files, file" + file + " present twice");
             }
             this.files.add(file);
         }
             }
             this.files.add(file);
         }
index 8f00f908ef259b2df561d6949c649b51b61ee6d6..541c28a0c5b203f953f32130488f9fcf1dc4fdab 100644 (file)
@@ -21,12 +21,13 @@ import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnota
 import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
 import org.opendaylight.yangtools.yang.binding.annotations.ModuleQName;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
 import org.opendaylight.yangtools.yang.binding.annotations.ModuleQName;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 public class Annotation {
     final String name;
     final List<Parameter> params;
 
 
 public class Annotation {
     final String name;
     final List<Parameter> params;
 
-    public Annotation(String name, List<Parameter> params) {
+    public Annotation(final String name, final List<Parameter> params) {
         this.name = name;
         this.params = params;
     }
         this.name = name;
         this.params = params;
     }
@@ -39,7 +40,7 @@ public class Annotation {
         return params;
     }
 
         return params;
     }
 
-    public static Annotation createFromMap(Class<?> annotationClass, Map<String, String> parameters) {
+    public static Annotation createFromMap(final Class<?> annotationClass, final Map<String, String> parameters) {
         List<Parameter> parameterList = new ArrayList<>();
         for(Entry<String, String> entry: parameters.entrySet()) {
             parameterList.add(new Parameter(entry.getKey(), entry.getValue()));
         List<Parameter> parameterList = new ArrayList<>();
         for(Entry<String, String> entry: parameters.entrySet()) {
             parameterList.add(new Parameter(entry.getKey(), entry.getValue()));
@@ -47,22 +48,22 @@ public class Annotation {
         return new Annotation(annotationClass.getCanonicalName(), parameterList);
     }
 
         return new Annotation(annotationClass.getCanonicalName(), parameterList);
     }
 
-    public static Annotation createDescriptionAnnotation(String description) {
+    public static Annotation createDescriptionAnnotation(final String description) {
         Preconditions.checkNotNull(description,
                 "Cannot create annotation from null description");
         return new Annotation(Description.class.getCanonicalName(),
                 Lists.newArrayList(new Parameter("value", q(description))));
     }
 
         Preconditions.checkNotNull(description,
                 "Cannot create annotation from null description");
         return new Annotation(Description.class.getCanonicalName(),
                 Lists.newArrayList(new Parameter("value", q(description))));
     }
 
-    public static Annotation createModuleQNameANnotation(QName qName) {
+    public static Annotation createModuleQNameANnotation(final QName qName) {
         Map<String, String> parameters = new HashMap<>();
         parameters.put("namespace", q(qName.getNamespace().toString()));
         Map<String, String> parameters = new HashMap<>();
         parameters.put("namespace", q(qName.getNamespace().toString()));
-        parameters.put("revision", q(qName.getFormattedRevision()));
+        parameters.put("revision", q(qName.getRevision().map(Revision::toString).orElse(null)));
         parameters.put("name", q(qName.getLocalName()));
         return Annotation.createFromMap(ModuleQName.class, parameters);
     }
 
         parameters.put("name", q(qName.getLocalName()));
         return Annotation.createFromMap(ModuleQName.class, parameters);
     }
 
-    public static Collection<Annotation> createSieAnnotations(ServiceInterfaceEntry sie){
+    public static Collection<Annotation> createSieAnnotations(final ServiceInterfaceEntry sie){
 
         String exportedClassName = sie.getExportedOsgiClassName();
         Preconditions.checkNotNull(sie.getQName(),
 
         String exportedClassName = sie.getExportedOsgiClassName();
         Preconditions.checkNotNull(sie.getQName(),
@@ -75,7 +76,7 @@ public class Annotation {
             params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class"));
             params.add(new Parameter("registerToOsgi", Boolean.toString(sie.isRegisterToOsgi())));
             params.add(new Parameter("namespace", q(sie.getQName().getNamespace().toString())));
             params.add(new Parameter("osgiRegistrationType", exportedClassName + ".class"));
             params.add(new Parameter("registerToOsgi", Boolean.toString(sie.isRegisterToOsgi())));
             params.add(new Parameter("namespace", q(sie.getQName().getNamespace().toString())));
-            params.add(new Parameter("revision", q(sie.getQName().getFormattedRevision())));
+            params.add(new Parameter("revision", q(sie.getQName().getRevision().map(Revision::toString).orElse(null))));
             params.add(new Parameter("localName", q(sie.getQName().getLocalName())));
 
             Annotation sieAnnotation = new Annotation(ServiceInterfaceAnnotation.class.getCanonicalName(), params);
             params.add(new Parameter("localName", q(sie.getQName().getLocalName())));
 
             Annotation sieAnnotation = new Annotation(ServiceInterfaceAnnotation.class.getCanonicalName(), params);
@@ -85,7 +86,8 @@ public class Annotation {
         {
             List<Parameter> params = new ArrayList<>();
             params.add(new Parameter("namespace", q(sie.getYangModuleQName().getNamespace().toString())));
         {
             List<Parameter> params = new ArrayList<>();
             params.add(new Parameter("namespace", q(sie.getYangModuleQName().getNamespace().toString())));
-            params.add(new Parameter("revision", q(sie.getYangModuleQName().getFormattedRevision())));
+            params.add(new Parameter("revision", q(sie.getYangModuleQName().getRevision()
+                .map(Revision::toString).orElse(null))));
             params.add(new Parameter("name", q(sie.getYangModuleQName().getLocalName())));
 
             Annotation moduleQNameAnnotation = new Annotation(ModuleQName.class.getCanonicalName(), params);
             params.add(new Parameter("name", q(sie.getYangModuleQName().getLocalName())));
 
             Annotation moduleQNameAnnotation = new Annotation(ModuleQName.class.getCanonicalName(), params);
@@ -95,7 +97,7 @@ public class Annotation {
     }
 
     public static Annotation createRequireIfcAnnotation(
     }
 
     public static Annotation createRequireIfcAnnotation(
-            ServiceInterfaceEntry sie) {
+            final ServiceInterfaceEntry sie) {
         String reqIfc = sie.getFullyQualifiedName() + ".class";
         return new Annotation(RequireInterface.class.getCanonicalName(),
                 Lists.newArrayList(new Parameter("value", reqIfc)));
         String reqIfc = sie.getFullyQualifiedName() + ".class";
         return new Annotation(RequireInterface.class.getCanonicalName(),
                 Lists.newArrayList(new Parameter("value", reqIfc)));
@@ -103,15 +105,14 @@ public class Annotation {
 
     private static final String quote = "\"";
 
 
     private static final String quote = "\"";
 
-    public static String q(String nullableDescription) {
-        return nullableDescription == null ? null : quote + nullableDescription
-                + quote;
+    public static String q(final String nullableDescription) {
+        return nullableDescription == null ? null : quote + nullableDescription + quote;
     }
 
     public static class Parameter {
         private final String key, value;
 
     }
 
     public static class Parameter {
         private final String key, value;
 
-        public Parameter(String key, String value) {
+        public Parameter(final String key, final String value) {
             this.key = key;
             this.value = value;
         }
             this.key = key;
             this.value = value;
         }
index 3a820fdd0c53f61fbd17ec548782493eae4c98fe..de868d6e89c81abf0c11b507f09f860d9061235a 100644 (file)
@@ -13,7 +13,8 @@ import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.Sets;
+import com.google.common.collect.ImmutableSet;
+import java.util.Optional;
 import org.junit.Test;
 import org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants;
 import org.opendaylight.controller.config.yangjmxgenerator.PackageTranslatorTest;
 import org.junit.Test;
 import org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants;
 import org.opendaylight.controller.config.yangjmxgenerator.PackageTranslatorTest;
@@ -35,8 +36,8 @@ public class JMXGeneratorFileNamesValidationTest extends JMXGeneratorTest {
         map.put(JMXGenerator.MODULE_FACTORY_FILE_BOOLEAN, "randomValue");
         jmxGenerator.setAdditionalConfig(map);
         try {
         map.put(JMXGenerator.MODULE_FACTORY_FILE_BOOLEAN, "randomValue");
         jmxGenerator.setAdditionalConfig(map);
         try {
-            jmxGenerator.generateSources(context, outputBaseDir,
-                    Sets.newHashSet(testFilesModule, testFiles1Module));
+            jmxGenerator.generateSources(context, outputBaseDir, ImmutableSet.of(testFilesModule, testFiles1Module),
+                m -> Optional.empty());
             fail();
         } catch (RuntimeException e) {
             final Throwable cause = e.getCause();
             fail();
         } catch (RuntimeException e) {
             final Throwable cause = e.getCause();
index 61647c45e72ac3290534df0cabbd6da3559c80bb..c306a1bbd119277cbefb3e23372d44e716410bd4 100644 (file)
@@ -17,6 +17,7 @@ import static org.junit.Assert.fail;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.opendaylight.controller.config.yangjmxgenerator.PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.opendaylight.controller.config.yangjmxgenerator.PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX;
+
 import com.github.javaparser.JavaParser;
 import com.github.javaparser.ParseException;
 import com.github.javaparser.ast.CompilationUnit;
 import com.github.javaparser.JavaParser;
 import com.github.javaparser.ParseException;
 import com.github.javaparser.ast.CompilationUnit;
@@ -31,6 +32,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import java.util.Set;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -106,8 +108,8 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
 
     @Test
     public void generateSIsMBsTest() {
 
     @Test
     public void generateSIsMBsTest() {
-        Collection<File> files = jmxGenerator.generateSources(context,
-                outputBaseDir, context.getModules());
+        Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir, context.getModules(),
+            m -> Optional.empty());
         List<String> expectedFileNames = new ArrayList<>();
         expectedFileNames
                 .addAll(ServiceInterfaceEntryTest.expectedSIEFileNames);
         List<String> expectedFileNames = new ArrayList<>();
         expectedFileNames
                 .addAll(ServiceInterfaceEntryTest.expectedSIEFileNames);
@@ -147,8 +149,8 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
 
     @Test
     public void generateSIEsTest() throws IOException, ParseException {
 
     @Test
     public void generateSIEsTest() throws IOException, ParseException {
-        Collection<File> files = jmxGenerator.generateSources(context,
-                outputBaseDir, Collections.singleton(threadsModule));
+        Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
+            Collections.singleton(threadsModule), m -> Optional.empty());
         assertEquals(ServiceInterfaceEntryTest.expectedSIEFileNames, toFileNames(files));
 
         for (File file : files) {
         assertEquals(ServiceInterfaceEntryTest.expectedSIEFileNames, toFileNames(files));
 
         for (File file : files) {
@@ -205,7 +207,7 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
         jmxGenerator.setAdditionalConfig(map);
 
         Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
         jmxGenerator.setAdditionalConfig(map);
 
         Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
-            Collections.singleton(bgpListenerJavaModule));
+            Collections.singleton(bgpListenerJavaModule), m -> Optional.empty());
 
         assertEquals(expectedGenerateMBEsListNames, toFileNames(files));
     }
 
         assertEquals(expectedGenerateMBEsListNames, toFileNames(files));
     }
@@ -217,7 +219,7 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
         jmxGenerator.setAdditionalConfig(map);
 
         Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
         jmxGenerator.setAdditionalConfig(map);
 
         Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
-            Collections.singleton(threadsJavaModule));
+            Collections.singleton(threadsJavaModule), m -> Optional.empty());
 
         assertEquals(expectedModuleFileNames, toFileNames(files));
 
 
         assertEquals(expectedModuleFileNames, toFileNames(files));
 
index 3d50ac3fe4e1dc59cf918edc28aba8059eae9eed..ebddb4ff81e3caf0f26a704b7b265b62fa69da99 100644 (file)
@@ -73,8 +73,8 @@ public class ModuleMXBeanEntry extends AbstractEntry {
     private Collection<RuntimeBeanEntry> runtimeBeans;
     private String nullableDummyContainerName;
 
     private Collection<RuntimeBeanEntry> runtimeBeans;
     private String nullableDummyContainerName;
 
-    ModuleMXBeanEntry(ModuleMXBeanEntryInitial initials, Map<String, AttributeIfc> yangToAttributes,
-            Map<String, QName> providedServices2, Collection<RuntimeBeanEntry> runtimeBeans) {
+    ModuleMXBeanEntry(final ModuleMXBeanEntryInitial initials, final Map<String, AttributeIfc> yangToAttributes,
+            final Map<String, QName> providedServices2, final Collection<RuntimeBeanEntry> runtimeBeans) {
         this.yangToAttributes = yangToAttributes;
         this.providedServices = Collections.unmodifiableMap(providedServices2);
         this.runtimeBeans = runtimeBeans;
         this.yangToAttributes = yangToAttributes;
         this.providedServices = Collections.unmodifiableMap(providedServices2);
         this.runtimeBeans = runtimeBeans;
@@ -101,7 +101,7 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return ABSTRACT_PREFIX + getStubModuleName();
     }
 
         return ABSTRACT_PREFIX + getStubModuleName();
     }
 
-    public String getFullyQualifiedName(String typeName) {
+    public String getFullyQualifiedName(final String typeName) {
         return FullyQualifiedNameHelper.getFullyQualifiedName(initial.packageName,
                 typeName);
     }
         return FullyQualifiedNameHelper.getFullyQualifiedName(initial.packageName,
                 typeName);
     }
@@ -123,7 +123,7 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return providedServices;
     }
 
         return providedServices;
     }
 
-    public void setRuntimeBeans(Collection<RuntimeBeanEntry> newRuntimeBeans) {
+    public void setRuntimeBeans(final Collection<RuntimeBeanEntry> newRuntimeBeans) {
         runtimeBeans = newRuntimeBeans;
     }
 
         runtimeBeans = newRuntimeBeans;
     }
 
@@ -147,10 +147,10 @@ public class ModuleMXBeanEntry extends AbstractEntry {
      *         instances as values
      */
     public static Map<String/* identity local name */, ModuleMXBeanEntry> create(
      *         instances as values
      */
     public static Map<String/* identity local name */, ModuleMXBeanEntry> create(
-            Module currentModule,
-            Map<QName, ServiceInterfaceEntry> qNamesToSIEs,
-            SchemaContext schemaContext,
-            TypeProviderWrapper typeProviderWrapper, String packageName) {
+            final Module currentModule,
+            final Map<QName, ServiceInterfaceEntry> qNamesToSIEs,
+            final SchemaContext schemaContext,
+            final TypeProviderWrapper typeProviderWrapper, final String packageName) {
 
         ModuleMXBeanEntryBuilder builder = new ModuleMXBeanEntryBuilder().setModule(currentModule).setqNamesToSIEs(qNamesToSIEs)
                 .setSchemaContext(schemaContext).setTypeProviderWrapper(typeProviderWrapper)
 
         ModuleMXBeanEntryBuilder builder = new ModuleMXBeanEntryBuilder().setModule(currentModule).setqNamesToSIEs(qNamesToSIEs)
                 .setSchemaContext(schemaContext).setTypeProviderWrapper(typeProviderWrapper)
@@ -163,7 +163,7 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return yangToAttributes;
     }
 
         return yangToAttributes;
     }
 
-    void setYangToAttributes(Map<String, AttributeIfc> newAttributes) {
+    void setYangToAttributes(final Map<String, AttributeIfc> newAttributes) {
         this.yangToAttributes = newAttributes;
     }
 
         this.yangToAttributes = newAttributes;
     }
 
@@ -186,21 +186,21 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return nullableDummyContainerName;
     }
 
         return nullableDummyContainerName;
     }
 
-    public void setNullableDummyContainerName(String nullableDummyContainerName) {
+    public void setNullableDummyContainerName(final String nullableDummyContainerName) {
         this.nullableDummyContainerName = nullableDummyContainerName;
     }
 
 
     static final class ModuleMXBeanEntryInitial {
 
         this.nullableDummyContainerName = nullableDummyContainerName;
     }
 
 
     static final class ModuleMXBeanEntryInitial {
 
-        private String localName;
-        private String description;
-        private String packageName;
-        private String javaNamePrefix;
-        private String namespace;
-        private QName qName;
+        private final String localName;
+        private final String description;
+        private final String packageName;
+        private final String javaNamePrefix;
+        private final String namespace;
+        private final QName qName;
 
 
-        ModuleMXBeanEntryInitial(String localName, String description, String packageName, String javaNamePrefix, String namespace, QName qName) {
+        ModuleMXBeanEntryInitial(final String localName, final String description, final String packageName, final String javaNamePrefix, final String namespace, final QName qName) {
             this.localName = localName;
             this.description = description;
             this.packageName = packageName;
             this.localName = localName;
             this.description = description;
             this.packageName = packageName;
@@ -218,22 +218,22 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         private String namespace;
         private QName qName;
 
         private String namespace;
         private QName qName;
 
-        public ModuleMXBeanEntryInitialBuilder setPackageName(String packageName) {
+        public ModuleMXBeanEntryInitialBuilder setPackageName(final String packageName) {
             this.packageName = packageName;
             return this;
         }
 
             this.packageName = packageName;
             return this;
         }
 
-        public ModuleMXBeanEntryInitialBuilder setJavaNamePrefix(String javaNamePrefix) {
+        public ModuleMXBeanEntryInitialBuilder setJavaNamePrefix(final String javaNamePrefix) {
             this.javaNamePrefix = javaNamePrefix;
             return this;
         }
 
             this.javaNamePrefix = javaNamePrefix;
             return this;
         }
 
-        public ModuleMXBeanEntryInitialBuilder setNamespace(String namespace) {
+        public ModuleMXBeanEntryInitialBuilder setNamespace(final String namespace) {
             this.namespace = namespace;
             return this;
         }
 
             this.namespace = namespace;
             return this;
         }
 
-        public ModuleMXBeanEntryInitialBuilder setqName(QName qName) {
+        public ModuleMXBeanEntryInitialBuilder setqName(final QName qName) {
             this.qName = qName;
             return this;
         }
             this.qName = qName;
             return this;
         }
@@ -242,9 +242,9 @@ public class ModuleMXBeanEntry extends AbstractEntry {
             return new ModuleMXBeanEntry.ModuleMXBeanEntryInitial(localName, description, packageName, javaNamePrefix, namespace, qName);
         }
 
             return new ModuleMXBeanEntry.ModuleMXBeanEntryInitial(localName, description, packageName, javaNamePrefix, namespace, qName);
         }
 
-        public ModuleMXBeanEntryInitialBuilder setIdSchemaNode(IdentitySchemaNode idSchemaNode) {
+        public ModuleMXBeanEntryInitialBuilder setIdSchemaNode(final IdentitySchemaNode idSchemaNode) {
             this.localName = idSchemaNode.getQName().getLocalName();
             this.localName = idSchemaNode.getQName().getLocalName();
-            this.description = idSchemaNode.getDescription();
+            this.description = idSchemaNode.getDescription().orElse(null);
             return this;
         }
 
             return this;
         }
 
index 955e9b5f41949269f24d75da8434afaa3b10b64c..5f8f4e0cbbbcb89fcf47727f72f517fad485ba42 100644 (file)
@@ -37,8 +37,8 @@ import org.opendaylight.controller.config.yangjmxgenerator.attribute.TOAttribute
 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.NameConflictException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.ServiceRef;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.NameConflictException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.ServiceRef;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -131,12 +131,12 @@ final class ModuleMXBeanEntryBuilder {
 
         Map<String, ModuleMXBeanEntry> result = new HashMap<>();
 
 
         Map<String, ModuleMXBeanEntry> result = new HashMap<>();
 
-        for (AugmentationSchema augmentation : currentModule.getAugmentations()) {
+        for (AugmentationSchemaNode augmentation : currentModule.getAugmentations()) {
             Collection<DataSchemaNode> childNodes = augmentation.getChildNodes();
             Collection<DataSchemaNode> childNodes = augmentation.getChildNodes();
-            if (areAllChildrenChoiceCaseNodes(childNodes)) {
-                for (ChoiceCaseNode childCase : castChildNodesToChoiceCases(childNodes)) {
+            if (areAllChildrenCaseSchemaNodes(childNodes)) {
+                for (CaseSchemaNode childCase : castChildNodesToChoiceCases(childNodes)) {
                     // TODO refactor, extract to standalone builder class
                     // TODO refactor, extract to standalone builder class
-                    processChoiceCaseNode(result, uniqueGeneratedClassesNames, configModulePrefix, moduleIdentities,
+                    processCaseSchemaNode(result, uniqueGeneratedClassesNames, configModulePrefix, moduleIdentities,
                             unaugmentedModuleIdentities, augmentation, childCase);
                 }
             } // skip if child nodes are not all cases
                             unaugmentedModuleIdentities, augmentation, childCase);
                 }
             } // skip if child nodes are not all cases
@@ -172,7 +172,8 @@ final class ModuleMXBeanEntryBuilder {
         }
     }
 
         }
     }
 
-    private static void checkAttributeNamesUniqueness(final Map<String, QName> uniqueGeneratedClassesNames, final Map<String, ModuleMXBeanEntry> result) {
+    private static void checkAttributeNamesUniqueness(final Map<String, QName> uniqueGeneratedClassesNames,
+            final Map<String, ModuleMXBeanEntry> result) {
         for (Map.Entry<String, ModuleMXBeanEntry> entry : result.entrySet()) {
             checkUniqueRuntimeBeanAttributesName(entry.getValue(),
                     uniqueGeneratedClassesNames);
         for (Map.Entry<String, ModuleMXBeanEntry> entry : result.entrySet()) {
             checkUniqueRuntimeBeanAttributesName(entry.getValue(),
                     uniqueGeneratedClassesNames);
@@ -183,8 +184,8 @@ final class ModuleMXBeanEntryBuilder {
         Map<String, IdentitySchemaNode> moduleIdentities = Maps.newHashMap();
 
         for (IdentitySchemaNode id : currentModule.getIdentities()) {
         Map<String, IdentitySchemaNode> moduleIdentities = Maps.newHashMap();
 
         for (IdentitySchemaNode id : currentModule.getIdentities()) {
-            if (id.getBaseIdentity() != null
-                    && ConfigConstants.MODULE_TYPE_Q_NAME.equals(id.getBaseIdentity().getQName())) {
+            if (!id.getBaseIdentities().isEmpty()
+                    && ConfigConstants.MODULE_TYPE_Q_NAME.equals(id.getBaseIdentities().iterator().next().getQName())) {
                 String identityLocalName = id.getQName().getLocalName();
                 if (moduleIdentities.containsKey(identityLocalName)) {
                     throw new IllegalStateException("Module name already defined in this currentModule: "
                 String identityLocalName = id.getQName().getLocalName();
                 if (moduleIdentities.containsKey(identityLocalName)) {
                     throw new IllegalStateException("Module name already defined in this currentModule: "
@@ -217,37 +218,39 @@ final class ModuleMXBeanEntryBuilder {
         return moduleIdentities;
     }
 
         return moduleIdentities;
     }
 
-    private static Collection<ChoiceCaseNode> castChildNodesToChoiceCases(final Collection<DataSchemaNode> childNodes) {
-        return Collections2.transform(childNodes, new Function<DataSchemaNode, ChoiceCaseNode>() {
+    private static Collection<CaseSchemaNode> castChildNodesToChoiceCases(final Collection<DataSchemaNode> childNodes) {
+        return Collections2.transform(childNodes, new Function<DataSchemaNode, CaseSchemaNode>() {
             @Nullable
             @Override
             @Nullable
             @Override
-            public ChoiceCaseNode apply(@Nullable final DataSchemaNode input) {
-                return (ChoiceCaseNode) input;
+            public CaseSchemaNode apply(@Nullable final DataSchemaNode input) {
+                return (CaseSchemaNode) input;
             }
         });
     }
 
             }
         });
     }
 
-    private static boolean areAllChildrenChoiceCaseNodes(final Iterable<DataSchemaNode> childNodes) {
+    private static boolean areAllChildrenCaseSchemaNodes(final Iterable<DataSchemaNode> childNodes) {
         for (DataSchemaNode childNode : childNodes) {
         for (DataSchemaNode childNode : childNodes) {
-            if (childNode instanceof ChoiceCaseNode == false) {
+            if (childNode instanceof CaseSchemaNode == false) {
                 return false;
             }
         }
         return true;
     }
 
                 return false;
             }
         }
         return true;
     }
 
-    private <HAS_CHILDREN_AND_QNAME extends DataNodeContainer & SchemaNode> void processChoiceCaseNode(final Map<String, ModuleMXBeanEntry> result,
+    private <HAS_CHILDREN_AND_QNAME extends DataNodeContainer & SchemaNode> void processCaseSchemaNode(
+            final Map<String, ModuleMXBeanEntry> result,
             final Map<String, QName> uniqueGeneratedClassesNames, final String configModulePrefix,
             final Map<String, IdentitySchemaNode> moduleIdentities,
             final Map<String, QName> uniqueGeneratedClassesNames, final String configModulePrefix,
             final Map<String, IdentitySchemaNode> moduleIdentities,
-            final Map<String, IdentitySchemaNode> unaugmentedModuleIdentities, final AugmentationSchema augmentation,
-            final DataSchemaNode when) {
+            final Map<String, IdentitySchemaNode> unaugmentedModuleIdentities,
+            final AugmentationSchemaNode augmentation, final DataSchemaNode when) {
 
 
-        ChoiceCaseNode choiceCaseNode = (ChoiceCaseNode) when;
-        if (choiceCaseNode.getConstraints() == null || choiceCaseNode.getConstraints().getWhenCondition() == null) {
+        CaseSchemaNode choiceCaseNode = (CaseSchemaNode) when;
+        if (!choiceCaseNode.getWhenCondition().isPresent()) {
             return;
         }
             return;
         }
-        RevisionAwareXPath xPath = choiceCaseNode.getConstraints().getWhenCondition();
-        Matcher matcher = getWhenConditionMatcher(configModulePrefix, xPath);
+        java.util.Optional<RevisionAwareXPath> xPath = choiceCaseNode.getWhenCondition();
+        checkState(xPath.isPresent(), "Choice node %s does not have a when condition", choiceCaseNode);
+        Matcher matcher = getWhenConditionMatcher(configModulePrefix, xPath.get());
         if (matcher.matches() == false) {
             return;
         }
         if (matcher.matches() == false) {
             return;
         }
@@ -384,7 +387,7 @@ final class ModuleMXBeanEntryBuilder {
      * @param choiceCaseNode state or configuration case statement
      * @return either choiceCaseNode or its only child container
      */
      * @param choiceCaseNode state or configuration case statement
      * @return either choiceCaseNode or its only child container
      */
-    private static <HAS_CHILDREN_AND_QNAME extends DataNodeContainer & SchemaNode> HAS_CHILDREN_AND_QNAME getDataNodeContainer(final ChoiceCaseNode choiceCaseNode) {
+    private static <HAS_CHILDREN_AND_QNAME extends DataNodeContainer & SchemaNode> HAS_CHILDREN_AND_QNAME getDataNodeContainer(final CaseSchemaNode choiceCaseNode) {
         Collection<DataSchemaNode> childNodes = choiceCaseNode.getChildNodes();
         if (childNodes.size() == 1) {
             DataSchemaNode onlyChild = childNodes.iterator().next();
         Collection<DataSchemaNode> childNodes = choiceCaseNode.getChildNodes();
         if (childNodes.size() == 1) {
             DataSchemaNode onlyChild = childNodes.iterator().next();
@@ -479,14 +482,14 @@ final class ModuleMXBeanEntryBuilder {
                             qNamesToSIEs, schemaContext);
                     LeafSchemaNode refine = (LeafSchemaNode) usesNode.getRefines().values().iterator().next();
 
                             qNamesToSIEs, schemaContext);
                     LeafSchemaNode refine = (LeafSchemaNode) usesNode.getRefines().values().iterator().next();
 
-                    boolean mandatory = refine.getConstraints().isMandatory();
+                    boolean mandatory = refine.isMandatory();
                     AbstractDependencyAttribute reference;
                     if (dataNodeContainer instanceof ContainerSchemaNode) {
                         reference = new DependencyAttribute(attrNode, serviceInterfaceEntry, mandatory,
                     AbstractDependencyAttribute reference;
                     if (dataNodeContainer instanceof ContainerSchemaNode) {
                         reference = new DependencyAttribute(attrNode, serviceInterfaceEntry, mandatory,
-                                attrNode.getDescription());
+                                attrNode.getDescription().orElse(null));
                     } else {
                         reference = new ListDependenciesAttribute(attrNode, serviceInterfaceEntry, mandatory,
                     } else {
                         reference = new ListDependenciesAttribute(attrNode, serviceInterfaceEntry, mandatory,
-                                attrNode.getDescription());
+                                attrNode.getDescription().orElse(null));
                     }
                     return Optional.of(reference);
                 }
                     }
                     return Optional.of(reference);
                 }
@@ -528,7 +531,7 @@ final class ModuleMXBeanEntryBuilder {
             // Module from SchemaContext
             String prefix = m.group(1);
             ModuleImport moduleImport = findModuleImport(currentModule, prefix);
             // Module from SchemaContext
             String prefix = m.group(1);
             ModuleImport moduleImport = findModuleImport(currentModule, prefix);
-            foundModule = schemaContext.findModuleByName(moduleImport.getModuleName(), moduleImport.getRevision());
+            foundModule = schemaContext.findModule(moduleImport.getModuleName(), moduleImport.getRevision()).orElse(null);
             checkNotNull(foundModule, format("Module not found in SchemaContext by %s", moduleImport));
             localSIName = m.group(2);
         } else {
             checkNotNull(foundModule, format("Module not found in SchemaContext by %s", moduleImport));
             localSIName = m.group(2);
         } else {
index 4cd0feb0868ef0d00e146c81bbd7c2259523254a..d7a806568054e8c05c025c78813106c309067637 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.controller.config.yangjmxgenerator;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.lang.String.format;
 import static org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants.SERVICE_TYPE_Q_NAME;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static java.lang.String.format;
 import static org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants.SERVICE_TYPE_Q_NAME;
+
 import com.google.common.base.Optional;
 import java.util.ArrayList;
 import java.util.HashMap;
 import com.google.common.base.Optional;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -56,12 +57,12 @@ public class ServiceInterfaceEntry extends AbstractEntry {
     private final QName yangModuleQName;
     private final boolean registerToOsgi;
 
     private final QName yangModuleQName;
     private final boolean registerToOsgi;
 
-    private ServiceInterfaceEntry(IdentitySchemaNode id, String packageName, QName yangModuleQName) {
+    private ServiceInterfaceEntry(final IdentitySchemaNode id, final String packageName, final QName yangModuleQName) {
         this(Optional.<ServiceInterfaceEntry> absent(), id, packageName, yangModuleQName);
     }
 
         this(Optional.<ServiceInterfaceEntry> absent(), id, packageName, yangModuleQName);
     }
 
-    private ServiceInterfaceEntry(Optional<ServiceInterfaceEntry> base,
-            IdentitySchemaNode id, String packageName, QName yangModuleQName) {
+    private ServiceInterfaceEntry(final Optional<ServiceInterfaceEntry> base,
+            final IdentitySchemaNode id, final String packageName, final QName yangModuleQName) {
         checkNotNull(base);
         this.maybeBaseCache = base;
         List<UnknownSchemaNode> unknownSchemaNodes = id.getUnknownSchemaNodes();
         checkNotNull(base);
         this.maybeBaseCache = base;
         List<UnknownSchemaNode> unknownSchemaNodes = id.getUnknownSchemaNodes();
@@ -93,13 +94,13 @@ public class ServiceInterfaceEntry extends AbstractEntry {
         this.registerToOsgi = !disableOsgiServiceRegistration;
         this.exportedOsgiClassName = exportedOsgiClassNames.get(0);
         qName = id.getQName();
         this.registerToOsgi = !disableOsgiServiceRegistration;
         this.exportedOsgiClassName = exportedOsgiClassNames.get(0);
         qName = id.getQName();
-        nullableDescription = id.getDescription();
+        nullableDescription = id.getDescription().orElse(null);
         typeName = getSimpleName(exportedOsgiClassName) + CLASS_NAME_SUFFIX;
         this.packageName = packageName;
         this.yangModuleQName = yangModuleQName;
     }
 
         typeName = getSimpleName(exportedOsgiClassName) + CLASS_NAME_SUFFIX;
         this.packageName = packageName;
         this.yangModuleQName = yangModuleQName;
     }
 
-    private static final String getSimpleName(String fullyQualifiedName) {
+    private static final String getSimpleName(final String fullyQualifiedName) {
         int lastDotPosition = fullyQualifiedName.lastIndexOf(".");
         return fullyQualifiedName.substring(lastDotPosition + 1);
     }
         int lastDotPosition = fullyQualifiedName.lastIndexOf(".");
         return fullyQualifiedName.substring(lastDotPosition + 1);
     }
@@ -128,8 +129,8 @@ public class ServiceInterfaceEntry extends AbstractEntry {
      * @return Map of QNames as keys and ServiceInterfaceEntry instances as
      *         values
      */
      * @return Map of QNames as keys and ServiceInterfaceEntry instances as
      *         values
      */
-    public static Map<QName, ServiceInterfaceEntry> create(Module currentModule,
-            String packageName,Map<IdentitySchemaNode, ServiceInterfaceEntry> definedSEItracker) {
+    public static Map<QName, ServiceInterfaceEntry> create(final Module currentModule,
+            final String packageName,final Map<IdentitySchemaNode, ServiceInterfaceEntry> definedSEItracker) {
         LOG.debug("Generating ServiceInterfaces from {} to package {}",
                 currentModule.getNamespace(), packageName);
 
         LOG.debug("Generating ServiceInterfaces from {} to package {}",
                 currentModule.getNamespace(), packageName);
 
@@ -149,17 +150,17 @@ public class ServiceInterfaceEntry extends AbstractEntry {
                     .hasNext();) {
                 IdentitySchemaNode identity = iterator.next();
                 ServiceInterfaceEntry created = null;
                     .hasNext();) {
                 IdentitySchemaNode identity = iterator.next();
                 ServiceInterfaceEntry created = null;
-                if (identity.getBaseIdentity() == null) {
+                if (identity.getBaseIdentities().isEmpty()) {
                     // this can happen while loading config module, just skip
                     // the identity
                     continue;
                     // this can happen while loading config module, just skip
                     // the identity
                     continue;
-                } else if (identity.getBaseIdentity().getQName()
+                } else if (identity.getBaseIdentities().iterator().next().getQName()
                         .equals(SERVICE_TYPE_Q_NAME)) {
                     // this is a base type
                     created = new ServiceInterfaceEntry(identity, packageName, ModuleUtil.getQName(currentModule));
                 } else {
                     ServiceInterfaceEntry foundBase = definedSEItracker
                         .equals(SERVICE_TYPE_Q_NAME)) {
                     // this is a base type
                     created = new ServiceInterfaceEntry(identity, packageName, ModuleUtil.getQName(currentModule));
                 } else {
                     ServiceInterfaceEntry foundBase = definedSEItracker
-                            .get(identity.getBaseIdentity());
+                            .get(identity.getBaseIdentities().iterator().next());
                     // derived type, did we convert the parent?
                     if (foundBase != null) {
                         created = new ServiceInterfaceEntry(
                     // derived type, did we convert the parent?
                     if (foundBase != null) {
                         created = new ServiceInterfaceEntry(
@@ -206,7 +207,7 @@ public class ServiceInterfaceEntry extends AbstractEntry {
     }
 
     @Override
     }
 
     @Override
-    public boolean equals(Object o) {
+    public boolean equals(final Object o) {
         if (this == o) {
             return true;
         }
         if (this == o) {
             return true;
         }
index 099d8ed152c39193f3bff03f3bcfbb19afdba60f..f1c23cb86e4e51554fce22f2aa9deb7b1d6646d0 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.controller.config.yangjmxgenerator.attribute;
 import com.google.common.base.Preconditions;
 import java.util.Arrays;
 import java.util.List;
 import com.google.common.base.Preconditions;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 import javax.management.openmbean.ArrayType;
 import javax.management.openmbean.CompositeType;
 import javax.management.openmbean.OpenDataException;
 import javax.management.openmbean.ArrayType;
 import javax.management.openmbean.CompositeType;
 import javax.management.openmbean.OpenDataException;
@@ -42,9 +43,17 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute {
 
         this.typeDefinition = CompatUtils.compatLeafType(leaf);
         this.typeProviderWrapper = typeProviderWrapper;
 
         this.typeDefinition = CompatUtils.compatLeafType(leaf);
         this.typeProviderWrapper = typeProviderWrapper;
-        this.nullableDefault = leaf.getDefault();
-        this.nullableDefaultWrappedForCode = leaf.getDefault() == null ? null : typeProviderWrapper.getDefault(leaf);
-        this.nullableDescription = leaf.getDescription();
+
+        final Optional<? extends Object> typeDefault = leaf.getType().getDefaultValue();
+        if (typeDefault.isPresent()) {
+            nullableDefault = (String) typeDefault.get();
+            nullableDefaultWrappedForCode = typeProviderWrapper.getDefault(leaf);
+        } else {
+            nullableDefault = null;
+            nullableDefaultWrappedForCode = null;
+        }
+
+        this.nullableDescription = leaf.getDescription().orElse(null);
     }
 
     public JavaAttribute(final LeafListSchemaNode leaf,
     }
 
     public JavaAttribute(final LeafListSchemaNode leaf,
@@ -54,7 +63,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute {
         this.typeDefinition = leaf.getType();
         this.typeProviderWrapper = typeProviderWrapper;
         this.nullableDefault = this.nullableDefaultWrappedForCode = null;
         this.typeDefinition = leaf.getType();
         this.typeProviderWrapper = typeProviderWrapper;
         this.nullableDefault = this.nullableDefaultWrappedForCode = null;
-        this.nullableDescription = leaf.getDescription();
+        this.nullableDescription = leaf.getDescription().orElse(null);
     }
 
     public boolean isUnion() {
     }
 
     public boolean isUnion() {
@@ -105,7 +114,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute {
         if (this == o) {
             return true;
         }
         if (this == o) {
             return true;
         }
-        if ((o == null) || (getClass() != o.getClass())) {
+        if (o == null || getClass() != o.getClass()) {
             return false;
         }
         if (!super.equals(o)) {
             return false;
         }
         if (!super.equals(o)) {
@@ -133,12 +142,12 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute {
     @Override
     public int hashCode() {
         int result = super.hashCode();
     @Override
     public int hashCode() {
         int result = super.hashCode();
-        result = (31 * result) + (this.type != null ? this.type.hashCode() : 0);
-        result = (31
-                * result)
+        result = 31 * result + (this.type != null ? this.type.hashCode() : 0);
+        result = 31
+                * result
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
-        result = (31 * result)
+        result = 31 * result
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
         return result;
     }
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
         return result;
     }
index f53beacf070bc31a3b9151e1d8f335b073f374d7..10971e7413aa84320560a273598354a1806893b8 100644 (file)
@@ -28,7 +28,7 @@ public class ListAttribute extends AbstractAttribute implements TypedAttribute {
 
         final TOAttribute innerAttribute = TOAttribute.create(node, typeProvider, packageName);
 
 
         final TOAttribute innerAttribute = TOAttribute.create(node, typeProvider, packageName);
 
-        return new ListAttribute(node, innerAttribute, node.getDescription());
+        return new ListAttribute(node, innerAttribute, node.getDescription().orElse(null));
     }
 
     public static ListAttribute create(final LeafListSchemaNode node,
     }
 
     public static ListAttribute create(final LeafListSchemaNode node,
@@ -36,7 +36,7 @@ public class ListAttribute extends AbstractAttribute implements TypedAttribute {
 
         final JavaAttribute innerAttribute = new JavaAttribute(node, typeProvider);
 
 
         final JavaAttribute innerAttribute = new JavaAttribute(node, typeProvider);
 
-        return new ListAttribute(node, innerAttribute, node.getDescription());
+        return new ListAttribute(node, innerAttribute, node.getDescription().orElse(null));
     }
 
     ListAttribute(final DataSchemaNode attrNode, final TypedAttribute innerAttribute,
     }
 
     ListAttribute(final DataSchemaNode attrNode, final TypedAttribute innerAttribute,
@@ -70,11 +70,11 @@ public class ListAttribute extends AbstractAttribute implements TypedAttribute {
     @Override
     public int hashCode() {
         int result = super.hashCode();
     @Override
     public int hashCode() {
         int result = super.hashCode();
-        result = (31
-                * result)
+        result = 31
+                * result
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
-        result = (31 * result)
+        result = 31 * result
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
         return result;
     }
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
         return result;
     }
@@ -84,7 +84,7 @@ public class ListAttribute extends AbstractAttribute implements TypedAttribute {
         if (this == o) {
             return true;
         }
         if (this == o) {
             return true;
         }
-        if ((o == null) || (getClass() != o.getClass())) {
+        if (o == null || getClass() != o.getClass()) {
             return false;
         }
         if (!super.equals(o)) {
             return false;
         }
         if (!super.equals(o)) {
index 5b7385800ef417674338d76ce708c6a09e50e6bf..2fa4379f031f7e3e29c46bdeb6944d8a8d13f471 100644 (file)
@@ -52,19 +52,16 @@ public class TOAttribute extends AbstractAttribute implements TypedAttribute {
         // Transfer Object: get the leaves
         final Map<String, AttributeIfc> map = new HashMap<>();
         final Map<String, String> attributeNameMap = new HashMap<>();
         // Transfer Object: get the leaves
         final Map<String, AttributeIfc> map = new HashMap<>();
         final Map<String, String> attributeNameMap = new HashMap<>();
-        for (final DataSchemaNode dataSchemaNode : containerSchemaNode
-                .getChildNodes()) {
+        for (final DataSchemaNode dataSchemaNode : containerSchemaNode.getChildNodes()) {
             try {
                 final String yangName = dataSchemaNode.getQName().getLocalName();
             try {
                 final String yangName = dataSchemaNode.getQName().getLocalName();
-                map.put(yangName,
-                        createInnerAttribute(dataSchemaNode,
-                                typeProviderWrapper, packageName));
+                map.put(yangName, createInnerAttribute(dataSchemaNode, typeProviderWrapper, packageName));
             } catch (final IllegalArgumentException e) {
                 throw new IllegalStateException("Unable to create TO", e);
             }
         }
         return new TOAttribute(containerSchemaNode, map, attributeNameMap,
             } catch (final IllegalArgumentException e) {
                 throw new IllegalStateException("Unable to create TO", e);
             }
         }
         return new TOAttribute(containerSchemaNode, map, attributeNameMap,
-                containerSchemaNode.getDescription(), packageName);
+                containerSchemaNode.getDescription().orElse(null), packageName);
     }
 
     private static AttributeIfc createInnerAttribute(
     }
 
     private static AttributeIfc createInnerAttribute(
@@ -73,17 +70,13 @@ public class TOAttribute extends AbstractAttribute implements TypedAttribute {
         final Class<? extends DataSchemaNode> type = isAllowedType(dataSchemaNode);
 
         if (type.equals(LeafSchemaNode.class)) {
         final Class<? extends DataSchemaNode> type = isAllowedType(dataSchemaNode);
 
         if (type.equals(LeafSchemaNode.class)) {
-            return new JavaAttribute((LeafSchemaNode) dataSchemaNode,
-                    typeProviderWrapper);
+            return new JavaAttribute((LeafSchemaNode) dataSchemaNode, typeProviderWrapper);
         } else if (type.equals(ListSchemaNode.class)) {
         } else if (type.equals(ListSchemaNode.class)) {
-            return ListAttribute.create((ListSchemaNode) dataSchemaNode,
-                    typeProviderWrapper, packageName);
+            return ListAttribute.create((ListSchemaNode) dataSchemaNode, typeProviderWrapper, packageName);
         } else if (type.equals(LeafListSchemaNode.class)) {
         } else if (type.equals(LeafListSchemaNode.class)) {
-            return ListAttribute.create((LeafListSchemaNode) dataSchemaNode,
-                    typeProviderWrapper);
+            return ListAttribute.create((LeafListSchemaNode) dataSchemaNode, typeProviderWrapper);
         } else if (type.equals(ContainerSchemaNode.class)) {
         } else if (type.equals(ContainerSchemaNode.class)) {
-            return TOAttribute.create((ContainerSchemaNode) dataSchemaNode,
-                    typeProviderWrapper, packageName);
+            return TOAttribute.create((ContainerSchemaNode) dataSchemaNode, typeProviderWrapper, packageName);
         }
 
         throw new IllegalStateException("This should never happen");
         }
 
         throw new IllegalStateException("This should never happen");
@@ -92,7 +85,7 @@ public class TOAttribute extends AbstractAttribute implements TypedAttribute {
     private static Class<? extends DataSchemaNode> isAllowedType(
             final DataSchemaNode dataSchemaNode) {
         for (final Class<? extends DataSchemaNode> allowedType : ALLOWED_CHILDREN) {
     private static Class<? extends DataSchemaNode> isAllowedType(
             final DataSchemaNode dataSchemaNode) {
         for (final Class<? extends DataSchemaNode> allowedType : ALLOWED_CHILDREN) {
-            if (allowedType.isAssignableFrom(dataSchemaNode.getClass()) == true) {
+            if (allowedType.isAssignableFrom(dataSchemaNode.getClass())) {
                 return allowedType;
             }
         }
                 return allowedType;
             }
         }
@@ -160,7 +153,7 @@ public class TOAttribute extends AbstractAttribute implements TypedAttribute {
         if (this == o) {
             return true;
         }
         if (this == o) {
             return true;
         }
-        if ((o == null) || (getClass() != o.getClass())) {
+        if (o == null || getClass() != o.getClass()) {
             return false;
         }
         if (!super.equals(o)) {
             return false;
         }
         if (!super.equals(o)) {
@@ -190,14 +183,14 @@ public class TOAttribute extends AbstractAttribute implements TypedAttribute {
     @Override
     public int hashCode() {
         int result = super.hashCode();
     @Override
     public int hashCode() {
         int result = super.hashCode();
-        result = (31
-                * result)
+        result = 31
+                * result
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
-        result = (31 * result)
+        result = 31 * result
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
-        result = (31
-                * result)
+        result = 31
+                * result
                 + (this.yangNameToAttributeMap != null ? this.yangNameToAttributeMap
                         .hashCode() : 0);
         return result;
                 + (this.yangNameToAttributeMap != null ? this.yangNameToAttributeMap
                         .hashCode() : 0);
         return result;
index 9a2322143393ee2c26a57c948925b3d449505d8e..c0e26688a650d5a77bbe92a122936e7f9dbdeb02 100644 (file)
@@ -10,7 +10,9 @@ package org.opendaylight.controller.config.yangjmxgenerator;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
+
 import com.google.common.base.Preconditions;
 import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Sets;
 import java.io.InputStream;
 import java.util.ArrayList;
 import com.google.common.collect.Sets;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -46,20 +48,20 @@ public abstract class AbstractYangTest {
 
     @Before
     public void loadYangFiles() throws Exception {
 
     @Before
     public void loadYangFiles() throws Exception {
-        final List<InputStream> yangISs = new ArrayList<>();
-        yangISs.addAll(getStreams("/test-config-threads.yang",
-                "/test-config-threads-java.yang",
-                "/config-bgp-listener-impl.yang", "/ietf-inet-types.yang",
-                "/config-jmx-it.yang", "/config-jmx-it-impl.yang",
-                "/test-config-files.yang", "/test-config-files1.yang"));
+        final List<String> yangResources = new ArrayList<>();
+        yangResources.add("/test-config-threads.yang");
+        yangResources.add("/test-config-threads-java.yang");
+        yangResources.add("/config-bgp-listener-impl.yang");
+        yangResources.add("/ietf-inet-types.yang");
+        yangResources.add("/config-jmx-it.yang");
+        yangResources.add("/config-jmx-it-impl.yang");
+        yangResources.add("/test-config-files.yang");
+        yangResources.add("/test-config-files1.yang");
 
 
-        yangISs.addAll(getConfigApiYangInputStreams());
+        yangResources.addAll(getConfigApiYangs());
+
+        this.context = YangParserTestUtils.parseYangResources(AbstractYangTest.class, yangResources);
 
 
-        this.context = YangParserTestUtils.parseYangStreams(yangISs);
-        // close ISs
-        for (final InputStream is : yangISs) {
-            is.close();
-        }
         this.namesToModules = YangModelSearchUtils.mapModulesByNames(this.context
                 .getModules());
         this.configModule = this.namesToModules.get(ConfigConstants.CONFIG_MODULE);
         this.namesToModules = YangModelSearchUtils.mapModulesByNames(this.context
                 .getModules());
         this.configModule = this.namesToModules.get(ConfigConstants.CONFIG_MODULE);
@@ -74,11 +76,10 @@ public abstract class AbstractYangTest {
         this.jmxImplModule = this.namesToModules.get("config-jmx-it-impl");
         this.testFilesModule = this.namesToModules.get("test-config-files");
         this.testFiles1Module = this.namesToModules.get("test-config-files1");
         this.jmxImplModule = this.namesToModules.get("config-jmx-it-impl");
         this.testFilesModule = this.namesToModules.get("test-config-files");
         this.testFiles1Module = this.namesToModules.get("test-config-files1");
-
     }
 
     }
 
-    public static List<InputStream> getConfigApiYangInputStreams() {
-        return getStreams("/META-INF/yang/config@2013-04-05.yang", "/META-INF/yang/rpc-context@2013-06-17.yang");
+    public static List<String> getConfigApiYangs() {
+        return ImmutableList.of("/META-INF/yang/config@2013-04-05.yang", "/META-INF/yang/rpc-context@2013-06-17.yang");
     }
 
     public Map<QName, IdentitySchemaNode> mapIdentitiesByQNames(final Module module) {
     }
 
     public Map<QName, IdentitySchemaNode> mapIdentitiesByQNames(final Module module) {
index 3eec98e8a18f1ad8bdba595b8dbe1da460b3b008..54a980abfa41cfa597e29e4977626151f53eb325 100644 (file)
@@ -9,19 +9,20 @@ package org.opendaylight.controller.config.yangjmxgenerator;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
+
 import com.google.common.base.Preconditions;
 import com.google.common.base.Preconditions;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
+import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.junit.Before;
 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;
 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
 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;
 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
+import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 import org.slf4j.Logger;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 import org.slf4j.Logger;
@@ -29,106 +30,67 @@ import org.slf4j.LoggerFactory;
 
 public class ModuleMXBeanEntryNameConflictTest extends AbstractYangTest {
 
 
 public class ModuleMXBeanEntryNameConflictTest extends AbstractYangTest {
 
-    private static final Logger LOG = LoggerFactory
-            .getLogger(ModuleMXBeanEntryNameConflictTest.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ModuleMXBeanEntryNameConflictTest.class);
 
     public static final String PACKAGE_NAME = "pack2";
 
     public static final String PACKAGE_NAME = "pack2";
-    Map<File, String> testedFilesToYangModules = new HashMap<>();
-    Map<String, String> testedYangModulesToExpectedConflictingName = new HashMap<>();
-
-    @Ignore
-    @Test
-    public void testNameConflicts() throws Exception {
-        prepareSamples();
-        prepareExceptionAssertions();
-
-        for (final Map.Entry<File, String> currentTestEntry : this.testedFilesToYangModules
-                .entrySet()) {
-            final String moduleName = currentTestEntry.getValue();
-            final File yangFile = currentTestEntry.getKey();
-            final Module testedModule = loadYangs(yangFile, moduleName);
-
-            try {
-                LOG.debug("Testing {}", yangFile);
-                ModuleMXBeanEntry.create(testedModule,
-                        new HashMap<>(), this.context,
-                        new TypeProviderWrapper(new TypeProviderImpl(this.context)),
-                        PACKAGE_NAME);
-                fail(yangFile.toString()
-                        + " did not cause a name conflict and should");
-            } catch (final NameConflictException e) {
-                assertEquals(
-                        this.testedYangModulesToExpectedConflictingName
-                                .get(moduleName),
-                        e.getConflictingName());
-            }
-        }
-    }
-
-    private void prepareSamples() {
-        final File first = new File(getClass().getResource(
-                "/duplicates/config-test-duplicate-attribute-in-list.yang")
-                .getFile());
-        final File dir = first.getParentFile();
-
-        for (final File testYang : dir.listFiles()) {
-            final String moduleName = getYangModuleName(testYang.getName());
-            this.testedFilesToYangModules.put(testYang, moduleName);
-        }
-    }
 
 
-    private void prepareExceptionAssertions() {
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-duplicate-attribute", "DtoA");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-duplicate-attribute-in-list", "DtoA");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-duplicate-attribute-runtime-bean", "DtoA");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-generated-attributes-name-conflict", "StateB");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-runtime-bean-list-name-conflict",
+    private final List<String> testedModules = ImmutableList.of(
+        "config-test-duplicate-attribute-in-list",
+        "config-test-duplicate-attribute-in-runtime-and-mxbean",
+        "config-test-duplicate-attribute-runtime-bean",
+        "config-test-duplicate-attribute",
+        "config-test-generated-attributes-name-conflict",
+        "config-test-runtime-bean-list-name-conflict2",
+        "config-test-runtime-bean-list-name-conflict",
+        "config-test-runtime-bean-name-conflict2",
+        "config-test-runtime-bean-name-conflict");
+    private final Map<String, String> testedYangModulesToExpectedConflictingName = new HashMap<>();
+
+    @Before
+    public void setup() {
+        testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute", "DtoA");
+        testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-in-list", "DtoA");
+        testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-runtime-bean", "DtoA");
+        testedYangModulesToExpectedConflictingName.put("config-test-generated-attributes-name-conflict", "StateB");
+        testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-list-name-conflict",
                 "StateARuntimeMXBean");
                 "StateARuntimeMXBean");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-runtime-bean-list-name-conflict2",
+        testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-list-name-conflict2",
                 "StateARuntimeMXBean");
                 "StateARuntimeMXBean");
-        this.testedYangModulesToExpectedConflictingName
-                .put("config-test-runtime-bean-name-conflict", "StateARuntimeMXBean");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-runtime-bean-name-conflict2",
+        testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-name-conflict",
                 "StateARuntimeMXBean");
                 "StateARuntimeMXBean");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-duplicate-attribute-in-runtime-and-mxbean",
-                "port");
-    }
-
-    private static String getYangModuleName(final String name) {
-        final int startIndex = 0;
-        final int endIndex = name.indexOf(".yang");
-        return name.substring(startIndex, endIndex);
+        testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-name-conflict2",
+                "StateARuntimeMXBean");
+        testedYangModulesToExpectedConflictingName.put("config-test-duplicate-attribute-in-runtime-and-mxbean", "port");
     }
 
     }
 
-    private Module loadYangs(final File testedModule, final String moduleName)
-            throws Exception {
-        final List<InputStream> yangISs = new ArrayList<>();
-        yangISs.addAll(getStreams("/ietf-inet-types.yang"));
-
-        yangISs.add(new FileInputStream(testedModule));
+    private Module loadYangs(final String testedModule, final String moduleName) {
+        final List<String> yangs = new ArrayList<>();
+        yangs.add("/ietf-inet-types.yang");
+        yangs.add("/duplicates/" + testedModule + YangConstants.RFC6020_YANG_FILE_EXTENSION);
+        yangs.addAll(getConfigApiYangs());
 
 
-        yangISs.addAll(getConfigApiYangInputStreams());
-
-        this.context =  YangParserTestUtils.parseYangStreams(yangISs);
-        // close ISs
-        for (final InputStream is : yangISs) {
-            is.close();
-        }
-        this.namesToModules = YangModelSearchUtils.mapModulesByNames(this.context
-                .getModules());
+        this.context =  YangParserTestUtils.parseYangResources(ModuleMXBeanEntryNameConflictTest.class, yangs);
+        this.namesToModules = YangModelSearchUtils.mapModulesByNames(this.context.getModules());
         this.configModule = this.namesToModules.get(ConfigConstants.CONFIG_MODULE);
         final Module module = this.namesToModules.get(moduleName);
         this.configModule = this.namesToModules.get(ConfigConstants.CONFIG_MODULE);
         final Module module = this.namesToModules.get(moduleName);
-        Preconditions.checkNotNull(module, "Cannot get module %s from %s",
-                moduleName, this.namesToModules.keySet());
+        Preconditions.checkNotNull(module, "Cannot get module %s from %s", moduleName, this.namesToModules.keySet());
         return module;
     }
 
         return module;
     }
 
+    @Ignore
+    @Test
+    public void testNameConflicts() {
+        for (final String moduleName : testedModules) {
+            final Module testedModule = loadYangs(moduleName, moduleName);
+
+            try {
+                LOG.debug("Testing {}", moduleName);
+                ModuleMXBeanEntry.create(testedModule, new HashMap<>(), this.context,
+                        new TypeProviderWrapper(new TypeProviderImpl(this.context)), PACKAGE_NAME);
+                fail(moduleName + " did not cause a name conflict and should");
+            } catch (final NameConflictException e) {
+                assertEquals(this.testedYangModulesToExpectedConflictingName.get(moduleName), e.getConflictingName());
+            }
+        }
+    }
 }
 }
index fbd7fb5def16b64ec3f1f3e71e4cb48017c9665e..d7fb213bea4fe4f3daa36f10ee01b8ee086f72c7 100644 (file)
@@ -21,11 +21,8 @@ import static org.mockito.Mockito.mock;
 import com.google.common.collect.Sets;
 import java.net.URI;
 import java.net.URISyntaxException;
 import com.google.common.collect.Sets;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -47,6 +44,7 @@ import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.util.Types;
 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.mdsal.binding.model.util.Types;
 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
@@ -56,20 +54,13 @@ public class ModuleMXBeanEntryTest extends AbstractYangTest {
     public static final String PACKAGE_NAME = "pack2";
 
     protected static final URI THREADS_NAMESPACE;
     public static final String PACKAGE_NAME = "pack2";
 
     protected static final URI THREADS_NAMESPACE;
-    protected static final Date THREADS_REVISION_DATE;
+    protected static final Revision THREADS_REVISION_DATE = Revision.of("2013-04-09");
 
     static {
         try {
 
     static {
         try {
-            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE
-                    + ":threads");
+            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE + ":threads");
         } catch (final URISyntaxException e) {
         } catch (final URISyntaxException e) {
-            throw new Error(e);
-        }
-        final SimpleDateFormat revisionFormat = new SimpleDateFormat("yyyy-MM-dd");
-        try {
-            THREADS_REVISION_DATE = revisionFormat.parse("2013-04-09");
-        } catch (final ParseException e) {
-            throw new Error(e);
+            throw new ExceptionInInitializerError(e);
         }
     }
 
         }
     }
 
index 629b1542ba6e7f2843c1f73c5618c71137e662ae..bdacef8efe4aed659ddfa7c4deeb05802f703104 100644 (file)
@@ -25,7 +25,7 @@ import org.mockito.Mockito;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.JavaAttribute;
 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.controller.config.yangjmxgenerator.attribute.JavaAttribute;
 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
@@ -45,7 +45,7 @@ public class RuntimeBeanEntryTest extends AbstractYangTest {
 
     @Test
     public void createRuntimeBean() {
 
     @Test
     public void createRuntimeBean() {
-        final ChoiceCaseNode caseNode = Mockito.mock(ChoiceCaseNode.class);
+        final CaseSchemaNode caseNode = Mockito.mock(CaseSchemaNode.class);
         doReturn(new HashSet<LeafSchemaNode>()).when(caseNode).getChildNodes();
         doReturn(new ArrayList<UnknownSchemaNode>()).when(caseNode)
                 .getUnknownSchemaNodes();
         doReturn(new HashSet<LeafSchemaNode>()).when(caseNode).getChildNodes();
         doReturn(new ArrayList<UnknownSchemaNode>()).when(caseNode)
                 .getUnknownSchemaNodes();
index b3b06151ebe9c243188a411409324bc31003b82b..8228eb69eabe4f661af697abd00bfb0b14d7aa6a 100644 (file)
@@ -10,17 +10,17 @@ package org.opendaylight.controller.config.yangjmxgenerator;
 import static org.apache.commons.lang3.StringUtils.capitalize;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.apache.commons.lang3.StringUtils.capitalize;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+
 import com.google.common.base.Optional;
 import java.net.URI;
 import java.util.Collections;
 import java.util.List;
 import org.junit.Test;
 import com.google.common.base.Optional;
 import java.net.URI;
 import java.util.Collections;
 import java.util.List;
 import org.junit.Test;
-import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry.Rpc;
-import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
 
 public class RuntimeRegistratorTest {
     // TODO add more tests
 
 public class RuntimeRegistratorTest {
     // TODO add more tests
@@ -29,9 +29,8 @@ public class RuntimeRegistratorTest {
         final DataNodeContainer nodeContainer = mock(DataNodeContainer.class);
         doReturn("DataSchemaNode").when(nodeContainer).toString();
         return new RuntimeBeanEntry("pa.cka.ge", nodeContainer,
         final DataNodeContainer nodeContainer = mock(DataNodeContainer.class);
         doReturn("DataSchemaNode").when(nodeContainer).toString();
         return new RuntimeBeanEntry("pa.cka.ge", nodeContainer,
-                "module-name", "ModuleName", true, Optional.<String> absent(),
-                Collections.<AttributeIfc> emptyList(), children,
-                Collections.<Rpc> emptySet());
+                "module-name", "ModuleName", true, Optional.absent(),
+                Collections.emptyList(), children, Collections.emptySet());
     }
 
     protected RuntimeBeanEntry prepareChildRB(final List<RuntimeBeanEntry> children,
     }
 
     protected RuntimeBeanEntry prepareChildRB(final List<RuntimeBeanEntry> children,
@@ -40,25 +39,24 @@ public class RuntimeRegistratorTest {
         doReturn("DataSchemaNode").when(nodeContainer).toString();
         return new RuntimeBeanEntry("pa.cka.ge", nodeContainer,
                 prefix + "child-name", capitalize(prefix) + "ChildName", false,
         doReturn("DataSchemaNode").when(nodeContainer).toString();
         return new RuntimeBeanEntry("pa.cka.ge", nodeContainer,
                 prefix + "child-name", capitalize(prefix) + "ChildName", false,
-                Optional.<String> absent(),
-                Collections.<AttributeIfc> emptyList(), children,
-                Collections.<Rpc> emptySet());
+                Optional.absent(), Collections.emptyList(), children, Collections.emptySet());
     }
 
     @Test
     public void testHierarchy() {
         final LeafSchemaNode leaf = mock(LeafSchemaNode.class);
     }
 
     @Test
     public void testHierarchy() {
         final LeafSchemaNode leaf = mock(LeafSchemaNode.class);
-        doReturn(new QName(URI.create("urn:x"), "leaf-local-name")).when(leaf)
-                .getQName();
+        doReturn(QName.create(URI.create("urn:x"), "leaf-local-name")).when(leaf).getQName();
         doReturn(Collections.emptyList()).when(leaf).getUnknownSchemaNodes();
         doReturn(Collections.emptyList()).when(leaf).getUnknownSchemaNodes();
-        doReturn(null).when(leaf).getDefault();
-        doReturn(null).when(leaf).getDescription();
+        doReturn(java.util.Optional.empty()).when(leaf).getDescription();
+
+        final StringTypeDefinition leafType = mock(StringTypeDefinition.class);
+        doReturn(java.util.Optional.empty()).when(leafType).getDefaultValue();
+        doReturn(leafType).when(leaf).getType();
 
         final TypeProviderWrapper typeProviderWrapper = mock(TypeProviderWrapper.class);
         final Type mockedType = mock(Type.class);
         doReturn(mockedType).when(typeProviderWrapper).getType(leaf);
         doReturn("java.lang.String").when(mockedType).getFullyQualifiedName();
 
         final TypeProviderWrapper typeProviderWrapper = mock(TypeProviderWrapper.class);
         final Type mockedType = mock(Type.class);
         doReturn(mockedType).when(typeProviderWrapper).getType(leaf);
         doReturn("java.lang.String").when(mockedType).getFullyQualifiedName();
-
     }
 
 }
     }
 
 }
index b189db4c0888319d5bdaa3f20793cad39726aee1..4ed0bc80270c2880b57ef8a01d018d4325dcb94d 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 
 public class SchemaContextTest extends AbstractYangTest {
 
 
 public class SchemaContextTest extends AbstractYangTest {
 
-    IdentitySchemaNode findIdentityByQName(Module module, QName qName) {
+    IdentitySchemaNode findIdentityByQName(final Module module, final QName qName) {
         Map<QName, IdentitySchemaNode> mapIdentitiesByQNames = mapIdentitiesByQNames(module);
         IdentitySchemaNode found = mapIdentitiesByQNames.get(qName);
         assertNotNull(found);
         Map<QName, IdentitySchemaNode> mapIdentitiesByQNames = mapIdentitiesByQNames(module);
         IdentitySchemaNode found = mapIdentitiesByQNames.get(qName);
         assertNotNull(found);
@@ -60,7 +60,7 @@ public class SchemaContextTest extends AbstractYangTest {
             // all except scheduled-threadpool should have base set to
             // serviceType
             if (localName.equals("scheduled-threadpool") == false) {
             // all except scheduled-threadpool should have base set to
             // serviceType
             if (localName.equals("scheduled-threadpool") == false) {
-                assertEquals(serviceType, id.getBaseIdentity());
+                assertEquals(serviceType, id.getBaseIdentities().iterator().next());
             }
         }
         assertNotNull(eventBusSchemaNode);
             }
         }
         assertNotNull(eventBusSchemaNode);
@@ -75,9 +75,8 @@ public class SchemaContextTest extends AbstractYangTest {
                 usn.getNodeType());
     }
 
                 usn.getNodeType());
     }
 
-    private void assertAllIdentitiesAreExpected(
-            Module module,
-            Map<String /* identity name */, Optional<QName>> expectedIdentitiesToBases) {
+    private static void assertAllIdentitiesAreExpected(final Module module,
+            final Map<String /* identity name */, Optional<QName>> expectedIdentitiesToBases) {
         Map<String /* identity name */, Optional<QName>> copyOfExpectedNames = new HashMap<>(
                 expectedIdentitiesToBases);
         for (IdentitySchemaNode id : module.getIdentities()) {
         Map<String /* identity name */, Optional<QName>> copyOfExpectedNames = new HashMap<>(
                 expectedIdentitiesToBases);
         for (IdentitySchemaNode id : module.getIdentities()) {
@@ -88,8 +87,7 @@ public class SchemaContextTest extends AbstractYangTest {
                     .remove(localName);
             if (maybeExpectedBaseQName.isPresent()) {
                 assertEquals("Unexpected base identity of " + localName,
                     .remove(localName);
             if (maybeExpectedBaseQName.isPresent()) {
                 assertEquals("Unexpected base identity of " + localName,
-                        maybeExpectedBaseQName.get(), id.getBaseIdentity()
-                                .getQName());
+                        maybeExpectedBaseQName.get(), id.getBaseIdentities().iterator().next().getQName());
             }
         }
         assertEquals("Expected identities not found " + copyOfExpectedNames,
             }
         }
         assertEquals("Expected identities not found " + copyOfExpectedNames,
@@ -98,21 +96,14 @@ public class SchemaContextTest extends AbstractYangTest {
 
     @Test
     public void testReadingIdentities_threadsJavaModule() {
 
     @Test
     public void testReadingIdentities_threadsJavaModule() {
-        Map<String /* identity name */, Optional<QName>> expectedIdentitiesToBases = new HashMap<String, Optional<QName>>(){
-            private static final long serialVersionUID = 1L;
+        Map<String /* identity name */, Optional<QName>> expected = new HashMap<>();
+        expected.put(ModuleMXBeanEntryTest.EVENTBUS_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
+        expected.put(ModuleMXBeanEntryTest.ASYNC_EVENTBUS_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
+        expected.put(ModuleMXBeanEntryTest.THREADFACTORY_NAMING_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
+        expected.put(ModuleMXBeanEntryTest.THREADPOOL_DYNAMIC_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
+        expected.put("thread-rpc-context", Optional.<QName>absent());
+        expected.put(ModuleMXBeanEntryTest.THREADPOOL_REGISTRY_IMPL_NAME, Optional.of(MODULE_TYPE_Q_NAME));
 
 
-            {
-                put(ModuleMXBeanEntryTest.EVENTBUS_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
-                put(ModuleMXBeanEntryTest.ASYNC_EVENTBUS_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
-                put(ModuleMXBeanEntryTest.THREADFACTORY_NAMING_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
-                put(ModuleMXBeanEntryTest.THREADPOOL_DYNAMIC_MXB_NAME, Optional.of(MODULE_TYPE_Q_NAME));
-                put("thread-rpc-context", Optional.<QName>absent());
-                put(ModuleMXBeanEntryTest.THREADPOOL_REGISTRY_IMPL_NAME, Optional.of(MODULE_TYPE_Q_NAME));
-            }
-        };
-
-        assertAllIdentitiesAreExpected(threadsJavaModule,
-                expectedIdentitiesToBases);
+        assertAllIdentitiesAreExpected(threadsJavaModule, expected);
     }
     }
-
 }
 }
index f021c2c81d3ece5f960ca82d6571e65180606752..ae81ce5d3ad0e36e0ca9ffe6b5f661a5a75c1bf4 100644 (file)
@@ -14,10 +14,7 @@ import static org.junit.Assert.assertThat;
 import com.google.common.collect.Sets;
 import java.net.URI;
 import java.net.URISyntaxException;
 import com.google.common.collect.Sets;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -27,6 +24,7 @@ import java.util.Set;
 import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.hamcrest.CoreMatchers;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 
 public class ServiceInterfaceEntryTest extends AbstractYangTest {
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 
 public class ServiceInterfaceEntryTest extends AbstractYangTest {
@@ -37,20 +35,13 @@ public class ServiceInterfaceEntryTest extends AbstractYangTest {
             + ".java, ThreadFactoryServiceInterface.java, ThreadPoolServiceInterface.java]");
 
     private static final URI THREADS_NAMESPACE;
             + ".java, ThreadFactoryServiceInterface.java, ThreadPoolServiceInterface.java]");
 
     private static final URI THREADS_NAMESPACE;
-    private static final Date THREADS_REVISION_DATE;
+    private static final Revision THREADS_REVISION_DATE = Revision.of("2013-04-09");
 
     static {
         try {
 
     static {
         try {
-            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE
-                    + ":threads");
+            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE + ":threads");
         } catch (URISyntaxException e) {
         } catch (URISyntaxException e) {
-            throw new Error(e);
-        }
-        SimpleDateFormat revisionFormat = new SimpleDateFormat("yyyy-MM-dd");
-        try {
-            THREADS_REVISION_DATE = revisionFormat.parse("2013-04-09");
-        } catch (ParseException e) {
-            throw new Error(e);
+            throw new ExceptionInInitializerError(e);
         }
     }
 
         }
     }
 
index 85a0ef0107d033abb5b683f4951b280fefa7d39e..5daaf0f72e16ab79588898643d2e39adb3649c29 100644 (file)
@@ -10,8 +10,7 @@ package org.opendaylight.controller.config.yangjmxgenerator.unknownextension;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import com.google.common.collect.Lists;
-import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants;
@@ -23,25 +22,20 @@ public class UnknownExtensionTest extends ServiceInterfaceEntryTest {
 
     @Test
     public void testStopOnUnknownLanguageExtension() throws Exception {
 
     @Test
     public void testStopOnUnknownLanguageExtension() throws Exception {
-        List<InputStream> yangISs = Lists.newArrayList(getClass()
-                .getResourceAsStream("test-ifcWithUnknownExtension.yang"));
-        yangISs.addAll(getConfigApiYangInputStreams());
+        List<String> yangs = new ArrayList<>();
+        yangs.addAll(getConfigApiYangs());
+        yangs.add("test-ifcWithUnknownExtension.yang");
+
+        context = YangParserTestUtils.parseYangResources(UnknownExtensionTest.class, yangs);
+        namesToModules = YangModelSearchUtils.mapModulesByNames(context.getModules());
+        configModule = namesToModules.get(ConfigConstants.CONFIG_MODULE);
+        threadsModule = namesToModules.get(ConfigConstants.CONFIG_THREADS_MODULE);
         try {
         try {
-            context = YangParserTestUtils.parseYangStreams(yangISs);
-            namesToModules = YangModelSearchUtils.mapModulesByNames(context.getModules());
-            configModule = namesToModules.get(ConfigConstants.CONFIG_MODULE);
-            threadsModule = namesToModules.get(ConfigConstants.CONFIG_THREADS_MODULE);
-            try {
-                super.testCreateFromIdentities();
-                fail();
-            } catch (IllegalStateException e) {
-                assertTrue(e.getMessage(),
-                        e.getMessage().startsWith("Unexpected unknown schema node."));
-            }
-        } finally {
-            for (InputStream is : yangISs) {
-                is.close();
-            }
+            super.testCreateFromIdentities();
+            fail();
+        } catch (IllegalStateException e) {
+            assertTrue(e.getMessage(),
+                e.getMessage().startsWith("Unexpected unknown schema node."));
         }
     }
 
         }
     }
 
index daaae4f9b47b9f49982f67e1fa8bc533e20166e8..c7622bbcfb9dd1e1ac1d1392595c612a9eb69577 100644 (file)
@@ -23,12 +23,13 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.access.ABIVersion;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.access.ABIVersion;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 
 public class ConnectClientSuccessTest extends AbstractRequestSuccessTest<ConnectClientSuccess> {
 
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 
 public class ConnectClientSuccessTest extends AbstractRequestSuccessTest<ConnectClientSuccess> {
 
-    private static final DataTree TREE = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
+    private static final DataTree TREE = new InMemoryDataTreeFactory().create(
+        DataTreeConfiguration.DEFAULT_OPERATIONAL);
     private static final ActorSystem SYSTEM = ActorSystem.create("test");
     private static final ActorRef ACTOR_REF = TestProbe.apply(SYSTEM).ref();
     private static final ActorSelection ACTOR_SELECTION =  ActorSelection.apply(ACTOR_REF, "foo");
     private static final ActorSystem SYSTEM = ActorSystem.create("test");
     private static final ActorRef ACTOR_REF = TestProbe.apply(SYSTEM).ref();
     private static final ActorSelection ACTOR_SELECTION =  ActorSelection.apply(ACTOR_REF, "foo");
index 7cd17dc4d8b119f30ed249a88022e13ce5924ee0..64d98ed01aa2ab239f5fcf1c74e1b0d13020ba14 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
@@ -83,8 +83,11 @@ enum BindingStructuralType {
     UNKNOWN;
 
     static BindingStructuralType from(final DataTreeCandidateNode domChildNode) {
     UNKNOWN;
 
     static BindingStructuralType from(final DataTreeCandidateNode domChildNode) {
-        final Optional<NormalizedNode<?, ?>> dataBased = domChildNode.getDataAfter().or(domChildNode.getDataBefore());
-        if(dataBased.isPresent()) {
+        Optional<NormalizedNode<?, ?>> dataBased = domChildNode.getDataAfter();
+        if (!dataBased.isPresent()) {
+            dataBased = domChildNode.getDataBefore();
+        }
+        if (dataBased.isPresent()) {
             return from(dataBased.get());
         }
         return from(domChildNode.getIdentifier());
             return from(dataBased.get());
         }
         return from(domChildNode.getIdentifier());
index e4e205307cf43600d68b5b4737fb70cd646dc5b0..2d4d9b83e597f81ccc756f4cc8e21a170fca0449 100644 (file)
@@ -15,10 +15,8 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableBiMap;
 import java.lang.reflect.Method;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableBiMap;
 import java.lang.reflect.Method;
-import java.net.URI;
 import java.util.AbstractMap.SimpleEntry;
 import java.util.Collection;
 import java.util.AbstractMap.SimpleEntry;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
@@ -309,11 +307,9 @@ public class BindingToNormalizedNodeCodec
 
     private Module getModuleBlocking(final Class<?> modeledClass) {
         final QNameModule moduleName = BindingReflections.getQNameModule(modeledClass);
 
     private Module getModuleBlocking(final Class<?> modeledClass) {
         final QNameModule moduleName = BindingReflections.getQNameModule(modeledClass);
-        final URI namespace = moduleName.getNamespace();
-        final Date revision = moduleName.getRevision();
-        Module module = runtimeContext().getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision);
-        if ((module == null) && this.futureSchema.waitForSchema(namespace, revision)) {
-            module = runtimeContext().getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision);
+        Module module = runtimeContext().getSchemaContext().findModule(moduleName).orElse(null);
+        if (module == null && this.futureSchema.waitForSchema(moduleName)) {
+            module = runtimeContext().getSchemaContext().findModule(moduleName).orElse(null);
         }
         Preconditions.checkState(module != null, "Schema for %s is not available.", modeledClass);
         return module;
         }
         Preconditions.checkState(module != null, "Schema for %s is not available.", modeledClass);
         return module;
@@ -332,7 +328,7 @@ public class BindingToNormalizedNodeCodec
     private Method findRpcMethod(final Class<? extends RpcService> key, final RpcDefinition rpcDef)
             throws NoSuchMethodException {
         final String methodName = BindingMapping.getMethodName(rpcDef.getQName());
     private Method findRpcMethod(final Class<? extends RpcService> key, final RpcDefinition rpcDef)
             throws NoSuchMethodException {
         final String methodName = BindingMapping.getMethodName(rpcDef.getQName());
-        if ((rpcDef.getInput() != null) && isExplicitStatement(rpcDef.getInput())) {
+        if (rpcDef.getInput() != null && isExplicitStatement(rpcDef.getInput())) {
             final Class<?> inputClz = runtimeContext().getClassForSchema(rpcDef.getInput());
             return key.getMethod(methodName, inputClz);
         }
             final Class<?> inputClz = runtimeContext().getClassForSchema(rpcDef.getInput());
             return key.getMethod(methodName, inputClz);
         }
@@ -340,8 +336,8 @@ public class BindingToNormalizedNodeCodec
     }
 
     private static boolean isExplicitStatement(final ContainerSchemaNode node) {
     }
 
     private static boolean isExplicitStatement(final ContainerSchemaNode node) {
-        return (node instanceof EffectiveStatement)
-                && (((EffectiveStatement) node).getDeclared().getStatementSource() == StatementSource.DECLARATION);
+        return node instanceof EffectiveStatement
+                && ((EffectiveStatement) node).getDeclared().getStatementSource() == StatementSource.DECLARATION;
     }
 
     private BindingRuntimeContext runtimeContext() {
     }
 
     private BindingRuntimeContext runtimeContext() {
index e2fa7d1daf8319d9b3df9c18c174b7dac752d035..0c316e809d5e9165b536d51f10046b2d853cee52 100644 (file)
@@ -11,10 +11,8 @@ package org.opendaylight.controller.md.sal.binding.impl;
 import com.google.common.base.Predicate;
 import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.common.base.Predicate;
 import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.SettableFuture;
-import java.net.URI;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
@@ -23,6 +21,7 @@ import java.util.concurrent.TimeoutException;
 import javax.annotation.concurrent.GuardedBy;
 import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import javax.annotation.concurrent.GuardedBy;
 import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.common.QNameModule;
 
 class FutureSchema implements AutoCloseable {
 
 
 class FutureSchema implements AutoCloseable {
 
@@ -88,11 +87,11 @@ class FutureSchema implements AutoCloseable {
         return schema != null;
     }
 
         return schema != null;
     }
 
-    boolean waitForSchema(final URI namespace, final Date revision) {
+    boolean waitForSchema(final QNameModule module) {
         return addPostponedOpAndWait(new FutureSchemaPredicate() {
             @Override
             public boolean apply(final BindingRuntimeContext input) {
         return addPostponedOpAndWait(new FutureSchemaPredicate() {
             @Override
             public boolean apply(final BindingRuntimeContext input) {
-                return input.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision) != null;
+                return input.getSchemaContext().findModule(module).isPresent();
             }
         });
     }
             }
         });
     }
index 4643323af690a98dc8fa78aa8b6c8b08cf5178e7..74aa834818342ba6a3cf3f64a5b8cb7149ec04c0 100644 (file)
@@ -7,12 +7,12 @@
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
  */
 package org.opendaylight.controller.md.sal.binding.impl;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
index a0e45302e091674a239ef7919174a288c219a536..8185446fcdf9823fd6bf72119e1dfb7d179eb627 100644 (file)
@@ -8,9 +8,9 @@
 
 package org.opendaylight.controller.md.sal.binding.impl;
 
 
 package org.opendaylight.controller.md.sal.binding.impl;
 
-import com.google.common.base.Optional;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Collection;
 import java.util.Map;
+import java.util.Optional;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.common.QName;
index 2f38ec7285477986fcf3d0dade5857bf97b53c3e..b05e88bc85fcfca122c5cbed69f5b4ef5aa3c39d 100644 (file)
@@ -11,18 +11,21 @@ package org.opendaylight.controller.md.sal.binding.impl;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+
 import com.google.common.collect.ImmutableBiMap;
 import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.Multimaps;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSetMultimap;
 import com.google.common.collect.SetMultimap;
 import com.google.common.util.concurrent.Uninterruptibles;
 import java.lang.reflect.Method;
 import java.net.URI;
 import com.google.common.collect.SetMultimap;
 import com.google.common.util.concurrent.Uninterruptibles;
 import java.lang.reflect.Method;
 import java.net.URI;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
+import javassist.ClassPool;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.test.AbstractSchemaAwareTest;
 import org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerGenerator;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.test.AbstractSchemaAwareTest;
 import org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataObjectSerializerGenerator;
@@ -38,15 +41,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controll
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContext;
-import javassist.ClassPool;
 
 public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest {
 
 
 public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest {
 
@@ -164,22 +166,22 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest {
     static class EmptySchemaContext extends AbstractSchemaContext {
         @Override
         public Set<Module> getModules() {
     static class EmptySchemaContext extends AbstractSchemaContext {
         @Override
         public Set<Module> getModules() {
-            return Collections.emptySet();
+            return ImmutableSet.of();
         }
 
         @Override
         }
 
         @Override
-        protected Map<ModuleIdentifier, String> getIdentifiersToSources() {
-            return Collections.emptyMap();
+        protected Map<QNameModule, Module> getModuleMap() {
+            return ImmutableMap.of();
         }
 
         @Override
         protected SetMultimap<URI, Module> getNamespaceToModules() {
         }
 
         @Override
         protected SetMultimap<URI, Module> getNamespaceToModules() {
-            return Multimaps.forMap(Collections.emptyMap());
+            return ImmutableSetMultimap.of();
         }
 
         @Override
         protected SetMultimap<String, Module> getNameToModules() {
         }
 
         @Override
         protected SetMultimap<String, Module> getNameToModules() {
-            return Multimaps.forMap(Collections.emptyMap());
+            return ImmutableSetMultimap.of();
         }
     }
 }
         }
     }
 }
index a74b6ea2461c5efcfd233a7618e52425485872e0..aba648cdacf81387b6477ba662382a5e48545528 100644 (file)
@@ -36,14 +36,14 @@ public class WriteParentListenAugmentTest extends AbstractDataServiceTest {
     private static final String TLL_NAME = "foo";
 
     private static final TopLevelListKey TLL_KEY = new TopLevelListKey(TLL_NAME);
     private static final String TLL_NAME = "foo";
 
     private static final TopLevelListKey TLL_KEY = new TopLevelListKey(TLL_NAME);
-    private static final InstanceIdentifier<TopLevelList> TLL_INSTANCE_ID_BA = InstanceIdentifier.builder(Top.class) //
-            .child(TopLevelList.class, TLL_KEY).toInstance();
+    private static final InstanceIdentifier<TopLevelList> TLL_INSTANCE_ID_BA = InstanceIdentifier.builder(Top.class)
+            .child(TopLevelList.class, TLL_KEY).build();
 
     private static final InstanceIdentifier<TreeComplexUsesAugment> AUGMENT_WILDCARDED_PATH = InstanceIdentifier
 
     private static final InstanceIdentifier<TreeComplexUsesAugment> AUGMENT_WILDCARDED_PATH = InstanceIdentifier
-            .builder(Top.class).child(TopLevelList.class).augmentation(TreeComplexUsesAugment.class).toInstance();
+            .builder(Top.class).child(TopLevelList.class).augmentation(TreeComplexUsesAugment.class).build();
 
     private static final InstanceIdentifier<TreeComplexUsesAugment> AUGMENT_TLL_PATH = InstanceIdentifier
 
     private static final InstanceIdentifier<TreeComplexUsesAugment> AUGMENT_TLL_PATH = InstanceIdentifier
-            .builder(Top.class).child(TopLevelList.class, TLL_KEY).augmentation(TreeComplexUsesAugment.class).toInstance();
+            .builder(Top.class).child(TopLevelList.class, TLL_KEY).augmentation(TreeComplexUsesAugment.class).build();
 
     @Test
     public void writeNodeListenAugment() throws Exception {
 
     @Test
     public void writeNodeListenAugment() throws Exception {
@@ -56,8 +56,8 @@ public class WriteParentListenAugmentTest extends AbstractDataServiceTest {
 
         final WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
 
 
         final WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
 
-        TopLevelList tll = new TopLevelListBuilder() //
-                .setKey(TLL_KEY) //
+        TopLevelList tll = new TopLevelListBuilder()
+                .setKey(TLL_KEY)
                 .addAugmentation(TreeComplexUsesAugment.class, treeComplexUsesAugment("one")).build();
         transaction.put(LogicalDatastoreType.OPERATIONAL, TLL_INSTANCE_ID_BA, tll, true);
         transaction.submit().get(5, TimeUnit.SECONDS);
                 .addAugmentation(TreeComplexUsesAugment.class, treeComplexUsesAugment("one")).build();
         transaction.put(LogicalDatastoreType.OPERATIONAL, TLL_INSTANCE_ID_BA, tll, true);
         transaction.submit().get(5, TimeUnit.SECONDS);
@@ -72,13 +72,13 @@ public class WriteParentListenAugmentTest extends AbstractDataServiceTest {
         transaction2.submit().get(5, TimeUnit.SECONDS);
 
         TreeComplexUsesAugment readedAug = dataBroker.newReadOnlyTransaction().read(
         transaction2.submit().get(5, TimeUnit.SECONDS);
 
         TreeComplexUsesAugment readedAug = dataBroker.newReadOnlyTransaction().read(
-                LogicalDatastoreType.OPERATIONAL, AUGMENT_TLL_PATH).checkedGet(5, TimeUnit.SECONDS).get();
+                LogicalDatastoreType.OPERATIONAL, AUGMENT_TLL_PATH).get(5, TimeUnit.SECONDS).get();
         assertEquals("two", readedAug.getContainerWithUses().getLeafFromGrouping());
     }
 
         assertEquals("two", readedAug.getContainerWithUses().getLeafFromGrouping());
     }
 
-    private TreeComplexUsesAugment treeComplexUsesAugment(final String value) {
-        return new TreeComplexUsesAugmentBuilder() //
-                .setContainerWithUses(new ContainerWithUsesBuilder().setLeafFromGrouping(value).build()) //
+    private static TreeComplexUsesAugment treeComplexUsesAugment(final String value) {
+        return new TreeComplexUsesAugmentBuilder()
+                .setContainerWithUses(new ContainerWithUsesBuilder().setLeafFromGrouping(value).build())
                 .build();
     }
 }
                 .build();
     }
 }
index dca56abcf4a40a54072628fb7c266453df7e4858..153d9d27203200cc66d46e3b1546df93106ed5af 100644 (file)
@@ -44,7 +44,7 @@ public class WriteParentReadChildTest extends AbstractDataServiceTest {
     private static final List1Key LIST1_KEY = new List1Key(LIST1_NAME);
 
     private static final InstanceIdentifier<TopLevelList> TLL_INSTANCE_ID_BA = InstanceIdentifier.builder(Top.class) //
     private static final List1Key LIST1_KEY = new List1Key(LIST1_NAME);
 
     private static final InstanceIdentifier<TopLevelList> TLL_INSTANCE_ID_BA = InstanceIdentifier.builder(Top.class) //
-            .child(TopLevelList.class, TLL_KEY).toInstance();
+            .child(TopLevelList.class, TLL_KEY).build();
 
     private static final InstanceIdentifier<List1> LIST1_INSTANCE_ID_BA = //
             TLL_INSTANCE_ID_BA.builder() //
 
     private static final InstanceIdentifier<List1> LIST1_INSTANCE_ID_BA = //
             TLL_INSTANCE_ID_BA.builder() //
@@ -75,11 +75,11 @@ public class WriteParentReadChildTest extends AbstractDataServiceTest {
         transaction.submit().get(5, TimeUnit.SECONDS);
 
         Optional<List1> readList1 = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL,
         transaction.submit().get(5, TimeUnit.SECONDS);
 
         Optional<List1> readList1 = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL,
-                LIST1_INSTANCE_ID_BA).checkedGet(1000, TimeUnit.MILLISECONDS);
+                LIST1_INSTANCE_ID_BA).get(1000, TimeUnit.MILLISECONDS);
         assertTrue(readList1.isPresent());
 
         Optional<? extends DataObject> readList11 = dataBroker.newReadOnlyTransaction().read(
         assertTrue(readList1.isPresent());
 
         Optional<? extends DataObject> readList11 = dataBroker.newReadOnlyTransaction().read(
-                LogicalDatastoreType.OPERATIONAL, LIST11_INSTANCE_ID_BA).checkedGet(5, TimeUnit.SECONDS);
+                LogicalDatastoreType.OPERATIONAL, LIST11_INSTANCE_ID_BA).get(5, TimeUnit.SECONDS);
         assertNotNull("Readed flow should not be null.",readList11);
         assertTrue(readList11.isPresent());
         assertEquals(list11, readList11.get());
         assertNotNull("Readed flow should not be null.",readList11);
         assertTrue(readList11.isPresent());
         assertEquals(list11, readList11.get());
index c7399e89f0503fcaa1ceaa630c1a406a9f82d9e8..4b10353caab032c4b1a5569af4c475e6b26ffd2e 100644 (file)
@@ -12,12 +12,12 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Optional;
 import static org.junit.Assert.fail;
 
 import com.google.common.base.Optional;
+import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import org.junit.After;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import org.junit.After;
@@ -41,12 +41,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controll
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 /**
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 /**
@@ -89,13 +94,18 @@ public class DOMRpcServiceTestBugfix560 {
         bindingMountPointService = testContext.getBindingMountPointService();
         assertNotNull(domMountPointService);
 
         bindingMountPointService = testContext.getBindingMountPointService();
         assertNotNull(domMountPointService);
 
-        final InputStream moduleStream = BindingReflections.getModuleInfo(
-                OpendaylightTestRpcServiceService.class)
-                .getModuleSourceStream();
+        final YangModuleInfo moduleInfo = BindingReflections.getModuleInfo(OpendaylightTestRpcServiceService.class);
+        assertNotNull(moduleInfo);
 
 
-        assertNotNull(moduleStream);
-        final List<InputStream> rpcModels = Collections.singletonList(moduleStream);
-        schemaContext = YangParserTestUtils.parseYangStreams(rpcModels);
+        schemaContext = YangParserTestUtils.parseYangSources(StatementParserMode.DEFAULT_MODE, null,
+            YangTextSchemaSource.delegateForByteSource(RevisionSourceIdentifier.create(moduleInfo.getName(),
+                Revision.ofNullable(moduleInfo.getRevision())), new ByteSource() {
+
+                @Override
+                public InputStream openStream() throws IOException {
+                    return moduleInfo.getModuleSourceStream();
+                }
+            }));
     }
 
     private static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier createBITllIdentifier(
     }
 
     private static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier createBITllIdentifier(
index 94d1baddc5a86b5f115a19a53e19656d1e53a03e..b81de75bb506a50b48d42ddace3d389046e612e4 100644 (file)
@@ -13,6 +13,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import org.opendaylight.yangtools.yang.common.QName;
 import java.util.HashMap;
 import java.util.Map;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 /**
  * NormalizedNodeOutputStreamWriter will be used by distributed datastore to send normalized node in
 
 /**
  * NormalizedNodeOutputStreamWriter will be used by distributed datastore to send normalized node in
@@ -44,7 +45,7 @@ final class NormalizedNodeOutputStreamWriter extends AbstractNormalizedNodeDataO
     protected void writeQName(final QName qname) throws IOException {
         writeString(qname.getLocalName());
         writeString(qname.getNamespace().toString());
     protected void writeQName(final QName qname) throws IOException {
         writeString(qname.getLocalName());
         writeString(qname.getNamespace().toString());
-        writeString(qname.getFormattedRevision());
+        writeString(qname.getRevision().map(Revision::toString).orElse(null));
     }
 
     @Override
     }
 
     @Override
index f83f6afe8e524099bd1d1ea74365691f9eaa37cd..8c81d60819126bbe16e6a04e817ae66af101d3bf 100644 (file)
@@ -8,9 +8,9 @@
 package org.opendaylight.controller.cluster.datastore.util;
 
 import com.google.common.annotations.Beta;
 package org.opendaylight.controller.cluster.datastore.util;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Verify;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Verify;
+import java.util.Optional;
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
index 39302e4f5621865130ef2c307843095af93862ae..202de58a2780fd52efc401b0779a54e287f731b8 100644 (file)
@@ -9,10 +9,10 @@
 package org.opendaylight.controller.cluster.schema.provider.impl;
 
 import com.google.common.annotations.Beta;
 package org.opendaylight.controller.cluster.schema.provider.impl;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
 import com.google.common.io.ByteSource;
 import java.io.IOException;
 import java.io.Serializable;
 import com.google.common.io.ByteSource;
 import java.io.IOException;
 import java.io.Serializable;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 
@@ -24,17 +24,17 @@ public class YangTextSchemaSourceSerializationProxy implements Serializable {
     private static final long serialVersionUID = -6361268518176019477L;
 
     private final byte[] schemaSource;
     private static final long serialVersionUID = -6361268518176019477L;
 
     private final byte[] schemaSource;
-    private final String revision;
+    private final Revision revision;
     private final String name;
 
     public YangTextSchemaSourceSerializationProxy(final YangTextSchemaSource source) throws IOException {
     private final String name;
 
     public YangTextSchemaSourceSerializationProxy(final YangTextSchemaSource source) throws IOException {
-        this.revision = source.getIdentifier().getRevision();
+        this.revision = source.getIdentifier().getRevision().orElse(null);
         this.name = source.getIdentifier().getName();
         this.schemaSource = source.read();
     }
 
     public YangTextSchemaSource getRepresentation() {
         return YangTextSchemaSource.delegateForByteSource(
         this.name = source.getIdentifier().getName();
         this.schemaSource = source.read();
     }
 
     public YangTextSchemaSource getRepresentation() {
         return YangTextSchemaSource.delegateForByteSource(
-                RevisionSourceIdentifier.create(name, Optional.fromNullable(revision)), ByteSource.wrap(schemaSource));
+                RevisionSourceIdentifier.create(name, revision), ByteSource.wrap(schemaSource));
     }
 }
     }
 }
index 81d97678b01762d456fb7c3a3af8d6c77203302a..e2e5aa4befda521a389f37e7c6df020464767e35 100644 (file)
@@ -10,12 +10,12 @@ package org.opendaylight.controller.cluster.datastore.node.utils.stream;
 
 import static org.junit.Assert.assertEquals;
 
 
 import static org.junit.Assert.assertEquals;
 
-import com.google.common.base.Optional;
 import com.google.common.io.ByteStreams;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 import com.google.common.io.ByteStreams;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.util.Optional;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
@@ -79,7 +79,7 @@ public class NormalizedNodeStreamReaderWriterTest {
     }
 
     private static NormalizedNode<?, ?> createTestContainer() {
     }
 
     private static NormalizedNode<?, ?> createTestContainer() {
-        byte[] bytes1 = {1,2,3};
+        byte[] bytes1 = {1, 2, 3};
         LeafSetEntryNode<Object> entry1 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes1)).withValue(bytes1).build();
 
         LeafSetEntryNode<Object> entry1 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes1)).withValue(bytes1).build();
 
@@ -87,14 +87,11 @@ public class NormalizedNodeStreamReaderWriterTest {
         LeafSetEntryNode<Object> entry2 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes2)).withValue(bytes2).build();
 
         LeafSetEntryNode<Object> entry2 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes2)).withValue(bytes2).build();
 
-        LeafSetEntryNode<Object> entry3 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
-                new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, null)).withValue(null).build();
-
         return TestModel.createBaseTestContainerBuilder()
                 .withChild(ImmutableLeafSetNodeBuilder.create().withNodeIdentifier(
                         new NodeIdentifier(TestModel.BINARY_LEAF_LIST_QNAME))
         return TestModel.createBaseTestContainerBuilder()
                 .withChild(ImmutableLeafSetNodeBuilder.create().withNodeIdentifier(
                         new NodeIdentifier(TestModel.BINARY_LEAF_LIST_QNAME))
-                        .withChild(entry1).withChild(entry2).withChild(entry3).build())
-                .withChild(ImmutableNodes.leafNode(TestModel.SOME_BINARY_DATA_QNAME, new byte[]{1,2,3,4}))
+                        .withChild(entry1).withChild(entry2).build())
+                .withChild(ImmutableNodes.leafNode(TestModel.SOME_BINARY_DATA_QNAME, new byte[]{1, 2, 3, 4}))
                 .withChild(Builders.orderedMapBuilder()
                       .withNodeIdentifier(new NodeIdentifier(TestModel.ORDERED_LIST_QNAME))
                       .withChild(ImmutableNodes.mapEntry(TestModel.ORDERED_LIST_ENTRY_QNAME,
                 .withChild(Builders.orderedMapBuilder()
                       .withNodeIdentifier(new NodeIdentifier(TestModel.ORDERED_LIST_QNAME))
                       .withChild(ImmutableNodes.mapEntry(TestModel.ORDERED_LIST_ENTRY_QNAME,
index a961f6a5af287b3371872ad3ee12a86a57b4cb5c..47150420b4e96aa82c3c4b361a21485942386ff7 100644 (file)
@@ -52,15 +52,15 @@ public class NormalizedNodePrunerTest {
         MockitoAnnotations.initMocks(this);
     }
 
         MockitoAnnotations.initMocks(this);
     }
 
-    private static NormalizedNodePruner prunerFullSchema(YangInstanceIdentifier path) {
+    private static NormalizedNodePruner prunerFullSchema(final YangInstanceIdentifier path) {
         return new NormalizedNodePruner(path, FULL_SCHEMA);
     }
 
         return new NormalizedNodePruner(path, FULL_SCHEMA);
     }
 
-    private static NormalizedNodePruner prunerNoAugSchema(YangInstanceIdentifier path) {
+    private static NormalizedNodePruner prunerNoAugSchema(final YangInstanceIdentifier path) {
         return new NormalizedNodePruner(path, NO_AUG_SCHEMA);
     }
 
         return new NormalizedNodePruner(path, NO_AUG_SCHEMA);
     }
 
-    private static NormalizedNodePruner prunerNoTestSchema(YangInstanceIdentifier path) {
+    private static NormalizedNodePruner prunerNoTestSchema(final YangInstanceIdentifier path) {
         return new NormalizedNodePruner(path, NO_TEST_SCHEMA);
     }
 
         return new NormalizedNodePruner(path, NO_TEST_SCHEMA);
     }
 
@@ -140,7 +140,7 @@ public class NormalizedNodePrunerTest {
 
     }
 
 
     }
 
-    private static int countNodes(NormalizedNode<?,?> normalizedNode, final String namespaceFilter) {
+    private static int countNodes(final NormalizedNode<?,?> normalizedNode, final String namespaceFilter) {
         if (normalizedNode == null) {
             return 0;
         }
         if (normalizedNode == null) {
             return 0;
         }
@@ -381,7 +381,7 @@ public class NormalizedNodePrunerTest {
     }
 
     private static NormalizedNode<?, ?> createTestContainer() {
     }
 
     private static NormalizedNode<?, ?> createTestContainer() {
-        byte[] bytes1 = {1,2,3};
+        byte[] bytes1 = {1, 2, 3};
         LeafSetEntryNode<Object> entry1 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes1)).withValue(bytes1).build();
 
         LeafSetEntryNode<Object> entry1 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes1)).withValue(bytes1).build();
 
@@ -389,14 +389,10 @@ public class NormalizedNodePrunerTest {
         LeafSetEntryNode<Object> entry2 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes2)).withValue(bytes2).build();
 
         LeafSetEntryNode<Object> entry2 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
                 new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, bytes2)).withValue(bytes2).build();
 
-        LeafSetEntryNode<Object> entry3 = ImmutableLeafSetEntryNodeBuilder.create().withNodeIdentifier(
-                new NodeWithValue<>(TestModel.BINARY_LEAF_LIST_QNAME, null)).withValue(null).build();
-
-
         return TestModel.createBaseTestContainerBuilder()
                 .withChild(ImmutableLeafSetNodeBuilder.create().withNodeIdentifier(
                         new NodeIdentifier(TestModel.BINARY_LEAF_LIST_QNAME))
         return TestModel.createBaseTestContainerBuilder()
                 .withChild(ImmutableLeafSetNodeBuilder.create().withNodeIdentifier(
                         new NodeIdentifier(TestModel.BINARY_LEAF_LIST_QNAME))
-                        .withChild(entry1).withChild(entry2).withChild(entry3).build())
+                        .withChild(entry1).withChild(entry2).build())
                 .withChild(ImmutableNodes.leafNode(TestModel.SOME_BINARY_DATA_QNAME, new byte[]{1, 2, 3, 4}))
                 .build();
     }
                 .withChild(ImmutableNodes.leafNode(TestModel.SOME_BINARY_DATA_QNAME, new byte[]{1, 2, 3, 4}))
                 .build();
     }
index 22d4d20dc7e3d3a2995f8f0dc3b93c9ee9a9f72e..72b8a3bb7f2e3eea6f325ba3753a83338087c12d 100644 (file)
@@ -17,10 +17,8 @@ import com.google.common.collect.ImmutableSet;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import java.util.Map;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -49,7 +47,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLe
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
@@ -176,36 +173,17 @@ public final class TestModel {
     }
 
     public static SchemaContext createTestContext() {
     }
 
     public static SchemaContext createTestContext() {
-        List<InputStream> inputStreams = new ArrayList<>();
-        inputStreams.add(getDatastoreTestInputStream());
-        inputStreams.add(getDatastoreAugInputStream());
-        inputStreams.add(getDatastoreTestNotificationInputStream());
-
-        return resolveSchemaContext(inputStreams);
+        return YangParserTestUtils.parseYangResources(TestModel.class, DATASTORE_TEST_YANG, DATASTORE_AUG_YANG,
+            DATASTORE_TEST_NOTIFICATION_YANG);
     }
 
     public static SchemaContext createTestContextWithoutTestSchema() {
     }
 
     public static SchemaContext createTestContextWithoutTestSchema() {
-        List<InputStream> inputStreams = new ArrayList<>();
-        inputStreams.add(getDatastoreTestNotificationInputStream());
-
-        return resolveSchemaContext(inputStreams);
+        return YangParserTestUtils.parseYangResource(DATASTORE_TEST_NOTIFICATION_YANG);
     }
 
     }
 
-
     public static SchemaContext createTestContextWithoutAugmentationSchema() {
     public static SchemaContext createTestContextWithoutAugmentationSchema() {
-        List<InputStream> inputStreams = new ArrayList<>();
-        inputStreams.add(getDatastoreTestInputStream());
-        inputStreams.add(getDatastoreTestNotificationInputStream());
-
-        return resolveSchemaContext(inputStreams);
-    }
-
-    private static SchemaContext resolveSchemaContext(final List<InputStream> streams) {
-        try {
-            return YangParserTestUtils.parseYangStreams(streams);
-        } catch (ReactorException e) {
-            throw new RuntimeException("Unable to build schema context from " + streams, e);
-        }
+        return YangParserTestUtils.parseYangResources(TestModel.class, DATASTORE_TEST_YANG,
+            DATASTORE_TEST_NOTIFICATION_YANG);
     }
 
     /**
     }
 
     /**
index 5ce2d9ba10a42dae65074d1f5c369859d451a234..0b41cdfa4ed8ea300b47222feb855c7fc49b7398 100644 (file)
@@ -14,7 +14,6 @@ import static org.junit.Assert.assertTrue;
 
 import akka.dispatch.ExecutionContexts;
 import akka.dispatch.Futures;
 
 import akka.dispatch.ExecutionContexts;
 import akka.dispatch.Futures;
-import com.google.common.base.Optional;
 import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.MoreExecutors;
@@ -23,6 +22,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.opendaylight.controller.cluster.schema.provider.RemoteYangTextSourceProvider;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.opendaylight.controller.cluster.schema.provider.RemoteYangTextSourceProvider;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
@@ -30,7 +30,7 @@ import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 
 public class RemoteSchemaProviderTest {
 
 
 public class RemoteSchemaProviderTest {
 
-    private static final SourceIdentifier ID = RevisionSourceIdentifier.create("Test", Optional.of("2015-10-30"));
+    private static final SourceIdentifier ID = RevisionSourceIdentifier.create("Test", Revision.of("2015-10-30"));
 
     private RemoteSchemaProvider remoteSchemaProvider;
     private RemoteYangTextSourceProvider mockedRemoteSchemaRepository;
 
     private RemoteSchemaProvider remoteSchemaProvider;
     private RemoteYangTextSourceProvider mockedRemoteSchemaRepository;
index 678bad74156e67e7926c69e2fe2cef3f7e15323e..90fc4772d8acbdab301d5845487afb0b9836b479 100644 (file)
@@ -12,7 +12,6 @@ import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import com.google.common.base.Optional;
 import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.Futures;
 import java.util.Collections;
 import com.google.common.io.ByteSource;
 import com.google.common.util.concurrent.Futures;
 import java.util.Collections;
@@ -20,6 +19,7 @@ import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
@@ -31,7 +31,7 @@ import scala.concurrent.duration.Duration;
 
 public class RemoteYangTextSourceProviderImplTest {
 
 
 public class RemoteYangTextSourceProviderImplTest {
 
-    private static final SourceIdentifier ID = RevisionSourceIdentifier.create("Test", Optional.of("2015-10-30"));
+    private static final SourceIdentifier ID = RevisionSourceIdentifier.create("Test", Revision.of("2015-10-30"));
 
     private RemoteYangTextSourceProviderImpl remoteRepository;
     private SchemaRepository mockedLocalRepository;
 
     private RemoteYangTextSourceProviderImpl remoteRepository;
     private SchemaRepository mockedLocalRepository;
index 95e141ae955336381f00932fd681522ca5cf685b..b2a86e1c0ceef3b1c19f06bc320b7c1911b9c785 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.controller.cluster.schema.provider.impl;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
-import com.google.common.base.Optional;
 import com.google.common.io.ByteSource;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import com.google.common.io.ByteSource;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -21,6 +20,7 @@ import java.io.ObjectOutputStream;
 import java.nio.charset.StandardCharsets;
 import org.junit.Before;
 import org.junit.Test;
 import java.nio.charset.StandardCharsets;
 import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 
@@ -32,7 +32,7 @@ public class YangTextSourceSerializationProxyTest {
     public void setUp() {
         String source = "Test source.";
         schemaSource = YangTextSchemaSource.delegateForByteSource(
     public void setUp() {
         String source = "Test source.";
         schemaSource = YangTextSchemaSource.delegateForByteSource(
-                RevisionSourceIdentifier.create("test", Optional.of("2015-10-30")),
+                RevisionSourceIdentifier.create("test", Revision.of("2015-10-30")),
                 ByteSource.wrap(source.getBytes(StandardCharsets.UTF_8)));
     }
 
                 ByteSource.wrap(source.getBytes(StandardCharsets.UTF_8)));
     }
 
index ca344aa578794a3033575914916502c5474027fa..5aa3ec64313df75330d9ccbc4270777269656d95 100644 (file)
@@ -30,9 +30,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
 import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -326,7 +326,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
 
     private static final class AugmentationNormalization extends DataContainerNormalizationOperation<AugmentationIdentifier> {
 
 
     private static final class AugmentationNormalization extends DataContainerNormalizationOperation<AugmentationIdentifier> {
 
-        public AugmentationNormalization(final AugmentationSchema augmentation, final DataNodeContainer schema) {
+        public AugmentationNormalization(final AugmentationSchemaNode augmentation, final DataNodeContainer schema) {
             super(augmentationIdentifierFrom(augmentation), augmentationProxy(augmentation,schema),null);
         }
 
             super(augmentationIdentifierFrom(augmentation), augmentationProxy(augmentation,schema),null);
         }
 
@@ -347,7 +347,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
 
             final DataSchemaNode result = potential.get();
             // We try to look up if this node was added by augmentation
 
             final DataSchemaNode result = potential.get();
             // We try to look up if this node was added by augmentation
-            if ((schema instanceof DataSchemaNode) && result.isAugmenting()) {
+            if (schema instanceof DataSchemaNode && result.isAugmenting()) {
                 return fromAugmentation(schema, (AugmentationTarget) schema, result);
             }
             return fromDataSchemaNode(result);
                 return fromAugmentation(schema, (AugmentationTarget) schema, result);
             }
             return fromDataSchemaNode(result);
@@ -454,7 +454,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
             final ImmutableMap.Builder<QName, DataNormalizationOperation<?>> byQNameBuilder = ImmutableMap.builder();
             final ImmutableMap.Builder<PathArgument, DataNormalizationOperation<?>> byArgBuilder = ImmutableMap.builder();
 
             final ImmutableMap.Builder<QName, DataNormalizationOperation<?>> byQNameBuilder = ImmutableMap.builder();
             final ImmutableMap.Builder<PathArgument, DataNormalizationOperation<?>> byArgBuilder = ImmutableMap.builder();
 
-            for (final ChoiceCaseNode caze : schema.getCases()) {
+            for (final CaseSchemaNode caze : schema.getCases().values()) {
                 for (final DataSchemaNode cazeChild : caze.getChildNodes()) {
                     final DataNormalizationOperation<?> childOp = fromDataSchemaNode(cazeChild);
                     byArgBuilder.put(childOp.getIdentifier(), childOp);
                 for (final DataSchemaNode cazeChild : caze.getChildNodes()) {
                     final DataNormalizationOperation<?> childOp = fromDataSchemaNode(cazeChild);
                     byArgBuilder.put(childOp.getIdentifier(), childOp);
@@ -529,7 +529,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
 
         final DataSchemaNode result = potential.get();
         // We try to look up if this node was added by augmentation
 
         final DataSchemaNode result = potential.get();
         // We try to look up if this node was added by augmentation
-        if ((schema instanceof DataSchemaNode) && result.isAugmenting()) {
+        if (schema instanceof DataSchemaNode && result.isAugmenting()) {
             return fromAugmentation(schema, (AugmentationTarget) schema, result);
         }
         return fromDataSchemaNode(result);
             return fromAugmentation(schema, (AugmentationTarget) schema, result);
         }
         return fromDataSchemaNode(result);
@@ -538,7 +538,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
     private static ChoiceSchemaNode findChoice(final Iterable<ChoiceSchemaNode> choices, final QName child) {
         ChoiceSchemaNode foundChoice = null;
         choiceLoop: for (final ChoiceSchemaNode choice : choices) {
     private static ChoiceSchemaNode findChoice(final Iterable<ChoiceSchemaNode> choices, final QName child) {
         ChoiceSchemaNode foundChoice = null;
         choiceLoop: for (final ChoiceSchemaNode choice : choices) {
-            for (final ChoiceCaseNode caze : choice.getCases()) {
+            for (final CaseSchemaNode caze : choice.getCases().values()) {
                 if (findChildSchemaNode(caze, child).isPresent()) {
                     foundChoice = choice;
                     break choiceLoop;
                 if (findChildSchemaNode(caze, child).isPresent()) {
                     foundChoice = choice;
                     break choiceLoop;
@@ -548,7 +548,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
         return foundChoice;
     }
 
         return foundChoice;
     }
 
-    public static AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchema augmentation) {
+    public static AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchemaNode augmentation) {
         final ImmutableSet.Builder<QName> potentialChildren = ImmutableSet.builder();
         for (final DataSchemaNode child : augmentation.getChildNodes()) {
             potentialChildren.add(child.getQName());
         final ImmutableSet.Builder<QName> potentialChildren = ImmutableSet.builder();
         for (final DataSchemaNode child : augmentation.getChildNodes()) {
             potentialChildren.add(child.getQName());
@@ -556,7 +556,8 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
         return new AugmentationIdentifier(potentialChildren.build());
     }
 
         return new AugmentationIdentifier(potentialChildren.build());
     }
 
-    private static DataNodeContainer augmentationProxy(final AugmentationSchema augmentation, final DataNodeContainer schema) {
+    private static DataNodeContainer augmentationProxy(final AugmentationSchemaNode augmentation,
+            final DataNodeContainer schema) {
         final Set<DataSchemaNode> children = new HashSet<>();
         for (final DataSchemaNode augNode : augmentation.getChildNodes()) {
             children.add(schema.getDataChildByName(augNode.getQName()));
         final Set<DataSchemaNode> children = new HashSet<>();
         for (final DataSchemaNode augNode : augmentation.getChildNodes()) {
             children.add(schema.getDataChildByName(augNode.getQName()));
@@ -580,8 +581,8 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
      */
     private static DataNormalizationOperation<?> fromAugmentation(final DataNodeContainer parent,
             final AugmentationTarget parentAug, final DataSchemaNode child) {
      */
     private static DataNormalizationOperation<?> fromAugmentation(final DataNodeContainer parent,
             final AugmentationTarget parentAug, final DataSchemaNode child) {
-        AugmentationSchema augmentation = null;
-        for (final AugmentationSchema aug : parentAug.getAvailableAugmentations()) {
+        AugmentationSchemaNode augmentation = null;
+        for (final AugmentationSchemaNode aug : parentAug.getAvailableAugmentations()) {
             final DataSchemaNode potential = aug.getDataChildByName(child.getQName());
             if (potential != null) {
                 augmentation = aug;
             final DataSchemaNode potential = aug.getDataChildByName(child.getQName());
             if (potential != null) {
                 augmentation = aug;
index 4c24c8a7f500c250237ce04cd4e055a42d003121..fc3db54ae063503110bebaedab6b99a7def7be2d 100644 (file)
@@ -10,8 +10,8 @@ package org.opendaylight.controller.md.sal.common.impl.util.compat;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.Set;
-
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -28,13 +28,13 @@ class DataSchemaContainerProxy implements DataNodeContainer {
         realChildSchemas = realChildSchema;
         mappedChildSchemas = new HashMap<>();
         for(DataSchemaNode schema : realChildSchemas) {
         realChildSchemas = realChildSchema;
         mappedChildSchemas = new HashMap<>();
         for(DataSchemaNode schema : realChildSchemas) {
-            mappedChildSchemas.put(schema.getQName(),schema);
+            mappedChildSchemas.put(schema.getQName(), schema);
         }
     }
 
     @Override
         }
     }
 
     @Override
-    public DataSchemaNode getDataChildByName(final QName name) {
-        return mappedChildSchemas.get(name);
+    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        return Optional.ofNullable(mappedChildSchemas.get(name));
     }
 
     @Override
     }
 
     @Override
@@ -56,5 +56,4 @@ class DataSchemaContainerProxy implements DataNodeContainer {
     public Set<UsesNode> getUses() {
         return Collections.emptySet();
     }
     public Set<UsesNode> getUses() {
         return Collections.emptySet();
     }
-
 }
 }
index b6e9bfabab833e7123583d18b26ea679e23c77c0..89402091fc5173996bbe25f2d711408999902537 100644 (file)
@@ -85,7 +85,7 @@ abstract class LocalProxyTransaction extends AbstractProxyTransaction {
 
     @Override
     final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> doRead(final YangInstanceIdentifier path) {
 
     @Override
     final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> doRead(final YangInstanceIdentifier path) {
-        return Futures.immediateCheckedFuture(readOnlyView().readNode(path));
+        return Futures.immediateCheckedFuture(Optional.fromJavaUtil(readOnlyView().readNode(path)));
     }
 
     @Override
     }
 
     @Override
@@ -109,7 +109,7 @@ abstract class LocalProxyTransaction extends AbstractProxyTransaction {
         // listeners, which we do not want to execute while we are reconnecting.
         if (request instanceof ReadTransactionRequest) {
             final YangInstanceIdentifier path = ((ReadTransactionRequest) request).getPath();
         // listeners, which we do not want to execute while we are reconnecting.
         if (request instanceof ReadTransactionRequest) {
             final YangInstanceIdentifier path = ((ReadTransactionRequest) request).getPath();
-            final Optional<NormalizedNode<?, ?>> result = readOnlyView().readNode(path);
+            final Optional<NormalizedNode<?, ?>> result = Optional.fromJavaUtil(readOnlyView().readNode(path));
             if (callback != null) {
                 // XXX: FB does not see that callback is final, on stack and has be check for non-null.
                 final Consumer<Response<?, ?>> fbIsStupid = Preconditions.checkNotNull(callback);
             if (callback != null) {
                 // XXX: FB does not see that callback is final, on stack and has be check for non-null.
                 final Consumer<Response<?, ?>> fbIsStupid = Preconditions.checkNotNull(callback);
index b245ceee2d249ae0f841a69342412ce1eab8272e..881518308c021af10b27006c00faffcd5cc214c2 100644 (file)
@@ -84,14 +84,16 @@ final class FrontendReadOnlyTransaction extends FrontendTransaction {
 
     private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request)
             throws RequestException {
 
     private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request)
             throws RequestException {
-        final Optional<NormalizedNode<?, ?>> data = openTransaction.getSnapshot().readNode(request.getPath());
+        final Optional<NormalizedNode<?, ?>> data = Optional.fromJavaUtil(openTransaction.getSnapshot()
+            .readNode(request.getPath()));
         return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(openTransaction.getIdentifier(),
             request.getSequence(), data.isPresent()));
     }
 
     private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request)
             throws RequestException {
         return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(openTransaction.getIdentifier(),
             request.getSequence(), data.isPresent()));
     }
 
     private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request)
             throws RequestException {
-        final Optional<NormalizedNode<?, ?>> data = openTransaction.getSnapshot().readNode(request.getPath());
+        final Optional<NormalizedNode<?, ?>> data = Optional.fromJavaUtil(openTransaction.getSnapshot().readNode(
+            request.getPath()));
         return recordSuccess(request.getSequence(), new ReadTransactionSuccess(openTransaction.getIdentifier(),
             request.getSequence(), data));
     }
         return recordSuccess(request.getSequence(), new ReadTransactionSuccess(openTransaction.getIdentifier(),
             request.getSequence(), data));
     }
index 2b444a6b579901bde4c10e0531ae4092218cdb4c..5af7c7954ebbf1abc74ecf14d24fb5c481230b61 100644 (file)
@@ -525,14 +525,16 @@ final class FrontendReadWriteTransaction extends FrontendTransaction {
 
     private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request)
             throws RequestException {
 
     private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request)
             throws RequestException {
-        final Optional<NormalizedNode<?, ?>> data = checkOpen().getSnapshot().readNode(request.getPath());
+        final Optional<NormalizedNode<?, ?>> data = Optional.fromJavaUtil(checkOpen().getSnapshot().readNode(
+            request.getPath()));
         return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(getIdentifier(), request.getSequence(),
             data.isPresent()));
     }
 
     private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request)
             throws RequestException {
         return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(getIdentifier(), request.getSequence(),
             data.isPresent()));
     }
 
     private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request)
             throws RequestException {
-        final Optional<NormalizedNode<?, ?>> data = checkOpen().getSnapshot().readNode(request.getPath());
+        final Optional<NormalizedNode<?, ?>> data = Optional.fromJavaUtil(checkOpen().getSnapshot().readNode(
+            request.getPath()));
         return recordSuccess(request.getSequence(), new ReadTransactionSuccess(getIdentifier(), request.getSequence(),
             data));
     }
         return recordSuccess(request.getSequence(), new ReadTransactionSuccess(getIdentifier(), request.getSequence(),
             data));
     }
index 3719f749df6bce26cbe469250284ffd834bba8a0..d7bbc1ca3c19a7ffb59f8424635fcfc153ecd0cc 100644 (file)
@@ -103,8 +103,8 @@ import org.opendaylight.controller.cluster.raft.messages.RequestLeadership;
 import org.opendaylight.controller.cluster.raft.messages.ServerRemoved;
 import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
 import org.opendaylight.yangtools.concepts.Identifier;
 import org.opendaylight.controller.cluster.raft.messages.ServerRemoved;
 import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
 import org.opendaylight.yangtools.concepts.Identifier;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
@@ -1025,7 +1025,7 @@ public class Shard extends RaftActor {
         private DatastoreContext datastoreContext;
         private SchemaContextProvider schemaContextProvider;
         private DatastoreSnapshot.ShardSnapshot restoreFromSnapshot;
         private DatastoreContext datastoreContext;
         private SchemaContextProvider schemaContextProvider;
         private DatastoreSnapshot.ShardSnapshot restoreFromSnapshot;
-        private TipProducingDataTree dataTree;
+        private DataTree dataTree;
         private volatile boolean sealed;
 
         protected AbstractBuilder(final Class<S> shardClass) {
         private volatile boolean sealed;
 
         protected AbstractBuilder(final Class<S> shardClass) {
@@ -1071,7 +1071,7 @@ public class Shard extends RaftActor {
             return self();
         }
 
             return self();
         }
 
-        public T dataTree(final TipProducingDataTree newDataTree) {
+        public T dataTree(final DataTree newDataTree) {
             checkSealed();
             this.dataTree = newDataTree;
             return self();
             checkSealed();
             this.dataTree = newDataTree;
             return self();
@@ -1097,7 +1097,7 @@ public class Shard extends RaftActor {
             return restoreFromSnapshot;
         }
 
             return restoreFromSnapshot;
         }
 
-        public TipProducingDataTree getDataTree() {
+        public DataTree getDataTree() {
             return dataTree;
         }
 
             return dataTree;
         }
 
index e399cd49ab3d79427d10c8f8a723a2164c27e1d2..9aca517bb110d2f28381167962f2ad8f3de288af 100644 (file)
@@ -68,15 +68,15 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTreeTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -129,24 +129,24 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     private final ShardDataTreeChangeListenerPublisher treeChangeListenerPublisher;
     private final ShardDataChangeListenerPublisher dataChangeListenerPublisher;
     private final Collection<ShardDataTreeMetadata<?>> metadata;
     private final ShardDataTreeChangeListenerPublisher treeChangeListenerPublisher;
     private final ShardDataChangeListenerPublisher dataChangeListenerPublisher;
     private final Collection<ShardDataTreeMetadata<?>> metadata;
-    private final TipProducingDataTree dataTree;
+    private final DataTree dataTree;
     private final String logContext;
     private final Shard shard;
     private Runnable runOnPendingTransactionsComplete;
 
     /**
      * Optimistic {@link DataTreeCandidate} preparation. Since our DataTree implementation is a
     private final String logContext;
     private final Shard shard;
     private Runnable runOnPendingTransactionsComplete;
 
     /**
      * Optimistic {@link DataTreeCandidate} preparation. Since our DataTree implementation is a
-     * {@link TipProducingDataTree}, each {@link DataTreeCandidate} is also a {@link DataTreeTip}, e.g. another
+     * {@link DataTree}, each {@link DataTreeCandidate} is also a {@link DataTreeTip}, e.g. another
      * candidate can be prepared on top of it. They still need to be committed in sequence. Here we track the current
      * tip of the data tree, which is the last DataTreeCandidate we have in flight, or the DataTree itself.
      */
      * candidate can be prepared on top of it. They still need to be committed in sequence. Here we track the current
      * tip of the data tree, which is the last DataTreeCandidate we have in flight, or the DataTree itself.
      */
-    private TipProducingDataTreeTip tip;
+    private DataTreeTip tip;
 
     private SchemaContext schemaContext;
 
     private int currentTransactionBatch;
 
 
     private SchemaContext schemaContext;
 
     private int currentTransactionBatch;
 
-    ShardDataTree(final Shard shard, final SchemaContext schemaContext, final TipProducingDataTree dataTree,
+    ShardDataTree(final Shard shard, final SchemaContext schemaContext, final DataTree dataTree,
             final ShardDataTreeChangeListenerPublisher treeChangeListenerPublisher,
             final ShardDataChangeListenerPublisher dataChangeListenerPublisher, final String logContext,
             final ShardDataTreeMetadata<?>... metadata) {
             final ShardDataTreeChangeListenerPublisher treeChangeListenerPublisher,
             final ShardDataChangeListenerPublisher dataChangeListenerPublisher, final String logContext,
             final ShardDataTreeMetadata<?>... metadata) {
@@ -166,8 +166,17 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
             final ShardDataTreeChangeListenerPublisher treeChangeListenerPublisher,
             final ShardDataChangeListenerPublisher dataChangeListenerPublisher, final String logContext,
             final ShardDataTreeMetadata<?>... metadata) {
             final ShardDataTreeChangeListenerPublisher treeChangeListenerPublisher,
             final ShardDataChangeListenerPublisher dataChangeListenerPublisher, final String logContext,
             final ShardDataTreeMetadata<?>... metadata) {
-        this(shard, schemaContext, InMemoryDataTreeFactory.getInstance().create(treeType, root),
-                treeChangeListenerPublisher, dataChangeListenerPublisher, logContext, metadata);
+        this(shard, schemaContext, createDataTree(treeType, root), treeChangeListenerPublisher,
+            dataChangeListenerPublisher, logContext, metadata);
+    }
+
+    private static DataTree createDataTree(final TreeType treeType, final YangInstanceIdentifier root) {
+        final DataTreeConfiguration baseConfig = DataTreeConfiguration.getDefault(treeType);
+        return new InMemoryDataTreeFactory().create(new DataTreeConfiguration.Builder(baseConfig.getTreeType())
+                .setMandatoryNodesValidation(baseConfig.isMandatoryNodesValidationEnabled())
+                .setUniqueIndexes(baseConfig.isUniqueIndexEnabled())
+                .setRootPath(root)
+                .build());
     }
 
     @VisibleForTesting
     }
 
     @VisibleForTesting
@@ -185,7 +194,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
         return shard.ticker().read();
     }
 
         return shard.ticker().read();
     }
 
-    public TipProducingDataTree getDataTree() {
+    public DataTree getDataTree() {
         return dataTree;
     }
 
         return dataTree;
     }
 
@@ -619,7 +628,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     }
 
     Optional<DataTreeCandidate> readCurrentData() {
     }
 
     Optional<DataTreeCandidate> readCurrentData() {
-        final Optional<NormalizedNode<?, ?>> currentState =
+        final java.util.Optional<NormalizedNode<?, ?>> currentState =
                 dataTree.takeSnapshot().readNode(YangInstanceIdentifier.EMPTY);
         return currentState.isPresent() ? Optional.of(DataTreeCandidates.fromNormalizedNode(
             YangInstanceIdentifier.EMPTY, currentState.get())) : Optional.<DataTreeCandidate>absent();
                 dataTree.takeSnapshot().readNode(YangInstanceIdentifier.EMPTY);
         return currentState.isPresent() ? Optional.of(DataTreeCandidates.fromNormalizedNode(
             YangInstanceIdentifier.EMPTY, currentState.get())) : Optional.<DataTreeCandidate>absent();
@@ -662,7 +671,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     }
 
     public Optional<NormalizedNode<?, ?>> readNode(final YangInstanceIdentifier path) {
     }
 
     public Optional<NormalizedNode<?, ?>> readNode(final YangInstanceIdentifier path) {
-        return dataTree.takeSnapshot().readNode(path);
+        return Optional.fromJavaUtil(dataTree.takeSnapshot().readNode(path));
     }
 
     DataTreeSnapshot takeSnapshot() {
     }
 
     DataTreeSnapshot takeSnapshot() {
@@ -1092,7 +1101,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
             return false;
         }
 
             return false;
         }
 
-        TipProducingDataTreeTip newTip = MoreObjects.firstNonNull(first.cohort.getCandidate(), dataTree);
+        DataTreeTip newTip = MoreObjects.firstNonNull(first.cohort.getCandidate(), dataTree);
         while (it.hasNext()) {
             final CommitEntry e = it.next();
             if (cohort.equals(e.cohort)) {
         while (it.hasNext()) {
             final CommitEntry e = it.next();
             if (cohort.equals(e.cohort)) {
@@ -1114,7 +1123,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    private void rebaseTransactions(final Iterator<CommitEntry> iter, @Nonnull final TipProducingDataTreeTip newTip) {
+    private void rebaseTransactions(final Iterator<CommitEntry> iter, @Nonnull final DataTreeTip newTip) {
         tip = Preconditions.checkNotNull(newTip);
         while (iter.hasNext()) {
             final SimpleShardDataTreeCohort cohort = iter.next().cohort;
         tip = Preconditions.checkNotNull(newTip);
         while (iter.hasNext()) {
             final SimpleShardDataTreeCohort cohort = iter.next().cohort;
index 0e82116a0d009065bdc9e0ce910ee5d23ead779a..5b9c95f3b7ce16870321b98a61aaab1539828d2c 100644 (file)
@@ -13,7 +13,6 @@ import akka.actor.PoisonPill;
 import akka.actor.Props;
 import akka.actor.ReceiveTimeout;
 import akka.japi.Creator;
 import akka.actor.Props;
 import akka.actor.ReceiveTimeout;
 import akka.japi.Creator;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
 import com.google.common.base.Preconditions;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
@@ -28,7 +27,6 @@ import org.opendaylight.controller.cluster.datastore.messages.ReadData;
 import org.opendaylight.controller.cluster.datastore.messages.ReadDataReply;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.controller.cluster.datastore.messages.ReadDataReply;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 /**
  * The ShardTransaction Actor represents a remote transaction that delegates all actions to DOMDataReadWriteTransaction.
 
 /**
  * The ShardTransaction Actor represents a remote transaction that delegates all actions to DOMDataReadWriteTransaction.
@@ -105,8 +103,8 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering
         }
 
         final YangInstanceIdentifier path = message.getPath();
         }
 
         final YangInstanceIdentifier path = message.getPath();
-        Optional<NormalizedNode<?, ?>> optional = transaction.getSnapshot().readNode(path);
-        ReadDataReply readDataReply = new ReadDataReply(optional.orNull(), message.getVersion());
+        ReadDataReply readDataReply = new ReadDataReply(transaction.getSnapshot().readNode(path).orElse(null),
+            message.getVersion());
         sender().tell(readDataReply.toSerializable(), self());
     }
 
         sender().tell(readDataReply.toSerializable(), self());
     }
 
index 7d872b4a037a85ad8b7f125b21f58c36459dfc53..0b3ac7a24359f93c1d0ea1e9739680e76f55578c 100644 (file)
@@ -24,13 +24,12 @@ public abstract class AbstractEntityOwnerChangeListener implements DOMDataTreeCh
             .node(EntityType.QNAME).node(EntityType.QNAME).node(ENTITY_QNAME).node(ENTITY_QNAME)
             .node(ENTITY_OWNER_QNAME).build();
 
             .node(EntityType.QNAME).node(EntityType.QNAME).node(ENTITY_QNAME).node(ENTITY_QNAME)
             .node(ENTITY_OWNER_QNAME).build();
 
-    void init(ShardDataTree shardDataTree) {
+    void init(final ShardDataTree shardDataTree) {
         shardDataTree.registerTreeChangeListener(EOS_PATH, this, Optional.absent(), noop -> { /* NOOP */ });
     }
 
         shardDataTree.registerTreeChangeListener(EOS_PATH, this, Optional.absent(), noop -> { /* NOOP */ });
     }
 
-    protected static String extractOwner(LeafNode<?> ownerLeaf) {
-        Object value = ownerLeaf.getValue();
-        return value != null ? value.toString() : null;
+    protected static String extractOwner(final LeafNode<?> ownerLeaf) {
+        return ownerLeaf.getValue().toString();
     }
 
 }
     }
 
 }
index 398671e660a7e92aaf13ec6eb3b8896e3d1b1b1c..4d65c55b83e43e8ff1b1d1c74b4b316f103fb43b 100644 (file)
@@ -20,7 +20,8 @@ class DistributedEntityOwnershipCandidateRegistration extends AbstractObjectRegi
         implements DOMEntityOwnershipCandidateRegistration {
     private final DistributedEntityOwnershipService service;
 
         implements DOMEntityOwnershipCandidateRegistration {
     private final DistributedEntityOwnershipService service;
 
-    DistributedEntityOwnershipCandidateRegistration(DOMEntity entity, DistributedEntityOwnershipService service) {
+    DistributedEntityOwnershipCandidateRegistration(final DOMEntity entity,
+            final DistributedEntityOwnershipService service) {
         super(entity);
         this.service = service;
     }
         super(entity);
         this.service = service;
     }
@@ -29,11 +30,4 @@ class DistributedEntityOwnershipCandidateRegistration extends AbstractObjectRegi
     protected void removeRegistration() {
         service.unregisterCandidate(getInstance());
     }
     protected void removeRegistration() {
         service.unregisterCandidate(getInstance());
     }
-
-    @Override
-    public String toString() {
-        return "DistributedEntityOwnershipCandidateRegistration [entity=" + getInstance() + "]";
-    }
-
-
 }
 }
index 2e0f4b4f2d9b748e5e784736e52d28d264e7df8c..149551b8c89bc912b569e669fade1a255422327e 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.controller.cluster.datastore.entityownership;
 
  */
 package org.opendaylight.controller.cluster.datastore.entityownership;
 
+import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Preconditions;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListenerRegistration;
 import com.google.common.base.Preconditions;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListenerRegistration;
@@ -22,8 +23,8 @@ class DistributedEntityOwnershipListenerRegistration extends AbstractObjectRegis
     private final DistributedEntityOwnershipService service;
     private final String entityType;
 
     private final DistributedEntityOwnershipService service;
     private final String entityType;
 
-    DistributedEntityOwnershipListenerRegistration(DOMEntityOwnershipListener listener, String entityType,
-            DistributedEntityOwnershipService service) {
+    DistributedEntityOwnershipListenerRegistration(final DOMEntityOwnershipListener listener, final String entityType,
+            final DistributedEntityOwnershipService service) {
         super(listener);
         this.entityType = Preconditions.checkNotNull(entityType, "entityType cannot be null");
         this.service = Preconditions.checkNotNull(service, "DOMEntityOwnershipListener cannot be null");
         super(listener);
         this.entityType = Preconditions.checkNotNull(entityType, "entityType cannot be null");
         this.service = Preconditions.checkNotNull(service, "DOMEntityOwnershipListener cannot be null");
@@ -40,8 +41,7 @@ class DistributedEntityOwnershipListenerRegistration extends AbstractObjectRegis
     }
 
     @Override
     }
 
     @Override
-    public String toString() {
-        return "DistributedEntityOwnershipListenerRegistration [entityType=" + getEntityType()
-                + ", listener=" + getInstance() + "]";
+    protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
+        return toStringHelper.add("entityType", entityType);
     }
 }
     }
 }
index 944d14a3d91b1c9441f6569689d1e43bb1f2e415..1cb744670e7e5eb6e1c2e32f70e816b38f39bd2a 100644 (file)
@@ -187,7 +187,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
             return Optional.absent();
         }
 
             return Optional.absent();
         }
 
-        Optional<NormalizedNode<?, ?>> entityNode = dataTree.takeSnapshot().readNode(
+        java.util.Optional<NormalizedNode<?, ?>> entityNode = dataTree.takeSnapshot().readNode(
                 entityPath(forEntity.getType(), forEntity.getIdentifier()));
         if (!entityNode.isPresent()) {
             return Optional.absent();
                 entityPath(forEntity.getType(), forEntity.getIdentifier()));
         if (!entityNode.isPresent()) {
             return Optional.absent();
@@ -195,7 +195,7 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
 
         // Check if there are any candidates, if there are none we do not really have ownership state
         final MapEntryNode entity = (MapEntryNode) entityNode.get();
 
         // Check if there are any candidates, if there are none we do not really have ownership state
         final MapEntryNode entity = (MapEntryNode) entityNode.get();
-        final Optional<DataContainerChild<? extends PathArgument, ?>> optionalCandidates =
+        final java.util.Optional<DataContainerChild<? extends PathArgument, ?>> optionalCandidates =
                 entity.getChild(CANDIDATE_NODE_ID);
         final boolean hasCandidates = optionalCandidates.isPresent()
                 && ((MapNode) optionalCandidates.get()).getValue().size() > 0;
                 entity.getChild(CANDIDATE_NODE_ID);
         final boolean hasCandidates = optionalCandidates.isPresent()
                 && ((MapNode) optionalCandidates.get()).getValue().size() > 0;
@@ -204,7 +204,8 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
         }
 
         MemberName localMemberName = context.getCurrentMemberName();
         }
 
         MemberName localMemberName = context.getCurrentMemberName();
-        Optional<DataContainerChild<? extends PathArgument, ?>> ownerLeaf = entity.getChild(ENTITY_OWNER_NODE_ID);
+        java.util.Optional<DataContainerChild<? extends PathArgument, ?>> ownerLeaf = entity.getChild(
+            ENTITY_OWNER_NODE_ID);
         String owner = ownerLeaf.isPresent() ? ownerLeaf.get().getValue().toString() : null;
         boolean hasOwner = !Strings.isNullOrEmpty(owner);
         boolean isOwner = hasOwner && localMemberName.getName().equals(owner);
         String owner = ownerLeaf.isPresent() ? ownerLeaf.get().getValue().toString() : null;
         boolean hasOwner = !Strings.isNullOrEmpty(owner);
         boolean isOwner = hasOwner && localMemberName.getName().equals(owner);
index 04037b35ea7ff81d8ce25fe02da8e15b16c9156b..02017453197e95f0467b96920fafc62820b4bc0f 100644 (file)
@@ -9,12 +9,12 @@ package org.opendaylight.controller.cluster.datastore.entityownership;
 
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.createEntity;
 
 
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.createEntity;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.base.Verify;
 import java.util.Collection;
 import java.util.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.base.Verify;
 import java.util.Collection;
 import java.util.Objects;
+import java.util.Optional;
 import org.opendaylight.controller.cluster.access.concepts.MemberName;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.controller.cluster.access.concepts.MemberName;
 import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
index a392049a84ffd618ca670ef580566d7964910f3f..22d5935ca3a6a18c901afd3bc06f01f373f23cc4 100644 (file)
@@ -52,15 +52,15 @@ public final class EntityOwnersModel {
     private EntityOwnersModel() {
     }
 
     private EntityOwnersModel() {
     }
 
-    static YangInstanceIdentifier entityPath(String entityType, YangInstanceIdentifier entityId) {
+    static YangInstanceIdentifier entityPath(final String entityType, final YangInstanceIdentifier entityId) {
         return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME)
                 .nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME)
                         .nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).build();
 
     }
 
         return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME)
                 .nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME)
                         .nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).build();
 
     }
 
-    static YangInstanceIdentifier candidatePath(String entityType, YangInstanceIdentifier entityId,
-            String candidateName) {
+    static YangInstanceIdentifier candidatePath(final String entityType, final YangInstanceIdentifier entityId,
+            final String candidateName) {
         return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME)
                 .nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME)
                         .nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).node(Candidate.QNAME)
         return YangInstanceIdentifier.builder(ENTITY_OWNERS_PATH).node(EntityType.QNAME)
                 .nodeWithKey(EntityType.QNAME, ENTITY_TYPE_QNAME, entityType).node(ENTITY_QNAME)
                         .nodeWithKey(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).node(Candidate.QNAME)
@@ -68,53 +68,55 @@ public final class EntityOwnersModel {
 
     }
 
 
     }
 
-    static YangInstanceIdentifier candidatePath(YangInstanceIdentifier entityPath, String candidateName) {
+    static YangInstanceIdentifier candidatePath(final YangInstanceIdentifier entityPath, final String candidateName) {
         return YangInstanceIdentifier.builder(entityPath).node(Candidate.QNAME).nodeWithKey(
                 Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName).build();
     }
 
         return YangInstanceIdentifier.builder(entityPath).node(Candidate.QNAME).nodeWithKey(
                 Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName).build();
     }
 
-    static NodeIdentifierWithPredicates candidateNodeKey(String candidateName) {
+    static NodeIdentifierWithPredicates candidateNodeKey(final String candidateName) {
         return new NodeIdentifierWithPredicates(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName);
     }
 
         return new NodeIdentifierWithPredicates(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName);
     }
 
-    static NormalizedNode<?, ?> entityOwnersWithCandidate(String entityType, YangInstanceIdentifier entityId,
-            String candidateName) {
+    static NormalizedNode<?, ?> entityOwnersWithCandidate(final String entityType,
+            final YangInstanceIdentifier entityId, final String candidateName) {
         return entityOwnersWithEntityTypeEntry(entityTypeEntryWithEntityEntry(entityType,
                 entityEntryWithCandidateEntry(entityId, candidateName)));
     }
 
         return entityOwnersWithEntityTypeEntry(entityTypeEntryWithEntityEntry(entityType,
                 entityEntryWithCandidateEntry(entityId, candidateName)));
     }
 
-    static ContainerNode entityOwnersWithEntityTypeEntry(MapEntryNode entityTypeNode) {
+    static ContainerNode entityOwnersWithEntityTypeEntry(final MapEntryNode entityTypeNode) {
         return ImmutableContainerNodeBuilder.create().withNodeIdentifier(
                 ENTITY_OWNERS_NODE_ID).addChild(ImmutableNodes.mapNodeBuilder(EntityType.QNAME)
                         .addChild(entityTypeNode).build()).build();
     }
 
         return ImmutableContainerNodeBuilder.create().withNodeIdentifier(
                 ENTITY_OWNERS_NODE_ID).addChild(ImmutableNodes.mapNodeBuilder(EntityType.QNAME)
                         .addChild(entityTypeNode).build()).build();
     }
 
-    static MapEntryNode entityTypeEntryWithEntityEntry(String entityType, MapEntryNode entityNode) {
+    static MapEntryNode entityTypeEntryWithEntityEntry(final String entityType, final MapEntryNode entityNode) {
         return ImmutableNodes.mapEntryBuilder(EntityType.QNAME,
                 ENTITY_TYPE_QNAME, entityType).addChild(ImmutableNodes.mapNodeBuilder(
                         ENTITY_QNAME).addChild(entityNode).build()).build();
     }
 
         return ImmutableNodes.mapEntryBuilder(EntityType.QNAME,
                 ENTITY_TYPE_QNAME, entityType).addChild(ImmutableNodes.mapNodeBuilder(
                         ENTITY_QNAME).addChild(entityNode).build()).build();
     }
 
-    static MapEntryNode entityEntryWithCandidateEntry(YangInstanceIdentifier entityId, String candidateName) {
+    static MapEntryNode entityEntryWithCandidateEntry(final YangInstanceIdentifier entityId,
+            final String candidateName) {
         return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).addChild(
                 candidateEntry(candidateName)).build();
     }
 
         return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).addChild(
                 candidateEntry(candidateName)).build();
     }
 
-    static MapNode candidateEntry(String candidateName) {
+    static MapNode candidateEntry(final String candidateName) {
         return ImmutableOrderedMapNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(Candidate.QNAME))
                 .addChild(candidateMapEntry(candidateName)).build();
     }
 
         return ImmutableOrderedMapNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(Candidate.QNAME))
                 .addChild(candidateMapEntry(candidateName)).build();
     }
 
-    static MapEntryNode candidateMapEntry(String candidateName) {
+    static MapEntryNode candidateMapEntry(final String candidateName) {
         return ImmutableNodes.mapEntry(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName);
     }
 
         return ImmutableNodes.mapEntry(Candidate.QNAME, CANDIDATE_NAME_QNAME, candidateName);
     }
 
-    static MapEntryNode entityEntryWithOwner(YangInstanceIdentifier entityId, String owner) {
-        return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId).addChild(
-                ImmutableNodes.leafNode(ENTITY_OWNER_QNAME, owner)).build();
+    static MapEntryNode entityEntryWithOwner(final YangInstanceIdentifier entityId, final String owner) {
+        return ImmutableNodes.mapEntryBuilder(ENTITY_QNAME, ENTITY_ID_QNAME, entityId)
+                .addChild(ImmutableNodes.leafNode(ENTITY_OWNER_QNAME, owner != null ? owner : ""))
+                .build();
     }
 
     }
 
-    public static String entityTypeFromEntityPath(YangInstanceIdentifier entityPath) {
+    public static String entityTypeFromEntityPath(final YangInstanceIdentifier entityPath) {
         YangInstanceIdentifier parent = entityPath;
         while (!parent.isEmpty()) {
             if (EntityType.QNAME.equals(parent.getLastPathArgument().getNodeType())) {
         YangInstanceIdentifier parent = entityPath;
         while (!parent.isEmpty()) {
             if (EntityType.QNAME.equals(parent.getLastPathArgument().getNodeType())) {
@@ -127,7 +129,7 @@ public final class EntityOwnersModel {
         return null;
     }
 
         return null;
     }
 
-    static DOMEntity createEntity(YangInstanceIdentifier entityPath) {
+    static DOMEntity createEntity(final YangInstanceIdentifier entityPath) {
         String entityType = null;
         YangInstanceIdentifier entityId = null;
         for (PathArgument pathArg: entityPath.getPathArguments()) {
         String entityType = null;
         YangInstanceIdentifier entityId = null;
         for (PathArgument pathArg: entityPath.getPathArguments()) {
index b20d91cb76c47ee57e2265712e10f452d585f6bd..6f4c8dbbd29f5afa875825943cf213debd71a843 100644 (file)
@@ -199,13 +199,13 @@ class EntityOwnershipShard extends Shard {
         getSender().tell(SuccessReply.INSTANCE, getSelf());
 
         searchForEntities((entityTypeNode, entityNode) -> {
         getSender().tell(SuccessReply.INSTANCE, getSelf());
 
         searchForEntities((entityTypeNode, entityNode) -> {
-            Optional<DataContainerChild<?, ?>> possibleType = entityTypeNode.getChild(ENTITY_TYPE_NODE_ID);
+            java.util.Optional<DataContainerChild<?, ?>> possibleType = entityTypeNode.getChild(ENTITY_TYPE_NODE_ID);
             String entityType = possibleType.isPresent() ? possibleType.get().getValue().toString() : null;
             if (registerListener.getEntityType().equals(entityType)) {
                 final boolean hasOwner;
                 final boolean isOwner;
 
             String entityType = possibleType.isPresent() ? possibleType.get().getValue().toString() : null;
             if (registerListener.getEntityType().equals(entityType)) {
                 final boolean hasOwner;
                 final boolean isOwner;
 
-                Optional<DataContainerChild<?, ?>> possibleOwner = entityNode.getChild(ENTITY_OWNER_NODE_ID);
+                java.util.Optional<DataContainerChild<?, ?>> possibleOwner = entityNode.getChild(ENTITY_OWNER_NODE_ID);
                 if (possibleOwner.isPresent()) {
                     isOwner = localMemberName.getName().equals(possibleOwner.get().getValue().toString());
                     hasOwner = true;
                 if (possibleOwner.isPresent()) {
                     isOwner = localMemberName.getName().equals(possibleOwner.get().getValue().toString());
                     hasOwner = true;
@@ -299,12 +299,12 @@ class EntityOwnershipShard extends Shard {
 
     private void notifyAllListeners() {
         searchForEntities((entityTypeNode, entityNode) -> {
 
     private void notifyAllListeners() {
         searchForEntities((entityTypeNode, entityNode) -> {
-            Optional<DataContainerChild<?, ?>> possibleType = entityTypeNode.getChild(ENTITY_TYPE_NODE_ID);
+            java.util.Optional<DataContainerChild<?, ?>> possibleType = entityTypeNode.getChild(ENTITY_TYPE_NODE_ID);
             if (possibleType.isPresent()) {
                 final boolean hasOwner;
                 final boolean isOwner;
 
             if (possibleType.isPresent()) {
                 final boolean hasOwner;
                 final boolean isOwner;
 
-                Optional<DataContainerChild<?, ?>> possibleOwner = entityNode.getChild(ENTITY_OWNER_NODE_ID);
+                java.util.Optional<DataContainerChild<?, ?>> possibleOwner = entityNode.getChild(ENTITY_OWNER_NODE_ID);
                 if (possibleOwner.isPresent()) {
                     isOwner = localMemberName.getName().equals(possibleOwner.get().getValue().toString());
                     hasOwner = true;
                 if (possibleOwner.isPresent()) {
                     isOwner = localMemberName.getName().equals(possibleOwner.get().getValue().toString());
                     hasOwner = true;
@@ -388,12 +388,12 @@ class EntityOwnershipShard extends Shard {
                     .node(entityTypeNode.getIdentifier()).node(ENTITY_NODE_ID).node(entityNode.getIdentifier())
                     .node(ENTITY_OWNER_NODE_ID).build();
 
                     .node(entityTypeNode.getIdentifier()).node(ENTITY_NODE_ID).node(entityNode.getIdentifier())
                     .node(ENTITY_OWNER_NODE_ID).build();
 
-            Optional<String> possibleOwner = entityNode.getChild(ENTITY_OWNER_NODE_ID).transform(
-                node -> node.getValue().toString());
-            String newOwner = newOwner(possibleOwner.orNull(), getCandidateNames(entityNode),
+            java.util.Optional<String> possibleOwner =
+                    entityNode.getChild(ENTITY_OWNER_NODE_ID).map(node -> node.getValue().toString());
+            String newOwner = newOwner(possibleOwner.orElse(null), getCandidateNames(entityNode),
                     getEntityOwnerElectionStrategy(entityPath));
 
                     getEntityOwnerElectionStrategy(entityPath));
 
-            if (!newOwner.equals(possibleOwner.or(""))) {
+            if (!newOwner.equals(possibleOwner.orElse(""))) {
                 modifications.add(new WriteModification(entityPath,
                         ImmutableNodes.leafNode(ENTITY_OWNER_NODE_ID, newOwner)));
             }
                 modifications.add(new WriteModification(entityPath,
                         ImmutableNodes.leafNode(ENTITY_OWNER_NODE_ID, newOwner)));
             }
@@ -556,7 +556,7 @@ class EntityOwnershipShard extends Shard {
         LOG.debug("{}: Searching for entities owned by {}", persistenceId(), ownedBy);
 
         searchForEntities((entityTypeNode, entityNode) -> {
         LOG.debug("{}: Searching for entities owned by {}", persistenceId(), ownedBy);
 
         searchForEntities((entityTypeNode, entityNode) -> {
-            Optional<DataContainerChild<? extends PathArgument, ?>> possibleOwner =
+            java.util.Optional<DataContainerChild<? extends PathArgument, ?>> possibleOwner =
                     entityNode.getChild(ENTITY_OWNER_NODE_ID);
             String currentOwner = possibleOwner.isPresent() ? possibleOwner.get().getValue().toString() : "";
             if (ownedBy.contains(currentOwner)) {
                     entityNode.getChild(ENTITY_OWNER_NODE_ID);
             String currentOwner = possibleOwner.isPresent() ? possibleOwner.get().getValue().toString() : "";
             if (ownedBy.contains(currentOwner)) {
@@ -597,7 +597,7 @@ class EntityOwnershipShard extends Shard {
         }
 
         for (MapEntryNode entityType:  ((MapNode) possibleEntityTypes.get()).getValue()) {
         }
 
         for (MapEntryNode entityType:  ((MapNode) possibleEntityTypes.get()).getValue()) {
-            Optional<DataContainerChild<?, ?>> possibleEntities = entityType.getChild(ENTITY_NODE_ID);
+            java.util.Optional<DataContainerChild<?, ?>> possibleEntities = entityType.getChild(ENTITY_NODE_ID);
             if (!possibleEntities.isPresent()) {
                 // shouldn't happen but handle anyway
                 continue;
             if (!possibleEntities.isPresent()) {
                 // shouldn't happen but handle anyway
                 continue;
index f18ae66e2f430261f117f0cf9cdcc46fe280ea99..a96bbe355669ee9c060067b3cb97ec8e07eda0c9 100644 (file)
@@ -10,11 +10,11 @@ package org.opendaylight.controller.cluster.datastore.entityownership;
 
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.entityTypeFromEntityPath;
 
 
 import static org.opendaylight.controller.cluster.datastore.entityownership.EntityOwnersModel.entityTypeFromEntityPath;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 import com.google.common.base.Strings;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.triemap.TrieMap;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.triemap.TrieMap;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
index 85c5403b709fe0fed96efd6a42cc54c36b058900..6c6a5af7545225cdfc86a42ab7e251786e64e515 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
index 085a8457d1503af6b6f92f34eb6d645bb61afc67..ae881120958eddc82c25c28d12fd4d9de2e9fdb1 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
-import com.google.common.base.Optional;
 import java.util.Collection;
 import java.util.Collection;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
@@ -42,7 +42,7 @@ abstract class DeletedDataTreeCandidateNode extends AbstractDataTreeCandidateNod
 
     @Override
     public final Optional<NormalizedNode<?, ?>> getDataAfter() {
 
     @Override
     public final Optional<NormalizedNode<?, ?>> getDataAfter() {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override
     }
 
     @Override
index 81f91aa900f72f476c8d90a66e783fbd58bc2cb3..6820e1c885b0b6857523610dc26b1a0d1b4ea6db 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
index 0b3768f39527783cdca2453e56914063a605f9a8..187d2522de9e7df810a878b8c4605a3e3a44e2eb 100644 (file)
@@ -1125,7 +1125,7 @@ class ShardManager extends AbstractUntypedPersistentActorWithMetering {
     private void updateSchemaContext(final Object message) {
         schemaContext = ((UpdateSchemaContext) message).getSchemaContext();
 
     private void updateSchemaContext(final Object message) {
         schemaContext = ((UpdateSchemaContext) message).getSchemaContext();
 
-        LOG.debug("Got updated SchemaContext: # of modules {}", schemaContext.getAllModuleIdentifiers().size());
+        LOG.debug("Got updated SchemaContext: # of modules {}", schemaContext.getModules().size());
 
         for (ShardInformation info : localShards.values()) {
             info.setSchemaContext(schemaContext);
 
         for (ShardInformation info : localShards.values()) {
             info.setSchemaContext(schemaContext);
index 09b497fe6a5a8a42ea96636fdac2d7917b05ea49..f587889ec0648d64dd20e48832ddaaa78b5c50dc 100644 (file)
@@ -14,9 +14,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -27,12 +27,12 @@ public final class NormalizedNodeAggregator {
 
     private NormalizedNodeAggregator(final YangInstanceIdentifier rootIdentifier,
             final List<Optional<NormalizedNode<?, ?>>> nodes, final SchemaContext schemaContext,
 
     private NormalizedNodeAggregator(final YangInstanceIdentifier rootIdentifier,
             final List<Optional<NormalizedNode<?, ?>>> nodes, final SchemaContext schemaContext,
-            LogicalDatastoreType logicalDatastoreType) {
+            final LogicalDatastoreType logicalDatastoreType) {
         this.rootIdentifier = rootIdentifier;
         this.nodes = nodes;
         this.rootIdentifier = rootIdentifier;
         this.nodes = nodes;
-        this.dataTree = InMemoryDataTreeFactory.getInstance().create(
-                logicalDatastoreType == LogicalDatastoreType.CONFIGURATION ? TreeType.CONFIGURATION :
-                    TreeType.OPERATIONAL);
+        this.dataTree = new InMemoryDataTreeFactory().create(
+            logicalDatastoreType == LogicalDatastoreType.CONFIGURATION ? DataTreeConfiguration.DEFAULT_CONFIGURATION
+                    : DataTreeConfiguration.DEFAULT_OPERATIONAL);
         this.dataTree.setSchemaContext(schemaContext);
     }
 
         this.dataTree.setSchemaContext(schemaContext);
     }
 
@@ -41,7 +41,7 @@ public final class NormalizedNodeAggregator {
      */
     public static Optional<NormalizedNode<?,?>> aggregate(final YangInstanceIdentifier rootIdentifier,
             final List<Optional<NormalizedNode<?, ?>>> nodes, final SchemaContext schemaContext,
      */
     public static Optional<NormalizedNode<?,?>> aggregate(final YangInstanceIdentifier rootIdentifier,
             final List<Optional<NormalizedNode<?, ?>>> nodes, final SchemaContext schemaContext,
-            LogicalDatastoreType logicalDatastoreType) throws DataValidationFailedException {
+            final LogicalDatastoreType logicalDatastoreType) throws DataValidationFailedException {
         return new NormalizedNodeAggregator(rootIdentifier, nodes, schemaContext, logicalDatastoreType).aggregate();
     }
 
         return new NormalizedNodeAggregator(rootIdentifier, nodes, schemaContext, logicalDatastoreType).aggregate();
     }
 
@@ -66,6 +66,6 @@ public final class NormalizedNodeAggregator {
     }
 
     private Optional<NormalizedNode<?, ?>> getRootNode() {
     }
 
     private Optional<NormalizedNode<?, ?>> getRootNode() {
-        return dataTree.takeSnapshot().readNode(rootIdentifier);
+        return Optional.fromJavaUtil(dataTree.takeSnapshot().readNode(rootIdentifier));
     }
 }
     }
 }
index 0e97cd958804ce632d1b45af74f7f6b4192f36c7..d0699fbcbaf807cd8ce4f421b692cebbd3a77997 100644 (file)
@@ -9,10 +9,10 @@
 package org.opendaylight.controller.cluster.datastore.utils;
 
 import com.google.common.annotations.VisibleForTesting;
 package org.opendaylight.controller.cluster.datastore.utils;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
 import java.io.IOException;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
 import java.io.IOException;
+import java.util.Optional;
 import org.opendaylight.controller.cluster.datastore.node.utils.transformer.NormalizedNodePruner;
 import org.opendaylight.controller.cluster.datastore.util.AbstractDataTreeModificationCursor;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.controller.cluster.datastore.node.utils.transformer.NormalizedNodePruner;
 import org.opendaylight.controller.cluster.datastore.util.AbstractDataTreeModificationCursor;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -38,7 +38,8 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     private final SchemaContext schemaContext;
     private final DataTree dataTree;
 
     private final SchemaContext schemaContext;
     private final DataTree dataTree;
 
-    public PruningDataTreeModification(DataTreeModification delegate, DataTree dataTree, SchemaContext schemaContext) {
+    public PruningDataTreeModification(final DataTreeModification delegate, final DataTree dataTree,
+            final SchemaContext schemaContext) {
         this.delegate = Preconditions.checkNotNull(delegate);
         this.dataTree = Preconditions.checkNotNull(dataTree);
         this.schemaContext = Preconditions.checkNotNull(schemaContext);
         this.delegate = Preconditions.checkNotNull(delegate);
         this.dataTree = Preconditions.checkNotNull(dataTree);
         this.schemaContext = Preconditions.checkNotNull(schemaContext);
@@ -50,7 +51,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @Override
     }
 
     @Override
-    public void delete(YangInstanceIdentifier yangInstanceIdentifier) {
+    public void delete(final YangInstanceIdentifier yangInstanceIdentifier) {
         try {
             delegate.delete(yangInstanceIdentifier);
         } catch (SchemaValidationFailedException e) {
         try {
             delegate.delete(yangInstanceIdentifier);
         } catch (SchemaValidationFailedException e) {
@@ -59,7 +60,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @Override
     }
 
     @Override
-    public void merge(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
+    public void merge(final YangInstanceIdentifier yangInstanceIdentifier, final NormalizedNode<?, ?> normalizedNode) {
         try {
             if (YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)) {
                 pruneAndMergeNode(yangInstanceIdentifier, normalizedNode);
         try {
             if (YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)) {
                 pruneAndMergeNode(yangInstanceIdentifier, normalizedNode);
@@ -75,7 +76,8 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
 
     }
 
 
     }
 
-    private void pruneAndMergeNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
+    private void pruneAndMergeNode(final YangInstanceIdentifier yangInstanceIdentifier,
+            final NormalizedNode<?, ?> normalizedNode) {
         NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode);
 
         if (pruned != null) {
         NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode);
 
         if (pruned != null) {
@@ -84,7 +86,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @Override
     }
 
     @Override
-    public void write(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
+    public void write(final YangInstanceIdentifier yangInstanceIdentifier, final NormalizedNode<?, ?> normalizedNode) {
         try {
             if (YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)) {
                 pruneAndWriteNode(yangInstanceIdentifier, normalizedNode);
         try {
             if (YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)) {
                 pruneAndWriteNode(yangInstanceIdentifier, normalizedNode);
@@ -99,7 +101,8 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         }
     }
 
         }
     }
 
-    private void pruneAndWriteNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
+    private void pruneAndWriteNode(final YangInstanceIdentifier yangInstanceIdentifier,
+            final NormalizedNode<?, ?> normalizedNode) {
         NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode);
 
         if (pruned != null) {
         NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode);
 
         if (pruned != null) {
@@ -121,12 +124,12 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @Override
     }
 
     @Override
-    public void applyToCursor(DataTreeModificationCursor dataTreeModificationCursor) {
+    public void applyToCursor(final DataTreeModificationCursor dataTreeModificationCursor) {
         delegate.applyToCursor(dataTreeModificationCursor);
     }
 
     @Override
         delegate.applyToCursor(dataTreeModificationCursor);
     }
 
     @Override
-    public Optional<NormalizedNode<?, ?>> readNode(YangInstanceIdentifier yangInstanceIdentifier) {
+    public Optional<NormalizedNode<?, ?>> readNode(final YangInstanceIdentifier yangInstanceIdentifier) {
         return delegate.readNode(yangInstanceIdentifier);
     }
 
         return delegate.readNode(yangInstanceIdentifier);
     }
 
@@ -136,7 +139,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @VisibleForTesting
     }
 
     @VisibleForTesting
-    NormalizedNode<?, ?> pruneNormalizedNode(YangInstanceIdentifier path, NormalizedNode<?,?> input) {
+    NormalizedNode<?, ?> pruneNormalizedNode(final YangInstanceIdentifier path, final NormalizedNode<?,?> input) {
         NormalizedNodePruner pruner = new NormalizedNodePruner(path, schemaContext);
         try {
             NormalizedNodeWriter.forStreamWriter(pruner).write(input);
         NormalizedNodePruner pruner = new NormalizedNodePruner(path, schemaContext);
         try {
             NormalizedNodeWriter.forStreamWriter(pruner).write(input);
@@ -151,14 +154,14 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         private final DataTreeModification toModification;
         private final PruningDataTreeModification pruningModification;
 
         private final DataTreeModification toModification;
         private final PruningDataTreeModification pruningModification;
 
-        PruningDataTreeModificationCursor(DataTreeModification toModification,
-                PruningDataTreeModification pruningModification) {
+        PruningDataTreeModificationCursor(final DataTreeModification toModification,
+                final PruningDataTreeModification pruningModification) {
             this.toModification = toModification;
             this.pruningModification = pruningModification;
         }
 
         @Override
             this.toModification = toModification;
             this.pruningModification = pruningModification;
         }
 
         @Override
-        public void write(PathArgument child, NormalizedNode<?, ?> data) {
+        public void write(final PathArgument child, final NormalizedNode<?, ?> data) {
             YangInstanceIdentifier path = current().node(child);
             NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data);
             if (prunedNode != null) {
             YangInstanceIdentifier path = current().node(child);
             NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data);
             if (prunedNode != null) {
@@ -167,7 +170,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         }
 
         @Override
         }
 
         @Override
-        public void merge(PathArgument child, NormalizedNode<?, ?> data) {
+        public void merge(final PathArgument child, final NormalizedNode<?, ?> data) {
             YangInstanceIdentifier path = current().node(child);
             NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data);
             if (prunedNode != null) {
             YangInstanceIdentifier path = current().node(child);
             NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data);
             if (prunedNode != null) {
@@ -176,7 +179,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         }
 
         @Override
         }
 
         @Override
-        public void delete(PathArgument child) {
+        public void delete(final PathArgument child) {
             try {
                 toModification.delete(current().node(child));
             } catch (SchemaValidationFailedException e) {
             try {
                 toModification.delete(current().node(child));
             } catch (SchemaValidationFailedException e) {
index f91dc3b2600dd09a5ed815b4d7a24f391d527404..759410a26eaf9a17fc33ff1e09ffbe9d11f2e701 100644 (file)
@@ -8,7 +8,6 @@
 
 package org.opendaylight.controller.cluster.sharding;
 
 
 package org.opendaylight.controller.cluster.sharding;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.Collection;
 import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -17,6 +16,7 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
@@ -39,10 +39,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException;
 import org.slf4j.Logger;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException;
 import org.slf4j.Logger;
@@ -70,11 +70,27 @@ public class DistributedShardChangePublisher
         // TODO keeping the whole dataTree thats contained in subshards doesn't seem like a good idea
         // maybe the whole listener logic would be better in the backend shards where we have direct access to the
         // dataTree and wont have to cache it redundantly.
         // TODO keeping the whole dataTree thats contained in subshards doesn't seem like a good idea
         // maybe the whole listener logic would be better in the backend shards where we have direct access to the
         // dataTree and wont have to cache it redundantly.
-        this.dataTree = InMemoryDataTreeFactory.getInstance().create(
-                TreeType.valueOf(prefix.getDatastoreType().name()), prefix.getRootIdentifier());
 
 
-        dataTree.setSchemaContext(distributedDataStore.getActorContext().getSchemaContext());
+        final DataTreeConfiguration baseConfig;
+        switch (prefix.getDatastoreType()) {
+            case CONFIGURATION:
+                baseConfig = DataTreeConfiguration.DEFAULT_CONFIGURATION;
+                break;
+            case OPERATIONAL:
+                baseConfig = DataTreeConfiguration.DEFAULT_OPERATIONAL;
+                break;
+            default:
+                throw new UnsupportedOperationException("Unknown prefix type " + prefix.getDatastoreType());
+        }
+
+        this.dataTree = new InMemoryDataTreeFactory().create(new DataTreeConfiguration.Builder(baseConfig.getTreeType())
+                .setMandatoryNodesValidation(baseConfig.isMandatoryNodesValidationEnabled())
+                .setUniqueIndexes(baseConfig.isUniqueIndexEnabled())
+                .setRootPath(prefix.getRootIdentifier())
+                .build());
 
 
+        // XXX: can we guarantee that the root is present in the schemacontext?
+        this.dataTree.setSchemaContext(distributedDataStore.getActorContext().getSchemaContext());
         this.shardPath = prefix.getRootIdentifier();
         this.childShards = childShards;
     }
         this.shardPath = prefix.getRootIdentifier();
         this.childShards = childShards;
     }
@@ -363,13 +379,13 @@ public class DistributedShardChangePublisher
         @Nonnull
         @Override
         public Optional<NormalizedNode<?, ?>> getDataAfter() {
         @Nonnull
         @Override
         public Optional<NormalizedNode<?, ?>> getDataAfter() {
-            return Optional.absent();
+            return Optional.empty();
         }
 
         @Nonnull
         @Override
         public Optional<NormalizedNode<?, ?>> getDataBefore() {
         }
 
         @Nonnull
         @Override
         public Optional<NormalizedNode<?, ?>> getDataBefore() {
-            return Optional.absent();
+            return Optional.empty();
         }
     }
 }
         }
     }
 }
index a614f925964d4174ccfcb8996c5d34a9bbe205f3..dcb74fa49e6749d990131d497e16dc49efe3a160 100644 (file)
@@ -8,7 +8,6 @@
 
 package org.opendaylight.controller.cluster.sharding;
 
 
 package org.opendaylight.controller.cluster.sharding;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.FutureCallback;
@@ -20,6 +19,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction;
index 4bc117a5c75f9fdf06dadab3a3f4e3128c39cd94..8c6723b5bc9d138648fb52968a890f33a3e303d8 100644 (file)
     <argument value="${max-data-broker-future-callback-pool-size}"/>
     <argument value="${max-data-broker-future-callback-queue-size}"/>
     <argument value="CommitFutures"/>
     <argument value="${max-data-broker-future-callback-pool-size}"/>
     <argument value="${max-data-broker-future-callback-queue-size}"/>
     <argument value="CommitFutures"/>
+    <argument>
+    <!-- We should use a more specific class -->
+      <bean factory-ref="operDatastore" factory-method="getClass"/>
+    </argument>
   </bean>
 
   <bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
   </bean>
 
   <bean id="commitStatsTracker" class="org.opendaylight.yangtools.util.DurationStatisticsTracker"
index 1961792a96961b6279fceae91748a92811639b2c..57cf9fb9c3df978aa9682a9ce3d10e5f2403f484 100644 (file)
@@ -19,6 +19,7 @@ import akka.actor.Status;
 import akka.testkit.JavaTestKit;
 import akka.testkit.TestProbe;
 import java.util.Collections;
 import akka.testkit.JavaTestKit;
 import akka.testkit.TestProbe;
 import java.util.Collections;
+import java.util.Optional;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -135,7 +136,7 @@ public abstract class AbstractDataStoreClientBehaviorTest {
     public void testGetConnection() throws Exception {
         //set up data tree mock
         final CursorAwareDataTreeModification modification = mock(CursorAwareDataTreeModification.class);
     public void testGetConnection() throws Exception {
         //set up data tree mock
         final CursorAwareDataTreeModification modification = mock(CursorAwareDataTreeModification.class);
-        when(modification.readNode(YangInstanceIdentifier.EMPTY)).thenReturn(com.google.common.base.Optional.absent());
+        when(modification.readNode(YangInstanceIdentifier.EMPTY)).thenReturn(Optional.empty());
         final DataTreeSnapshot snapshot = mock(DataTreeSnapshot.class);
         when(snapshot.newModification()).thenReturn(modification);
         final DataTree dataTree = mock(DataTree.class);
         final DataTreeSnapshot snapshot = mock(DataTreeSnapshot.class);
         when(snapshot.newModification()).thenReturn(modification);
         final DataTree dataTree = mock(DataTree.class);
index d9b1e8efab53033eb22c4fffc8295b0d9ecb855f..8162484d7d753f57dcd3a61b7eb422a42687dbf5 100644 (file)
@@ -27,7 +27,7 @@ public class ClientSnapshotTest extends AbstractClientHandleTest<ClientSnapshot>
     @Override
     public void setUp() throws Exception {
         super.setUp();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        when(getDataTreeSnapshot().readNode(PATH)).thenReturn(Optional.absent());
+        when(getDataTreeSnapshot().readNode(PATH)).thenReturn(java.util.Optional.empty());
     }
 
     @Override
     }
 
     @Override
index 5834833e688f33b26698b6159da62c6504ae1109..04f706dc66ab045e406feb176859276bbb08d1d5 100644 (file)
@@ -49,7 +49,7 @@ public class ClientTransactionTest extends AbstractClientHandleTest<ClientTransa
     public void setUp() throws Exception {
         super.setUp();
         when(getDataTreeSnapshot().newModification()).thenReturn(modification);
     public void setUp() throws Exception {
         super.setUp();
         when(getDataTreeSnapshot().newModification()).thenReturn(modification);
-        when(modification.readNode(PATH)).thenReturn(Optional.of(DATA));
+        when(modification.readNode(PATH)).thenReturn(java.util.Optional.of(DATA));
     }
 
     @Override
     }
 
     @Override
index ba38cfe11d8f03170d5e2851af04c39de534c15e..1fd82fbc021f2bf96130fddb0e93a96cb835d701 100644 (file)
@@ -13,6 +13,7 @@ import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtil
 import akka.testkit.TestProbe;
 import com.google.common.base.Ticker;
 import com.google.common.base.VerifyException;
 import akka.testkit.TestProbe;
 import com.google.common.base.Ticker;
 import com.google.common.base.VerifyException;
+import java.util.Optional;
 import org.junit.Assert;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest;
 import org.junit.Assert;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest;
@@ -30,8 +31,8 @@ public class LocalReadOnlyProxyTransactionTest extends LocalProxyTransactionTest
     protected LocalReadOnlyProxyTransaction createTransaction(final ProxyHistory parent,
                                                               final TransactionIdentifier id,
                                                               final DataTreeSnapshot snapshot) {
     protected LocalReadOnlyProxyTransaction createTransaction(final ProxyHistory parent,
                                                               final TransactionIdentifier id,
                                                               final DataTreeSnapshot snapshot) {
-        when(snapshot.readNode(PATH_1)).thenReturn(com.google.common.base.Optional.of(DATA_1));
-        when(snapshot.readNode(PATH_3)).thenReturn(com.google.common.base.Optional.absent());
+        when(snapshot.readNode(PATH_1)).thenReturn(Optional.of(DATA_1));
+        when(snapshot.readNode(PATH_3)).thenReturn(Optional.empty());
         this.snapshot = snapshot;
         return new LocalReadOnlyProxyTransaction(parent, id, this.snapshot);
     }
         this.snapshot = snapshot;
         return new LocalReadOnlyProxyTransaction(parent, id, this.snapshot);
     }
index e1daac489e8bd5a1194cfd71582c67c294f23520..2ecbc9baedcf89d487cbf041729f7b4bf87a3d16 100644 (file)
@@ -18,6 +18,7 @@ import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtil
 import akka.testkit.TestProbe;
 import com.google.common.base.Ticker;
 import com.google.common.util.concurrent.ListenableFuture;
 import akka.testkit.TestProbe;
 import com.google.common.base.Ticker;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.Optional;
 import java.util.function.Consumer;
 import org.junit.Assert;
 import org.junit.Test;
 import java.util.function.Consumer;
 import org.junit.Assert;
 import org.junit.Test;
@@ -52,8 +53,8 @@ public class LocalReadWriteProxyTransactionTest extends LocalProxyTransactionTes
                                                                final TransactionIdentifier id,
                                                                final DataTreeSnapshot snapshot) {
         when(snapshot.newModification()).thenReturn(modification);
                                                                final TransactionIdentifier id,
                                                                final DataTreeSnapshot snapshot) {
         when(snapshot.newModification()).thenReturn(modification);
-        when(modification.readNode(PATH_1)).thenReturn(com.google.common.base.Optional.of(DATA_1));
-        when(modification.readNode(PATH_3)).thenReturn(com.google.common.base.Optional.absent());
+        when(modification.readNode(PATH_1)).thenReturn(Optional.of(DATA_1));
+        when(modification.readNode(PATH_3)).thenReturn(Optional.empty());
         return new LocalReadWriteProxyTransaction(parent, TestUtils.TRANSACTION_ID, snapshot);
     }
 
         return new LocalReadWriteProxyTransaction(parent, TestUtils.TRANSACTION_ID, snapshot);
     }
 
index 6f7d8fb9df716fc474a3759e312be2816d1920ba..f2e0e0a59819202cd3237aef6d31a8d74c2de55e 100644 (file)
@@ -28,7 +28,6 @@ import akka.japi.Creator;
 import akka.pattern.Patterns;
 import akka.testkit.TestActorRef;
 import akka.util.Timeout;
 import akka.pattern.Patterns;
 import akka.testkit.TestActorRef;
 import akka.util.Timeout;
-import com.google.common.base.Optional;
 import com.google.common.primitives.UnsignedLong;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Uninterruptibles;
 import com.google.common.primitives.UnsignedLong;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Uninterruptibles;
@@ -36,6 +35,7 @@ import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
@@ -73,11 +73,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -201,9 +200,9 @@ public abstract class AbstractShardTest extends AbstractActorTest {
         Assert.fail(String.format("Expected last applied: %d, Actual: %d", expectedValue, lastApplied));
     }
 
         Assert.fail(String.format("Expected last applied: %d, Actual: %d", expectedValue, lastApplied));
     }
 
-    protected TipProducingDataTree createDelegatingMockDataTree() throws Exception {
-        TipProducingDataTree actual = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
-        final TipProducingDataTree mock = mock(TipProducingDataTree.class);
+    protected DataTree createDelegatingMockDataTree() throws Exception {
+        final DataTree actual = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_CONFIGURATION);
+        final DataTree mock = mock(DataTree.class);
 
         doAnswer(invocation -> {
             actual.validate(invocation.getArgumentAt(0, DataTreeModification.class));
 
         doAnswer(invocation -> {
             actual.validate(invocation.getArgumentAt(0, DataTreeModification.class));
@@ -294,7 +293,7 @@ public abstract class AbstractShardTest extends AbstractActorTest {
     }
 
     public static NormalizedNode<?,?> readStore(final DataTree store, final YangInstanceIdentifier id) {
     }
 
     public static NormalizedNode<?,?> readStore(final DataTree store, final YangInstanceIdentifier id) {
-        return store.takeSnapshot().readNode(id).orNull();
+        return store.takeSnapshot().readNode(id).orElse(null);
     }
 
     public void writeToStore(final TestActorRef<Shard> shard, final YangInstanceIdentifier id,
     }
 
     public void writeToStore(final TestActorRef<Shard> shard, final YangInstanceIdentifier id,
@@ -341,8 +340,8 @@ public abstract class AbstractShardTest extends AbstractActorTest {
     }
 
     DataTree setupInMemorySnapshotStore() throws DataValidationFailedException {
     }
 
     DataTree setupInMemorySnapshotStore() throws DataValidationFailedException {
-        final DataTree testStore = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        testStore.setSchemaContext(SCHEMA_CONTEXT);
+        final DataTree testStore = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_OPERATIONAL, SCHEMA_CONTEXT);
 
         writeToStore(testStore, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
 
 
         writeToStore(testStore, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
 
index 96c45f3e14ad31bb9fc195e523e493ddb3e45ca4..a35a901c6f6bfd4c2a71c9035847e3baeee15a17 100644 (file)
@@ -35,11 +35,10 @@ import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 
-
 /**
  * Unit tests for DatastoreSnapshotRestore.
  *
 /**
  * Unit tests for DatastoreSnapshotRestore.
  *
@@ -93,7 +92,8 @@ public class DatastoreSnapshotRestoreTest {
         assertNull("Expected null DatastoreSnapshot", instance.getAndRemove("oper"));
     }
 
         assertNull("Expected null DatastoreSnapshot", instance.getAndRemove("oper"));
     }
 
-    private static void assertDatastoreSnapshotEquals(DatastoreSnapshot expected, DatastoreSnapshot actual) {
+    private static void assertDatastoreSnapshotEquals(final DatastoreSnapshot expected,
+            final DatastoreSnapshot actual) {
         assertNotNull("DatastoreSnapshot is null", actual);
         assertEquals("getType", expected.getType(), actual.getType());
 
         assertNotNull("DatastoreSnapshot is null", actual);
         assertEquals("getType", expected.getType(), actual.getType());
 
@@ -113,7 +113,7 @@ public class DatastoreSnapshotRestoreTest {
         }
     }
 
         }
     }
 
-    private static void assertSnapshotEquals(String prefix, Snapshot expected, Snapshot actual) {
+    private static void assertSnapshotEquals(final String prefix, final Snapshot expected, final Snapshot actual) {
         assertEquals(prefix + " lastIndex", expected.getLastIndex(), actual.getLastIndex());
         assertEquals(prefix + " lastTerm", expected.getLastTerm(), actual.getLastTerm());
         assertEquals(prefix + " lastAppliedIndex", expected.getLastAppliedIndex(), actual.getLastAppliedIndex());
         assertEquals(prefix + " lastIndex", expected.getLastIndex(), actual.getLastIndex());
         assertEquals(prefix + " lastTerm", expected.getLastTerm(), actual.getLastTerm());
         assertEquals(prefix + " lastAppliedIndex", expected.getLastAppliedIndex(), actual.getLastAppliedIndex());
@@ -125,14 +125,14 @@ public class DatastoreSnapshotRestoreTest {
                 ((ShardSnapshotState)actual.getState()).getSnapshot().getRootNode());
     }
 
                 ((ShardSnapshotState)actual.getState()).getSnapshot().getRootNode());
     }
 
-    private static ShardManagerSnapshot newShardManagerSnapshot(String... shards) {
+    private static ShardManagerSnapshot newShardManagerSnapshot(final String... shards) {
         return new ShardManagerSnapshot(Arrays.asList(shards), Collections.emptyMap());
     }
 
         return new ShardManagerSnapshot(Arrays.asList(shards), Collections.emptyMap());
     }
 
-    private static Snapshot newSnapshot(YangInstanceIdentifier path, NormalizedNode<?, ?> node)
+    private static Snapshot newSnapshot(final YangInstanceIdentifier path, final NormalizedNode<?, ?> node)
             throws Exception {
             throws Exception {
-        DataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        dataTree.setSchemaContext(SchemaContextHelper.full());
+        DataTree dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL,
+            SchemaContextHelper.full());
         AbstractShardTest.writeToStore(dataTree, path, node);
         NormalizedNode<?, ?> root = AbstractShardTest.readStore(dataTree, YangInstanceIdentifier.EMPTY);
 
         AbstractShardTest.writeToStore(dataTree, path, node);
         NormalizedNode<?, ?> root = AbstractShardTest.readStore(dataTree, YangInstanceIdentifier.EMPTY);
 
index 688f9c377e2e44f4225167daeca9ed4322ff56c1..0b97772e94580127874e8989cb898e13aec5aadb 100644 (file)
@@ -90,7 +90,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
@@ -1282,8 +1282,8 @@ public class DistributedDataStoreIntegrationTest {
                         CarsModel.newCarsMapNode(CarsModel.newCarEntry("optima", BigInteger.valueOf(20000L)),
                                 CarsModel.newCarEntry("sportage", BigInteger.valueOf(30000L))));
 
                         CarsModel.newCarsMapNode(CarsModel.newCarEntry("optima", BigInteger.valueOf(20000L)),
                                 CarsModel.newCarEntry("sportage", BigInteger.valueOf(30000L))));
 
-                DataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-                dataTree.setSchemaContext(SchemaContextHelper.full());
+                DataTree dataTree = new InMemoryDataTreeFactory().create(
+                    DataTreeConfiguration.DEFAULT_OPERATIONAL, SchemaContextHelper.full());
                 AbstractShardTest.writeToStore(dataTree, CarsModel.BASE_PATH, carsNode);
                 NormalizedNode<?, ?> root = AbstractShardTest.readStore(dataTree, YangInstanceIdentifier.EMPTY);
 
                 AbstractShardTest.writeToStore(dataTree, CarsModel.BASE_PATH, carsNode);
                 NormalizedNode<?, ?> root = AbstractShardTest.readStore(dataTree, YangInstanceIdentifier.EMPTY);
 
@@ -1291,8 +1291,8 @@ public class DistributedDataStoreIntegrationTest {
                         new ShardSnapshotState(new MetadataShardDataTreeSnapshot(root)),
                         Collections.emptyList(), 2, 1, 2, 1, 1, "member-1", null);
 
                         new ShardSnapshotState(new MetadataShardDataTreeSnapshot(root)),
                         Collections.emptyList(), 2, 1, 2, 1, 1, "member-1", null);
 
-                dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-                dataTree.setSchemaContext(SchemaContextHelper.full());
+                dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL,
+                    SchemaContextHelper.full());
 
                 final NormalizedNode<?, ?> peopleNode = PeopleModel.create();
                 AbstractShardTest.writeToStore(dataTree, PeopleModel.BASE_PATH, peopleNode);
 
                 final NormalizedNode<?, ?> peopleNode = PeopleModel.create();
                 AbstractShardTest.writeToStore(dataTree, PeopleModel.BASE_PATH, peopleNode);
index a82ebb7d2f972ff7093e551bdf612a712897e2b0..b78d017341da3cc860c725ec4a95be9ad899b1d9 100644 (file)
@@ -97,9 +97,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
@@ -642,8 +641,8 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
                 .findLocalShard("cars");
         assertEquals("Cars follower shard found", true, carsFollowerShard.isPresent());
 
                 .findLocalShard("cars");
         assertEquals("Cars follower shard found", true, carsFollowerShard.isPresent());
 
-        final TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        dataTree.setSchemaContext(SchemaContextHelper.full());
+        final DataTree dataTree = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_OPERATIONAL, SchemaContextHelper.full());
 
         // Send a tx with immediate commit.
 
 
         // Send a tx with immediate commit.
 
@@ -1122,8 +1121,8 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
         // Setup a saved snapshot on the leader. The follower will startup with no data and the leader should
         // install a snapshot to sync the follower.
 
         // Setup a saved snapshot on the leader. The follower will startup with no data and the leader should
         // install a snapshot to sync the follower.
 
-        TipProducingDataTree tree = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
-        tree.setSchemaContext(SchemaContextHelper.full());
+        DataTree tree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_CONFIGURATION,
+            SchemaContextHelper.full());
 
         final ContainerNode carsNode = CarsModel.newCarsNode(
                 CarsModel.newCarsMapNode(CarsModel.newCarEntry("optima", BigInteger.valueOf(20000))));
 
         final ContainerNode carsNode = CarsModel.newCarsNode(
                 CarsModel.newCarsMapNode(CarsModel.newCarEntry("optima", BigInteger.valueOf(20000))));
index 3ca0f9c7aad2b096754d04af4cd607bd950895b8..aa38e30fe84f587bd20f8fcbd26e38b8a4f9fa1c 100644 (file)
@@ -32,7 +32,6 @@ import static org.opendaylight.controller.cluster.datastore.ShardDataTreeMocking
 import static org.opendaylight.controller.cluster.datastore.ShardDataTreeMocking.immediatePayloadReplication;
 import static org.opendaylight.controller.cluster.datastore.ShardDataTreeMocking.immediatePreCommit;
 
 import static org.opendaylight.controller.cluster.datastore.ShardDataTreeMocking.immediatePayloadReplication;
 import static org.opendaylight.controller.cluster.datastore.ShardDataTreeMocking.immediatePreCommit;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Ticker;
 import com.google.common.collect.Maps;
 import com.google.common.primitives.UnsignedLong;
 import com.google.common.base.Ticker;
 import com.google.common.collect.Maps;
 import com.google.common.primitives.UnsignedLong;
@@ -42,6 +41,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import java.util.function.Consumer;
 import org.junit.Before;
 import java.util.concurrent.ExecutionException;
 import java.util.function.Consumer;
 import org.junit.Before;
@@ -175,7 +175,7 @@ public class ShardDataTreeTest extends AbstractTest {
 
         DOMDataTreeChangeListener listener = mock(DOMDataTreeChangeListener.class);
         shardDataTree.registerTreeChangeListener(CarsModel.CAR_LIST_PATH.node(CarsModel.CAR_QNAME), listener,
 
         DOMDataTreeChangeListener listener = mock(DOMDataTreeChangeListener.class);
         shardDataTree.registerTreeChangeListener(CarsModel.CAR_LIST_PATH.node(CarsModel.CAR_QNAME), listener,
-                Optional.absent(), noop -> { });
+            com.google.common.base.Optional.absent(), noop -> { });
 
         addCar(shardDataTree, "optima");
 
 
         addCar(shardDataTree, "optima");
 
index 4467817a212fa752a557a36c1cf8ec91a2aecfd5..39285f9d67f90bfe6c51ec981debf5ff1b305833 100644 (file)
@@ -25,10 +25,11 @@ import org.opendaylight.controller.md.cluster.datastore.model.PeopleModel;
 import org.opendaylight.controller.md.cluster.datastore.model.SchemaContextHelper;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.controller.md.cluster.datastore.model.SchemaContextHelper;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.SchemaValidationFailedException;
@@ -85,9 +86,9 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
         }
     }
 
         }
     }
 
-    private DataTreeCandidateTip createCar() {
-        final TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        dataTree.setSchemaContext(carsSchemaContext);
+    private DataTreeCandidate createCar() {
+        final DataTree dataTree = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_OPERATIONAL, carsSchemaContext);
 
         final DataTreeSnapshot snapshot = dataTree.takeSnapshot();
 
 
         final DataTreeSnapshot snapshot = dataTree.takeSnapshot();
 
@@ -99,7 +100,7 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
     }
 
     private Optional<NormalizedNode<?,?>> readCars(final ShardDataTree shardDataTree) {
     }
 
     private Optional<NormalizedNode<?,?>> readCars(final ShardDataTree shardDataTree) {
-        final TipProducingDataTree dataTree = shardDataTree.getDataTree();
+        final DataTree dataTree = shardDataTree.getDataTree();
         // FIXME: this should not be called here
         dataTree.setSchemaContext(peopleSchemaContext);
 
         // FIXME: this should not be called here
         dataTree.setSchemaContext(peopleSchemaContext);
 
@@ -107,7 +108,7 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
     }
 
     private Optional<NormalizedNode<?,?>> readPeople(final ShardDataTree shardDataTree) {
     }
 
     private Optional<NormalizedNode<?,?>> readPeople(final ShardDataTree shardDataTree) {
-        final TipProducingDataTree dataTree = shardDataTree.getDataTree();
+        final DataTree dataTree = shardDataTree.getDataTree();
         // FIXME: this should not be called here
         dataTree.setSchemaContext(peopleSchemaContext);
 
         // FIXME: this should not be called here
         dataTree.setSchemaContext(peopleSchemaContext);
 
@@ -115,8 +116,8 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
     }
 
     private static ShardSnapshotState createSnapshot() {
     }
 
     private static ShardSnapshotState createSnapshot() {
-        final TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        dataTree.setSchemaContext(SchemaContextHelper.select(SchemaContextHelper.CARS_YANG,
+        final DataTree dataTree = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_OPERATIONAL, SchemaContextHelper.select(SchemaContextHelper.CARS_YANG,
                 SchemaContextHelper.PEOPLE_YANG));
 
         DataTreeSnapshot snapshot = dataTree.takeSnapshot();
                 SchemaContextHelper.PEOPLE_YANG));
 
         DataTreeSnapshot snapshot = dataTree.takeSnapshot();
index 5869271fb811fc5209f5199f9f276a06ca0c24a9..76745a442ca0e9d09100e447e7c6a25ce54d6162 100644 (file)
@@ -113,10 +113,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
@@ -425,8 +424,8 @@ public class ShardTest extends AbstractShardTest {
 
         ShardTestKit.waitUntilLeader(shard);
 
 
         ShardTestKit.waitUntilLeader(shard);
 
-        final DataTree store = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        store.setSchemaContext(SCHEMA_CONTEXT);
+        final DataTree store = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL,
+            SCHEMA_CONTEXT);
 
         final ContainerNode container = ImmutableContainerNodeBuilder.create().withNodeIdentifier(
                 new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME))
 
         final ContainerNode container = ImmutableContainerNodeBuilder.create().withNodeIdentifier(
                 new YangInstanceIdentifier.NodeIdentifier(TestModel.TEST_QNAME))
@@ -466,8 +465,8 @@ public class ShardTest extends AbstractShardTest {
 
         ShardTestKit.waitUntilLeader(shard);
 
 
         ShardTestKit.waitUntilLeader(shard);
 
-        final DataTree store = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        store.setSchemaContext(SCHEMA_CONTEXT);
+        final DataTree store = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL,
+            SCHEMA_CONTEXT);
 
         final DataTreeModification writeMod = store.takeSnapshot().newModification();
         final ContainerNode node = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
 
         final DataTreeModification writeMod = store.takeSnapshot().newModification();
         final ContainerNode node = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
@@ -1151,7 +1150,7 @@ public class ShardTest extends AbstractShardTest {
     private void testCommitWhenTransactionHasModifications(final boolean readWrite) throws Exception {
         new ShardTestKit(getSystem()) {
             {
     private void testCommitWhenTransactionHasModifications(final boolean readWrite) throws Exception {
         new ShardTestKit(getSystem()) {
             {
-                final TipProducingDataTree dataTree = createDelegatingMockDataTree();
+                final DataTree dataTree = createDelegatingMockDataTree();
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testCommitWhenTransactionHasModifications-" + readWrite);
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testCommitWhenTransactionHasModifications-" + readWrite);
@@ -1208,7 +1207,7 @@ public class ShardTest extends AbstractShardTest {
     public void testCommitPhaseFailure() throws Exception {
         new ShardTestKit(getSystem()) {
             {
     public void testCommitPhaseFailure() throws Exception {
         new ShardTestKit(getSystem()) {
             {
-                final TipProducingDataTree dataTree = createDelegatingMockDataTree();
+                final DataTree dataTree = createDelegatingMockDataTree();
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testCommitPhaseFailure");
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testCommitPhaseFailure");
@@ -1285,7 +1284,7 @@ public class ShardTest extends AbstractShardTest {
     public void testPreCommitPhaseFailure() throws Exception {
         new ShardTestKit(getSystem()) {
             {
     public void testPreCommitPhaseFailure() throws Exception {
         new ShardTestKit(getSystem()) {
             {
-                final TipProducingDataTree dataTree = createDelegatingMockDataTree();
+                final DataTree dataTree = createDelegatingMockDataTree();
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testPreCommitPhaseFailure");
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testPreCommitPhaseFailure");
@@ -1353,7 +1352,7 @@ public class ShardTest extends AbstractShardTest {
     public void testCanCommitPhaseFailure() throws Exception {
         new ShardTestKit(getSystem()) {
             {
     public void testCanCommitPhaseFailure() throws Exception {
         new ShardTestKit(getSystem()) {
             {
-                final TipProducingDataTree dataTree = createDelegatingMockDataTree();
+                final DataTree dataTree = createDelegatingMockDataTree();
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testCanCommitPhaseFailure");
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testCanCommitPhaseFailure");
@@ -1400,7 +1399,7 @@ public class ShardTest extends AbstractShardTest {
     private void testImmediateCommitWithCanCommitPhaseFailure(final boolean readWrite) throws Exception {
         new ShardTestKit(getSystem()) {
             {
     private void testImmediateCommitWithCanCommitPhaseFailure(final boolean readWrite) throws Exception {
         new ShardTestKit(getSystem()) {
             {
-                final TipProducingDataTree dataTree = createDelegatingMockDataTree();
+                final DataTree dataTree = createDelegatingMockDataTree();
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testImmediateCommitWithCanCommitPhaseFailure-" + readWrite);
                 final TestActorRef<Shard> shard = actorFactory.createTestActor(
                         newShardBuilder().dataTree(dataTree).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
                         "testImmediateCommitWithCanCommitPhaseFailure-" + readWrite);
@@ -1988,8 +1987,8 @@ public class ShardTest extends AbstractShardTest {
      */
     @Test
     public void testInMemoryDataTreeRestore() throws ReadFailedException, DataValidationFailedException {
      */
     @Test
     public void testInMemoryDataTreeRestore() throws ReadFailedException, DataValidationFailedException {
-        final DataTree store = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        store.setSchemaContext(SCHEMA_CONTEXT);
+        final DataTree store = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL,
+            SCHEMA_CONTEXT);
 
         final DataTreeModification putTransaction = store.takeSnapshot().newModification();
         putTransaction.write(TestModel.TEST_PATH,
 
         final DataTreeModification putTransaction = store.takeSnapshot().newModification();
         putTransaction.write(TestModel.TEST_PATH,
index 8ee4a2dd7067e43133600312d362d83c18a175bc..da47b222dfa083daa42746ae3ba77c7d81c12364 100644 (file)
@@ -924,7 +924,8 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest {
 
         doReturn(dataTreeSnapshot).when(dataTree).takeSnapshot();
         doReturn(dataTreeModification).when(dataTreeSnapshot).newModification();
 
         doReturn(dataTreeSnapshot).when(dataTree).takeSnapshot();
         doReturn(dataTreeModification).when(dataTreeSnapshot).newModification();
-        doReturn(Optional.of(readResponse)).when(dataTreeModification).readNode(any(YangInstanceIdentifier.class));
+        doReturn(java.util.Optional.of(readResponse)).when(dataTreeModification).readNode(
+            any(YangInstanceIdentifier.class));
 
         return dataTree;
     }
 
         return dataTree;
     }
index 05d37fd1b2a2dc74663c9f9f5b1bf486684dc0cb..6b148af4fa1195150ce03d6ae42def94e4c46b5e 100644 (file)
@@ -24,9 +24,9 @@ import akka.pattern.Patterns;
 import akka.testkit.TestActorRef;
 import akka.util.Timeout;
 import com.google.common.base.Function;
 import akka.testkit.TestActorRef;
 import akka.util.Timeout;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.Uninterruptibles;
 import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.Uninterruptibles;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Consumer;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Consumer;
@@ -78,8 +78,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
 
     private static final AtomicInteger NEXT_SHARD_NUM = new AtomicInteger();
 
 
     private static final AtomicInteger NEXT_SHARD_NUM = new AtomicInteger();
 
-    protected void verifyEntityCandidate(NormalizedNode<?, ?> node, String entityType,
-            YangInstanceIdentifier entityId, String candidateName, boolean expectPresent) {
+    protected void verifyEntityCandidate(final NormalizedNode<?, ?> node, final String entityType,
+            final YangInstanceIdentifier entityId, final String candidateName, final boolean expectPresent) {
         try {
             assertNotNull("Missing " + EntityOwners.QNAME.toString(), node);
             assertTrue(node instanceof ContainerNode);
         try {
             assertNotNull("Missing " + EntityOwners.QNAME.toString(), node);
             assertTrue(node instanceof ContainerNode);
@@ -98,8 +98,9 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         }
     }
 
         }
     }
 
-    protected void verifyEntityCandidate(String entityType, YangInstanceIdentifier entityId, String candidateName,
-            Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader, boolean expectPresent) {
+    protected void verifyEntityCandidate(final String entityType, final YangInstanceIdentifier entityId,
+            final String candidateName, final Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader,
+            final boolean expectPresent) {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
         while (sw.elapsed(TimeUnit.MILLISECONDS) <= 5000) {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
         while (sw.elapsed(TimeUnit.MILLISECONDS) <= 5000) {
@@ -116,13 +117,13 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         throw lastError;
     }
 
         throw lastError;
     }
 
-    protected void verifyEntityCandidate(String entityType, YangInstanceIdentifier entityId, String candidateName,
-            Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader) {
+    protected void verifyEntityCandidate(final String entityType, final YangInstanceIdentifier entityId,
+            final String candidateName, final Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader) {
         verifyEntityCandidate(entityType, entityId, candidateName, reader, true);
     }
 
         verifyEntityCandidate(entityType, entityId, candidateName, reader, true);
     }
 
-    protected MapEntryNode getMapEntryNodeChild(DataContainerNode<? extends PathArgument> parent, QName childMap,
-            QName child, Object key, boolean expectPresent) {
+    protected MapEntryNode getMapEntryNodeChild(final DataContainerNode<? extends PathArgument> parent,
+            final QName childMap, final QName child, final Object key, final boolean expectPresent) {
         Optional<DataContainerChild<? extends PathArgument, ?>> childNode =
                 parent.getChild(new NodeIdentifier(childMap));
         assertEquals("Missing " + childMap.toString(), true, childNode.isPresent());
         Optional<DataContainerChild<? extends PathArgument, ?>> childNode =
                 parent.getChild(new NodeIdentifier(childMap));
         assertEquals("Missing " + childMap.toString(), true, childNode.isPresent());
@@ -139,8 +140,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         return entityTypeEntry.isPresent() ? entityTypeEntry.get() : null;
     }
 
         return entityTypeEntry.isPresent() ? entityTypeEntry.get() : null;
     }
 
-    static void verifyOwner(String expected, String entityType, YangInstanceIdentifier entityId,
-            Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader) {
+    static void verifyOwner(final String expected, final String entityType, final YangInstanceIdentifier entityId,
+            final Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader) {
         AssertionError lastError = null;
         YangInstanceIdentifier entityPath = entityPath(entityType, entityId).node(ENTITY_OWNER_QNAME);
         Stopwatch sw = Stopwatch.createStarted();
         AssertionError lastError = null;
         YangInstanceIdentifier entityPath = entityPath(entityType, entityId).node(ENTITY_OWNER_QNAME);
         Stopwatch sw = Stopwatch.createStarted();
@@ -160,8 +161,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    static void verifyOwner(final TestActorRef<? extends EntityOwnershipShard> shard, String entityType,
-            YangInstanceIdentifier entityId, String localMemberName) {
+    static void verifyOwner(final TestActorRef<? extends EntityOwnershipShard> shard, final String entityType,
+            final YangInstanceIdentifier entityId, final String localMemberName) {
         verifyOwner(localMemberName, entityType, entityId, path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
         verifyOwner(localMemberName, entityType, entityId, path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
@@ -171,8 +172,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         });
     }
 
         });
     }
 
-    protected void verifyNodeRemoved(YangInstanceIdentifier path,
-            Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader) {
+    protected void verifyNodeRemoved(final YangInstanceIdentifier path,
+            final Function<YangInstanceIdentifier,NormalizedNode<?,?>> reader) {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
         while (sw.elapsed(TimeUnit.MILLISECONDS) <= 5000) {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
         while (sw.elapsed(TimeUnit.MILLISECONDS) <= 5000) {
@@ -189,21 +190,21 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         throw lastError;
     }
 
         throw lastError;
     }
 
-    static void writeNode(YangInstanceIdentifier path, NormalizedNode<?, ?> node, ShardDataTree shardDataTree)
-            throws DataValidationFailedException {
+    static void writeNode(final YangInstanceIdentifier path, final NormalizedNode<?, ?> node,
+            final ShardDataTree shardDataTree) throws DataValidationFailedException {
         DataTreeModification modification = shardDataTree.newModification();
         modification.merge(path, node);
         commit(shardDataTree, modification);
     }
 
         DataTreeModification modification = shardDataTree.newModification();
         modification.merge(path, node);
         commit(shardDataTree, modification);
     }
 
-    static void deleteNode(YangInstanceIdentifier path, ShardDataTree shardDataTree)
+    static void deleteNode(final YangInstanceIdentifier path, final ShardDataTree shardDataTree)
             throws DataValidationFailedException {
         DataTreeModification modification = shardDataTree.newModification();
         modification.delete(path);
         commit(shardDataTree, modification);
     }
 
             throws DataValidationFailedException {
         DataTreeModification modification = shardDataTree.newModification();
         modification.delete(path);
         commit(shardDataTree, modification);
     }
 
-    static void commit(ShardDataTree shardDataTree, DataTreeModification modification)
+    static void commit(final ShardDataTree shardDataTree, final DataTreeModification modification)
             throws DataValidationFailedException {
         modification.ready();
         shardDataTree.getDataTree().validate(modification);
             throws DataValidationFailedException {
         modification.ready();
         shardDataTree.getDataTree().validate(modification);
@@ -221,7 +222,7 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
             final boolean expIsOwner, final boolean expHasOwner, final boolean expInJeopardy) {
         return Matchers.argThat(new ArgumentMatcher<DOMEntityOwnershipChange>() {
             @Override
             final boolean expIsOwner, final boolean expHasOwner, final boolean expInJeopardy) {
         return Matchers.argThat(new ArgumentMatcher<DOMEntityOwnershipChange>() {
             @Override
-            public boolean matches(Object argument) {
+            public boolean matches(final Object argument) {
                 DOMEntityOwnershipChange change = (DOMEntityOwnershipChange) argument;
                 return expEntity.equals(change.getEntity()) && expWasOwner == change.getState().wasOwner()
                         && expIsOwner == change.getState().isOwner() && expHasOwner == change.getState().hasOwner()
                 DOMEntityOwnershipChange change = (DOMEntityOwnershipChange) argument;
                 return expEntity.equals(change.getEntity()) && expWasOwner == change.getState().wasOwner()
                         && expIsOwner == change.getState().isOwner() && expHasOwner == change.getState().hasOwner()
@@ -229,7 +230,7 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
             }
 
             @Override
             }
 
             @Override
-            public void describeTo(Description description) {
+            public void describeTo(final Description description) {
                 description.appendValue(new DOMEntityOwnershipChange(expEntity, EntityOwnershipChangeState.from(
                         expWasOwner, expIsOwner, expHasOwner), expInJeopardy));
             }
                 description.appendValue(new DOMEntityOwnershipChange(expEntity, EntityOwnershipChangeState.from(
                         expWasOwner, expIsOwner, expHasOwner), expInJeopardy));
             }
@@ -239,13 +240,13 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     static DOMEntityOwnershipChange ownershipChange(final DOMEntity expEntity) {
         return Matchers.argThat(new ArgumentMatcher<DOMEntityOwnershipChange>() {
             @Override
     static DOMEntityOwnershipChange ownershipChange(final DOMEntity expEntity) {
         return Matchers.argThat(new ArgumentMatcher<DOMEntityOwnershipChange>() {
             @Override
-            public boolean matches(Object argument) {
+            public boolean matches(final Object argument) {
                 DOMEntityOwnershipChange change = (DOMEntityOwnershipChange) argument;
                 return expEntity.equals(change.getEntity());
             }
 
             @Override
                 DOMEntityOwnershipChange change = (DOMEntityOwnershipChange) argument;
                 return expEntity.equals(change.getEntity());
             }
 
             @Override
-            public void describeTo(Description description) {
+            public void describeTo(final Description description) {
                 description.appendValue(new DOMEntityOwnershipChange(expEntity, EntityOwnershipChangeState.from(
                         false, false, false)));
             }
                 description.appendValue(new DOMEntityOwnershipChange(expEntity, EntityOwnershipChangeState.from(
                         false, false, false)));
             }
@@ -253,8 +254,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    static void verifyNoOwnerSet(TestActorRef<? extends EntityOwnershipShard> shard, String entityType,
-            YangInstanceIdentifier entityId) {
+    static void verifyNoOwnerSet(final TestActorRef<? extends EntityOwnershipShard> shard, final String entityType,
+            final YangInstanceIdentifier entityId) {
         YangInstanceIdentifier entityPath = entityPath(entityType, entityId).node(ENTITY_OWNER_QNAME);
         try {
             NormalizedNode<?, ?> node = AbstractShardTest.readStore(shard, entityPath);
         YangInstanceIdentifier entityPath = entityPath(entityType, entityId).node(ENTITY_OWNER_QNAME);
         try {
             NormalizedNode<?, ?> node = AbstractShardTest.readStore(shard, entityPath);
@@ -268,7 +269,7 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     static void verifyRaftState(final TestActorRef<? extends EntityOwnershipShard> shard,
     }
 
     static void verifyRaftState(final TestActorRef<? extends EntityOwnershipShard> shard,
-            Consumer<OnDemandRaftState> verifier)
+            final Consumer<OnDemandRaftState> verifier)
             throws Exception {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
             throws Exception {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
@@ -288,14 +289,14 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         throw lastError;
     }
 
         throw lastError;
     }
 
-    static ShardIdentifier newShardId(String memberName) {
+    static ShardIdentifier newShardId(final String memberName) {
         return ShardIdentifier.create("entity-ownership", MemberName.forName(memberName),
             "operational" + NEXT_SHARD_NUM.getAndIncrement());
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
         return ShardIdentifier.create("entity-ownership", MemberName.forName(memberName),
             "operational" + NEXT_SHARD_NUM.getAndIncrement());
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    void verifyEntityCandidateRemoved(final TestActorRef<EntityOwnershipShard> shard, String entityType,
-            YangInstanceIdentifier entityId, String candidateName) {
+    void verifyEntityCandidateRemoved(final TestActorRef<EntityOwnershipShard> shard, final String entityType,
+            final YangInstanceIdentifier entityId, final String candidateName) {
         verifyNodeRemoved(candidatePath(entityType, entityId, candidateName), path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
         verifyNodeRemoved(candidatePath(entityType, entityId, candidateName), path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
@@ -306,8 +307,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    void verifyCommittedEntityCandidate(final TestActorRef<? extends EntityOwnershipShard> shard, String entityType,
-            YangInstanceIdentifier entityId, String candidateName) {
+    void verifyCommittedEntityCandidate(final TestActorRef<? extends EntityOwnershipShard> shard,
+            final String entityType, final YangInstanceIdentifier entityId, final String candidateName) {
         verifyEntityCandidate(entityType, entityId, candidateName, path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
         verifyEntityCandidate(entityType, entityId, candidateName, path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
@@ -318,8 +319,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    void verifyNoEntityCandidate(final TestActorRef<? extends EntityOwnershipShard> shard, String entityType,
-            YangInstanceIdentifier entityId, String candidateName) {
+    void verifyNoEntityCandidate(final TestActorRef<? extends EntityOwnershipShard> shard, final String entityType,
+            final YangInstanceIdentifier entityId, final String candidateName) {
         verifyEntityCandidate(entityType, entityId, candidateName, path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
         verifyEntityCandidate(entityType, entityId, candidateName, path -> {
             try {
                 return AbstractShardTest.readStore(shard, path);
index d15111210b892c09440e362309779ce3c46f4b6f..652c5279ffe66509e80faad28ca1034f36abd6d4 100644 (file)
@@ -120,7 +120,7 @@ public class EntityOwnershipStatisticsTest extends AbstractActorTest {
         assertStatistics(statistics, REMOTE_MEMBER_NAME2, 0L);
 
         // Clear the owner for entity 2
         assertStatistics(statistics, REMOTE_MEMBER_NAME2, 0L);
 
         // Clear the owner for entity 2
-        writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, null));
+        writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, ""));
         statistics = ownershipStatistics.all();
         assertStatistics(statistics, LOCAL_MEMBER_NAME, 1L);
         assertStatistics(statistics, REMOTE_MEMBER_NAME1, 0L);
         statistics = ownershipStatistics.all();
         assertStatistics(statistics, LOCAL_MEMBER_NAME, 1L);
         assertStatistics(statistics, REMOTE_MEMBER_NAME1, 0L);
@@ -128,7 +128,7 @@ public class EntityOwnershipStatisticsTest extends AbstractActorTest {
 
         // Clear the owner for entity 2 again - expect no change
 
 
         // Clear the owner for entity 2 again - expect no change
 
-        writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, null));
+        writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, ""));
         statistics = ownershipStatistics.all();
         assertStatistics(statistics, LOCAL_MEMBER_NAME, 1L);
         assertStatistics(statistics, REMOTE_MEMBER_NAME1, 0L);
         statistics = ownershipStatistics.all();
         assertStatistics(statistics, LOCAL_MEMBER_NAME, 1L);
         assertStatistics(statistics, REMOTE_MEMBER_NAME1, 0L);
index 3546a50f56084340bcdbf33659b465749703523e..cc5dbff973a610874cc33922bf30ccefb95bfbb8 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.controller.cluster.datastore.messages;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
+import java.io.NotSerializableException;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
 import java.util.List;
 import org.junit.Test;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
@@ -21,9 +22,9 @@ import org.opendaylight.controller.cluster.datastore.modification.WriteModificat
 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 
@@ -35,9 +36,9 @@ import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFac
 public class ReadyLocalTransactionSerializerTest extends AbstractTest {
 
     @Test
 public class ReadyLocalTransactionSerializerTest extends AbstractTest {
 
     @Test
-    public void testToAndFromBinary() {
-        TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
-        dataTree.setSchemaContext(TestModel.createTestContext());
+    public void testToAndFromBinary() throws NotSerializableException {
+        DataTree dataTree = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_OPERATIONAL, TestModel.createTestContext());
         DataTreeModification modification = dataTree.takeSnapshot().newModification();
 
         ContainerNode writeData = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
         DataTreeModification modification = dataTree.takeSnapshot().newModification();
 
         ContainerNode writeData = ImmutableNodes.containerNode(TestModel.TEST_QNAME);
index 315246d497393ae35c3209b172db7de9e0478fef..09273b363cf37c9420ea7fa76715d277cead61c1 100644 (file)
@@ -26,12 +26,12 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
@@ -183,8 +183,8 @@ public class CommitTransactionPayloadTest extends AbstractTest {
 
     @Test
     public void testUnmodifiedRootCandidate() throws Exception {
 
     @Test
     public void testUnmodifiedRootCandidate() throws Exception {
-        final TipProducingDataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
-        dataTree.setSchemaContext(SchemaContextHelper.select(SchemaContextHelper.CARS_YANG));
+        final DataTree dataTree = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_CONFIGURATION, SchemaContextHelper.select(SchemaContextHelper.CARS_YANG));
 
         DataTreeModification modification = dataTree.takeSnapshot().newModification();
         modification.ready();
 
         DataTreeModification modification = dataTree.takeSnapshot().newModification();
         modification.ready();
index b414e0f269f9b19ea868a05e61d0692f9a5f573d..e1a881f7eef5d1f1154d039ab0dd88f126115a46 100644 (file)
@@ -11,13 +11,13 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.fail;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.fail;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Uninterruptibles;
 import com.google.common.util.concurrent.Uninterruptibles;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -31,16 +31,16 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 
 public class MockDataTreeChangeListener implements DOMDataTreeChangeListener {
 
 
 public class MockDataTreeChangeListener implements DOMDataTreeChangeListener {
 
-    private final List<DataTreeCandidate> changeList = Lists.newArrayList();
+    private final List<DataTreeCandidate> changeList = new ArrayList<>();
 
     private volatile CountDownLatch changeLatch;
     private int expChangeEventCount;
 
 
     private volatile CountDownLatch changeLatch;
     private int expChangeEventCount;
 
-    public MockDataTreeChangeListener(int expChangeEventCount) {
+    public MockDataTreeChangeListener(final int expChangeEventCount) {
         reset(expChangeEventCount);
     }
 
         reset(expChangeEventCount);
     }
 
-    public void reset(int newExpChangeEventCount) {
+    public void reset(final int newExpChangeEventCount) {
         changeLatch = new CountDownLatch(newExpChangeEventCount);
         this.expChangeEventCount = newExpChangeEventCount;
         synchronized (changeList) {
         changeLatch = new CountDownLatch(newExpChangeEventCount);
         this.expChangeEventCount = newExpChangeEventCount;
         synchronized (changeList) {
@@ -59,7 +59,7 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener {
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
-    public void waitForChangeEvents(YangInstanceIdentifier... expPaths) {
+    public void waitForChangeEvents(final YangInstanceIdentifier... expPaths) {
         boolean done = Uninterruptibles.awaitUninterruptibly(changeLatch, 5, TimeUnit.SECONDS);
         if (!done) {
             fail(String.format("Missing change notifications. Expected: %d. Actual: %d",
         boolean done = Uninterruptibles.awaitUninterruptibly(changeLatch, 5, TimeUnit.SECONDS);
         if (!done) {
             fail(String.format("Missing change notifications. Expected: %d. Actual: %d",
@@ -100,7 +100,7 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener {
         }
     }
 
         }
     }
 
-    public void verifyNotifiedData(YangInstanceIdentifier... paths) {
+    public void verifyNotifiedData(final YangInstanceIdentifier... paths) {
         Set<YangInstanceIdentifier> pathSet = new HashSet<>(Arrays.asList(paths));
         synchronized (changeList) {
             for (DataTreeCandidate c : changeList) {
         Set<YangInstanceIdentifier> pathSet = new HashSet<>(Arrays.asList(paths));
         synchronized (changeList) {
             for (DataTreeCandidate c : changeList) {
@@ -113,14 +113,14 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener {
         }
     }
 
         }
     }
 
-    public void expectNoMoreChanges(String assertMsg) {
+    public void expectNoMoreChanges(final String assertMsg) {
         Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS);
         synchronized (changeList) {
             assertEquals(assertMsg, expChangeEventCount, changeList.size());
         }
     }
 
         Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS);
         synchronized (changeList) {
             assertEquals(assertMsg, expChangeEventCount, changeList.size());
         }
     }
 
-    public void verifyNoNotifiedData(YangInstanceIdentifier... paths) {
+    public void verifyNoNotifiedData(final YangInstanceIdentifier... paths) {
         Set<YangInstanceIdentifier> pathSet = new HashSet<>(Arrays.asList(paths));
         synchronized (changeList) {
             for (DataTreeCandidate c : changeList) {
         Set<YangInstanceIdentifier> pathSet = new HashSet<>(Arrays.asList(paths));
         synchronized (changeList) {
             for (DataTreeCandidate c : changeList) {
index 2d345e5ea8b4bf93cb851ccb85d35a9175218f5e..18949ac21ecd5ec3d491933b9f15e0041a8f79fe 100644 (file)
@@ -23,9 +23,9 @@ import static org.opendaylight.controller.md.cluster.datastore.model.TestModel.i
 import static org.opendaylight.controller.md.cluster.datastore.model.TestModel.outerNode;
 import static org.opendaylight.controller.md.cluster.datastore.model.TestModel.outerNodeEntry;
 
 import static org.opendaylight.controller.md.cluster.datastore.model.TestModel.outerNode;
 import static org.opendaylight.controller.md.cluster.datastore.model.TestModel.outerNodeEntry;
 
-import com.google.common.base.Optional;
 import com.google.common.reflect.Reflection;
 import java.lang.reflect.InvocationTargetException;
 import com.google.common.reflect.Reflection;
 import java.lang.reflect.InvocationTargetException;
+import java.util.Optional;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
@@ -43,12 +43,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
@@ -66,7 +66,7 @@ public class PruningDataTreeModificationTest {
     @Mock
     private DataTreeModification mockModification;
 
     @Mock
     private DataTreeModification mockModification;
 
-    private TipProducingDataTree dataTree;
+    private DataTree dataTree;
     private DataTreeModification realModification;
     private DataTreeModification proxyModification;
     private PruningDataTreeModification pruningDataTreeModification;
     private DataTreeModification realModification;
     private DataTreeModification proxyModification;
     private PruningDataTreeModification pruningDataTreeModification;
@@ -76,8 +76,8 @@ public class PruningDataTreeModificationTest {
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
-        dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
-        dataTree.setSchemaContext(SCHEMA_CONTEXT);
+        dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_CONFIGURATION,
+            SCHEMA_CONTEXT);
 
         realModification = dataTree.takeSnapshot().newModification();
         proxyModification = Reflection.newProxy(DataTreeModification.class, (proxy, method, args) -> {
 
         realModification = dataTree.takeSnapshot().newModification();
         proxyModification = Reflection.newProxy(DataTreeModification.class, (proxy, method, args) -> {
@@ -128,7 +128,7 @@ public class PruningDataTreeModificationTest {
 
         verify(mockModification, times(1)).merge(path, normalizedNode);
 
 
         verify(mockModification, times(1)).merge(path, normalizedNode);
 
-        DataTreeCandidateTip candidate = getCandidate();
+        DataTreeCandidate candidate = getCandidate();
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
@@ -153,7 +153,7 @@ public class PruningDataTreeModificationTest {
                 new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME)).withChild(outerNode).build();
 
         Optional<NormalizedNode<?, ?>> actual = dataTree.takeSnapshot().readNode(path);
                 new YangInstanceIdentifier.NodeIdentifier(TEST_QNAME)).withChild(outerNode).build();
 
         Optional<NormalizedNode<?, ?>> actual = dataTree.takeSnapshot().readNode(path);
-        assertEquals("After pruning present", true, actual.isPresent());
+        assertTrue("After pruning present", actual.isPresent());
         assertEquals("After pruning", prunedNode, actual.get());
     }
 
         assertEquals("After pruning", prunedNode, actual.get());
     }
 
@@ -166,7 +166,7 @@ public class PruningDataTreeModificationTest {
 
         verify(mockModification, times(1)).merge(path, normalizedNode);
 
 
         verify(mockModification, times(1)).merge(path, normalizedNode);
 
-        DataTreeCandidateTip candidate = getCandidate();
+        DataTreeCandidate candidate = getCandidate();
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
@@ -181,8 +181,8 @@ public class PruningDataTreeModificationTest {
 
     @Test
     public void testWriteRootNode() throws Exception {
 
     @Test
     public void testWriteRootNode() throws Exception {
-        final DataTree localDataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
-        localDataTree.setSchemaContext(SCHEMA_CONTEXT);
+        final DataTree localDataTree = new InMemoryDataTreeFactory().create(
+            DataTreeConfiguration.DEFAULT_CONFIGURATION, SCHEMA_CONTEXT);
 
         DataTreeModification mod = localDataTree.takeSnapshot().newModification();
         mod.write(CarsModel.BASE_PATH, CarsModel.create());
 
         DataTreeModification mod = localDataTree.takeSnapshot().newModification();
         mod.write(CarsModel.BASE_PATH, CarsModel.create());
@@ -195,7 +195,7 @@ public class PruningDataTreeModificationTest {
         dataTree.commit(getCandidate());
 
         Optional<NormalizedNode<?, ?>> actual = dataTree.takeSnapshot().readNode(YangInstanceIdentifier.EMPTY);
         dataTree.commit(getCandidate());
 
         Optional<NormalizedNode<?, ?>> actual = dataTree.takeSnapshot().readNode(YangInstanceIdentifier.EMPTY);
-        assertEquals("Root present", true, actual.isPresent());
+        assertTrue("Root present", actual.isPresent());
         assertEquals("Root node", normalizedNode, actual.get());
     }
 
         assertEquals("Root node", normalizedNode, actual.get());
     }
 
@@ -227,7 +227,7 @@ public class PruningDataTreeModificationTest {
 
         verify(mockModification, times(1)).write(path, normalizedNode);
 
 
         verify(mockModification, times(1)).write(path, normalizedNode);
 
-        DataTreeCandidateTip candidate = getCandidate();
+        DataTreeCandidate candidate = getCandidate();
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
@@ -254,7 +254,7 @@ public class PruningDataTreeModificationTest {
                 .withChild(ImmutableNodes.leafNode(NAME_QNAME, "name")).build();
 
         Optional<NormalizedNode<?, ?>> actual = dataTree.takeSnapshot().readNode(path);
                 .withChild(ImmutableNodes.leafNode(NAME_QNAME, "name")).build();
 
         Optional<NormalizedNode<?, ?>> actual = dataTree.takeSnapshot().readNode(path);
-        assertEquals("After pruning present", true, actual.isPresent());
+        assertTrue("After pruning present", actual.isPresent());
         assertEquals("After pruning", prunedNode, actual.get());
     }
 
         assertEquals("After pruning", prunedNode, actual.get());
     }
 
@@ -289,12 +289,11 @@ public class PruningDataTreeModificationTest {
                 dataTreeModification instanceof PruningDataTreeModification);
     }
 
                 dataTreeModification instanceof PruningDataTreeModification);
     }
 
-    private DataTreeCandidateTip getCandidate() throws DataValidationFailedException {
+    private DataTreeCandidate getCandidate() throws DataValidationFailedException {
         pruningDataTreeModification.ready();
         DataTreeModification mod = pruningDataTreeModification.delegate();
         mod = mod == proxyModification ? realModification : mod;
         dataTree.validate(mod);
         pruningDataTreeModification.ready();
         DataTreeModification mod = pruningDataTreeModification.delegate();
         mod = mod == proxyModification ? realModification : mod;
         dataTree.validate(mod);
-        DataTreeCandidateTip candidate = dataTree.prepare(mod);
-        return candidate;
+        return dataTree.prepare(mod);
     }
 }
     }
 }
index 23e6fdd70e7793dfc356cb2bc9cdc1513b2ed4a0..3e224a97156ed4eeb5f0a6adbdaf67cf6e9f3dff 100644 (file)
@@ -247,7 +247,7 @@ public class DistributedShardedDOMDataTreeTest extends AbstractTest {
                 captorForSubtrees.capture());
         final List<Collection<DataTreeCandidate>> capturedValue = captorForChanges.getAllValues();
 
                 captorForSubtrees.capture());
         final List<Collection<DataTreeCandidate>> capturedValue = captorForChanges.getAllValues();
 
-        final Optional<NormalizedNode<?, ?>> dataAfter =
+        final java.util.Optional<NormalizedNode<?, ?>> dataAfter =
                 capturedValue.get(0).iterator().next().getRootNode().getDataAfter();
 
         final NormalizedNode<?,?> expected = ImmutableContainerNodeBuilder.create()
                 capturedValue.get(0).iterator().next().getRootNode().getDataAfter();
 
         final NormalizedNode<?,?> expected = ImmutableContainerNodeBuilder.create()
index 3047082b4c0e1592839d0466ee0b9fed20f5a3c5..17f1c618bc730854f32701b14a1af2df80e42d75 100644 (file)
@@ -11,10 +11,7 @@ import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.ma
 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntryBuilder;
 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder;
 
 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntryBuilder;
 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder;
 
-import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -34,7 +31,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class CompositeModel {
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class CompositeModel {
@@ -112,33 +108,9 @@ public final class CompositeModel {
 
     }
 
 
     }
 
-    public static InputStream getDatastoreTestInputStream() {
-        return getInputStream(DATASTORE_TEST_YANG);
-    }
-
-    public static InputStream getDatastoreAugInputStream() {
-        return getInputStream(DATASTORE_AUG_YANG);
-    }
-
-    public static InputStream getDatastoreTestNotificationInputStream() {
-        return getInputStream(DATASTORE_TEST_NOTIFICATION_YANG);
-    }
-
-    private static InputStream getInputStream(final String resourceName) {
-        return CompositeModel.class.getResourceAsStream(resourceName);
-    }
-
     public static SchemaContext createTestContext() {
     public static SchemaContext createTestContext() {
-        List<InputStream> inputStreams = new ArrayList<>();
-        inputStreams.add(getDatastoreTestInputStream());
-        inputStreams.add(getDatastoreAugInputStream());
-        inputStreams.add(getDatastoreTestNotificationInputStream());
-
-        try {
-            return YangParserTestUtils.parseYangStreams(inputStreams);
-        } catch (ReactorException e) {
-            throw new RuntimeException("Unable to build schema context from " + inputStreams, e);
-        }
+        return YangParserTestUtils.parseYangResources(CompositeModel.class, DATASTORE_TEST_YANG, DATASTORE_AUG_YANG,
+            DATASTORE_TEST_NOTIFICATION_YANG);
     }
 
     /**
     }
 
     /**
index f2d23e0059ccafa91f5ab469fb1ed306138bf6c8..7f8b7483a42a62013a38fad7b1a2208373bba5b2 100644 (file)
@@ -9,14 +9,8 @@
 package org.opendaylight.controller.md.cluster.datastore.model;
 
 import java.io.File;
 package org.opendaylight.controller.md.cluster.datastore.model;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class SchemaContextHelper {
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class SchemaContextHelper {
@@ -38,37 +32,17 @@ public final class SchemaContextHelper {
     }
 
     public static SchemaContext select(final String... schemaFiles) {
     }
 
     public static SchemaContext select(final String... schemaFiles) {
-        List<InputStream> streams = new ArrayList<>(schemaFiles.length);
-
-        for (String schemaFile : schemaFiles) {
-            streams.add(getInputStream(schemaFile));
-        }
-
-        try {
-            return YangParserTestUtils.parseYangStreams(streams);
-        } catch (ReactorException e) {
-            throw new RuntimeException("Unable to build schema context from " + streams, e);
-        }
+        return YangParserTestUtils.parseYangResources(SchemaContextHelper.class, schemaFiles);
     }
 
     public static SchemaContext distributedShardedDOMDataTreeSchemaContext() {
     }
 
     public static SchemaContext distributedShardedDOMDataTreeSchemaContext() {
-        final List<InputStream> streams = new ArrayList<>();
-        try {
-            // we need prefix-shard-configuration and odl-datastore-test models
-            // for DistributedShardedDOMDataTree tests
-            streams.add(getInputStream(ODL_DATASTORE_TEST_YANG));
-            streams.add(new FileInputStream("src/main/yang/prefix-shard-configuration.yang"));
-            return YangParserTestUtils.parseYangStreams(streams);
-        } catch (FileNotFoundException | ReactorException e) {
-            throw new RuntimeException(e);
-        }
+        // we need prefix-shard-configuration and odl-datastore-test models
+        // for DistributedShardedDOMDataTree tests
+        return YangParserTestUtils.parseYangResources(SchemaContextHelper.class, ODL_DATASTORE_TEST_YANG,
+            "/META-INF/yang/prefix-shard-configuration@2017-01-10.yang");
     }
 
     public static SchemaContext entityOwners() {
     }
 
     public static SchemaContext entityOwners() {
-        try {
-            return YangParserTestUtils.parseYangSources(new File("src/main/yang/entity-owners.yang"));
-        } catch (IOException | ReactorException e) {
-            throw new RuntimeException(e);
-        }
+        return YangParserTestUtils.parseYangFiles(new File("src/main/yang/entity-owners.yang"));
     }
 }
     }
 }
index c75bd04bf46a4d09b9e1942c7db1a102deffef5f..836d7f9cfa9510139a88170688ebc93820387313 100644 (file)
@@ -7,11 +7,6 @@
  */
 package org.opendaylight.controller.md.cluster.datastore.model;
 
  */
 package org.opendaylight.controller.md.cluster.datastore.model;
 
-import com.google.common.io.Resources;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -23,7 +18,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
@@ -63,20 +57,7 @@ public final class TestModel {
     }
 
     public static SchemaContext createTestContext() {
     }
 
     public static SchemaContext createTestContext() {
-        final List<InputStream> sources;
-
-        try {
-            sources = Collections.singletonList(
-                Resources.asByteSource(TestModel.class.getResource(DATASTORE_TEST_YANG)).openStream());
-        } catch (IOException e1) {
-            throw new ExceptionInInitializerError(e1);
-        }
-
-        try {
-            return YangParserTestUtils.parseYangStreams(sources);
-        }  catch (ReactorException e) {
-            throw new RuntimeException("Unable to build schema context from " + sources, e);
-        }
+        return YangParserTestUtils.parseYangResource(DATASTORE_TEST_YANG);
     }
 
     public static DataContainerChild<?, ?> outerNode(final int... ids) {
     }
 
     public static DataContainerChild<?, ?> outerNode(final int... ids) {
index 896c606eb9ce3a592e359e39ae045e5f42e1269b..d2872e256c6b42cdb277153314aa764f915da5c2 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.controller.md.sal.dom.api;
 
 import static org.junit.Assert.assertNotNull;
 package org.opendaylight.controller.md.sal.dom.api;
 
 import static org.junit.Assert.assertNotNull;
+
 import com.google.common.util.concurrent.CheckedFuture;
 import java.net.URI;
 import java.util.Collections;
 import com.google.common.util.concurrent.CheckedFuture;
 import java.net.URI;
 import java.util.Collections;
@@ -26,7 +27,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo
  * can be used.
  */
 public abstract class AbstractDOMDataTreeServiceTestSuite {
  * can be used.
  */
 public abstract class AbstractDOMDataTreeServiceTestSuite {
-    protected static final QNameModule TEST_MODULE = QNameModule.create(URI.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store"), null);
+    protected static final QNameModule TEST_MODULE = QNameModule.create(URI.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store"));
 
     protected static final YangInstanceIdentifier UNORDERED_CONTAINER_IID = YangInstanceIdentifier.create(
         new NodeIdentifier(QName.create(TEST_MODULE, "lists")),
 
     protected static final YangInstanceIdentifier UNORDERED_CONTAINER_IID = YangInstanceIdentifier.create(
         new NodeIdentifier(QName.create(TEST_MODULE, "lists")),
index 37ac3deb13451bbe526faf9b55fe506597656d6c..001b4fdeacd8650222d12eb094dc546b6915e0ba 100644 (file)
@@ -79,7 +79,7 @@ public final class DomInmemoryDataBrokerModule extends
          */
         ExecutorService listenableFutureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(
                 getMaxDataBrokerFutureCallbackPoolSize(), getMaxDataBrokerFutureCallbackQueueSize(),
          */
         ExecutorService listenableFutureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(
                 getMaxDataBrokerFutureCallbackPoolSize(), getMaxDataBrokerFutureCallbackQueueSize(),
-                "CommitFutures");
+                "CommitFutures", SerializedDOMDataBroker.class);
 
         final List<AbstractMXBean> mBeans = Lists.newArrayList();
         final DurationStatisticsTracker commitStatsTracker;
 
         final List<AbstractMXBean> mBeans = Lists.newArrayList();
         final DurationStatisticsTracker commitStatsTracker;
@@ -93,7 +93,7 @@ public final class DomInmemoryDataBrokerModule extends
          * system it's running on.
          */
         ExecutorService commitExecutor = SpecialExecutors.newBoundedSingleThreadExecutor(
          * system it's running on.
          */
         ExecutorService commitExecutor = SpecialExecutors.newBoundedSingleThreadExecutor(
-            getMaxDataBrokerCommitQueueSize(), "WriteTxCommit");
+            getMaxDataBrokerCommitQueueSize(), "WriteTxCommit", SerializedDOMDataBroker.class);
 
         SerializedDOMDataBroker sdb = new SerializedDOMDataBroker(datastores,
             new DeadlockDetectingListeningExecutorService(commitExecutor,
 
         SerializedDOMDataBroker sdb = new SerializedDOMDataBroker(datastores,
             new DeadlockDetectingListeningExecutorService(commitExecutor,
index 93942957df705cc942c73ab3903d7d437c791e33..bb02015e4ff07f84dff015b5fbfa5cc54744e829 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.controller.config.yang.md.sal.dom.impl;
 
  */
 package org.opendaylight.controller.config.yang.md.sal.dom.impl;
 
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
 import org.opendaylight.controller.sal.core.api.model.SchemaService;
 import org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider;
 import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker;
 import org.opendaylight.controller.sal.core.api.model.SchemaService;
 import org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider;
@@ -15,7 +15,6 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
-import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.osgi.framework.BundleContext;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.osgi.framework.BundleContext;
@@ -105,8 +104,8 @@ org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractSchemaServiceImp
             }
 
             @Override
             }
 
             @Override
-            public CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> getSource(
-                    SourceIdentifier sourceIdentifier) {
+            public ListenableFuture<? extends YangTextSchemaSource> getSource(
+                    final SourceIdentifier sourceIdentifier) {
                 return sourceProvider.getSource(sourceIdentifier);
             }
         }
                 return sourceProvider.getSource(sourceIdentifier);
             }
         }
index 2e1348718e8be9760e02902f8e606479722b2631..800a35fa7189c38b1227271eb918f299aa91788e 100644 (file)
@@ -138,7 +138,7 @@ final class DOMRpcRoutingTable {
     private static RpcDefinition findRpcDefinition(final SchemaContext context, final SchemaPath schemaPath) {
         if (context != null) {
             final QName qname = schemaPath.getPathFromRoot().iterator().next();
     private static RpcDefinition findRpcDefinition(final SchemaContext context, final SchemaPath schemaPath) {
         if (context != null) {
             final QName qname = schemaPath.getPathFromRoot().iterator().next();
-            final Module module = context.findModuleByNamespaceAndRevision(qname.getNamespace(), qname.getRevision());
+            final Module module = context.findModule(qname.getModule()).orElse(null);
             if (module != null && module.getRpcs() != null) {
                 for (RpcDefinition rpc : module.getRpcs()) {
                     if (qname.equals(rpc.getQName())) {
             if (module != null && module.getRpcs() != null) {
                 for (RpcDefinition rpc : module.getRpcs()) {
                     if (qname.equals(rpc.getQName())) {
index f2236d4858932139e91ef68e56ca62974ba79796..52921183fbe05da4aa48f530579f8c9f50f3ff2c 100644 (file)
@@ -7,12 +7,12 @@
  */
 package org.opendaylight.controller.md.sal.dom.broker.impl;
 
  */
 package org.opendaylight.controller.md.sal.dom.broker.impl;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import java.util.List;
 import java.util.Map;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementation;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementation;
index f7705c1ba3bbdda227c2dc783e5cf909198bd994..84e19a34fc035bf373189fc60d52ff9da67fc9ce 100644 (file)
@@ -38,9 +38,9 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -80,12 +80,12 @@ class ShardedDOMDataBrokerDelegatingReadWriteTransaction implements DOMDataReadW
         this.txIdentifier = checkNotNull(readWriteTxId);
         this.initialReadMap = Maps.newEnumMap(LogicalDatastoreType.class);
 
         this.txIdentifier = checkNotNull(readWriteTxId);
         this.initialReadMap = Maps.newEnumMap(LogicalDatastoreType.class);
 
-        final InMemoryDataTreeFactory treeFactory = InMemoryDataTreeFactory.getInstance();
+        final InMemoryDataTreeFactory treeFactory = new InMemoryDataTreeFactory();
         final ImmutableMap.Builder<LogicalDatastoreType, DataTreeSnapshot> snapshotMapBuilder = ImmutableMap.builder();
         final ImmutableMap.Builder<LogicalDatastoreType, Queue<Modification>> modificationHistoryMapBuilder
                 = ImmutableMap.builder();
         for (final LogicalDatastoreType store : LogicalDatastoreType.values()) {
         final ImmutableMap.Builder<LogicalDatastoreType, DataTreeSnapshot> snapshotMapBuilder = ImmutableMap.builder();
         final ImmutableMap.Builder<LogicalDatastoreType, Queue<Modification>> modificationHistoryMapBuilder
                 = ImmutableMap.builder();
         for (final LogicalDatastoreType store : LogicalDatastoreType.values()) {
-            final DataTree tree = treeFactory.create(treeTypeForStore(store));
+            final DataTree tree = treeFactory.create(treeConfigForStore(store));
             tree.setSchemaContext(ctx);
             snapshotMapBuilder.put(store, tree.takeSnapshot());
 
             tree.setSchemaContext(ctx);
             snapshotMapBuilder.put(store, tree.takeSnapshot());
 
@@ -137,7 +137,7 @@ class ShardedDOMDataBrokerDelegatingReadWriteTransaction implements DOMDataReadW
                     mod.write(path, result.get());
                 }
                 applyModificationHistoryToSnapshot(mod, currentHistory);
                     mod.write(path, result.get());
                 }
                 applyModificationHistoryToSnapshot(mod, currentHistory);
-                readResult.set(mod.readNode(path));
+                readResult.set(Optional.fromJavaUtil(mod.readNode(path)));
             }
 
             @Override
             }
 
             @Override
@@ -190,17 +190,17 @@ class ShardedDOMDataBrokerDelegatingReadWriteTransaction implements DOMDataReadW
     private void initialRead(final YangInstanceIdentifier path) {
         root = path;
 
     private void initialRead(final YangInstanceIdentifier path) {
         root = path;
 
-        final InMemoryDataTreeFactory treeFactory = InMemoryDataTreeFactory.getInstance();
         for (final LogicalDatastoreType store : LogicalDatastoreType.values()) {
             initialReadMap.put(store, readTxDelegate.read(store, path));
         }
     }
 
         for (final LogicalDatastoreType store : LogicalDatastoreType.values()) {
             initialReadMap.put(store, readTxDelegate.read(store, path));
         }
     }
 
-    private TreeType treeTypeForStore(final LogicalDatastoreType store) {
-        return store == LogicalDatastoreType.CONFIGURATION ? TreeType.CONFIGURATION : TreeType.OPERATIONAL;
+    private static DataTreeConfiguration treeConfigForStore(final LogicalDatastoreType store) {
+        return store == LogicalDatastoreType.CONFIGURATION ? DataTreeConfiguration.DEFAULT_CONFIGURATION
+                : DataTreeConfiguration.DEFAULT_OPERATIONAL;
     }
 
     }
 
-    private void applyModificationHistoryToSnapshot(final DataTreeModification dataTreeModification,
+    private static void applyModificationHistoryToSnapshot(final DataTreeModification dataTreeModification,
                                                     final Queue<Modification> modificationHistory) {
         while (!modificationHistory.isEmpty()) {
             final Modification modification = modificationHistory.poll();
                                                     final Queue<Modification> modificationHistory) {
         while (!modificationHistory.isEmpty()) {
             final Modification modification = modificationHistory.poll();
index 5fccde2864ae2f96976dcd2671c44e8cd26356f5..c80d75f0d1ae5687d42ec70fd9d2867ea3b43d6b 100644 (file)
@@ -125,7 +125,7 @@ public class DOMMountPointServiceImpl implements DOMMountPointService {
         }
 
         @Override
         }
 
         @Override
-        public void close() throws Exception {
+        public void close() {
             unregisterMountPoint(mountPoint.getIdentifier());
         }
     }
             unregisterMountPoint(mountPoint.getIdentifier());
         }
     }
index b1c5a915bd899acfb943d3ab983a28930b8c22e7..2a614c7d0051b3615c185c2aa2c03fbf241c5227 100644 (file)
@@ -8,21 +8,19 @@
 
 package org.opendaylight.controller.sal.dom.broker.util;
 
 
 package org.opendaylight.controller.sal.dom.broker.util;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Preconditions;
-import java.net.URI;
 import java.util.Collection;
 import java.util.Collection;
-import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -75,31 +73,6 @@ public class ProxySchemaContext implements SchemaContext {
         return getCurrentSchema().getExtensions();
     }
 
         return getCurrentSchema().getExtensions();
     }
 
-    @Override
-    public Module findModuleByName(final String string, final Date date) {
-        return getCurrentSchema().findModuleByName(string, date);
-    }
-
-    @Override
-    public Set<Module> findModuleByNamespace(final URI uri) {
-        return getCurrentSchema().findModuleByNamespace(uri);
-    }
-
-    @Override
-    public Module findModuleByNamespaceAndRevision(final URI uri, final Date date) {
-        return getCurrentSchema().findModuleByNamespaceAndRevision(uri, date);
-    }
-
-    @Override
-    public Optional<String> getModuleSource(final ModuleIdentifier moduleIdentifier) {
-        return getCurrentSchema().getModuleSource(moduleIdentifier);
-    }
-
-    @Override
-    public Set<ModuleIdentifier> getAllModuleIdentifiers() {
-        return getCurrentSchema().getAllModuleIdentifiers();
-    }
-
     @Override
     public boolean isPresenceContainer() {
         return getCurrentSchema().isPresenceContainer();
     @Override
     public boolean isPresenceContainer() {
         return getCurrentSchema().isPresenceContainer();
@@ -121,8 +94,8 @@ public class ProxySchemaContext implements SchemaContext {
     }
 
     @Override
     }
 
     @Override
-    public DataSchemaNode getDataChildByName(final QName name) {
-        return getCurrentSchema().getDataChildByName(name);
+    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        return getCurrentSchema().findDataChildByName(name);
     }
 
     @Override
     }
 
     @Override
@@ -131,7 +104,7 @@ public class ProxySchemaContext implements SchemaContext {
     }
 
     @Override
     }
 
     @Override
-    public Set<AugmentationSchema> getAvailableAugmentations() {
+    public Set<AugmentationSchemaNode> getAvailableAugmentations() {
         return getCurrentSchema().getAvailableAugmentations();
     }
 
         return getCurrentSchema().getAvailableAugmentations();
     }
 
@@ -150,11 +123,6 @@ public class ProxySchemaContext implements SchemaContext {
         return getCurrentSchema().isConfiguration();
     }
 
         return getCurrentSchema().isConfiguration();
     }
 
-    @Override
-    public ConstraintDefinition getConstraints() {
-        return getCurrentSchema().getConstraints();
-    }
-
     @Override
     public QName getQName() {
         return getCurrentSchema().getQName();
     @Override
     public QName getQName() {
         return getCurrentSchema().getQName();
@@ -171,12 +139,12 @@ public class ProxySchemaContext implements SchemaContext {
     }
 
     @Override
     }
 
     @Override
-    public String getDescription() {
+    public Optional<String> getDescription() {
         return getCurrentSchema().getDescription();
     }
 
     @Override
         return getCurrentSchema().getDescription();
     }
 
     @Override
-    public String getReference() {
+    public Optional<String> getReference() {
         return getCurrentSchema().getReference();
     }
 
         return getCurrentSchema().getReference();
     }
 
@@ -184,4 +152,14 @@ public class ProxySchemaContext implements SchemaContext {
     public Status getStatus() {
         return getCurrentSchema().getStatus();
     }
     public Status getStatus() {
         return getCurrentSchema().getStatus();
     }
+
+    @Override
+    public Optional<Module> findModule(final String name, final Optional<Revision> revision) {
+        return getCurrentSchema().findModule(name, revision);
+    }
+
+    @Override
+    public Optional<Module> findModule(final QNameModule qnameModule) {
+        return getCurrentSchema().findModule(qnameModule);
+    }
 }
 }
index 248a294aff38d1788b254ca5ff0be97680a1c699..7aa67a111648a85aafe531401ff058d798a04eba 100644 (file)
@@ -11,22 +11,27 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.collect.Lists;
 import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.collect.Lists;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -53,8 +58,7 @@ public final class YangSchemaUtils {
         }
 
         QName firstNode = path.iterator().next();
         }
 
         QName firstNode = path.iterator().next();
-        DataNodeContainer previous = schema.findModuleByNamespaceAndRevision(firstNode.getNamespace(),
-                firstNode.getRevision());
+        DataNodeContainer previous = schema.findModule(firstNode.getModule()).orElse(null);
         Iterator<QName> iterator = path.iterator();
 
         while (iterator.hasNext()) {
         Iterator<QName> iterator = path.iterator();
 
         while (iterator.hasNext()) {
@@ -91,8 +95,7 @@ public final class YangSchemaUtils {
     }
 
     private static DataSchemaNode searchInCases(final ChoiceSchemaNode choiceNode, final QName arg) {
     }
 
     private static DataSchemaNode searchInCases(final ChoiceSchemaNode choiceNode, final QName arg) {
-        Set<ChoiceCaseNode> cases = choiceNode.getCases();
-        for (ChoiceCaseNode caseNode : cases) {
+        for (CaseSchemaNode caseNode : choiceNode.getCases().values()) {
             DataSchemaNode node = caseNode.getDataChildByName(arg);
             if (node != null) {
                 return node;
             DataSchemaNode node = caseNode.getDataChildByName(arg);
             if (node != null) {
                 return node;
@@ -130,7 +133,7 @@ public final class YangSchemaUtils {
         }
 
         @Override
         }
 
         @Override
-        public DataSchemaNode getDataChildByName(final QName name) {
+        public Optional<DataSchemaNode> findDataChildByName(final QName name) {
             // TODO Auto-generated method stub
             return null;
         }
             // TODO Auto-generated method stub
             return null;
         }
@@ -142,7 +145,7 @@ public final class YangSchemaUtils {
         }
 
         @Override
         }
 
         @Override
-        public Set<AugmentationSchema> getAvailableAugmentations() {
+        public Set<AugmentationSchemaNode> getAvailableAugmentations() {
             // TODO Auto-generated method stub
             return null;
         }
             // TODO Auto-generated method stub
             return null;
         }
@@ -166,53 +169,68 @@ public final class YangSchemaUtils {
         }
 
         @Override
         }
 
         @Override
-        public ConstraintDefinition getConstraints() {
+        public QName getQName() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public QName getQName() {
+        public SchemaPath getPath() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public SchemaPath getPath() {
+        public Optional<String> getDescription() {
+            return Optional.empty();
+        }
+
+        @Override
+        public Optional<String> getReference() {
+            return Optional.empty();
+        }
+
+        @Override
+        public Status getStatus() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public String getDescription() {
+        public List<UnknownSchemaNode> getUnknownSchemaNodes() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public String getReference() {
+        public boolean isPresenceContainer() {
             // TODO Auto-generated method stub
             // TODO Auto-generated method stub
-            return null;
+            return false;
         }
 
         @Override
         }
 
         @Override
-        public Status getStatus() {
+        public Set<NotificationDefinition> getNotifications() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+        public Set<ActionDefinition> getActions() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public boolean isPresenceContainer() {
+        public Optional<RevisionAwareXPath> getWhenCondition() {
             // TODO Auto-generated method stub
             // TODO Auto-generated method stub
-            return false;
+            return null;
         }
 
         }
 
+        @Override
+        public Collection<MustDefinition> getMustConstraints() {
+            // TODO Auto-generated method stub
+            return null;
+        }
     }
 
 }
     }
 
 }
index e2baf3ecbf2ae993c907fad8a3f702d263e4fc07..07ca5450feee8a155cc3803847385984968a4dd6 100644 (file)
@@ -79,7 +79,7 @@ public class DOMBrokerTest {
                 .build();
 
         commitExecutor = new CommitExecutorService(Executors.newSingleThreadExecutor());
                 .build();
 
         commitExecutor = new CommitExecutorService(Executors.newSingleThreadExecutor());
-        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB");
+        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB", DOMBrokerTest.class);
         executor = new DeadlockDetectingListeningExecutorService(commitExecutor,
                                                                  TransactionCommitDeadlockException
                                                                          .DEADLOCK_EXCEPTION_SUPPLIER,
         executor = new DeadlockDetectingListeningExecutorService(commitExecutor,
                                                                  TransactionCommitDeadlockException
                                                                          .DEADLOCK_EXCEPTION_SUPPLIER,
index a6cd351f129168676d0396afaa2f630023a27bfb..bad492769fe1d9f0adca6c30c466a974321a6036 100644 (file)
@@ -100,7 +100,8 @@ public class DOMDataTreeListenerTest {
                 .build();
 
         commitExecutor = new CommitExecutorService(Executors.newSingleThreadExecutor());
                 .build();
 
         commitExecutor = new CommitExecutorService(Executors.newSingleThreadExecutor());
-        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB");
+        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB",
+                DOMDataTreeListenerTest.class);
         executor = new DeadlockDetectingListeningExecutorService(commitExecutor,
                                                                  TransactionCommitDeadlockException
                                                                          .DEADLOCK_EXCEPTION_SUPPLIER,
         executor = new DeadlockDetectingListeningExecutorService(commitExecutor,
                                                                  TransactionCommitDeadlockException
                                                                          .DEADLOCK_EXCEPTION_SUPPLIER,
index 7500173fe76c43050e299e0e4dc3adfe1edddab2..53096daccfb8ab81e7f3230b7218677f091a423c 100644 (file)
@@ -7,13 +7,9 @@
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
@@ -39,17 +35,7 @@ public final class TestModel {
             YangInstanceIdentifier.builder(TEST_PATH).node(OUTER_LIST_QNAME).build();
     private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang";
 
             YangInstanceIdentifier.builder(TEST_PATH).node(OUTER_LIST_QNAME).build();
     private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang";
 
-    private static InputStream getInputStream() {
-        return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG);
-    }
-
     public static SchemaContext createTestContext() {
     public static SchemaContext createTestContext() {
-        final List<InputStream> streams = Collections.singletonList(getInputStream());
-
-        try {
-            return YangParserTestUtils.parseYangStreams(streams);
-        } catch (ReactorException e) {
-            throw new RuntimeException("Unable to build schema context from " + streams, e);
-        }
+        return YangParserTestUtils.parseYangResource(DATASTORE_TEST_YANG);
     }
 }
     }
 }
index 1e68c6131961124ec772c0defba7d21565e09ad1..8a59149a0202f3f77c7471266c7dd1914dac7e59 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.controller.sal.core.spi.data;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 package org.opendaylight.controller.sal.core.spi.data;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
@@ -64,7 +65,7 @@ public final class SnapshotBackedReadTransaction<T> extends AbstractDOMStoreTran
         }
 
         try {
         }
 
         try {
-            return Futures.immediateCheckedFuture(snapshot.readNode(path));
+            return Futures.immediateCheckedFuture(Optional.fromJavaUtil(snapshot.readNode(path)));
         } catch (Exception e) {
             LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e);
             return Futures.immediateFailedCheckedFuture(new ReadFailedException("Read failed",e));
         } catch (Exception e) {
             LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e);
             return Futures.immediateFailedCheckedFuture(new ReadFailedException("Read failed",e));
index dc600dd130213f6c4509c6fe4f8128975912b066..a5b7ea6253c0a6c15fcd745965b8052536246761 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.controller.sal.core.spi.data;
 
 import static com.google.common.base.Preconditions.checkState;
 package org.opendaylight.controller.sal.core.spi.data;
 
 import static com.google.common.base.Preconditions.checkState;
+
 import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Optional;
 import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.base.Optional;
@@ -119,11 +120,12 @@ public class SnapshotBackedWriteTransaction<T> extends AbstractDOMStoreTransacti
      * @return null if the the transaction has been closed;
      */
     final Optional<NormalizedNode<?, ?>> readSnapshotNode(final YangInstanceIdentifier path) {
      * @return null if the the transaction has been closed;
      */
     final Optional<NormalizedNode<?, ?>> readSnapshotNode(final YangInstanceIdentifier path) {
-        return readyImpl == null ? null : mutableTree.readNode(path);
+        return readyImpl == null ? null : Optional.fromJavaUtil(mutableTree.readNode(path));
     }
 
     private final void checkNotReady() {
     }
 
     private final void checkNotReady() {
-        checkState(readyImpl != null, "Transaction %s is no longer open. No further modifications allowed.", getIdentifier());
+        checkState(readyImpl != null, "Transaction %s is no longer open. No further modifications allowed.",
+                getIdentifier());
     }
 
     @Override
     }
 
     @Override
index 61ecf93732b513ce01c42a04edf5512a71b17052..b5e5e8331e0680910dc734689bf75e2dd9bb71aa 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Preconditions;
+import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
@@ -37,10 +37,10 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
 import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
@@ -99,10 +99,10 @@ public class InMemoryDOMDataStore extends TransactionReadyPrototype<String> impl
 
         switch (type) {
             case CONFIGURATION:
 
         switch (type) {
             case CONFIGURATION:
-                dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
+                dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_CONFIGURATION);
                 break;
             case OPERATIONAL:
                 break;
             case OPERATIONAL:
-                dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL);
+                dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL);
                 break;
             default:
                 throw new IllegalArgumentException("Data store " + type + " not supported");
                 break;
             default:
                 throw new IllegalArgumentException("Data store " + type + " not supported");
index d2297f28c9c08d87655b41043caa4d194ef0ee40..dde694207c82f0d52917a99d94c95d0980ec38f9 100644 (file)
@@ -140,7 +140,7 @@ public final class InMemoryDOMDataStoreFactory {
         int dclExecutorMaxPoolSize = actualProperties.getMaxDataChangeExecutorPoolSize();
 
         ExecutorService dataChangeListenerExecutor = SpecialExecutors.newBlockingBoundedFastThreadPool(
         int dclExecutorMaxPoolSize = actualProperties.getMaxDataChangeExecutorPoolSize();
 
         ExecutorService dataChangeListenerExecutor = SpecialExecutors.newBlockingBoundedFastThreadPool(
-                dclExecutorMaxPoolSize, dclExecutorMaxQueueSize, name + "-DCL" );
+                dclExecutorMaxPoolSize, dclExecutorMaxQueueSize, name + "-DCL", InMemoryDOMDataStore.class);
 
         final InMemoryDOMDataStore dataStore = new InMemoryDOMDataStore(name, type, dataChangeListenerExecutor,
                 actualProperties.getMaxDataChangeListenerQueueSize(), debugTransactions);
 
         final InMemoryDOMDataStore dataStore = new InMemoryDOMDataStore(name, type, dataChangeListenerExecutor,
                 actualProperties.getMaxDataChangeListenerQueueSize(), debugTransactions);
index 22e4c4d8a3dfc2656bb8d2b395e41176f93d900c..e469a159585543c7d7322a1487d06c995c1c8e07 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
-import com.google.common.base.Optional;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
 import java.util.concurrent.ExecutorService;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
index fac78e7dbb289e85abc4c8980339fdc444fb6fc8..6b2e4d51c5ed38dc3da3391027f2dc9ceab5497e 100644 (file)
@@ -8,12 +8,12 @@
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
 import com.google.common.annotations.Beta;
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Multimap;
 import java.util.Collection;
 import java.util.Map.Entry;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Multimap;
 import java.util.Collection;
 import java.util.Map.Entry;
+import java.util.Optional;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.dom.store.impl.DOMImmutableDataChangeEvent.Builder;
 import org.opendaylight.controller.md.sal.dom.store.impl.DOMImmutableDataChangeEvent.SimpleEventFactory;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.dom.store.impl.DOMImmutableDataChangeEvent.Builder;
 import org.opendaylight.controller.md.sal.dom.store.impl.DOMImmutableDataChangeEvent.SimpleEventFactory;
index 578320ea9057988e58b97c85647964886d0b321f..1928ec96702e9c3ce1af7250b1820e416a4b5d5b 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.controller.md.sal.dom.store.impl.tree;
 
  */
 package org.opendaylight.controller.md.sal.dom.store.impl.tree;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
 import com.google.common.base.Preconditions;
 import java.util.Collection;
+import java.util.Optional;
 import org.opendaylight.controller.md.sal.dom.spi.RegistrationTreeNode;
 import org.opendaylight.controller.md.sal.dom.store.impl.DataChangeListenerRegistration;
 import org.opendaylight.yangtools.concepts.Identifiable;
 import org.opendaylight.controller.md.sal.dom.spi.RegistrationTreeNode;
 import org.opendaylight.controller.md.sal.dom.store.impl.DataChangeListenerRegistration;
 import org.opendaylight.yangtools.concepts.Identifiable;
@@ -43,7 +43,7 @@ public class ListenerNode implements StoreTreeNode<ListenerNode>, Identifiable<P
     public Optional<ListenerNode> getChild(final PathArgument child) {
         final RegistrationTreeNode<DataChangeListenerRegistration<?>> c = delegate.getExactChild(child);
         if (c == null) {
     public Optional<ListenerNode> getChild(final PathArgument child) {
         final RegistrationTreeNode<DataChangeListenerRegistration<?>> c = delegate.getExactChild(child);
         if (c == null) {
-            return Optional.absent();
+            return Optional.empty();
         }
 
         return Optional.of(new ListenerNode(c));
         }
 
         return Optional.of(new ListenerNode(c));
index 3be301a32f5292a0e98f3d6d80dfb1bf518aab16..a500f257d6320c7cdf9eae05db202acac3192ab8 100644 (file)
@@ -58,7 +58,8 @@ public abstract class AbstractDataChangeListenerTest {
         this.schemaContext = context.tryToCreateSchemaContext().get();
 
         this.dclExecutorService = new TestDCLExecutorService(
         this.schemaContext = context.tryToCreateSchemaContext().get();
 
         this.dclExecutorService = new TestDCLExecutorService(
-                SpecialExecutors.newBlockingBoundedFastThreadPool(1, 10, "DCL" ));
+                SpecialExecutors.newBlockingBoundedFastThreadPool(1, 10, "DCL",
+                    AbstractDataChangeListenerTest.class));
 
         this.datastore = new InMemoryDOMDataStore("TEST", this.dclExecutorService);
         this.datastore.onGlobalContextUpdated(this.schemaContext);
 
         this.datastore = new InMemoryDOMDataStore("TEST", this.dclExecutorService);
         this.datastore.onGlobalContextUpdated(this.schemaContext);
index e3aea1c6e0cf81a5d9270ef803e9c2a7672077c8..72ecf3e6a560993f3d454a1d451e0997fe1bd062 100644 (file)
@@ -7,13 +7,9 @@
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public class TestModel {
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public class TestModel {
@@ -33,17 +29,7 @@ public class TestModel {
             YangInstanceIdentifier.builder(TEST_PATH).node(OUTER_LIST_QNAME).build();
     private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang";
 
             YangInstanceIdentifier.builder(TEST_PATH).node(OUTER_LIST_QNAME).build();
     private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang";
 
-    private static InputStream getInputStream() {
-        return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG);
-    }
-
     public static SchemaContext createTestContext() {
     public static SchemaContext createTestContext() {
-        final List<InputStream> streams = Collections.singletonList(getInputStream());
-
-        try {
-            return YangParserTestUtils.parseYangStreams(streams);
-        } catch (ReactorException e) {
-            throw new RuntimeException("Unable to build schema context from " + streams, e);
-        }
+        return YangParserTestUtils.parseYangResource(DATASTORE_TEST_YANG);
     }
 }
     }
 }
index 32b54c4a8cf5470e2fa11060f17e48f88f7cff41..655793447544e82beb62529a02ca4c36c643328e 100644 (file)
@@ -54,7 +54,7 @@ public class AbstractRpcTest {
     static final QName TEST_RPC_INPUT = QName.create(TEST_NS, TEST_REV, "input");
     static final QName TEST_RPC_INPUT_DATA = QName.create(TEST_NS, TEST_REV, "input-data");
     static final QName TEST_RPC_OUTPUT = QName.create(TEST_NS, TEST_REV, "output");
     static final QName TEST_RPC_INPUT = QName.create(TEST_NS, TEST_REV, "input");
     static final QName TEST_RPC_INPUT_DATA = QName.create(TEST_NS, TEST_REV, "input-data");
     static final QName TEST_RPC_OUTPUT = QName.create(TEST_NS, TEST_REV, "output");
-    static final QName TEST_RPC_OUTPUT_DATA = new QName(TEST_URI, "output-data");
+    static final QName TEST_RPC_OUTPUT_DATA = QName.create(TEST_URI, "output-data");
 
 
     static final SchemaPath TEST_RPC_TYPE = SchemaPath.create(true, TEST_RPC);
 
 
     static final SchemaPath TEST_RPC_TYPE = SchemaPath.create(true, TEST_RPC);
index 84062735c22ddf5a3cbd6a40e74e64466d745e5d..807480b1b37273e68f725ff7c40239d24bbf9fad 100644 (file)
@@ -26,7 +26,6 @@ import com.google.common.collect.Sets;
 import com.google.common.util.concurrent.Uninterruptibles;
 import com.typesafe.config.ConfigFactory;
 import java.net.URI;
 import com.google.common.util.concurrent.Uninterruptibles;
 import com.typesafe.config.ConfigFactory;
 import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -368,14 +367,14 @@ public class RpcRegistryTest {
     }
 
     @Test
     }
 
     @Test
-    public void testAddRoutesConcurrency() throws Exception {
+    public void testAddRoutesConcurrency() {
         final JavaTestKit testKit = new JavaTestKit(node1);
 
         final int nRoutes = 500;
         final Collection<DOMRpcIdentifier> added = new ArrayList<>(nRoutes);
         for (int i = 0; i < nRoutes; i++) {
             final DOMRpcIdentifier routeId = DOMRpcIdentifier.create(SchemaPath.create(true,
         final JavaTestKit testKit = new JavaTestKit(node1);
 
         final int nRoutes = 500;
         final Collection<DOMRpcIdentifier> added = new ArrayList<>(nRoutes);
         for (int i = 0; i < nRoutes; i++) {
             final DOMRpcIdentifier routeId = DOMRpcIdentifier.create(SchemaPath.create(true,
-                    new QName(new URI("/mockrpc"), "type" + i)));
+                    QName.create(URI.create("/mockrpc"), "type" + i)));
             added.add(routeId);
 
             //Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS);
             added.add(routeId);
 
             //Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS);
@@ -408,8 +407,8 @@ public class RpcRegistryTest {
         }
     }
 
         }
     }
 
-    private List<DOMRpcIdentifier> createRouteIds() throws URISyntaxException {
-        QName type = new QName(new URI("/mockrpc"), "mockrpc" + routeIdCounter++);
+    private List<DOMRpcIdentifier> createRouteIds() {
+        QName type = QName.create(URI.create("/mockrpc"), "mockrpc" + routeIdCounter++);
         List<DOMRpcIdentifier> routeIds = new ArrayList<>(1);
         routeIds.add(DOMRpcIdentifier.create(SchemaPath.create(true, type)));
         return routeIds;
         List<DOMRpcIdentifier> routeIds = new ArrayList<>(1);
         routeIds.add(DOMRpcIdentifier.create(SchemaPath.create(true, type)));
         return routeIds;
index 3e55d796c1a0be867fa05f522a78373fe956a614..6d2eacbaf5ff50df232ce3a8edba13674b4d82b9 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.controller.sal.schema.service.impl;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.HashSet;
 import java.util.Set;
 import javax.annotation.concurrent.GuardedBy;
 import java.util.HashSet;
 import java.util.Set;
 import javax.annotation.concurrent.GuardedBy;
@@ -115,6 +116,7 @@ public final class GlobalBundleScanningSchemaServiceImpl implements SchemaContex
                 "Source provider is not available", sourceIdentifier));
         }
 
                 "Source provider is not available", sourceIdentifier));
         }
 
-        return (CheckedFuture<YangTextSchemaSource, SchemaSourceException>) yangProvider.getSource(sourceIdentifier);
+        return Futures.makeChecked((ListenableFuture<YangTextSchemaSource>) yangProvider.getSource(sourceIdentifier),
+                e -> new SchemaSourceException("Error retrieving source", e));
     }
 }
     }
 }
index 270015956294336da2be6cc6c1763dc228a6e28a..00ae5f48b31bc1b7971488e9b7178ad79283287f 100644 (file)
@@ -7,10 +7,10 @@
  */
 package org.opendaylight.controller.clustering.it.provider;
 
  */
 package org.opendaylight.controller.clustering.it.provider;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Verify;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.base.Verify;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.DataValidationFailedException;
 import org.opendaylight.mdsal.common.api.PostCanCommitStep;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;
 import org.opendaylight.mdsal.common.api.DataValidationFailedException;
 import org.opendaylight.mdsal.common.api.PostCanCommitStep;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;