Disconnect PlainPatchDataTransactionUtil from NormalizedNodePayload 02/107102/3
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 21:09:14 +0000 (23:09 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 21:32:40 +0000 (23:32 +0200)
We only require path and data here, there is no need to encapsulate this
in a legacy wrapper.

Change-Id: I1dcadfe0b7c985d5a357cbf112cb720cf883a65e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PlainPatchDataTransactionUtil.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PlainPatchDataTransactionUtilTest.java

index 7ea9cd7055e65d18bca297c78116dd6e95802fa8..7a4587c57307d0d6b0fcb3eee82a76847c631212 100644 (file)
@@ -302,12 +302,13 @@ public class RestconfDataServiceImpl implements RestconfDataService {
         requireNonNull(payload);
 
         final InstanceIdentifierContext iid = payload.getInstanceIdentifierContext();
+        final YangInstanceIdentifier path = iid.getInstanceIdentifier();
         validInputData(iid.getSchemaNode() != null, payload);
-        validTopLevelNodeName(iid.getInstanceIdentifier(), payload);
+        validTopLevelNodeName(path, payload);
         validateListKeysEqualityInPayloadAndUri(payload);
 
         final RestconfStrategy strategy = getRestconfStrategy(iid.getMountPoint());
-        return PlainPatchDataTransactionUtil.patchData(payload, strategy, iid.getSchemaContext());
+        return PlainPatchDataTransactionUtil.patchData(path, payload.getData(), strategy, iid.getSchemaContext());
     }
 
     @VisibleForTesting
index 1792062464b30d9350c76190cf33529587967b9a..8b4b372afa510111a371b96bf72865fce0dd48fc 100644 (file)
@@ -8,13 +8,10 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
-import com.google.common.util.concurrent.ListenableFuture;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
-import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
-import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -27,28 +24,25 @@ import org.slf4j.LoggerFactory;
  * Util class for plain patch data to DS.
  */
 public final class PlainPatchDataTransactionUtil {
-
     private static final Logger LOG = LoggerFactory.getLogger(PlainPatchDataTransactionUtil.class);
 
     private PlainPatchDataTransactionUtil() {
+        // Hidden on purpose
     }
 
     /**
      * Prepare variables for put data to DS. Close {@link DOMTransactionChain} if any inside of object
      * {@link RestconfStrategy} provided as a parameter if any.
      *
-     * @param payload       data to put
+     * @param path          data path
+     * @param data          data to put
      * @param schemaContext reference to {@link EffectiveModelContext}
      * @param strategy      object that perform the actual DS operations
      * @return {@link Response}
      */
-    public static Response patchData(final NormalizedNodePayload payload,
-                                     final RestconfStrategy strategy,
-                                     final EffectiveModelContext schemaContext) {
-
+    public static Response patchData(final YangInstanceIdentifier path, final NormalizedNode data,
+            final RestconfStrategy strategy, final EffectiveModelContext schemaContext) {
         final RestconfTransaction transaction = strategy.prepareWriteExecution();
-        YangInstanceIdentifier path = payload.getInstanceIdentifierContext().getInstanceIdentifier();
-        NormalizedNode data = payload.getData();
 
         try {
             LOG.trace("Merge CONFIGURATION within Restconf Patch: {} with payload {}", path, data);
@@ -59,7 +53,7 @@ public final class PlainPatchDataTransactionUtil {
             throw new IllegalArgumentException(e);
         }
 
-        final ListenableFuture<? extends CommitInfo> future = transaction.commit();
+        final var future = transaction.commit();
         final ResponseFactory response = new ResponseFactory(Status.OK);
 
         // closes transactionChain if any, may throw
index 398cc2b7af07449395c5a8818e729c3e97c4775f..af686eecb5e334ac7760509b89b173f217ae7d59 100644 (file)
@@ -27,9 +27,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
-import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.nb.rfc8040.AbstractJukeboxTest;
-import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -105,62 +103,55 @@ public class PlainPatchDataTransactionUtilTest extends AbstractJukeboxTest {
 
     @Test
     public void testPatchContainerData() {
-        final InstanceIdentifierContext iidContext =
-                InstanceIdentifierContext.ofLocalPath(JUKEBOX_SCHEMA, iidJukebox);
-        final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, jukeboxContainerWithPlayer);
-
         doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).merge(any(), any(),any(),
                 any());
 
-        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
-        verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION,
-                payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
+        PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlayer,
+            new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
+        verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlayer);
 
-        PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
-        verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION,
-                payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty());
+        PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlayer,
+            new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
+        verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlayer,
+            Optional.empty());
     }
 
     @Test
     public void testPatchLeafData() {
-        final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(JUKEBOX_SCHEMA, iidGap);
-        final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, leafGap);
-
         doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService)
             .merge(any(), any(), any(), any());
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
 
-        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
-        verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION,
-                payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
+        PlainPatchDataTransactionUtil.patchData(iidGap, leafGap, new MdsalRestconfStrategy(mockDataBroker),
+            JUKEBOX_SCHEMA);
+        verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidGap, leafGap);
 
-        PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
+        PlainPatchDataTransactionUtil.patchData(iidGap, leafGap, new NetconfRestconfStrategy(netconfService),
+            JUKEBOX_SCHEMA);
         verify(netconfService).lock();
-        verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION,
-                payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty());
+        verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidGap, leafGap, Optional.empty());
     }
 
     @Test
     public void testPatchListData() {
-        final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(JUKEBOX_SCHEMA, iidJukebox);
-        final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, jukeboxContainerWithPlaylist);
-
         doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService)
             .merge(any(), any(),any(),any());
 
-        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
-        verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, payload.getData());
+        PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlaylist,
+            new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
+        verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlaylist);
 
-        PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
-        verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, payload.getData(),
-                Optional.empty());
+        PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlaylist,
+            new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
+        verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlaylist,
+            Optional.empty());
     }
 }