Migrate users of Builders/ImmutableNodes
[mdsal.git] / replicate / mdsal-replicate-netty / src / main / java / org / opendaylight / mdsal / replicate / netty / SinkRequestHandler.java
index 0b65bc16eeeb9a10ac18256eb2df7cbaa9e60707..8dd28d03b4b0a3d62e2b2e2b4319be445a52718f 100644 (file)
@@ -28,20 +28,23 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.replicate.common.DataTreeCandidateUtils;
 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.stream.ReusableStreamReceiver;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.data.codec.binfmt.DataTreeCandidateInputOutput;
 import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.ReusableImmutableNormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
+import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 final class SinkRequestHandler extends SimpleChannelInboundHandler<ByteBuf> {
     private static final Logger LOG = LoggerFactory.getLogger(SinkRequestHandler.class);
-    private static final ContainerNode EMPTY_ROOT = ImmutableNodes.containerNode(SchemaContext.NAME);
+    private static final ContainerNode EMPTY_ROOT = ImmutableNodes.newContainerBuilder()
+        .withNodeIdentifier(NodeIdentifier.create(SchemaContext.NAME))
+        .build();
 
     private final ReusableStreamReceiver receiver = ReusableImmutableNormalizedNodeStreamWriter.create();
     private final List<ByteBuf> chunks = new ArrayList<>();
@@ -61,27 +64,24 @@ final class SinkRequestHandler extends SimpleChannelInboundHandler<ByteBuf> {
         final Channel channel = ctx.channel();
         LOG.trace("Channel {} received message type {}", channel, msgType);
         switch (msgType) {
-            case Constants.MSG_EMPTY_DATA:
-                handleEmptyData();
-                break;
-            case Constants.MSG_DTC_CHUNK:
-                chunks.add(msg.retain());
-                break;
-            case Constants.MSG_DTC_APPLY:
-                handleDtcApply();
-                break;
-            default:
-                throw new IllegalStateException("Unexpected message type " + msgType);
+            case Constants.MSG_EMPTY_DATA -> handleEmptyData();
+            case Constants.MSG_DTC_CHUNK -> chunks.add(msg.retain());
+            case Constants.MSG_DTC_APPLY -> handleDtcApply();
+            case Constants.MSG_PING -> {
+                LOG.trace("Received PING from Source, sending PONG");
+                ctx.channel().writeAndFlush(Constants.PONG);
+            }
+            default -> throw new IllegalStateException("Unexpected message type " + msgType);
         }
     }
 
     private void handleEmptyData() {
-        final DOMDataTreeWriteTransaction tx = chain.newWriteOnlyTransaction();
+        final var tx = chain.newWriteOnlyTransaction();
 
-        if (tree.getRootIdentifier().isEmpty()) {
-            tx.put(tree.getDatastoreType(), YangInstanceIdentifier.empty(), EMPTY_ROOT);
+        if (tree.path().isEmpty()) {
+            tx.put(tree.datastore(), YangInstanceIdentifier.of(), EMPTY_ROOT);
         } else {
-            tx.delete(tree.getDatastoreType(), tree.getRootIdentifier());
+            tx.delete(tree.datastore(), tree.path());
         }
         commit(tx);
     }
@@ -99,7 +99,7 @@ final class SinkRequestHandler extends SimpleChannelInboundHandler<ByteBuf> {
         }
 
         final DOMDataTreeWriteTransaction tx = chain.newWriteOnlyTransaction();
-        DataTreeCandidateUtils.applyToTransaction(tx, tree.getDatastoreType(), candidate);
+        DataTreeCandidateUtils.applyToTransaction(tx, tree.datastore(), candidate);
         commit(tx);
     }