X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2Futil%2FNetconfRpcStructureTransformer.java;h=4597af67841517cffe45699f0c078f889c7d6a8b;hb=c7264331f2145eaae64d04196d15f70df6682830;hp=0f4085fdcc7b15e6623a8ac9afe5f4802f3965b5;hpb=3fb18db252582f5caad405e0fa682873b83c41f3;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java index 0f4085fdcc..4597af6784 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java @@ -7,20 +7,29 @@ */ package org.opendaylight.netconf.sal.connect.netconf.util; +import java.io.IOException; +import java.net.URISyntaxException; import java.util.Optional; +import javax.xml.stream.XMLStreamException; import org.opendaylight.netconf.api.ModifyAction; +import org.opendaylight.netconf.util.NetconfUtil; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode; 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.NormalizedNodes; +import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.SAXException; /** * Transforms rpc structures to normalized nodes and vice versa. */ class NetconfRpcStructureTransformer implements RpcStructureTransformer { + private static final Logger LOG = LoggerFactory.getLogger(NetconfRpcStructureTransformer.class); private final SchemaContext schemaContext; NetconfRpcStructureTransformer(final SchemaContext schemaContext) { @@ -31,7 +40,18 @@ class NetconfRpcStructureTransformer implements RpcStructureTransformer { public Optional> selectFromDataStructure( final DataContainerChild data, final YangInstanceIdentifier path) { - return NormalizedNodes.findNode(data, path.getPathArguments()); + if (data instanceof AnyXmlNode) { + final NormalizedNodeResult node; + try { + node = NetconfUtil.transformDOMSourceToNormalizedNode(schemaContext, ((AnyXmlNode)data).getValue()); + return NormalizedNodes.findNode(node.getResult(), path.getPathArguments()); + } catch (final XMLStreamException | URISyntaxException | IOException | SAXException e) { + LOG.error("Cannot parse anyxml.", e); + return Optional.empty(); + } + } else { + return NormalizedNodes.findNode(data, path.getPathArguments()); + } } @Override