From 6f3281a884977f857217b0d2b40a84fb70483fec Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Mon, 24 Sep 2018 10:45:18 -0400 Subject: [PATCH] Convert blueprint ext classes to MDSAL APIs All classes are now converted except for RoutedRpcMetadata as there is no equivalent to the RoutedRpcRegistration in the MDSAL API. Change-Id: If7720ad6dca5c281ae6c7ace50a60f3e7463f938 Signed-off-by: Tom Pantelis --- opendaylight/blueprint/pom.xml | 16 +++++--- .../DataStoreAppConfigDefaultXMLReader.java | 2 +- .../ext/DataStoreAppConfigMetadata.java | 38 +++++++++---------- ...ataStoreAppConfigDefaultXMLReaderTest.java | 2 +- 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/opendaylight/blueprint/pom.xml b/opendaylight/blueprint/pom.xml index b3b14c0ca7..cab2f7441f 100644 --- a/opendaylight/blueprint/pom.xml +++ b/opendaylight/blueprint/pom.xml @@ -68,6 +68,10 @@ org.opendaylight.controller sal-core-spi + + org.opendaylight.mdsal + mdsal-dom-spi + org.opendaylight.mdsal mdsal-binding-api @@ -107,19 +111,19 @@ test - org.opendaylight.controller - sal-test-model + org.opendaylight.mdsal + mdsal-binding-test-model test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test-jar test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test diff --git a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigDefaultXMLReader.java b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigDefaultXMLReader.java index 9f909c4084..9b55b360d6 100644 --- a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigDefaultXMLReader.java +++ b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigDefaultXMLReader.java @@ -7,13 +7,13 @@ */ package org.opendaylight.controller.blueprint.ext; -import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.io.Resources; import java.io.IOException; import java.io.InputStream; import java.net.URISyntaxException; import java.net.URL; +import java.util.Optional; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; diff --git a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java index 0d6585bda2..b2801d052f 100644 --- a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java +++ b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/DataStoreAppConfigMetadata.java @@ -7,16 +7,15 @@ */ package org.opendaylight.controller.blueprint.ext; -import com.google.common.base.Optional; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.Collection; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -24,15 +23,15 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; import org.apache.aries.blueprint.services.ExtendedBlueprintContainer; import org.opendaylight.controller.blueprint.ext.DataStoreAppConfigDefaultXMLReader.ConfigURLProvider; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -150,7 +149,7 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor // the data isn't present, we won't get an initial DTCN update so the read will indicate the data // isn't present. - DataTreeIdentifier dataTreeId = new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + DataTreeIdentifier dataTreeId = DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, bindingContext.appConfigPath); appConfigChangeListenerReg = dataBroker.registerDataTreeChangeListener(dataTreeId, (ClusteredDataTreeChangeListener) this::onAppConfigChanged); @@ -159,23 +158,22 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor } private void readInitialAppConfig(final DataBroker dataBroker) { - final ReadOnlyTransaction readOnlyTx = dataBroker.newReadOnlyTransaction(); - ListenableFuture> future = readOnlyTx.read( - LogicalDatastoreType.CONFIGURATION, bindingContext.appConfigPath); - Futures.addCallback(future, new FutureCallback>() { + final FluentFuture> future; + try (ReadTransaction readOnlyTx = dataBroker.newReadOnlyTransaction()) { + future = readOnlyTx.read(LogicalDatastoreType.CONFIGURATION, bindingContext.appConfigPath); + } + + future.addCallback(new FutureCallback>() { @Override public void onSuccess(final Optional possibleAppConfig) { LOG.debug("{}: Read of app config {} succeeded: {}", logName(), bindingContext .appConfigBindingClass.getName(), possibleAppConfig); - readOnlyTx.close(); setInitialAppConfig(possibleAppConfig); } @Override public void onFailure(final Throwable failure) { - readOnlyTx.close(); - // We may have gotten the app config via the data tree change listener so only retry if not. if (readingInitialAppConfig.get()) { LOG.warn("{}: Read of app config {} failed - retrying", logName(), @@ -248,7 +246,7 @@ public class DataStoreAppConfigMetadata extends AbstractDependentComponentFactor appConfigFile.getAbsolutePath()); if (!appConfigFile.exists()) { - return Optional.absent(); + return Optional.empty(); } LOG.debug("{}: Found file {}", logName(), appConfigFile.getAbsolutePath()); diff --git a/opendaylight/blueprint/src/test/java/org/opendaylight/controller/blueprint/tests/DataStoreAppConfigDefaultXMLReaderTest.java b/opendaylight/blueprint/src/test/java/org/opendaylight/controller/blueprint/tests/DataStoreAppConfigDefaultXMLReaderTest.java index 46bd699668..a1cf3d729b 100644 --- a/opendaylight/blueprint/src/test/java/org/opendaylight/controller/blueprint/tests/DataStoreAppConfigDefaultXMLReaderTest.java +++ b/opendaylight/blueprint/src/test/java/org/opendaylight/controller/blueprint/tests/DataStoreAppConfigDefaultXMLReaderTest.java @@ -11,7 +11,7 @@ import static com.google.common.truth.Truth.assertThat; import org.junit.Test; import org.opendaylight.controller.blueprint.ext.DataStoreAppConfigDefaultXMLReader; -import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.store.rev140422.Lists; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.store.rev140422.lists.unordered.container.UnorderedList; -- 2.36.6