From 567b1097ccc247ea1c1bf44f0a4d0ab4b4ebb44c Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Thu, 19 Feb 2015 13:53:38 +0100 Subject: [PATCH] Remove required source element from Get operation for MDSAL Change-Id: I2c1495dfac8ecad00605f4df98b310b3d99ac4ed Signed-off-by: Maros Marsalek --- .../mdsal/connector/ops/get/AbstractGet.java | 19 +++++++++---------- .../netconf/mdsal/connector/ops/get/Get.java | 7 ++----- .../mdsal/connector/ops/get/GetConfig.java | 8 ++++++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java index e0c004461c..8f6ff417d6 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/AbstractGet.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.netconf.mdsal.connector.ops.get; import com.google.common.base.Function; +import com.google.common.base.Optional; import com.google.common.base.Throwables; import com.google.common.collect.Iterables; import java.io.IOException; @@ -115,13 +116,13 @@ public abstract class AbstractGet extends AbstractLastNetconfOperation { } protected static final class GetConfigExecution { - private final Datastore datastore; + private final Optional datastore; - public GetConfigExecution(final Datastore datastore) { + public GetConfigExecution(final Optional datastore) { this.datastore = datastore; } - public Datastore getDatastore() { + public Optional getDatastore() { return datastore; } @@ -132,7 +133,7 @@ public abstract class AbstractGet extends AbstractLastNetconfOperation { throw new NetconfDocumentedException("Incorrect RPC: " + e.getMessage(), e.getErrorType(), e.getErrorTag(), e.getErrorSeverity(), e.getErrorInfo()); } - final Datastore sourceDatastore; + final Optional sourceDatastore; try { sourceDatastore = parseSource(xml); } catch (final NetconfDocumentedException e) { @@ -144,14 +145,12 @@ public abstract class AbstractGet extends AbstractLastNetconfOperation { return new GetConfigExecution(sourceDatastore); } - private static Datastore parseSource(final XmlElement xml) throws NetconfDocumentedException { - final Datastore sourceDatastore; - final XmlElement sourceElement = xml.getOnlyChildElement(XmlNetconfConstants.SOURCE_KEY, + private static Optional parseSource(final XmlElement xml) throws NetconfDocumentedException { + final Optional sourceElement = xml.getOnlyChildElementOptionally(XmlNetconfConstants.SOURCE_KEY, XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0); - final String sourceParsed = sourceElement.getOnlyChildElement().getName(); - sourceDatastore = Datastore.valueOf(sourceParsed); - return sourceDatastore; + return sourceElement.isPresent() ? + Optional.of(Datastore.valueOf(sourceElement.get().getOnlyChildElement().getName())) : Optional.absent(); } private static void validateInputRpc(final XmlElement xml, String operationName) throws NetconfDocumentedException{ diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/Get.java b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/Get.java index a2b2fbb0db..cebd8c8883 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/Get.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/Get.java @@ -52,13 +52,10 @@ public class Get extends AbstractGet { } final YangInstanceIdentifier dataRoot = ROOT; - DOMDataReadWriteTransaction rwTx = getTransaction(getConfigExecution.getDatastore()); + DOMDataReadWriteTransaction rwTx = getTransaction(Datastore.running); try { final Optional> normalizedNodeOptional = rwTx.read(LogicalDatastoreType.OPERATIONAL, dataRoot).checkedGet(); - if (getConfigExecution.getDatastore() == Datastore.running) { - transactionProvider.abortRunningTransaction(rwTx); - rwTx = null; - } + transactionProvider.abortRunningTransaction(rwTx); return (Element) transformNormalizedNode(document, normalizedNodeOptional.get(), dataRoot); } catch (ReadFailedException e) { LOG.warn("Unable to read data: {}", dataRoot, e); diff --git a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/GetConfig.java b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/GetConfig.java index b56bcc795c..f2d8abbb61 100644 --- a/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/GetConfig.java +++ b/opendaylight/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/controller/netconf/mdsal/connector/ops/get/GetConfig.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.netconf.mdsal.connector.ops.get; import com.google.common.base.Optional; +import com.google.common.base.Preconditions; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; @@ -52,10 +53,13 @@ public class GetConfig extends AbstractGet { } final YangInstanceIdentifier dataRoot = ROOT; - DOMDataReadWriteTransaction rwTx = getTransaction(getConfigExecution.getDatastore()); + // Proper exception should be thrown + Preconditions.checkState(getConfigExecution.getDatastore().isPresent(), "Source element missing from request"); + + DOMDataReadWriteTransaction rwTx = getTransaction(getConfigExecution.getDatastore().get()); try { final Optional> normalizedNodeOptional = rwTx.read(LogicalDatastoreType.CONFIGURATION, dataRoot).checkedGet(); - if (getConfigExecution.getDatastore() == Datastore.running) { + if (getConfigExecution.getDatastore().get() == Datastore.running) { transactionProvider.abortRunningTransaction(rwTx); rwTx = null; } -- 2.36.6