X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fmdsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fmdsal%2Fconnector%2Fops%2Fget%2FGetConfig.java;h=955666f2fe427dc9c9644878dcfdbafe8412762b;hp=f2d8abbb6180f10785f7cb00c59dcb6d6fd7d5ee;hb=1e884647502a8d91f8a57bde8193c60b9bbcce0d;hpb=3927509ec3ecfa32a51b725d2b7155d425f5b877 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 f2d8abbb61..955666f2fe 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 @@ -17,10 +17,12 @@ import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorSeverity; import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorTag; import org.opendaylight.controller.netconf.api.NetconfDocumentedException.ErrorType; +import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.mdsal.connector.CurrentSchemaContext; import org.opendaylight.controller.netconf.mdsal.connector.TransactionProvider; import org.opendaylight.controller.netconf.mdsal.connector.ops.Datastore; import org.opendaylight.controller.netconf.util.xml.XmlElement; +import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; @@ -33,7 +35,6 @@ public class GetConfig extends AbstractGet { private static final Logger LOG = LoggerFactory.getLogger(GetConfig.class); private static final String OPERATION_NAME = "get-config"; - private final TransactionProvider transactionProvider; public GetConfig(final String netconfSessionIdForReporting, final CurrentSchemaContext schemaContext, final TransactionProvider transactionProvider) { @@ -52,7 +53,13 @@ public class GetConfig extends AbstractGet { throw e; } - final YangInstanceIdentifier dataRoot = ROOT; + final Optional dataRootOptional = getDataRootFromFilter(operationElement); + if (!dataRootOptional.isPresent()) { + return XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); + } + + final YangInstanceIdentifier dataRoot = dataRootOptional.get(); + // Proper exception should be thrown Preconditions.checkState(getConfigExecution.getDatastore().isPresent(), "Source element missing from request"); @@ -61,9 +68,13 @@ public class GetConfig extends AbstractGet { final Optional> normalizedNodeOptional = rwTx.read(LogicalDatastoreType.CONFIGURATION, dataRoot).checkedGet(); if (getConfigExecution.getDatastore().get() == Datastore.running) { transactionProvider.abortRunningTransaction(rwTx); - rwTx = null; } - return (Element) transformNormalizedNode(document, normalizedNodeOptional.get(), dataRoot); + + if (!normalizedNodeOptional.isPresent()) { + return XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); + } + + return serializeNodeWithParentStructure(document, dataRoot, normalizedNodeOptional.get()); } catch (ReadFailedException e) { LOG.warn("Unable to read data: {}", dataRoot, e); throw new IllegalStateException("Unable to read data " + dataRoot, e);