Revert "Remove SchemaNode#getPath from JSON reader in rfc8040" 66/100166/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 21 Mar 2022 07:52:14 +0000 (08:52 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 21 Mar 2022 07:58:57 +0000 (08:58 +0100)
This reverts commit d3403542792afb6f6a6525a088b27163236070f2. The
proposed transformation is not valid.

Change-Id: I73453f4f196fc64919f08b165b382a2df69d3a5e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyReader.java

index 9b9a53426be7c863fa06519ab2820a12cd8f6df0..d462ffadfdd93b041e65ff1af3e555e0b57f5056 100644 (file)
@@ -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);