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}">
+        <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">
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();
 
-        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());
 
@@ -138,13 +137,13 @@ public class DataStoreAppConfigDefaultXMLReader<T extends DataObject> {
         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);
     }
 
-    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));
         }
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);
-        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();
index 760853e93b7f88d100c740f1f9f6e4de51e2fa9a..9daacd16dcffcbf1b2de9fdbbf4146124d9832ca 100644 (file)
@@ -102,8 +102,8 @@ public class ValidationException extends Exception {
             this.message = message;
         }
 
-        public void setStackTrace(final String stackTrace) {
-            this.stackTrace = stackTrace;
+        public void setStackTrace(final String trace) {
+            this.stackTrace = trace;
         }
 
         @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 java.io.Closeable;
-import java.util.Date;
 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 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.yangtools.yang.common.Revision;
 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);
     }
 
-    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();
 
@@ -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);
     }
 
-    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)
@@ -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()) {
@@ -289,18 +287,20 @@ public class ConfigSubsystemFacade implements Closeable {
         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());
     }
 
-    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();
-            Map<Date, IdentityMapping> revisionsByNamespace = mappedIds.computeIfAbsent(namespace,
+            Map<Optional<Revision>, IdentityMapping> revisionsByNamespace = mappedIds.computeIfAbsent(namespace,
                 k -> new HashMap<>());
 
-            Date revision = module.getRevision();
+            Optional<Revision> revision = Optional.fromJavaUtil(module.getRevision());
 
             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.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 
 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) {
-            capabilities.add(new YangModuleCapability(module, yangStoreService.getModuleSource(module)));
+            capabilities.add(new YangModuleCapability(module, yangStoreService.getModuleSource(
+                RevisionSourceIdentifier.create(module.getName(), module.getRevision()))));
         }
         return capabilities;
     }
index 4fa679645f127c7dbcae4bff0921dbaddf976bf2..c99d21d6ac6c011bc49f8aebd27f81f26efcb94a 100644 (file)
@@ -8,9 +8,9 @@
 
 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.util.Date;
 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.yangtools.yang.common.Revision;
 
 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,
-            final Map<String, Map<Date, IdentityMapping>> identityMap) {
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> 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;
 
+import com.google.common.base.Optional;
 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 org.opendaylight.yangtools.yang.common.Revision;
 
 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,
-            final Map<String, Map<Date, IdentityMapping>> identityMap) {
+            final Map<String, Map<Optional<Revision>, IdentityMapping>> identityMap) {
         super(nullableDefault);
         this.key = key;
         this.identityMap = identityMap;
@@ -49,10 +50,10 @@ public class SimpleIdentityRefAttributeReadingStrategy extends SimpleAttributeRe
             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) {
-            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, "
@@ -64,7 +65,7 @@ public class SimpleIdentityRefAttributeReadingStrategy extends SimpleAttributeRe
         } 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
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 java.util.Date;
 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<?>> {
 
@@ -43,7 +42,7 @@ public class SimpleAttributeMappingStrategy extends AbstractAttributeMappingStra
 
     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) {
-            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.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 org.opendaylight.yangtools.yang.common.Revision;
 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 {
-                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,
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 java.util.Date;
 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.yangtools.yang.common.Revision;
 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;
 
-    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) {
-        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,
-            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;
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 java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-
 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;
@@ -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.yangtools.yang.common.Revision;
 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,
-                                                 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();
 
index ca01f86fec12229355c5646dde2301dd00c91bf7..3746c35e7e264e77cdb025536ea1f269d0526447 100644 (file)
@@ -9,7 +9,6 @@
 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;
@@ -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.yangtools.yang.common.Revision;
 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,
-            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,
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.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 
 public interface YangStoreContext {
 
@@ -38,7 +38,7 @@ public interface YangStoreContext {
      */
     Set<Module> getModules();
 
-    String getModuleSource(ModuleIdentifier moduleIdentifier);
+    String getModuleSource(SourceIdentifier moduleIdentifier);
 
     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.yangtools.yang.model.api.ModuleIdentifier;
 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;
 
@@ -94,7 +95,7 @@ public class YangStoreService implements YangStoreContext {
     }
 
     @Override
-    public String getModuleSource(final ModuleIdentifier moduleIdentifier) {
+    public String getModuleSource(final SourceIdentifier 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,
-            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;
 
-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.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 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.concurrent.ExecutionException;
 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.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;
@@ -151,17 +151,15 @@ public final class YangStoreSnapshot implements YangStoreContext, EnumResolver {
     }
 
     @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 {
-            final YangTextSchemaSource yangTextSchemaSource = source.checkedGet();
+            final YangTextSchemaSource yangTextSchemaSource = source.get();
             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);
         }
index e0c78f8d48d702bf7e6250d3041f9376338df6e8..8c101be4f55e9271f3d5db47338a48b7bd0c8b54 100644 (file)
@@ -8,9 +8,9 @@
 
 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 java.util.Date;
 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.yangtools.yang.common.Revision;
 
 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,
-                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());
index 18ba37eace503a96104e23ef63089e885b99d96c..d704d63037b1fe5874dbf1fb5f95dc013621ed7e 100644 (file)
@@ -8,25 +8,13 @@
 
 package org.opendaylight.controller.config.facade.xml.util;
 
-import static org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil.getRevisionFormat;
-
 import com.google.common.base.Preconditions;
-import java.text.ParseException;
-import java.util.Date;
 
 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);
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 com.google.common.base.Optional;
 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 org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 
 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 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>"));
-        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>"));
-        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(
-                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
-        public void close() throws Exception {
+        public void close() {
             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 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.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.w3c.dom.Element;
 
 public class ConfigPusherImplTest {
@@ -71,7 +72,7 @@ public class ConfigPusherImplTest {
     @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();
index dcf16b34edf0cade4f3a867dffb65d5ac5a04803..521a09f92181ac298056f1a00507976e44c7db9e 100644 (file)
@@ -9,7 +9,7 @@
 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;
 
 /**
@@ -27,7 +27,7 @@ public final class YangModuleCapability extends BasicCapability {
         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
@@ -36,8 +36,14 @@ public final class YangModuleCapability extends BasicCapability {
     }
 
     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
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.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 java.util.ArrayList;
 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.Optional;
 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;
@@ -80,15 +81,15 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
     }
 
     @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
-                .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);
@@ -117,7 +118,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
                                 + sieEntry.getValue());
                 }
             }
-            if (yangModulesInCurrentMavenModule.contains(module)) {
+            if (currentModules.contains(module)) {
                 // 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
-        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)),
@@ -162,7 +163,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
             }
         }
         // 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",
@@ -171,7 +172,8 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
             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);
@@ -204,7 +206,7 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
 
     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);
@@ -237,24 +239,21 @@ public class JMXGenerator implements BasicCodeGenerator, MavenProjectAware {
 
     @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)) {
-                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()) {
-                    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);
                 }
-                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);
         }
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.yangtools.yang.common.Revision;
 
 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;
     }
@@ -39,7 +40,7 @@ public class Annotation {
         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()));
@@ -47,22 +48,22 @@ public class Annotation {
         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))));
     }
 
-    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()));
-        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);
     }
 
-    public static Collection<Annotation> createSieAnnotations(ServiceInterfaceEntry sie){
+    public static Collection<Annotation> createSieAnnotations(final ServiceInterfaceEntry sie){
 
         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("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);
@@ -85,7 +86,8 @@ public class Annotation {
         {
             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);
@@ -95,7 +97,7 @@ public class Annotation {
     }
 
     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)));
@@ -103,15 +105,14 @@ public class Annotation {
 
     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 Parameter(String key, String value) {
+        public Parameter(final String key, final String 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 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;
@@ -35,8 +36,8 @@ public class JMXGeneratorFileNamesValidationTest extends JMXGeneratorTest {
         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();
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 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.Optional;
 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() {
-        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);
@@ -147,8 +149,8 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
 
     @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) {
@@ -205,7 +207,7 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
         jmxGenerator.setAdditionalConfig(map);
 
         Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
-            Collections.singleton(bgpListenerJavaModule));
+            Collections.singleton(bgpListenerJavaModule), m -> Optional.empty());
 
         assertEquals(expectedGenerateMBEsListNames, toFileNames(files));
     }
@@ -217,7 +219,7 @@ public class JMXGeneratorTest extends AbstractGeneratorTest {
         jmxGenerator.setAdditionalConfig(map);
 
         Collection<File> files = jmxGenerator.generateSources(context, outputBaseDir,
-            Collections.singleton(threadsJavaModule));
+            Collections.singleton(threadsJavaModule), m -> Optional.empty());
 
         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;
 
-    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;
@@ -101,7 +101,7 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return ABSTRACT_PREFIX + getStubModuleName();
     }
 
-    public String getFullyQualifiedName(String typeName) {
+    public String getFullyQualifiedName(final String typeName) {
         return FullyQualifiedNameHelper.getFullyQualifiedName(initial.packageName,
                 typeName);
     }
@@ -123,7 +123,7 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return providedServices;
     }
 
-    public void setRuntimeBeans(Collection<RuntimeBeanEntry> newRuntimeBeans) {
+    public void setRuntimeBeans(final Collection<RuntimeBeanEntry> newRuntimeBeans) {
         runtimeBeans = newRuntimeBeans;
     }
 
@@ -147,10 +147,10 @@ public class ModuleMXBeanEntry extends AbstractEntry {
      *         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)
@@ -163,7 +163,7 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return yangToAttributes;
     }
 
-    void setYangToAttributes(Map<String, AttributeIfc> newAttributes) {
+    void setYangToAttributes(final Map<String, AttributeIfc> newAttributes) {
         this.yangToAttributes = newAttributes;
     }
 
@@ -186,21 +186,21 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         return nullableDummyContainerName;
     }
 
-    public void setNullableDummyContainerName(String nullableDummyContainerName) {
+    public void setNullableDummyContainerName(final String nullableDummyContainerName) {
         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;
@@ -218,22 +218,22 @@ public class ModuleMXBeanEntry extends AbstractEntry {
         private String namespace;
         private QName qName;
 
-        public ModuleMXBeanEntryInitialBuilder setPackageName(String packageName) {
+        public ModuleMXBeanEntryInitialBuilder setPackageName(final String packageName) {
             this.packageName = packageName;
             return this;
         }
 
-        public ModuleMXBeanEntryInitialBuilder setJavaNamePrefix(String javaNamePrefix) {
+        public ModuleMXBeanEntryInitialBuilder setJavaNamePrefix(final String javaNamePrefix) {
             this.javaNamePrefix = javaNamePrefix;
             return this;
         }
 
-        public ModuleMXBeanEntryInitialBuilder setNamespace(String namespace) {
+        public ModuleMXBeanEntryInitialBuilder setNamespace(final String namespace) {
             this.namespace = namespace;
             return this;
         }
 
-        public ModuleMXBeanEntryInitialBuilder setqName(QName qName) {
+        public ModuleMXBeanEntryInitialBuilder setqName(final QName qName) {
             this.qName = qName;
             return this;
         }
@@ -242,9 +242,9 @@ public class ModuleMXBeanEntry extends AbstractEntry {
             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.description = idSchemaNode.getDescription();
+            this.description = idSchemaNode.getDescription().orElse(null);
             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.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;
@@ -131,12 +131,12 @@ final class ModuleMXBeanEntryBuilder {
 
         Map<String, ModuleMXBeanEntry> result = new HashMap<>();
 
-        for (AugmentationSchema augmentation : currentModule.getAugmentations()) {
+        for (AugmentationSchemaNode augmentation : currentModule.getAugmentations()) {
             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
-                    processChoiceCaseNode(result, uniqueGeneratedClassesNames, configModulePrefix, moduleIdentities,
+                    processCaseSchemaNode(result, uniqueGeneratedClassesNames, configModulePrefix, moduleIdentities,
                             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);
@@ -183,8 +184,8 @@ final class ModuleMXBeanEntryBuilder {
         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: "
@@ -217,37 +218,39 @@ final class ModuleMXBeanEntryBuilder {
         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
-            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) {
-            if (childNode instanceof ChoiceCaseNode == false) {
+            if (childNode instanceof CaseSchemaNode == false) {
                 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, 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;
         }
-        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;
         }
@@ -384,7 +387,7 @@ final class ModuleMXBeanEntryBuilder {
      * @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();
@@ -479,14 +482,14 @@ final class ModuleMXBeanEntryBuilder {
                             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,
-                                attrNode.getDescription());
+                                attrNode.getDescription().orElse(null));
                     } else {
                         reference = new ListDependenciesAttribute(attrNode, serviceInterfaceEntry, mandatory,
-                                attrNode.getDescription());
+                                attrNode.getDescription().orElse(null));
                     }
                     return Optional.of(reference);
                 }
@@ -528,7 +531,7 @@ final class ModuleMXBeanEntryBuilder {
             // 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 {
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 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 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);
     }
 
-    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();
@@ -93,13 +94,13 @@ public class ServiceInterfaceEntry extends AbstractEntry {
         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;
     }
 
-    private static final String getSimpleName(String fullyQualifiedName) {
+    private static final String getSimpleName(final String fullyQualifiedName) {
         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
      */
-    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);
 
@@ -149,17 +150,17 @@ public class ServiceInterfaceEntry extends AbstractEntry {
                     .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;
-                } 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
-                            .get(identity.getBaseIdentity());
+                            .get(identity.getBaseIdentities().iterator().next());
                     // derived type, did we convert the parent?
                     if (foundBase != null) {
                         created = new ServiceInterfaceEntry(
@@ -206,7 +207,7 @@ public class ServiceInterfaceEntry extends AbstractEntry {
     }
 
     @Override
-    public boolean equals(Object o) {
+    public boolean equals(final Object o) {
         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 java.util.Optional;
 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.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,
@@ -54,7 +63,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute {
         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() {
@@ -105,7 +114,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute {
         if (this == o) {
             return true;
         }
-        if ((o == null) || (getClass() != o.getClass())) {
+        if (o == null || getClass() != o.getClass()) {
             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();
-        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);
-        result = (31 * result)
+        result = 31 * 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);
 
-        return new ListAttribute(node, innerAttribute, node.getDescription());
+        return new ListAttribute(node, innerAttribute, node.getDescription().orElse(null));
     }
 
     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);
 
-        return new ListAttribute(node, innerAttribute, node.getDescription());
+        return new ListAttribute(node, innerAttribute, node.getDescription().orElse(null));
     }
 
     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();
-        result = (31
-                * result)
+        result = 31
+                * result
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
-        result = (31 * result)
+        result = 31 * 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 ((o == null) || (getClass() != o.getClass())) {
+        if (o == null || getClass() != o.getClass()) {
             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<>();
-        for (final DataSchemaNode dataSchemaNode : containerSchemaNode
-                .getChildNodes()) {
+        for (final DataSchemaNode dataSchemaNode : containerSchemaNode.getChildNodes()) {
             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,
-                containerSchemaNode.getDescription(), packageName);
+                containerSchemaNode.getDescription().orElse(null), packageName);
     }
 
     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)) {
-            return new JavaAttribute((LeafSchemaNode) dataSchemaNode,
-                    typeProviderWrapper);
+            return new JavaAttribute((LeafSchemaNode) dataSchemaNode, typeProviderWrapper);
         } 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)) {
-            return ListAttribute.create((LeafListSchemaNode) dataSchemaNode,
-                    typeProviderWrapper);
+            return ListAttribute.create((LeafListSchemaNode) dataSchemaNode, typeProviderWrapper);
         } 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");
@@ -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) {
-            if (allowedType.isAssignableFrom(dataSchemaNode.getClass()) == true) {
+            if (allowedType.isAssignableFrom(dataSchemaNode.getClass())) {
                 return allowedType;
             }
         }
@@ -160,7 +153,7 @@ public class TOAttribute extends AbstractAttribute implements TypedAttribute {
         if (this == o) {
             return true;
         }
-        if ((o == null) || (getClass() != o.getClass())) {
+        if (o == null || getClass() != o.getClass()) {
             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();
-        result = (31
-                * result)
+        result = 31
+                * result
                 + (this.nullableDescription != null ? this.nullableDescription.hashCode()
                         : 0);
-        result = (31 * result)
+        result = 31 * result
                 + (this.nullableDefault != null ? this.nullableDefault.hashCode() : 0);
-        result = (31
-                * result)
+        result = 31
+                * 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 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;
@@ -46,20 +48,20 @@ public abstract class AbstractYangTest {
 
     @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);
@@ -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");
-
     }
 
-    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) {
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 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 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.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;
@@ -29,106 +30,67 @@ import org.slf4j.LoggerFactory;
 
 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";
-    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");
-        this.testedYangModulesToExpectedConflictingName.put(
-                "config-test-runtime-bean-list-name-conflict2",
+        testedYangModulesToExpectedConflictingName.put("config-test-runtime-bean-list-name-conflict2",
                 "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");
-        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);
-        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;
     }
 
+    @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 java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Date;
 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.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;
@@ -56,20 +54,13 @@ public class ModuleMXBeanEntryTest extends AbstractYangTest {
     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 {
-            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE
-                    + ":threads");
+            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE + ":threads");
         } 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.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;
@@ -45,7 +45,7 @@ public class RuntimeBeanEntryTest extends AbstractYangTest {
 
     @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();
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 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.yangtools.yang.model.api.type.StringTypeDefinition;
 
 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,
-                "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,
@@ -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,
-                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);
-        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(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();
-
     }
 
 }
index b189db4c0888319d5bdaa3f20793cad39726aee1..4ed0bc80270c2880b57ef8a01d018d4325dcb94d 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 
 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);
@@ -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) {
-                assertEquals(serviceType, id.getBaseIdentity());
+                assertEquals(serviceType, id.getBaseIdentities().iterator().next());
             }
         }
         assertNotNull(eventBusSchemaNode);
@@ -75,9 +75,8 @@ public class SchemaContextTest extends AbstractYangTest {
                 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()) {
@@ -88,8 +87,7 @@ public class SchemaContextTest extends AbstractYangTest {
                     .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,
@@ -98,21 +96,14 @@ public class SchemaContextTest extends AbstractYangTest {
 
     @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 java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Arrays;
-import java.util.Date;
 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.opendaylight.yangtools.yang.common.Revision;
 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;
-    private static final Date THREADS_REVISION_DATE;
+    private static final Revision THREADS_REVISION_DATE = Revision.of("2013-04-09");
 
     static {
         try {
-            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE
-                    + ":threads");
+            THREADS_NAMESPACE = new URI(ConfigConstants.CONFIG_NAMESPACE + ":threads");
         } 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 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;
@@ -23,25 +22,20 @@ public class UnknownExtensionTest extends ServiceInterfaceEntryTest {
 
     @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 {
-            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.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> {
 
-    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");
index 7cd17dc4d8b119f30ed249a88022e13ce5924ee0..64d98ed01aa2ab239f5fcf1c74e1b0d13020ba14 100644 (file)
@@ -7,7 +7,7 @@
  */
 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;
@@ -83,8 +83,11 @@ enum BindingStructuralType {
     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());
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 java.net.URI;
 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;
@@ -309,11 +307,9 @@ public class BindingToNormalizedNodeCodec
 
     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;
@@ -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());
-        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);
         }
@@ -340,8 +336,8 @@ public class BindingToNormalizedNodeCodec
     }
 
     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() {
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 java.net.URI;
 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;
@@ -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 org.opendaylight.yangtools.yang.common.QNameModule;
 
 class FutureSchema implements AutoCloseable {
 
@@ -88,11 +87,11 @@ class FutureSchema implements AutoCloseable {
         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 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;
 
-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 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;
index a0e45302e091674a239ef7919174a288c219a536..8185446fcdf9823fd6bf72119e1dfb7d179eb627 100644 (file)
@@ -8,9 +8,9 @@
 
 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.Optional;
 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 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 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 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;
@@ -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.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.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 javassist.ClassPool;
 
 public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest {
 
@@ -164,22 +166,22 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest {
     static class EmptySchemaContext extends AbstractSchemaContext {
         @Override
         public Set<Module> getModules() {
-            return Collections.emptySet();
+            return ImmutableSet.of();
         }
 
         @Override
-        protected Map<ModuleIdentifier, String> getIdentifiersToSources() {
-            return Collections.emptyMap();
+        protected Map<QNameModule, Module> getModuleMap() {
+            return ImmutableMap.of();
         }
 
         @Override
         protected SetMultimap<URI, Module> getNamespaceToModules() {
-            return Multimaps.forMap(Collections.emptyMap());
+            return ImmutableSetMultimap.of();
         }
 
         @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 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
-            .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
-            .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 {
@@ -56,8 +56,8 @@ public class WriteParentListenAugmentTest extends AbstractDataServiceTest {
 
         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);
@@ -72,13 +72,13 @@ public class WriteParentListenAugmentTest extends AbstractDataServiceTest {
         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());
     }
 
-    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();
     }
 }
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) //
-            .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() //
@@ -75,11 +75,11 @@ public class WriteParentReadChildTest extends AbstractDataServiceTest {
         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(
-                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());
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 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 java.io.IOException;
 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;
@@ -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.yangtools.yang.binding.YangModuleInfo;
 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.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;
 
 /**
@@ -89,13 +94,18 @@ public class DOMRpcServiceTestBugfix560 {
         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(
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 org.opendaylight.yangtools.yang.common.Revision;
 
 /**
  * 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());
-        writeString(qname.getFormattedRevision());
+        writeString(qname.getRevision().map(Revision::toString).orElse(null));
     }
 
     @Override
index f83f6afe8e524099bd1d1ea74365691f9eaa37cd..8c81d60819126bbe16e6a04e817ae66af101d3bf 100644 (file)
@@ -8,9 +8,9 @@
 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 java.util.Optional;
 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;
-import com.google.common.base.Optional;
 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;
 
@@ -24,17 +24,17 @@ public class YangTextSchemaSourceSerializationProxy implements Serializable {
     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 {
-        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(
-                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 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 java.util.Optional;
 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() {
-        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();
 
@@ -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> 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))
-                        .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,
index a961f6a5af287b3371872ad3ee12a86a57b4cb5c..47150420b4e96aa82c3c4b361a21485942386ff7 100644 (file)
@@ -52,15 +52,15 @@ public class NormalizedNodePrunerTest {
         MockitoAnnotations.initMocks(this);
     }
 
-    private static NormalizedNodePruner prunerFullSchema(YangInstanceIdentifier path) {
+    private static NormalizedNodePruner prunerFullSchema(final YangInstanceIdentifier path) {
         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);
     }
 
-    private static NormalizedNodePruner prunerNoTestSchema(YangInstanceIdentifier path) {
+    private static NormalizedNodePruner prunerNoTestSchema(final YangInstanceIdentifier path) {
         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;
         }
@@ -381,7 +381,7 @@ public class NormalizedNodePrunerTest {
     }
 
     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();
 
@@ -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> 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))
-                        .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();
     }
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.util.ArrayList;
 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;
@@ -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.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
@@ -176,36 +173,17 @@ public final class TestModel {
     }
 
     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() {
-        List<InputStream> inputStreams = new ArrayList<>();
-        inputStreams.add(getDatastoreTestNotificationInputStream());
-
-        return resolveSchemaContext(inputStreams);
+        return YangParserTestUtils.parseYangResource(DATASTORE_TEST_NOTIFICATION_YANG);
     }
 
-
     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 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;
@@ -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.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;
@@ -30,7 +30,7 @@ import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 
 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;
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 com.google.common.base.Optional;
 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.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;
@@ -31,7 +31,7 @@ import scala.concurrent.duration.Duration;
 
 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;
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 com.google.common.base.Optional;
 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 org.opendaylight.yangtools.yang.common.Revision;
 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(
-                RevisionSourceIdentifier.create("test", Optional.of("2015-10-30")),
+                RevisionSourceIdentifier.create("test", Revision.of("2015-10-30")),
                 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.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.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;
@@ -326,7 +326,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
 
     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);
         }
 
@@ -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
-            if ((schema instanceof DataSchemaNode) && result.isAugmenting()) {
+            if (schema instanceof DataSchemaNode && result.isAugmenting()) {
                 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();
 
-            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);
@@ -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
-        if ((schema instanceof DataSchemaNode) && result.isAugmenting()) {
+        if (schema instanceof DataSchemaNode && result.isAugmenting()) {
             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) {
-            for (final ChoiceCaseNode caze : choice.getCases()) {
+            for (final CaseSchemaNode caze : choice.getCases().values()) {
                 if (findChildSchemaNode(caze, child).isPresent()) {
                     foundChoice = choice;
                     break choiceLoop;
@@ -548,7 +548,7 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
         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());
@@ -556,7 +556,8 @@ public abstract class DataNormalizationOperation<T extends PathArgument> impleme
         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()));
@@ -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) {
-        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;
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.Optional;
 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;
@@ -28,13 +28,13 @@ class DataSchemaContainerProxy implements DataNodeContainer {
         realChildSchemas = realChildSchema;
         mappedChildSchemas = new HashMap<>();
         for(DataSchemaNode schema : realChildSchemas) {
-            mappedChildSchemas.put(schema.getQName(),schema);
+            mappedChildSchemas.put(schema.getQName(), schema);
         }
     }
 
     @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
@@ -56,5 +56,4 @@ class DataSchemaContainerProxy implements DataNodeContainer {
     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) {
-        return Futures.immediateCheckedFuture(readOnlyView().readNode(path));
+        return Futures.immediateCheckedFuture(Optional.fromJavaUtil(readOnlyView().readNode(path)));
     }
 
     @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();
-            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);
index b245ceee2d249ae0f841a69342412ce1eab8272e..881518308c021af10b27006c00faffcd5cc214c2 100644 (file)
@@ -84,14 +84,16 @@ final class FrontendReadOnlyTransaction extends FrontendTransaction {
 
     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 {
-        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));
     }
index 2b444a6b579901bde4c10e0531ae4092218cdb4c..5af7c7954ebbf1abc74ecf14d24fb5c481230b61 100644 (file)
@@ -525,14 +525,16 @@ final class FrontendReadWriteTransaction extends FrontendTransaction {
 
     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 {
-        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));
     }
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.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.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;
@@ -1025,7 +1025,7 @@ public class Shard extends RaftActor {
         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) {
@@ -1071,7 +1071,7 @@ public class Shard extends RaftActor {
             return self();
         }
 
-        public T dataTree(final TipProducingDataTree newDataTree) {
+        public T dataTree(final DataTree newDataTree) {
             checkSealed();
             this.dataTree = newDataTree;
             return self();
@@ -1097,7 +1097,7 @@ public class Shard extends RaftActor {
             return restoreFromSnapshot;
         }
 
-        public TipProducingDataTree getDataTree() {
+        public DataTree getDataTree() {
             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.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.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.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;
@@ -129,24 +129,24 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     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
-     * {@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.
      */
-    private TipProducingDataTreeTip tip;
+    private DataTreeTip tip;
 
     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) {
@@ -166,8 +166,17 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
             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
@@ -185,7 +194,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
         return shard.ticker().read();
     }
 
-    public TipProducingDataTree getDataTree() {
+    public DataTree getDataTree() {
         return dataTree;
     }
 
@@ -619,7 +628,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     }
 
     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();
@@ -662,7 +671,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     }
 
     public Optional<NormalizedNode<?, ?>> readNode(final YangInstanceIdentifier path) {
-        return dataTree.takeSnapshot().readNode(path);
+        return Optional.fromJavaUtil(dataTree.takeSnapshot().readNode(path));
     }
 
     DataTreeSnapshot takeSnapshot() {
@@ -1092,7 +1101,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
             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)) {
@@ -1114,7 +1123,7 @@ public class ShardDataTree extends ShardDataTreeTransactionParent {
     }
 
     @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;
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 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;
@@ -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.yangtools.yang.data.api.schema.NormalizedNode;
 
 /**
  * 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();
-        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());
     }
 
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();
 
-    void init(ShardDataTree shardDataTree) {
+    void init(final ShardDataTree shardDataTree) {
         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;
 
-    DistributedEntityOwnershipCandidateRegistration(DOMEntity entity, DistributedEntityOwnershipService service) {
+    DistributedEntityOwnershipCandidateRegistration(final DOMEntity entity,
+            final DistributedEntityOwnershipService service) {
         super(entity);
         this.service = service;
     }
@@ -29,11 +30,4 @@ class DistributedEntityOwnershipCandidateRegistration extends AbstractObjectRegi
     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;
 
+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;
@@ -22,8 +23,8 @@ class DistributedEntityOwnershipListenerRegistration extends AbstractObjectRegis
     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");
@@ -40,8 +41,7 @@ class DistributedEntityOwnershipListenerRegistration extends AbstractObjectRegis
     }
 
     @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();
         }
 
-        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();
@@ -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();
-        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;
@@ -204,7 +204,8 @@ public class DistributedEntityOwnershipService implements DOMEntityOwnershipServ
         }
 
         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);
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 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 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;
index a392049a84ffd618ca670ef580566d7964910f3f..22d5935ca3a6a18c901afd3bc06f01f373f23cc4 100644 (file)
@@ -52,15 +52,15 @@ public final class 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();
 
     }
 
-    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)
@@ -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();
     }
 
-    static NodeIdentifierWithPredicates candidateNodeKey(String candidateName) {
+    static NodeIdentifierWithPredicates candidateNodeKey(final String 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)));
     }
 
-    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();
     }
 
-    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();
     }
 
-    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();
     }
 
-    static MapNode candidateEntry(String candidateName) {
+    static MapNode candidateEntry(final String candidateName) {
         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);
     }
 
-    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())) {
@@ -127,7 +129,7 @@ public final class EntityOwnersModel {
         return null;
     }
 
-    static DOMEntity createEntity(YangInstanceIdentifier entityPath) {
+    static DOMEntity createEntity(final YangInstanceIdentifier entityPath) {
         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) -> {
-            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;
 
-                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;
@@ -299,12 +299,12 @@ class EntityOwnershipShard extends Shard {
 
     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;
 
-                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;
@@ -388,12 +388,12 @@ class EntityOwnershipShard extends Shard {
                     .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));
 
-            if (!newOwner.equals(possibleOwner.or(""))) {
+            if (!newOwner.equals(possibleOwner.orElse(""))) {
                 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) -> {
-            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)) {
@@ -597,7 +597,7 @@ class EntityOwnershipShard extends Shard {
         }
 
         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;
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 com.google.common.base.Optional;
 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;
index 85c5403b709fe0fed96efd6a42cc54c36b058900..6c6a5af7545225cdfc86a42ab7e251786e64e515 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
-import com.google.common.base.Optional;
 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;
index 085a8457d1503af6b6f92f34eb6d645bb61afc67..ae881120958eddc82c25c28d12fd4d9de2e9fdb1 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
-import com.google.common.base.Optional;
 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;
@@ -42,7 +42,7 @@ abstract class DeletedDataTreeCandidateNode extends AbstractDataTreeCandidateNod
 
     @Override
     public final Optional<NormalizedNode<?, ?>> getDataAfter() {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override
index 81f91aa900f72f476c8d90a66e783fbd58bc2cb3..6820e1c885b0b6857523610dc26b1a0d1b4ea6db 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.controller.cluster.datastore.persisted;
 
-import com.google.common.base.Optional;
 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;
index 0b3768f39527783cdca2453e56914063a605f9a8..187d2522de9e7df810a878b8c4605a3e3a44e2eb 100644 (file)
@@ -1125,7 +1125,7 @@ class ShardManager extends AbstractUntypedPersistentActorWithMetering {
     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);
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.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.TreeType;
 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,
-            LogicalDatastoreType logicalDatastoreType) {
+            final LogicalDatastoreType logicalDatastoreType) {
         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);
     }
 
@@ -41,7 +41,7 @@ public final class NormalizedNodeAggregator {
      */
     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();
     }
 
@@ -66,6 +66,6 @@ public final class NormalizedNodeAggregator {
     }
 
     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;
-import com.google.common.base.Optional;
 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;
@@ -38,7 +38,8 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     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);
@@ -50,7 +51,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @Override
-    public void delete(YangInstanceIdentifier yangInstanceIdentifier) {
+    public void delete(final YangInstanceIdentifier yangInstanceIdentifier) {
         try {
             delegate.delete(yangInstanceIdentifier);
         } catch (SchemaValidationFailedException e) {
@@ -59,7 +60,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @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);
@@ -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) {
@@ -84,7 +86,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @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);
@@ -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) {
@@ -121,12 +124,12 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @Override
-    public void applyToCursor(DataTreeModificationCursor dataTreeModificationCursor) {
+    public void applyToCursor(final DataTreeModificationCursor dataTreeModificationCursor) {
         delegate.applyToCursor(dataTreeModificationCursor);
     }
 
     @Override
-    public Optional<NormalizedNode<?, ?>> readNode(YangInstanceIdentifier yangInstanceIdentifier) {
+    public Optional<NormalizedNode<?, ?>> readNode(final YangInstanceIdentifier yangInstanceIdentifier) {
         return delegate.readNode(yangInstanceIdentifier);
     }
 
@@ -136,7 +139,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
     }
 
     @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);
@@ -151,14 +154,14 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         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
-        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) {
@@ -167,7 +170,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         }
 
         @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) {
@@ -176,7 +179,7 @@ public class PruningDataTreeModification extends ForwardingObject implements Dat
         }
 
         @Override
-        public void delete(PathArgument child) {
+        public void delete(final PathArgument child) {
             try {
                 toModification.delete(current().node(child));
             } catch (SchemaValidationFailedException e) {
index f91dc3b2600dd09a5ed815b4d7a24f391d527404..759410a26eaf9a17fc33ff1e09ffbe9d11f2e701 100644 (file)
@@ -8,7 +8,6 @@
 
 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;
@@ -17,6 +16,7 @@ import java.util.Iterator;
 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;
@@ -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.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.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;
@@ -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.
-        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;
     }
@@ -363,13 +379,13 @@ public class DistributedShardChangePublisher
         @Nonnull
         @Override
         public Optional<NormalizedNode<?, ?>> getDataAfter() {
-            return Optional.absent();
+            return Optional.empty();
         }
 
         @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;
 
-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;
@@ -20,6 +19,7 @@ import java.util.ArrayList;
 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;
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>
+    <!-- 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"
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 java.util.Optional;
 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);
-        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);
index d9b1e8efab53033eb22c4fffc8295b0d9ecb855f..8162484d7d753f57dcd3a61b7eb422a42687dbf5 100644 (file)
@@ -27,7 +27,7 @@ public class ClientSnapshotTest extends AbstractClientHandleTest<ClientSnapshot>
     @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
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);
-        when(modification.readNode(PATH)).thenReturn(Optional.of(DATA));
+        when(modification.readNode(PATH)).thenReturn(java.util.Optional.of(DATA));
     }
 
     @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 java.util.Optional;
 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) {
-        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);
     }
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 java.util.Optional;
 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);
-        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);
     }
 
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 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;
@@ -36,6 +35,7 @@ import java.io.IOException;
 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;
@@ -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.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.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;
@@ -201,9 +200,9 @@ public abstract class AbstractShardTest extends AbstractActorTest {
         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));
@@ -294,7 +293,7 @@ public abstract class AbstractShardTest extends AbstractActorTest {
     }
 
     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,
@@ -341,8 +340,8 @@ public abstract class AbstractShardTest extends AbstractActorTest {
     }
 
     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));
 
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.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;
 
-
 /**
  * Unit tests for DatastoreSnapshotRestore.
  *
@@ -93,7 +92,8 @@ public class DatastoreSnapshotRestoreTest {
         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());
 
@@ -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());
@@ -125,14 +125,14 @@ public class DatastoreSnapshotRestoreTest {
                 ((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());
     }
 
-    private static Snapshot newSnapshot(YangInstanceIdentifier path, NormalizedNode<?, ?> node)
+    private static Snapshot newSnapshot(final YangInstanceIdentifier path, final NormalizedNode<?, ?> node)
             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);
 
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.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;
@@ -1282,8 +1282,8 @@ public class DistributedDataStoreIntegrationTest {
                         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);
 
@@ -1291,8 +1291,8 @@ public class DistributedDataStoreIntegrationTest {
                         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);
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.tree.DataTreeConfiguration;
 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;
@@ -642,8 +641,8 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest {
                 .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.
 
@@ -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.
 
-        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))));
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 com.google.common.base.Optional;
 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.Optional;
 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,
-                Optional.absent(), noop -> { });
+            com.google.common.base.Optional.absent(), noop -> { });
 
         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.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.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;
@@ -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();
 
@@ -99,7 +100,7 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
     }
 
     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);
 
@@ -107,7 +108,7 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
     }
 
     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);
 
@@ -115,8 +116,8 @@ public class ShardRecoveryCoordinatorTest extends AbstractTest {
     }
 
     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();
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.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.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;
@@ -425,8 +424,8 @@ public class ShardTest extends AbstractShardTest {
 
         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))
@@ -466,8 +465,8 @@ public class ShardTest extends AbstractShardTest {
 
         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);
@@ -1151,7 +1150,7 @@ public class ShardTest extends AbstractShardTest {
     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);
@@ -1208,7 +1207,7 @@ public class ShardTest extends AbstractShardTest {
     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");
@@ -1285,7 +1284,7 @@ public class ShardTest extends AbstractShardTest {
     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");
@@ -1353,7 +1352,7 @@ public class ShardTest extends AbstractShardTest {
     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");
@@ -1400,7 +1399,7 @@ public class ShardTest extends AbstractShardTest {
     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);
@@ -1988,8 +1987,8 @@ public class ShardTest extends AbstractShardTest {
      */
     @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,
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(Optional.of(readResponse)).when(dataTreeModification).readNode(any(YangInstanceIdentifier.class));
+        doReturn(java.util.Optional.of(readResponse)).when(dataTreeModification).readNode(
+            any(YangInstanceIdentifier.class));
 
         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 com.google.common.base.Optional;
 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;
@@ -78,8 +78,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
 
     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);
@@ -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) {
@@ -116,13 +117,13 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         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);
     }
 
-    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());
@@ -139,8 +140,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         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();
@@ -160,8 +161,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @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);
@@ -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) {
@@ -189,21 +190,21 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         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);
     }
 
-    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);
     }
 
-    static void commit(ShardDataTree shardDataTree, DataTreeModification modification)
+    static void commit(final ShardDataTree shardDataTree, final DataTreeModification 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
-            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()
@@ -229,7 +230,7 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
             }
 
             @Override
-            public void describeTo(Description description) {
+            public void describeTo(final Description description) {
                 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
-            public boolean matches(Object argument) {
+            public boolean matches(final Object argument) {
                 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)));
             }
@@ -253,8 +254,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @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);
@@ -268,7 +269,7 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     static void verifyRaftState(final TestActorRef<? extends EntityOwnershipShard> shard,
-            Consumer<OnDemandRaftState> verifier)
+            final Consumer<OnDemandRaftState> verifier)
             throws Exception {
         AssertionError lastError = null;
         Stopwatch sw = Stopwatch.createStarted();
@@ -288,14 +289,14 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
         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")
-    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);
@@ -306,8 +307,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @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);
@@ -318,8 +319,8 @@ public class AbstractEntityOwnershipTest extends AbstractActorTest {
     }
 
     @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);
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
-        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);
@@ -128,7 +128,7 @@ public class EntityOwnershipStatisticsTest extends AbstractActorTest {
 
         // 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);
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 java.io.NotSerializableException;
 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.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.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;
 
@@ -35,9 +36,9 @@ import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFac
 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);
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.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.DataTreeConfiguration;
 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;
@@ -183,8 +183,8 @@ public class CommitTransactionPayloadTest extends AbstractTest {
 
     @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();
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 com.google.common.base.Optional;
-import com.google.common.collect.Lists;
 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.Optional;
 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 {
 
-    private final List<DataTreeCandidate> changeList = Lists.newArrayList();
+    private final List<DataTreeCandidate> changeList = new ArrayList<>();
 
     private volatile CountDownLatch changeLatch;
     private int expChangeEventCount;
 
-    public MockDataTreeChangeListener(int expChangeEventCount) {
+    public MockDataTreeChangeListener(final int expChangeEventCount) {
         reset(expChangeEventCount);
     }
 
-    public void reset(int newExpChangeEventCount) {
+    public void reset(final int newExpChangeEventCount) {
         changeLatch = new CountDownLatch(newExpChangeEventCount);
         this.expChangeEventCount = newExpChangeEventCount;
         synchronized (changeList) {
@@ -59,7 +59,7 @@ public class MockDataTreeChangeListener implements DOMDataTreeChangeListener {
     }
 
     @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",
@@ -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) {
@@ -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());
         }
     }
 
-    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) {
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 com.google.common.base.Optional;
 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;
@@ -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.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.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;
@@ -66,7 +66,7 @@ public class PruningDataTreeModificationTest {
     @Mock
     private DataTreeModification mockModification;
 
-    private TipProducingDataTree dataTree;
+    private DataTree dataTree;
     private DataTreeModification realModification;
     private DataTreeModification proxyModification;
     private PruningDataTreeModification pruningDataTreeModification;
@@ -76,8 +76,8 @@ public class PruningDataTreeModificationTest {
     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) -> {
@@ -128,7 +128,7 @@ public class PruningDataTreeModificationTest {
 
         verify(mockModification, times(1)).merge(path, normalizedNode);
 
-        DataTreeCandidateTip candidate = getCandidate();
+        DataTreeCandidate candidate = getCandidate();
         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);
-        assertEquals("After pruning present", true, actual.isPresent());
+        assertTrue("After pruning present", actual.isPresent());
         assertEquals("After pruning", prunedNode, actual.get());
     }
 
@@ -166,7 +166,7 @@ public class PruningDataTreeModificationTest {
 
         verify(mockModification, times(1)).merge(path, normalizedNode);
 
-        DataTreeCandidateTip candidate = getCandidate();
+        DataTreeCandidate candidate = getCandidate();
         assertEquals("getModificationType", ModificationType.UNMODIFIED, candidate.getRootNode().getModificationType());
     }
 
@@ -181,8 +181,8 @@ public class PruningDataTreeModificationTest {
 
     @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());
@@ -195,7 +195,7 @@ public class PruningDataTreeModificationTest {
         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());
     }
 
@@ -227,7 +227,7 @@ public class PruningDataTreeModificationTest {
 
         verify(mockModification, times(1)).write(path, normalizedNode);
 
-        DataTreeCandidateTip candidate = getCandidate();
+        DataTreeCandidate candidate = getCandidate();
         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);
-        assertEquals("After pruning present", true, actual.isPresent());
+        assertTrue("After pruning present", actual.isPresent());
         assertEquals("After pruning", prunedNode, actual.get());
     }
 
@@ -289,12 +289,11 @@ public class PruningDataTreeModificationTest {
                 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);
-        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();
 
-        final Optional<NormalizedNode<?, ?>> dataAfter =
+        final java.util.Optional<NormalizedNode<?, ?>> dataAfter =
                 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 java.io.InputStream;
-import java.util.ArrayList;
 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;
@@ -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.parser.spi.meta.ReactorException;
 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() {
-        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;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
 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.parser.spi.meta.ReactorException;
 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) {
-        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() {
-        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() {
-        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;
 
-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;
@@ -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.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public final class TestModel {
@@ -63,20 +57,7 @@ public final class TestModel {
     }
 
     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) {
index 896c606eb9ce3a592e359e39ae045e5f42e1269b..d2872e256c6b42cdb277153314aa764f915da5c2 100644 (file)
@@ -8,6 +8,7 @@
 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;
@@ -26,7 +27,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo
  * 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")),
index 37ac3deb13451bbe526faf9b55fe506597656d6c..001b4fdeacd8650222d12eb094dc546b6915e0ba 100644 (file)
@@ -79,7 +79,7 @@ public final class DomInmemoryDataBrokerModule extends
          */
         ExecutorService listenableFutureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(
                 getMaxDataBrokerFutureCallbackPoolSize(), getMaxDataBrokerFutureCallbackQueueSize(),
-                "CommitFutures");
+                "CommitFutures", SerializedDOMDataBroker.class);
 
         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(
-            getMaxDataBrokerCommitQueueSize(), "WriteTxCommit");
+            getMaxDataBrokerCommitQueueSize(), "WriteTxCommit", SerializedDOMDataBroker.class);
 
         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;
 
-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;
@@ -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.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;
@@ -105,8 +104,8 @@ org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractSchemaServiceImp
             }
 
             @Override
-            public CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> getSource(
-                    SourceIdentifier sourceIdentifier) {
+            public ListenableFuture<? extends YangTextSchemaSource> getSource(
+                    final SourceIdentifier 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();
-            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())) {
index f2236d4858932139e91ef68e56ca62974ba79796..52921183fbe05da4aa48f530579f8c9f50f3ff2c 100644 (file)
@@ -7,12 +7,12 @@
  */
 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 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;
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.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.TreeType;
 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);
 
-        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 DataTree tree = treeFactory.create(treeTypeForStore(store));
+            final DataTree tree = treeFactory.create(treeConfigForStore(store));
             tree.setSchemaContext(ctx);
             snapshotMapBuilder.put(store, tree.takeSnapshot());
 
@@ -137,7 +137,7 @@ class ShardedDOMDataBrokerDelegatingReadWriteTransaction implements DOMDataReadW
                     mod.write(path, result.get());
                 }
                 applyModificationHistoryToSnapshot(mod, currentHistory);
-                readResult.set(mod.readNode(path));
+                readResult.set(Optional.fromJavaUtil(mod.readNode(path)));
             }
 
             @Override
@@ -190,17 +190,17 @@ class ShardedDOMDataBrokerDelegatingReadWriteTransaction implements DOMDataReadW
     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));
         }
     }
 
-    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();
index 5fccde2864ae2f96976dcd2671c44e8cd26356f5..c80d75f0d1ae5687d42ec70fd9d2867ea3b43d6b 100644 (file)
@@ -125,7 +125,7 @@ public class DOMMountPointServiceImpl implements DOMMountPointService {
         }
 
         @Override
-        public void close() throws Exception {
+        public void close() {
             unregisterMountPoint(mountPoint.getIdentifier());
         }
     }
index b1c5a915bd899acfb943d3ab983a28930b8c22e7..2a614c7d0051b3615c185c2aa2c03fbf241c5227 100644 (file)
@@ -8,21 +8,19 @@
 
 package org.opendaylight.controller.sal.dom.broker.util;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
-import java.net.URI;
 import java.util.Collection;
-import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 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.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;
@@ -75,31 +73,6 @@ public class ProxySchemaContext implements SchemaContext {
         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();
@@ -121,8 +94,8 @@ public class ProxySchemaContext implements SchemaContext {
     }
 
     @Override
-    public DataSchemaNode getDataChildByName(final QName name) {
-        return getCurrentSchema().getDataChildByName(name);
+    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        return getCurrentSchema().findDataChildByName(name);
     }
 
     @Override
@@ -131,7 +104,7 @@ public class ProxySchemaContext implements SchemaContext {
     }
 
     @Override
-    public Set<AugmentationSchema> getAvailableAugmentations() {
+    public Set<AugmentationSchemaNode> getAvailableAugmentations() {
         return getCurrentSchema().getAvailableAugmentations();
     }
 
@@ -150,11 +123,6 @@ public class ProxySchemaContext implements SchemaContext {
         return getCurrentSchema().isConfiguration();
     }
 
-    @Override
-    public ConstraintDefinition getConstraints() {
-        return getCurrentSchema().getConstraints();
-    }
-
     @Override
     public QName getQName() {
         return getCurrentSchema().getQName();
@@ -171,12 +139,12 @@ public class ProxySchemaContext implements SchemaContext {
     }
 
     @Override
-    public String getDescription() {
+    public Optional<String> getDescription() {
         return getCurrentSchema().getDescription();
     }
 
     @Override
-    public String getReference() {
+    public Optional<String> getReference() {
         return getCurrentSchema().getReference();
     }
 
@@ -184,4 +152,14 @@ public class ProxySchemaContext implements SchemaContext {
     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 java.util.Collection;
 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 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.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.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;
@@ -53,8 +58,7 @@ public final class YangSchemaUtils {
         }
 
         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()) {
@@ -91,8 +95,7 @@ public final class YangSchemaUtils {
     }
 
     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;
@@ -130,7 +133,7 @@ public final class YangSchemaUtils {
         }
 
         @Override
-        public DataSchemaNode getDataChildByName(final QName name) {
+        public Optional<DataSchemaNode> findDataChildByName(final QName name) {
             // TODO Auto-generated method stub
             return null;
         }
@@ -142,7 +145,7 @@ public final class YangSchemaUtils {
         }
 
         @Override
-        public Set<AugmentationSchema> getAvailableAugmentations() {
+        public Set<AugmentationSchemaNode> getAvailableAugmentations() {
             // TODO Auto-generated method stub
             return null;
         }
@@ -166,53 +169,68 @@ public final class YangSchemaUtils {
         }
 
         @Override
-        public ConstraintDefinition getConstraints() {
+        public QName getQName() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public QName getQName() {
+        public SchemaPath getPath() {
             // 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
-        public String getDescription() {
+        public List<UnknownSchemaNode> getUnknownSchemaNodes() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public String getReference() {
+        public boolean isPresenceContainer() {
             // TODO Auto-generated method stub
-            return null;
+            return false;
         }
 
         @Override
-        public Status getStatus() {
+        public Set<NotificationDefinition> getNotifications() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+        public Set<ActionDefinition> getActions() {
             // TODO Auto-generated method stub
             return null;
         }
 
         @Override
-        public boolean isPresenceContainer() {
+        public Optional<RevisionAwareXPath> getWhenCondition() {
             // 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());
-        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB");
+        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB", DOMBrokerTest.class);
         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());
-        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB");
+        futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB",
+                DOMDataTreeListenerTest.class);
         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;
 
-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.parser.spi.meta.ReactorException;
 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";
 
-    private static InputStream getInputStream() {
-        return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG);
-    }
-
     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;
+
 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 {
-            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));
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;
+
 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 readyImpl == null ? null : mutableTree.readNode(path);
+        return readyImpl == null ? null : Optional.fromJavaUtil(mutableTree.readNode(path));
     }
 
     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
index 61ecf93732b513ce01c42a04edf5512a71b17052..b5e5e8331e0680910dc734689bf75e2dd9bb71aa 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.controller.md.sal.dom.store.impl;
 
-import com.google.common.base.Optional;
 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;
@@ -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.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.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;
@@ -99,10 +99,10 @@ public class InMemoryDOMDataStore extends TransactionReadyPrototype<String> impl
 
         switch (type) {
             case CONFIGURATION:
-                dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.CONFIGURATION);
+                dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_CONFIGURATION);
                 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");
index d2297f28c9c08d87655b41043caa4d194ef0ee40..dde694207c82f0d52917a99d94c95d0980ec38f9 100644 (file)
@@ -140,7 +140,7 @@ public final class InMemoryDOMDataStoreFactory {
         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);
index 22e4c4d8a3dfc2656bb8d2b395e41176f93d900c..e469a159585543c7d7322a1487d06c995c1c8e07 100644 (file)
@@ -7,9 +7,9 @@
  */
 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.Optional;
 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;
-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 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;
index 578320ea9057988e58b97c85647964886d0b321f..1928ec96702e9c3ce1af7250b1820e416a4b5d5b 100644 (file)
@@ -7,9 +7,9 @@
  */
 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 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;
@@ -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) {
-            return Optional.absent();
+            return Optional.empty();
         }
 
         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(
-                SpecialExecutors.newBlockingBoundedFastThreadPool(1, 10, "DCL" ));
+                SpecialExecutors.newBlockingBoundedFastThreadPool(1, 10, "DCL",
+                    AbstractDataChangeListenerTest.class));
 
         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;
 
-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.parser.spi.meta.ReactorException;
 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";
 
-    private static InputStream getInputStream() {
-        return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG);
-    }
-
     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_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);
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 java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -368,14 +367,14 @@ public class RpcRegistryTest {
     }
 
     @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,
-                    new QName(new URI("/mockrpc"), "type" + i)));
+                    QName.create(URI.create("/mockrpc"), "type" + i)));
             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;
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.util.concurrent.ListenableFuture;
 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));
         }
 
-        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;
 
-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 java.util.Optional;
 import org.opendaylight.mdsal.common.api.DataValidationFailedException;
 import org.opendaylight.mdsal.common.api.PostCanCommitStep;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate;