Elimiante SchemaPath from NetconfMessageTransformUtil 00/103200/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 10 Nov 2022 17:07:21 +0000 (18:07 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 10 Nov 2022 17:07:21 +0000 (18:07 +0100)
We can use SchemaInferenceStack to acquire the state we need instead
of going through SchemaPath.

Change-Id: If96b521112c898245b154e3f60233e24aa17b7cd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfMessageTransformUtil.java

index a4c8f909f81421411ec364f2d5ef3a899a384fa4..cecd8e02275f1423dad0e8dc6d78d2718273d61e 100644 (file)
@@ -81,8 +81,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedN
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 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;
 import org.w3c.dom.Document;
@@ -532,20 +532,19 @@ public final class NetconfMessageTransformUtil {
         }
     }
 
-    @SuppressWarnings("checkstyle:IllegalCatch")
     public static void writeNormalizedOperationInput(final ContainerNode normalized, final DOMResult result,
             final Absolute operationPath, final EffectiveModelContext baseNetconfCtx)
                 throws IOException, XMLStreamException {
-        final QName inputQName = YangConstants.operationInputQName(operationPath.lastNodeIdentifier().getModule());
-        // FIXME: eliminate this conversion
-        final SchemaPath inputPath = SchemaPath.of(operationPath).createChild(inputQName);
+        final var stack = SchemaInferenceStack.of(baseNetconfCtx, operationPath);
+        stack.enterSchemaTree(YangConstants.operationInputQName(operationPath.lastNodeIdentifier().getModule()));
+        final var inputInference = stack.toSchemaTreeInference();
 
         final XMLStreamWriter writer = NetconfUtil.XML_FACTORY.createXMLStreamWriter(result);
         try {
             try (NormalizedNodeStreamWriter normalizedNodeStreamWriter =
-                    XMLStreamNormalizedNodeStreamWriter.create(writer, baseNetconfCtx, inputPath)) {
+                    XMLStreamNormalizedNodeStreamWriter.create(writer, inputInference)) {
                 try (SchemaOrderedNormalizedNodeWriter normalizedNodeWriter =
-                        new SchemaOrderedNormalizedNodeWriter(normalizedNodeStreamWriter, baseNetconfCtx, inputPath)) {
+                        new SchemaOrderedNormalizedNodeWriter(normalizedNodeStreamWriter, inputInference)) {
                     final Collection<DataContainerChild> value = normalized.body();
                     normalizedNodeWriter.write(value);
                     normalizedNodeWriter.flush();
@@ -554,7 +553,7 @@ public final class NetconfMessageTransformUtil {
         } finally {
             try {
                 writer.close();
-            } catch (final Exception e) {
+            } catch (final XMLStreamException e) {
                 LOG.warn("Unable to close resource properly", e);
             }
         }