From ec6ea24581c692b474fafe17fb27259dbe94026d Mon Sep 17 00:00:00 2001 From: OleksandrZharov Date: Wed, 2 Feb 2022 12:48:47 +0100 Subject: [PATCH] Remove SchemaNode#getPath usage from JsonNormalizedNodeBodyReader Removed deprecated SchemaNode#getPath from JsonNormalizedNodeBodyReader class by using getNodeType and methods of SchemaInferenceStack. JIRA: NETCONF-818 Change-Id: Ic717f06d259cf1269aa1aa6b48395ef86edad50d Signed-off-by: OleksandrZharov --- .../impl/JsonNormalizedNodeBodyReader.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/JsonNormalizedNodeBodyReader.java b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/JsonNormalizedNodeBodyReader.java index a7ae431b29..42ba25540d 100644 --- a/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/JsonNormalizedNodeBodyReader.java +++ b/restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/JsonNormalizedNodeBodyReader.java @@ -46,9 +46,9 @@ import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.data.impl.schema.ResultAlreadySetException; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.stmt.RpcEffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -110,21 +110,24 @@ public class JsonNormalizedNodeBodyReader final NormalizedNodeResult resultHolder = new NormalizedNodeResult(); final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder); - final SchemaInferenceStack parentSchema; - if (isPost) { - // FIXME: We need dispatch for RPC. - parentSchema = SchemaInferenceStack.ofSchemaPath(path.getSchemaContext(), path.getSchemaNode().getPath()); - } else if (path.getSchemaNode() instanceof SchemaContext - || SchemaPath.ROOT.equals(path.getSchemaNode().getPath().getParent())) { - parentSchema = SchemaInferenceStack.of(path.getSchemaContext()); + final SchemaInferenceStack stack; + if (path.getSchemaNode() instanceof RpcEffectiveStatement) { + stack = SchemaInferenceStack.of(path.getSchemaContext(), Absolute.of(path.getSchemaNode().getQName())); } else { - parentSchema = SchemaInferenceStack.ofSchemaPath(path.getSchemaContext(), - path.getSchemaNode().getPath().getParent()); + stack = SchemaInferenceStack.of(path.getSchemaContext()); + path.getInstanceIdentifier().getPathArguments().stream() + .filter(arg -> !(arg instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates)) + .filter(arg -> !(arg instanceof YangInstanceIdentifier.AugmentationIdentifier)) + .forEach(p -> stack.enterSchemaTree(p.getNodeType())); + } + + if (!isPost) { + stack.exit(); } final JsonParserStream jsonParser = JsonParserStream.create(writer, JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(path.getSchemaContext()), - parentSchema.toInference()); + stack.toInference()); final JsonReader reader = new JsonReader(new InputStreamReader(nonEmptyInputStreamOptional.get(), StandardCharsets.UTF_8)); jsonParser.parse(reader); -- 2.36.6