From 5cb901dc8be360d836abee8f8a222a981689e2f2 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 21 Mar 2022 08:52:14 +0100 Subject: [PATCH] Revert "Remove SchemaNode#getPath from JSON reader in rfc8040" This reverts commit d3403542792afb6f6a6525a088b27163236070f2. The proposed transformation is not valid. Change-Id: I73453f4f196fc64919f08b165b382a2df69d3a5e Signed-off-by: Robert Varga --- .../JsonNormalizedNodeBodyReader.java | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyReader.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyReader.java index 9b9a53426b..d462ffadfd 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyReader.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyReader.java @@ -43,10 +43,10 @@ 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.EffectiveStatementInference; import org.opendaylight.yangtools.yang.model.api.OperationDefinition; +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.meta.EffectiveStatement; -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; @@ -79,20 +79,16 @@ public class JsonNormalizedNodeBodyReader extends AbstractNormalizedNodeBodyRead final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder); final EffectiveStatementInference parentSchema; - final SchemaInferenceStack stack; - if (path.getSchemaNode() instanceof RpcEffectiveStatement) { - stack = SchemaInferenceStack.of(path.getSchemaContext(), Absolute.of(path.getSchemaNode().getQName())); + if (isPost) { + parentSchema = SchemaInferenceStack.ofSchemaPath(path.getSchemaContext(), + path.getSchemaNode().getPath()).toInference(); + } else if (path.getSchemaNode() instanceof SchemaContext + || SchemaPath.ROOT.equals(path.getSchemaNode().getPath().getParent())) { + parentSchema = SchemaInferenceStack.of(path.getSchemaContext()).toInference(); } else { - 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(); + parentSchema = SchemaInferenceStack.ofSchemaPath(path.getSchemaContext(), + path.getSchemaNode().getPath().getParent()).toInference(); } - parentSchema = stack.toInference(); final JsonParserStream jsonParser = JsonParserStream.create(writer, JSONCodecFactorySupplier.RFC7951.getShared(path.getSchemaContext()), parentSchema); -- 2.36.6