X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fmdsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fmdsal%2Fconnector%2Fops%2Fget%2FGet.java;h=1daccd265cc2c094d1617df94a2b1e1951e3508f;hb=f3473ee42d45f1524dcafa6cc37e19e0393e9693;hp=a2b2fbb0db0304184cdc653b34a1e5f046ee3267;hpb=614324d63a339ef4acbc9e2c3bbaaef469f97868;p=controller.git 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..1daccd265c 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 @@ -16,10 +16,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; @@ -32,7 +34,6 @@ public class Get extends AbstractGet { private static final Logger LOG = LoggerFactory.getLogger(Get.class); private static final String OPERATION_NAME = "get"; - private final TransactionProvider transactionProvider; public Get(final String netconfSessionIdForReporting, final CurrentSchemaContext schemaContext, final TransactionProvider transactionProvider) { @@ -42,24 +43,24 @@ public class Get extends AbstractGet { @Override protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException { - GetConfigExecution getConfigExecution = null; - try { - getConfigExecution = GetConfigExecution.fromXml(operationElement, OPERATION_NAME); - } catch (final NetconfDocumentedException e) { - LOG.warn("Get request processing failed on session: {}", getNetconfSessionIdForReporting(), e); - throw e; + final Optional dataRootOptional = getDataRootFromFilter(operationElement); + if (!dataRootOptional.isPresent()) { + return XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); } - final YangInstanceIdentifier dataRoot = ROOT; - DOMDataReadWriteTransaction rwTx = getTransaction(getConfigExecution.getDatastore()); + final YangInstanceIdentifier dataRoot = dataRootOptional.get(); + + 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); + + if (!normalizedNodeOptional.isPresent()) { + return XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); } - return (Element) transformNormalizedNode(document, normalizedNodeOptional.get(), dataRoot); + + 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);