Clean up netconf-client-mdsal warnings 79/110079/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 29 Jan 2024 15:57:07 +0000 (16:57 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 29 Jan 2024 15:57:07 +0000 (16:57 +0100)
The bump to mdsal-13 is causing a large number of warnings, start fixing
them up.

Change-Id: I0dde1197b9ed0026b0e7de3177b6d0411ff15a53
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
22 files changed:
plugins/netconf-client-mdsal/pom.xml
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/LibraryModulesSchemas.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/MonitoringSchemaSourceProvider.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/NetconfDevice.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/NetconfStateSchemas.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/impl/NetconfBaseOps.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/impl/NetconfMessageTransformUtil.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/impl/NetconfMessageTransformer.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/impl/SchemalessMessageTransformer.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/impl/SchemalessRpcStructureTransformer.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/MonitoringSchemaSourceProviderTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/NetconfToRpcRequestTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/impl/BaseRpcSchemalessTransformerTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/impl/NetconfBaseOpsTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/impl/NetconfMessageTransformerTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/impl/SchemalessRpcStructureTransformerTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/spi/KeepaliveSalFacadeResponseWaitingTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/spi/KeepaliveSalFacadeTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/spi/NetconfDeviceRpcTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/spi/NetconfDeviceWriteOnlyTxTest.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/spi/TxTestUtils.java
plugins/netconf-client-mdsal/src/test/java/org/opendaylight/netconf/client/mdsal/spi/WriteCandidateRunningTxTest.java

index 19207ecc2057ec9c3d56bcfe81abb0826a930169..7f2e04ca3e58b4f091a3f73eab9fcb4d58c6c6a2 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-impl</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-data-spi</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-util</artifactId>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+            <artifactId>rfc6991-ietf-yang-types</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc8525</artifactId>
index 091e2ab63e9ff8a6167dcdaf6728649ba3b1b33d..7c6c7b898a838a75bb9df9330ecc1e30fb52ca9f 100644 (file)
@@ -67,9 +67,9 @@ import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactory;
 import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
 import org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
@@ -111,7 +111,7 @@ public final class LibraryModulesSchemas implements NetconfDeviceSchemas {
     private static final YangInstanceIdentifier MODULES_STATE_MODULE_LIST =
             YangInstanceIdentifier.of(MODULES_STATE_NID, MODULE_NID);
 
-    private static final @NonNull ContainerNode GET_MODULES_STATE_MODULE_LIST_RPC = Builders.containerBuilder()
+    private static final @NonNull ContainerNode GET_MODULES_STATE_MODULE_LIST_RPC = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_GET_NODEID)
             .withChild(NetconfMessageTransformUtil.toFilterStructure(MODULES_STATE_MODULE_LIST, LIBRARY_CONTEXT))
             .build();
index a20df879ed5b84c9d8e317a2de748c3f519af25f..69340c5bbbccc84bae931f877c87a6458f24eb68 100644 (file)
@@ -28,8 +28,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 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.LeafNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
@@ -51,8 +50,7 @@ public final class MonitoringSchemaSourceProvider implements SchemaSourceProvide
             NodeIdentifier.create(QName.create(GetSchema.QNAME, "identifier").intern());
     private static final NodeIdentifier VERSION_PATHARG =
             NodeIdentifier.create(QName.create(GetSchema.QNAME, "version").intern());
-    private static final LeafNode<?> FORMAT_LEAF =
-            Builders.leafBuilder().withNodeIdentifier(FORMAT_PATHARG).withValue(Yang.QNAME).build();
+    private static final LeafNode<?> FORMAT_LEAF = ImmutableNodes.leafNode(FORMAT_PATHARG, Yang.QNAME);
     private static final NodeIdentifier NETCONF_DATA_PATHARG = NodeIdentifier.create(Data.QNAME);
 
     private final DOMRpcService rpc;
@@ -65,7 +63,7 @@ public final class MonitoringSchemaSourceProvider implements SchemaSourceProvide
 
     public static @NonNull ContainerNode createGetSchemaRequest(final String moduleName,
             final Optional<String> revision) {
-        final var builder = Builders.containerBuilder()
+        final var builder = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(GET_SCHEMA_PATHARG)
             .withChild(ImmutableNodes.leafNode(IDENTIFIER_PATHARG, moduleName))
             .withChild(FORMAT_LEAF);
index 1e3ca9148befb53663b3abbe0536b9e0f667ff1f..124eb16b7614ccddcff5da282e3395949eb9d23b 100644 (file)
@@ -67,7 +67,6 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
@@ -189,7 +188,7 @@ public class NetconfDevice implements RemoteDevice<NetconfDeviceCommunicator> {
         // Perhaps add a default schema context to support create-subscription if the model was not provided
         // (same as what we do for base netconf operations in transformer)
         final var rpcResultListenableFuture = deviceRpc.domRpcService()
-            .invokeRpc(CreateSubscription.QNAME, Builders.containerBuilder()
+            .invokeRpc(CreateSubscription.QNAME, ImmutableNodes.newContainerBuilder()
                 .withNodeIdentifier(NodeIdentifier.create(CreateSubscriptionInput.QNAME))
                 // Note: default 'stream' is 'NETCONF', we do not need to create an explicit leaf
                 .build());
index 86f61a016f3a00ae7dee58da33168538d2a0c095..97703a79c1a4e0bc855f3e838ca5e958355cc888 100644 (file)
@@ -54,7 +54,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,9 +90,9 @@ public final class NetconfStateSchemas implements NetconfDeviceSchemas {
             Schemas.QNAME.getLocalName()));
         filterElem.appendChild(stateElem);
 
-        GET_SCHEMAS_RPC = Builders.containerBuilder()
+        GET_SCHEMAS_RPC = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(new NodeIdentifier(GetInput.QNAME))
-            .withChild(Builders.anyXmlBuilder()
+            .withChild(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
                 .withNodeIdentifier(new NodeIdentifier(Filter.QNAME))
                 .withValue(new DOMSource(filterElem))
                 .build())
index 1d0483adc2b08eceb443133eabf929469b336097..2be4bd7b7d8d82de02dd371b1f99330313efd324 100644 (file)
@@ -63,8 +63,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
 /**
  * Provides base operations for NETCONF e.g. {@code get}, {@code get-config}, {@code edit-config}, {@code commit} etc.
@@ -355,7 +354,7 @@ public final class NetconfBaseOps {
 
     public ChoiceNode createEditConfigStructure(final Optional<NormalizedNode> lastChild,
             final Optional<EffectiveOperation> operation, final YangInstanceIdentifier dataPath) {
-        return Builders.choiceBuilder()
+        return ImmutableNodes.newChoiceBuilder()
             .withNodeIdentifier(EDIT_CONTENT_NODEID)
             .withChild(transformer.createEditConfigStructure(lastChild, dataPath, operation))
             .build();
@@ -364,7 +363,7 @@ public final class NetconfBaseOps {
     private static ContainerNode getEditConfigContent(final NodeIdentifier datastore,
             final DataContainerChild editStructure, final Optional<EffectiveOperation> defaultOperation,
             final boolean rollback) {
-        final var editBuilder = Builders.containerBuilder()
+        final var editBuilder = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_EDIT_CONFIG_NODEID)
             // Target
             .withChild(getTargetNode(datastore));
@@ -384,9 +383,9 @@ public final class NetconfBaseOps {
     }
 
     public static @NonNull ContainerNode getSourceNode(final NodeIdentifier datastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_SOURCE_NODEID)
-            .withChild(Builders.choiceBuilder()
+            .withChild(ImmutableNodes.newChoiceBuilder()
                 .withNodeIdentifier(CONFIG_SOURCE_NODEID)
                 .withChild(ImmutableNodes.leafNode(datastore, Empty.value()))
                 .build())
@@ -394,16 +393,16 @@ public final class NetconfBaseOps {
     }
 
     public static @NonNull ContainerNode getLockContent(final NodeIdentifier datastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_LOCK_NODEID)
             .withChild(getTargetNode(datastore))
             .build();
     }
 
     public static @NonNull ContainerNode getTargetNode(final NodeIdentifier datastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_TARGET_NODEID)
-            .withChild(Builders.choiceBuilder()
+            .withChild(ImmutableNodes.newChoiceBuilder()
                 .withNodeIdentifier(CONFIG_TARGET_NODEID)
                 .withChild(ImmutableNodes.leafNode(datastore, Empty.value()))
                 .build())
@@ -412,7 +411,7 @@ public final class NetconfBaseOps {
 
     public static @NonNull ContainerNode getCopyConfigContent(final NodeIdentifier sourceDatastore,
             final NodeIdentifier targetDatastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_COPY_CONFIG_NODEID)
             .withChild(getTargetNode(targetDatastore))
             .withChild(getSourceNode(sourceDatastore))
@@ -420,14 +419,14 @@ public final class NetconfBaseOps {
     }
 
     public static @NonNull ContainerNode getValidateContent(final NodeIdentifier sourceDatastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_VALIDATE_NODEID)
             .withChild(getSourceNode(sourceDatastore))
             .build();
     }
 
     public static @NonNull ContainerNode getUnLockContent(final NodeIdentifier datastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_UNLOCK_NODEID)
             .withChild(getTargetNode(datastore))
             .build();
index 5e61f2f88da6a90068d21d0ff155785668d941f2..68c2982342640e24ce71fa5c547fed7b3e94bfe2 100644 (file)
@@ -70,11 +70,11 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre
 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.ImmutableNormalizedMetadata;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
 import org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedNodeWriter;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContext;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.PathMixin;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
@@ -139,15 +139,15 @@ public final class NetconfMessageTransformUtil {
     public static final @NonNull NodeIdentifier EDIT_CONTENT_NODEID = NodeIdentifier.create(EditContent.QNAME);
 
     // Discard changes message
-    public static final @NonNull ContainerNode DISCARD_CHANGES_RPC_CONTENT = Builders.containerBuilder()
+    public static final @NonNull ContainerNode DISCARD_CHANGES_RPC_CONTENT = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NodeIdentifier.create(DiscardChangesInput.QNAME)).build();
 
     // Commit changes message
-    public static final @NonNull ContainerNode COMMIT_RPC_CONTENT = Builders.containerBuilder()
+    public static final @NonNull ContainerNode COMMIT_RPC_CONTENT = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NodeIdentifier.create(CommitInput.QNAME)).build();
 
     // Get message
-    public static final @NonNull ContainerNode GET_RPC_CONTENT = Builders.containerBuilder()
+    public static final @NonNull ContainerNode GET_RPC_CONTENT = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NETCONF_GET_NODEID).build();
 
     public static final @NonNull AnyxmlNode<?> EMPTY_FILTER = buildFilterStructure(newFilterElement());
@@ -206,7 +206,7 @@ public final class NetconfMessageTransformUtil {
     }
 
     private static AnyxmlNode<?> buildFilterStructure(final Element element) {
-        return Builders.anyXmlBuilder()
+        return ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
             .withNodeIdentifier(new NodeIdentifier(Filter.QNAME))
             .withValue(new DOMSource(element))
             .build();
@@ -236,7 +236,10 @@ public final class NetconfMessageTransformUtil {
     }
 
     public static @NonNull ContainerNode wrap(final NodeIdentifier name, final DataContainerChild... node) {
-        return Builders.containerBuilder().withNodeIdentifier(name).withValue(ImmutableList.copyOf(node)).build();
+        return ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(name)
+            .withValue(ImmutableList.copyOf(node))
+            .build();
     }
 
     /**
@@ -283,8 +286,10 @@ public final class NetconfMessageTransformUtil {
             throw new IllegalStateException("Unable to serialize edit config content element for path " + dataPath, e);
         }
 
-        return Builders.anyXmlBuilder().withNodeIdentifier(NETCONF_CONFIG_NODEID).withValue(new DOMSource(element))
-                .build();
+        return ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
+            .withNodeIdentifier(NETCONF_CONFIG_NODEID)
+            .withValue(new DOMSource(element))
+            .build();
     }
 
     private static NormalizedMetadata leafMetadata(final YangInstanceIdentifier path, final EffectiveOperation oper) {
@@ -322,8 +327,10 @@ public final class NetconfMessageTransformUtil {
     public static DataContainerChild createEditConfigStructure(final EffectiveModelContext ctx,
             final YangInstanceIdentifier dataPath, final Optional<EffectiveOperation> operation,
             final Optional<NormalizedNode> lastChildOverride) {
-        return Builders.choiceBuilder().withNodeIdentifier(EDIT_CONTENT_NODEID)
-                .withChild(createEditConfigAnyxml(ctx, dataPath, operation, lastChildOverride)).build();
+        return ImmutableNodes.newChoiceBuilder()
+            .withNodeIdentifier(EDIT_CONTENT_NODEID)
+            .withChild(createEditConfigAnyxml(ctx, dataPath, operation, lastChildOverride))
+            .build();
     }
 
     public static @NonNull Absolute toPath(final QName rpc) {
index 51476e82c1de489236dc80fa5d00b2a05f4a52ae..a09d4443bc4cc183026a2b2fa0f642917dbe1148 100644 (file)
@@ -70,9 +70,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 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.codec.xml.XmlParserStream;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
 import org.opendaylight.yangtools.yang.model.api.ActionNodeContainer;
@@ -404,13 +404,13 @@ public class NetconfMessageTransformer
         final var message = resultPayload.getResult();
         final ContainerNode normalizedNode;
         if (NetconfMessageTransformUtil.isDataRetrievalOperation(rpc)) {
-            normalizedNode = Builders.containerBuilder()
-                    .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_RPC_REPLY_NODEID)
-                    .withChild(Builders.anyXmlBuilder()
-                        .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_DATA_NODEID)
-                        .withValue(new DOMSource(NetconfMessageTransformUtil.getDataSubtree(message.getDocument())))
-                        .build())
-                    .build();
+            normalizedNode = ImmutableNodes.newContainerBuilder()
+                .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_RPC_REPLY_NODEID)
+                .withChild(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
+                    .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_DATA_NODEID)
+                    .withValue(new DOMSource(NetconfMessageTransformUtil.getDataSubtree(message.getDocument())))
+                    .build())
+                .build();
         } else {
             // Determine whether a base netconf operation is being invoked
             // and also check if the device exposed model for base netconf.
index b5aae3bdd22d0875cdc61e35f146d9db91c01430..5f835ffc7df81be3b9fbb6e6b689049ae79eb77f 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.netconf.client.mdsal.api.RpcTransformer;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -49,9 +49,9 @@ public class SchemalessMessageTransformer implements NotificationTransformer, Rp
                     + message + ", cannot find namespace", e);
         }
 
-        return new NetconfMessageTransformer.NetconfDeviceNotification(Builders.containerBuilder()
+        return new NetconfMessageTransformer.NetconfDeviceNotification(ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(SCHEMALESS_NOTIFICATION_PAYLOAD)
-            .withChild(Builders.anyXmlBuilder()
+            .withChild(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
                 .withNodeIdentifier(new NodeIdentifier(notificationNoRev))
                 .withValue(new DOMSource(stripped.getValue().getDomElement()))
                 .build())
index 8ad942e2b59d942d578b38773cef4ed156b7d786..81154abb41d04f1dd08153cbd28edead4c54162c 100644 (file)
@@ -30,7 +30,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode;
 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.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -60,7 +60,7 @@ class SchemalessRpcStructureTransformer implements RpcStructureTransformer {
         for (var xmlElement : selectMatchingNodes(getSourceElement(anyxml.body()), path)) {
             dataElement.appendChild(result.importNode(xmlElement.getDomElement(), true));
         }
-        return Optional.of(Builders.anyXmlBuilder()
+        return Optional.of(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
             .withNodeIdentifier(NETCONF_DATA_NODEID)
             .withValue(new DOMSource(result))
             .build());
@@ -102,7 +102,7 @@ class SchemalessRpcStructureTransformer implements RpcStructureTransformer {
         operation.ifPresent(modifyAction -> setOperationAttribute(modifyAction, document, dataNode));
         //append data
         parentXmlStructure.appendChild(document.importNode(dataNode, true));
-        return Builders.anyXmlBuilder()
+        return ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
             .withNodeIdentifier(NETCONF_CONFIG_NODEID)
             .withValue(new DOMSource(document.getDocumentElement()))
             .build();
@@ -139,7 +139,7 @@ class SchemalessRpcStructureTransformer implements RpcStructureTransformer {
     }
 
     private static AnyxmlNode<?> buildFilterXmlNode(final Document document) {
-        return Builders.anyXmlBuilder()
+        return ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
             .withNodeIdentifier(new NodeIdentifier(Filter.QNAME))
             .withValue(new DOMSource(document.getDocumentElement()))
             .build();
index 3b0f632a6db5925423202afd018bb8e72520f812..966e79fe0066dcaef40e081c933e6563370c9f09 100644 (file)
@@ -33,7 +33,7 @@ import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
 import org.w3c.dom.Document;
@@ -75,9 +75,9 @@ public class MonitoringSchemaSourceProviderTest {
         Document xmlDoc = UntrustedXML.newDocumentBuilder().newDocument();
         Element root = xmlDoc.createElement("data");
         root.setTextContent("module test {}");
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(id)
-            .withChild(Builders.anyXmlBuilder()
+            .withChild(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
                 .withNodeIdentifier(childId)
                 .withValue(new DOMSource(root))
                 .build())
index c87c15f69b37a9f84111f2111baa718ae3ef6c1b..a2f89b82aafafc482d161397b3a28476f4998440 100644 (file)
@@ -24,8 +24,7 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
@@ -66,7 +65,7 @@ public class NetconfToRpcRequestTest extends AbstractBaseSchemasTest {
 
     @Test
     public void testUserDefinedRpcCall() throws Exception {
-        final ContainerNode root = Builders.containerBuilder()
+        final ContainerNode root = ImmutableNodes.newContainerBuilder()
                 .withNodeIdentifier(toId(SUBSCRIBE_RPC_NAME))
                 .withChild(ImmutableNodes.leafNode(STREAM_NAME, "NETCONF"))
                 .build();
index 2d127180ed036cdba2091bbbf92a144e1ebf503c..bdcd255c77fc080715689e774c42bf53c6effed1 100644 (file)
@@ -25,8 +25,7 @@ import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.w3c.dom.Element;
 import org.xmlunit.builder.DiffBuilder;
 
@@ -37,11 +36,11 @@ public class BaseRpcSchemalessTransformerTest extends AbstractBaseSchemasTest {
     @Test
     public void toRpcRequest() throws Exception {
         final var msg = transformer.toRpcRequest(EditConfig.QNAME,
-            Builders.containerBuilder()
+            ImmutableNodes.newContainerBuilder()
                 .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_EDIT_CONFIG_NODEID)
-                .withChild(Builders.choiceBuilder()
+                .withChild(ImmutableNodes.newChoiceBuilder()
                     .withNodeIdentifier(new NodeIdentifier(EditContent.QNAME))
-                    .withChild(Builders.anyXmlBuilder()
+                    .withChild(ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
                         .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_CONFIG_NODEID)
                         .withValue(new DOMSource(XmlUtil.readXmlToDocument(
                             BaseRpcSchemalessTransformerTest.class.getResourceAsStream(
@@ -49,9 +48,9 @@ public class BaseRpcSchemalessTransformerTest extends AbstractBaseSchemasTest {
                             .getDocumentElement()))
                         .build())
                     .build())
-                .withChild(Builders.containerBuilder()
+                .withChild(ImmutableNodes.newContainerBuilder()
                     .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_TARGET_NODEID)
-                    .withChild(Builders.choiceBuilder()
+                    .withChild(ImmutableNodes.newChoiceBuilder()
                         .withNodeIdentifier(new NodeIdentifier(ConfigTarget.QNAME))
                         .withChild(ImmutableNodes.leafNode(Candidate.QNAME, Empty.value()))
                         .build())
index 0a9ab8412da930d9b8f0fd2bb8efbd04a0246abd..fdf2c3bb0a515731f08236fd447b6218154ff385 100644 (file)
@@ -56,7 +56,7 @@ import org.opendaylight.yangtools.yang.common.XMLNamespace;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
index df1398fcb51f50edbbfa9375cec2a341cb86cb5b..cb432a8e3d19ab02008644ecaea069bcd8724d9c 100644 (file)
@@ -78,8 +78,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
@@ -210,7 +209,7 @@ public class NetconfMessageTransformerTest extends AbstractBaseSchemasTest {
     public void testCreateSubscriberNotificationSchemaNotPresent() throws Exception {
         final var transformer = new NetconfMessageTransformer(MountPointContext.of(SCHEMA), true,
             BASE_SCHEMAS.baseSchemaWithNotifications());
-        var netconfMessage = transformer.toRpcRequest(CreateSubscription.QNAME, Builders.containerBuilder()
+        var netconfMessage = transformer.toRpcRequest(CreateSubscription.QNAME, ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(new NodeIdentifier(CreateSubscriptionInput.QNAME))
             .build());
         assertEquals("""
@@ -327,7 +326,7 @@ public class NetconfMessageTransformerTest extends AbstractBaseSchemasTest {
             keys.put(value.name().getNodeType(), value.body());
         }
 
-        final var schemaNode = Builders.mapEntryBuilder()
+        final var schemaNode = ImmutableNodes.newMapEntryBuilder()
             .withNodeIdentifier(NodeIdentifierWithPredicates.of(Schema.QNAME, keys))
             .withValue(values)
             .build();
@@ -412,7 +411,7 @@ public class NetconfMessageTransformerTest extends AbstractBaseSchemasTest {
             keys.put(value.name().getNodeType(), value.body());
         }
 
-        final var schemaNode = Builders.mapEntryBuilder()
+        final var schemaNode = ImmutableNodes.newMapEntryBuilder()
             .withNodeIdentifier(NodeIdentifierWithPredicates.of(Schema.QNAME, keys))
             .withValue(values)
             .build();
@@ -719,7 +718,7 @@ public class NetconfMessageTransformerTest extends AbstractBaseSchemasTest {
 
         DOMDataTreeIdentifier domDataTreeIdentifier = prepareDataTreeId(nodeIdentifiers);
 
-        ContainerNode payload = Builders.containerBuilder()
+        ContainerNode payload = ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NodeIdentifier.create(QName.create(barInputQname, "input")))
             .withChild(ImmutableNodes.leafNode(barInputQname, barInput))
             .build();
@@ -1179,14 +1178,14 @@ public class NetconfMessageTransformerTest extends AbstractBaseSchemasTest {
     }
 
     private static ContainerNode initInputAction(final QName qname, final String value) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NodeIdentifier.create(QName.create(qname, "input")))
             .withChild(ImmutableNodes.leafNode(qname, value))
             .build();
     }
 
     private static ContainerNode initEmptyInputAction(final QName qname) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NodeIdentifier.create(QName.create(qname, "input")))
             .build();
     }
index a2ceb77bcc7d280ab043189e0c2cace1d680483e..b17e132d9df4ee392cc73cd2f53f429a12c21cc8 100644 (file)
@@ -31,7 +31,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 import org.xmlunit.builder.DiffBuilder;
@@ -95,7 +95,7 @@ public class SchemalessRpcStructureTransformerTest {
 
     @Test
     public void testCreateEditConfigStructure() throws Exception {
-        final var data = Builders.anyXmlBuilder()
+        final var data = ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
                 .withNodeIdentifier(createNodeId(path.getLastPathArgument().getNodeType().getLocalName()))
                 .withValue(source)
                 .build();
@@ -129,7 +129,7 @@ public class SchemalessRpcStructureTransformerTest {
 
     @Test
     public void testSelectFromDataStructure() throws Exception {
-        final var data = Builders.anyXmlBuilder()
+        final var data = ImmutableNodes.newAnyxmlBuilder(DOMSource.class)
                 .withNodeIdentifier(createNodeId(path.getLastPathArgument().getNodeType().getLocalName()))
                 .withValue(new DOMSource(XmlUtil.readXmlToDocument(getConfigData).getDocumentElement()))
                 .build();
index a73e74b0dfca98ec8a377d060b8593af892f9d84..b7517567bce26913c4715e9ace45937724b572fc 100644 (file)
@@ -37,7 +37,7 @@ import org.opendaylight.netconf.client.mdsal.impl.NetconfMessageTransformUtil;
 import org.opendaylight.netconf.common.impl.DefaultNetconfTimer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.GetConfig;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
 @ExtendWith(MockitoExtension.class)
 class KeepaliveSalFacadeResponseWaitingTest {
@@ -86,7 +86,7 @@ class KeepaliveSalFacadeResponseWaitingTest {
 
         //This settable future will be used to check the invokation of keepalive RPC. Should be never invoked.
         final var keepaliveSettableFuture = SettableFuture.<DOMRpcResult>create();
-        keepaliveSettableFuture.set(new DefaultDOMRpcResult(Builders.containerBuilder()
+        keepaliveSettableFuture.set(new DefaultDOMRpcResult(ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_RUNNING_NODEID)
             .build()));
 
index 25e88c05a70abbe083ef3943beb4ab43ae2d0b79..be1849e5f2b6b9f9cd8c8e37e559879361c939a5 100644 (file)
@@ -40,7 +40,7 @@ import org.opendaylight.netconf.common.impl.DefaultNetconfTimer;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
 @ExtendWith(MockitoExtension.class)
 class KeepaliveSalFacadeTest {
@@ -76,7 +76,7 @@ class KeepaliveSalFacadeTest {
     @Test
     void testKeepaliveSuccess() throws Exception {
         doNothing().when(underlyingSalFacade).onDeviceConnected(isNull(), isNull(), any());
-        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult(Builders.containerBuilder()
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult(ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(NetconfMessageTransformUtil.NETCONF_RUNNING_NODEID)
             .build()))).when(deviceRpc).invokeNetconf(any(), any());
 
index 70d1e8ce71b7998c8273ba9bdb249f830cda4b2e..6810854c44e70972238966f44bb4cf517b02d1e0 100644 (file)
@@ -48,7 +48,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 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.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.w3c.dom.Node;
@@ -143,7 +143,8 @@ public class NetconfDeviceRpcTest extends AbstractBaseSchemasTest {
     }
 
     private static ContainerNode createNode(final String namespace, final String date, final String localName) {
-        return Builders.containerBuilder().withNodeIdentifier(
-                new NodeIdentifier(QName.create(namespace, date, localName))).build();
+        return ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(QName.create(namespace, date, localName)))
+            .build();
     }
 }
index f92bd41906f6a87976c6164fcf48f68fe5cbbb46..2b95082f6ac5e81cc5913be380ca0e4967d15b21 100644 (file)
@@ -51,7 +51,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class NetconfDeviceWriteOnlyTxTest extends AbstractBaseSchemasTest {
@@ -73,7 +73,9 @@ public class NetconfDeviceWriteOnlyTxTest extends AbstractBaseSchemasTest {
         final var tx = new WriteCandidateTx(ID, new NetconfBaseOps(rpc, mock(MountPointContext.class)), false, true);
         tx.init();
 
-        final var emptyList = ImmutableNodes.mapNodeBuilder(new NodeIdentifier(Filter.QNAME)).build();
+        final var emptyList = ImmutableNodes.newSystemMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(Filter.QNAME))
+            .build();
         tx.merge(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.of(Filter.QNAME), emptyList);
         tx.put(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.of(Filter.QNAME), emptyList);
 
index 4def7eb92e568a14a47ae74ee7b1206da74483a1..cff11e56e881b120d7b703f6a295809aad25cb20 100644 (file)
@@ -9,9 +9,10 @@ package org.opendaylight.netconf.client.mdsal.spi;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
 public final class TxTestUtils {
     private static final QName Q_NAME_1 = QName.create("test:namespace", "2013-07-22", "c");
@@ -30,7 +31,7 @@ public final class TxTestUtils {
     }
 
     static ContainerNode getContainerNode() {
-        return ImmutableNodes.containerNode(Q_NAME_1);
+        return ImmutableNodes.newContainerBuilder().withNodeIdentifier(new NodeIdentifier(Q_NAME_1)).build();
     }
 
     public static LeafNode<String> getLeafNode() {
index 0b6cc592f06d9c2b658a25bd6fe08c7f994721de..4e82a32887fb9c4c9487dcc8b8b044b418d51bf1 100644 (file)
@@ -39,8 +39,7 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class WriteCandidateRunningTxTest extends AbstractTestModelTest {
@@ -84,11 +83,11 @@ public class WriteCandidateRunningTxTest extends AbstractTestModelTest {
     }
 
     private static ContainerNode getLockContent(final QName op, final NodeIdentifier datastore) {
-        return Builders.containerBuilder()
+        return ImmutableNodes.newContainerBuilder()
             .withNodeIdentifier(toId(op))
-            .withChild(Builders.containerBuilder()
+            .withChild(ImmutableNodes.newContainerBuilder()
                 .withNodeIdentifier(NETCONF_TARGET_NODEID)
-                .withChild(Builders.choiceBuilder()
+                .withChild(ImmutableNodes.newChoiceBuilder()
                     .withNodeIdentifier(toId(ConfigTarget.QNAME))
                     .withChild(ImmutableNodes.leafNode(datastore, Empty.value()))
                     .build())