import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
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.util.SchemaInferenceStack;
+import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
import org.xml.sax.SAXException;
/**
private static void writeNormalizedNode(final JsonWriter jsonWriter, final InstanceIdentifierContext context,
// Note: mutable argument
NormalizedNode data, final @Nullable Integer depth) throws IOException {
- SchemaPath path = context.getSchemaNode().getPath();
+
+ final var stack = context.inference().toSchemaInferenceStack();
final RestconfNormalizedNodeWriter nnWriter;
- if (SchemaPath.ROOT.equals(path)) {
+ if (stack.isEmpty()) {
/*
* Creates writer without initialNs and we write children of root data container
* which is not visible in restconf
*/
- nnWriter = createNormalizedNodeWriter(context, path, jsonWriter, depth);
+ nnWriter = createNormalizedNodeWriter(context, context.inference(), jsonWriter, depth);
if (data instanceof ContainerNode) {
writeChildren(nnWriter,(ContainerNode) data);
} else if (data instanceof DOMSourceAnyxmlNode) {
* so we need to emit initial output declaratation..
*/
final var rpc = (RpcDefinition) context.getSchemaNode();
- path = SchemaPath.create(true, rpc.getQName(), rpc.getOutput().getQName());
- nnWriter = createNormalizedNodeWriter(context, path, jsonWriter, depth);
+ final var tmp = SchemaInferenceStack.of(context.getSchemaContext());
+ tmp.enterSchemaTree(rpc.getQName());
+ tmp.enterSchemaTree(rpc.getOutput().getQName());
+
+ nnWriter = createNormalizedNodeWriter(context, tmp.toInference(), jsonWriter, depth);
jsonWriter.name("output");
jsonWriter.beginObject();
writeChildren(nnWriter, (ContainerNode) data);
jsonWriter.endObject();
} else {
- path = path.getParent();
+ stack.exit();
if (data instanceof MapEntryNode) {
data = ImmutableNodes.mapNodeBuilder(data.getIdentifier().getNodeType())
.withChild((MapEntryNode) data)
.build();
}
- nnWriter = createNormalizedNodeWriter(context, path, jsonWriter, depth);
+ nnWriter = createNormalizedNodeWriter(context, stack.toInference(), jsonWriter, depth);
nnWriter.write(data);
}
nnWriter.flush();
}
private static RestconfNormalizedNodeWriter createNormalizedNodeWriter(
- final InstanceIdentifierContext context, final SchemaPath path, final JsonWriter jsonWriter,
+ final InstanceIdentifierContext context, final Inference inference, final JsonWriter jsonWriter,
final @Nullable Integer depth) {
final SchemaNode schema = context.getSchemaNode();
initialNs = null;
}
final NormalizedNodeStreamWriter streamWriter =
- JSONNormalizedNodeStreamWriter.createNestedWriter(codecs, path, initialNs, jsonWriter);
+ JSONNormalizedNodeStreamWriter.createNestedWriter(codecs, inference, initialNs, jsonWriter);
if (depth != null) {
return DepthAwareNormalizedNodeWriter.forStreamWriter(streamWriter, depth);
}