From: Robert Varga Date: Mon, 21 Mar 2022 09:19:31 +0000 (+0100) Subject: Revert "Remove SchemaNode#getPath usage from XmlToPatchBodyReader" X-Git-Tag: v3.0.0~51 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F86%2F100186%2F2;p=netconf.git Revert "Remove SchemaNode#getPath usage from XmlToPatchBodyReader" This reverts commit ccf915302c1183a9963c5165f525ee762188126a. The assumptsions being made are just not correct. Change-Id: I006eef6c4174b6de91383c607b291e669c7bde1e Signed-off-by: Robert Varga --- diff --git a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/XmlToPatchBodyReader.java b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/XmlToPatchBodyReader.java index af353d67a4..3e6ea0520e 100644 --- a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/XmlToPatchBodyReader.java +++ b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/XmlToPatchBodyReader.java @@ -62,7 +62,6 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; -import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -154,11 +153,9 @@ public class XmlToPatchBodyReader extends AbstractIdentifierAwareJaxRsProvider i // target can be also empty (only slash) YangInstanceIdentifier targetII; final SchemaNode targetNode; - final Inference inference; if (target.equals("/")) { targetII = pathContext.getInstanceIdentifier(); targetNode = pathContext.getSchemaContext(); - inference = Inference.ofDataTreePath(pathContext.getSchemaContext(), schemaNode.getQName()); } else { targetII = codec.deserialize(codec.serialize(pathContext.getInstanceIdentifier()) .concat(prepareNonCondXpath(schemaNode, target.replaceFirst("/", ""), firstValueElement, @@ -168,15 +165,10 @@ public class XmlToPatchBodyReader extends AbstractIdentifierAwareJaxRsProvider i schemaNode = verifyNotNull(codec.getDataContextTree().findChild(targetII).orElseThrow() .getDataSchemaNode()); - final SchemaInferenceStack stack = SchemaInferenceStack.of(pathContext.getSchemaContext()); - targetII.getPathArguments().stream() - .filter(arg -> !(arg instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates)) - .filter(arg -> !(arg instanceof YangInstanceIdentifier.AugmentationIdentifier)) - .forEach(p -> stack.enterSchemaTree(p.getNodeType())); - final EffectiveStatement parentStmt = stack.exit(); + final EffectiveStatement parentStmt = SchemaInferenceStack.ofInstantiatedPath( + pathContext.getSchemaContext(), schemaNode.getPath().getParent()).currentStatement(); verify(parentStmt instanceof SchemaNode, "Unexpected parent %s", parentStmt); targetNode = (SchemaNode) parentStmt; - inference = stack.toInference(); } if (targetNode == null) { @@ -190,7 +182,9 @@ public class XmlToPatchBodyReader extends AbstractIdentifierAwareJaxRsProvider i if (schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode) { final NormalizedNodeResult resultHolder = new NormalizedNodeResult(); final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder); - final XmlParserStream xmlParser = XmlParserStream.create(writer, inference); + final XmlParserStream xmlParser = XmlParserStream.create(writer, + SchemaInferenceStack.ofInstantiatedPath(pathContext.getSchemaContext(), schemaNode.getPath()) + .toInference()); xmlParser.traverse(new DOMSource(firstValueElement)); parsed = resultHolder.getResult(); } else {