From 9c6d80b35d29969d989b2173120bde2daae56568 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 21 Mar 2022 08:51:36 +0100 Subject: [PATCH] Revert "Remove SchemaNode#getPath from XML writer in rfc8040" This reverts commit d21d2fe3c6e1784e6ec407b86c6eac75ba3bba66. The proposed transformation is not valid. Change-Id: Ib5798243764106e2ce270fa995d1abfc0ef4499b Signed-off-by: Robert Varga --- .../XmlNormalizedNodeBodyWriter.java | 40 ++++++------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java index b2dbc1f811..81a1c17b26 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java @@ -15,7 +15,6 @@ import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import javanet.staxutils.IndentingXMLStreamWriter; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; @@ -33,8 +32,6 @@ import org.opendaylight.restconf.nb.rfc8040.MediaTypes; import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter; import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -44,7 +41,6 @@ import org.opendaylight.yangtools.yang.model.api.ActionDefinition; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; @Provider @Produces({ MediaTypes.APPLICATION_YANG_DATA_XML, MediaType.APPLICATION_XML, MediaType.TEXT_XML }) @@ -86,12 +82,13 @@ public class XmlNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWrite throw new IllegalStateException(e); } final NormalizedNode data = context.getData(); + final SchemaPath schemaPath = pathContext.getSchemaNode().getPath(); - writeNormalizedNode(xmlWriter, pathContext, data, context.getWriterParameters().depth(), + writeNormalizedNode(xmlWriter, schemaPath, pathContext, data, context.getWriterParameters().depth(), context.getWriterParameters().fields()); } - private static void writeNormalizedNode(final XMLStreamWriter xmlWriter, + private static void writeNormalizedNode(final XMLStreamWriter xmlWriter, final SchemaPath path, final InstanceIdentifierContext pathContext, final NormalizedNode data, final DepthParam depth, final List> fields) throws IOException { final RestconfNormalizedNodeWriter nnWriter; @@ -102,37 +99,26 @@ public class XmlNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWrite * RpcDefinition is not supported as initial codec in XMLStreamWriter, * so we need to emit initial output declaration.. */ - final RpcDefinition rpc = (RpcDefinition) pathContext.getSchemaNode(); - final SchemaPath rpcPath = SchemaPath.of(Absolute.of(rpc.getQName(), rpc.getOutput().getQName())); - nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, rpcPath, depth, fields); + nnWriter = createNormalizedNodeWriter( + xmlWriter, + schemaCtx, + ((RpcDefinition) pathContext.getSchemaNode()).getOutput().getPath(), + depth, + fields); writeElements(xmlWriter, nnWriter, (ContainerNode) data); } else if (pathContext.getSchemaNode() instanceof ActionDefinition) { /* * ActionDefinition is not supported as initial codec in XMLStreamWriter, * so we need to emit initial output declaration.. */ - final ActionDefinition actDef = (ActionDefinition) pathContext.getSchemaNode(); - final List qNames = pathContext.getInstanceIdentifier().getPathArguments().stream() - .filter(arg -> !(arg instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates)) - .filter(arg -> !(arg instanceof YangInstanceIdentifier.AugmentationIdentifier)) - .map(PathArgument::getNodeType) - .collect(Collectors.toList()); - qNames.add(actDef.getQName()); - qNames.add(actDef.getOutput().getQName()); - final SchemaPath actPath = SchemaPath.of(Absolute.of(qNames)); - nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, actPath, depth, fields); + nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, + ((ActionDefinition) pathContext.getSchemaNode()).getOutput().getPath(), depth, fields); writeElements(xmlWriter, nnWriter, (ContainerNode) data); } else { - final boolean isRoot = pathContext.getInstanceIdentifier().isEmpty(); + final boolean isRoot = SchemaPath.ROOT.equals(path); if (isRoot) { - nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, SchemaPath.ROOT, depth, fields); + nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, path, depth, fields); } else { - final List qNames = pathContext.getInstanceIdentifier().getPathArguments().stream() - .filter(arg -> !(arg instanceof YangInstanceIdentifier.NodeIdentifierWithPredicates)) - .filter(arg -> !(arg instanceof YangInstanceIdentifier.AugmentationIdentifier)) - .map(PathArgument::getNodeType) - .collect(Collectors.toList()); - final SchemaPath path = SchemaPath.of(Absolute.of(qNames)); nnWriter = createNormalizedNodeWriter(xmlWriter, schemaCtx, path.getParent(), depth, fields); } -- 2.36.6