Bump upstreams to SNAPSHOTs
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / util / NetconfMessageTransformUtil.java
index 3ee435b998ac6f1e6f4bbe29741c4828e848c8f9..e740c6d9a91d5a5e1e1b7af76daea4daa45f64d8 100644 (file)
@@ -71,9 +71,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.YangInstanceIdentifierWriter;
 import org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
 import org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
@@ -313,10 +316,9 @@ public final class NetconfMessageTransformUtil {
         }
 
         return ex.getErrorSeverity() == ErrorSeverity.ERROR
-                ? RpcResultBuilder.newError(ex.getErrorType().toLegacy(), ex.getErrorTag().elementBody(),
+                ? RpcResultBuilder.newError(ex.getErrorType(), ex.getErrorTag(),
                         ex.getLocalizedMessage(), null, infoBuilder.toString(), ex.getCause())
-                : RpcResultBuilder.newWarning(
-                        ex.getErrorType().toLegacy(), ex.getErrorTag().elementBody(),
+                : RpcResultBuilder.newWarning(ex.getErrorType(), ex.getErrorTag(),
                         ex.getLocalizedMessage(), null, infoBuilder.toString(), ex.getCause());
     }
 
@@ -372,9 +374,19 @@ public final class NetconfMessageTransformUtil {
         final var metadata = operation.map(o -> leafMetadata(dataPath, o)).orElse(null);
         try {
             if (lastChildOverride.isPresent()) {
-                // FIXME remove ImmutableNodes.fromInstanceId usage
-                final var configContent = ImmutableNodes.fromInstanceId(ctx, dataPath, lastChildOverride.get());
-                NetconfUtil.writeNormalizedNode(configContent, metadata, new DOMResult(element), SchemaPath.ROOT, ctx);
+                // TODO do not transform this into result and then to xml, rework the whole pipeline to directly write
+                // into xml
+
+                final var parentPath = dataPath.isEmpty() ? dataPath : dataPath.coerceParent();
+                var result = new NormalizedNodeResult();
+                try (var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result)) {
+                    try (var iidWriter = YangInstanceIdentifierWriter.open(streamWriter, ctx, parentPath);
+                         var nnWriter = NormalizedNodeWriter.forStreamWriter(streamWriter)) {
+                        nnWriter.write(lastChildOverride.get());
+                    }
+                }
+                NetconfUtil.writeNormalizedNode(result.getResult(), metadata, new DOMResult(element),
+                        SchemaPath.ROOT, ctx);
             } else {
                 NetconfUtil.writeNormalizedNode(dataPath, metadata, new DOMResult(element), SchemaPath.ROOT, ctx);
             }
@@ -527,7 +539,7 @@ public final class NetconfMessageTransformUtil {
                 throws IOException, XMLStreamException {
         final QName inputQName = YangConstants.operationInputQName(operationPath.lastNodeIdentifier().getModule());
         // FIXME: eliminate this conversion
-        final SchemaPath inputPath = operationPath.asSchemaPath().createChild(inputQName);
+        final SchemaPath inputPath = SchemaPath.of(operationPath).createChild(inputQName);
 
         final XMLStreamWriter writer = NetconfUtil.XML_FACTORY.createXMLStreamWriter(result);
         try {