Do not use FluentFuture in RestconfTransaction.commit() 90/107090/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 16:28:17 +0000 (18:28 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 21:15:38 +0000 (23:15 +0200)
Noone is transforming this future, use a ListenableFuture instead.

Change-Id: Icb604d275b04c6a27b0cdcd4049926364cc5a198
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfTransaction.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfTransaction.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/RestconfTransaction.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/DeleteDataTransactionUtil.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PatchDataTransactionUtil.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PlainPatchDataTransactionUtil.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtil.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtil.java

index 35dbeb20d278733bc330890e4ac292974a6666d2..1da4a25aefcdf35ea3e109bde8e8275a0c5abccc 100644 (file)
@@ -11,7 +11,7 @@ import static com.google.common.base.Verify.verifyNotNull;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
 import static org.opendaylight.restconf.nb.rfc8040.rests.utils.PostDataTransactionUtil.checkItemDoesNotExists;
 
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
@@ -103,8 +103,7 @@ final class MdsalRestconfTransaction extends RestconfTransaction {
             // ... finally collect existence checks and abort the transaction if any of them failed.
             checkExistence(path, check);
         } else {
-            final FluentFuture<Boolean> isExists = verifyNotNull(rwTx).exists(CONFIGURATION, path);
-            checkItemDoesNotExists(isExists, path);
+            checkItemDoesNotExists(verifyNotNull(rwTx).exists(CONFIGURATION, path), path);
             TransactionUtil.ensureParentsByMerge(path, schemaContext, this);
             verifyNotNull(rwTx).put(CONFIGURATION, path, data);
         }
@@ -129,8 +128,8 @@ final class MdsalRestconfTransaction extends RestconfTransaction {
     }
 
     @Override
-    public FluentFuture<? extends @NonNull CommitInfo> commit() {
-        final FluentFuture<? extends @NonNull CommitInfo> ret = verifyNotNull(rwTx).commit();
+    public ListenableFuture<? extends @NonNull CommitInfo> commit() {
+        final var ret = verifyNotNull(rwTx).commit();
         rwTx = null;
         return ret;
     }
index e0103ac7aea82cfaac0e158c967cf2e451f0b14d..5b85b15133ef429ace87b5be7dcc56f453a4319f 100644 (file)
@@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -117,7 +116,7 @@ final class NetconfRestconfTransaction extends RestconfTransaction {
     }
 
     @Override
-    public FluentFuture<? extends @NonNull CommitInfo> commit() {
+    public ListenableFuture<? extends @NonNull CommitInfo> commit() {
         final SettableFuture<CommitInfo> commitResult = SettableFuture.create();
 
         // First complete all resultsFutures and merge them ...
@@ -172,7 +171,7 @@ final class NetconfRestconfTransaction extends RestconfTransaction {
             }
         }, MoreExecutors.directExecutor());
 
-        return FluentFuture.from(commitResult);
+        return commitResult;
     }
 
     private List<ListenableFuture<?>> discardAndUnlock() {
@@ -180,7 +179,7 @@ final class NetconfRestconfTransaction extends RestconfTransaction {
         if (isLocked) {
             return List.of(netconfService.discardChanges(), netconfService.unlock());
         } else {
-            return Collections.emptyList();
+            return List.of();
         }
     }
 
@@ -227,7 +226,7 @@ final class NetconfRestconfTransaction extends RestconfTransaction {
 
     // Transform list of futures related to RPC operation into a single Future
     private static ListenableFuture<DOMRpcResult> mergeFutures(
-        final List<ListenableFuture<? extends DOMRpcResult>> futures) {
+            final List<ListenableFuture<? extends DOMRpcResult>> futures) {
         return Futures.whenAllComplete(futures).call(() -> {
             if (futures.size() == 1) {
                 // Fast path
index a8b1ae295dc53c6b76061d3f6146effa9942023b..b4b242e590f6dadc29e358ddc8bfb1a258f29d1e 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.restconf.nb.rfc8040.rests.transactions;
 
 import com.google.common.annotations.Beta;
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -37,7 +37,7 @@ public abstract class RestconfTransaction {
      *
      * @return a FluentFuture containing the result of the commit information
      */
-    public abstract FluentFuture<? extends @NonNull CommitInfo> commit();
+    public abstract ListenableFuture<? extends @NonNull CommitInfo> commit();
 
     /**
      * Delete data from the datastore.
index 89dfb3acb81f5c53e401edcbb8a0ad8c253f318e..e109a5ad276bce7bf1d7ac001d8f15f02df16d56 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
-import com.google.common.util.concurrent.FluentFuture;
+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;
@@ -39,7 +39,7 @@ public final class DeleteDataTransactionUtil {
             transaction.cancel();
             throw e;
         }
-        final FluentFuture<? extends CommitInfo> future = transaction.commit();
+        final ListenableFuture<? extends CommitInfo> future = transaction.commit();
         final ResponseFactory response = new ResponseFactory(Status.NO_CONTENT);
         //This method will close transactionChain if any
         FutureCallbackTx.addCallback(future, "DELETE", response, path);
index 7667077d16e05baf69262d7f88ee4634eefea828..1929899e681b8480ce8bdc63ee62ce57ea93d923 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.List;
 import javax.ws.rs.core.Response.Status;
@@ -127,7 +127,7 @@ public final class PatchDataTransactionUtil {
         // if no errors then submit transaction, otherwise cancel
         if (noError) {
             final ResponseFactory response = new ResponseFactory(Status.OK);
-            final FluentFuture<? extends CommitInfo> future = transaction.commit();
+            final ListenableFuture<? extends CommitInfo> future = transaction.commit();
 
             try {
                 FutureCallbackTx.addCallback(future, PATCH_TX_TYPE, response, null);
index 20cf1bd677bdcdaf32d0c193ac52f76691f3f6c3..1792062464b30d9350c76190cf33529587967b9a 100644 (file)
@@ -8,7 +8,7 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
-import com.google.common.util.concurrent.FluentFuture;
+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;
@@ -59,7 +59,7 @@ public final class PlainPatchDataTransactionUtil {
             throw new IllegalArgumentException(e);
         }
 
-        final FluentFuture<? extends CommitInfo> future = transaction.commit();
+        final ListenableFuture<? extends CommitInfo> future = transaction.commit();
         final ResponseFactory response = new ResponseFactory(Status.OK);
 
         // closes transactionChain if any, may throw
index a9d5d3f9b367f52470bf481b4ad6680d8ff28220..e0626193b1002e6020039767ae3f67d7123653d0 100644 (file)
@@ -64,7 +64,7 @@ public final class PostDataTransactionUtil {
                                     final RestconfStrategy strategy,
                                     final EffectiveModelContext schemaContext, final WriteDataParams params) {
         final YangInstanceIdentifier path = payload.getInstanceIdentifierContext().getInstanceIdentifier();
-        final FluentFuture<? extends CommitInfo> future = submitData(path, payload.getData(),
+        final ListenableFuture<? extends CommitInfo> future = submitData(path, payload.getData(),
                 strategy, schemaContext, params);
         final URI location = resolveLocation(uriInfo, path, schemaContext, payload.getData());
         final ResponseFactory dataFactory = new ResponseFactory(Status.CREATED).location(location);
@@ -84,11 +84,9 @@ public final class PostDataTransactionUtil {
      * @param insert        query parameter
      * @return {@link FluentFuture}
      */
-    private static FluentFuture<? extends CommitInfo> submitData(final YangInstanceIdentifier path,
-                                                                 final NormalizedNode data,
-                                                                 final RestconfStrategy strategy,
-                                                                 final EffectiveModelContext schemaContext,
-                                                                 final WriteDataParams params) {
+    private static ListenableFuture<? extends CommitInfo> submitData(final YangInstanceIdentifier path,
+            final NormalizedNode data, final RestconfStrategy strategy, final EffectiveModelContext schemaContext,
+            final WriteDataParams params) {
         final RestconfTransaction transaction = strategy.prepareWriteExecution();
         final InsertParam insert = params.insert();
         if (insert == null) {
index b66392175e8cca0f5869e3508c5d0fbc7e538ac6..22c493600848527b77120874a8f3cc7ad27ec1b1 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.ExecutionException;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
@@ -72,7 +72,7 @@ public final class PutDataTransactionUtil {
 
         final ResponseFactory responseFactory =
             new ResponseFactory(exists ? Status.NO_CONTENT : Status.CREATED);
-        final FluentFuture<? extends CommitInfo> submitData = submitData(path, schemaContext, strategy,
+        final ListenableFuture<? extends CommitInfo> submitData = submitData(path, schemaContext, strategy,
             payload.getData(), params);
         //This method will close transactionChain if any
         FutureCallbackTx.addCallback(submitData, PUT_TX_TYPE, responseFactory, path);
@@ -87,13 +87,11 @@ public final class PutDataTransactionUtil {
      * @param strategy      object that perform the actual DS operations
      * @param data          data
      * @param params        {@link WriteDataParams}
-     * @return {@link FluentFuture}
+     * @return A {@link ListenableFuture}
      */
-    private static FluentFuture<? extends CommitInfo> submitData(final YangInstanceIdentifier path,
-                                                                 final EffectiveModelContext schemaContext,
-                                                                 final RestconfStrategy strategy,
-                                                                 final NormalizedNode data,
-                                                                 final WriteDataParams params) {
+    private static ListenableFuture<? extends CommitInfo> submitData(final YangInstanceIdentifier path,
+            final EffectiveModelContext schemaContext, final RestconfStrategy strategy, final NormalizedNode data,
+            final WriteDataParams params) {
         final RestconfTransaction transaction = strategy.prepareWriteExecution();
         final InsertParam insert = params.insert();
         if (insert == null) {
@@ -174,10 +172,9 @@ public final class PutDataTransactionUtil {
         }
     }
 
-    private static FluentFuture<? extends CommitInfo> makePut(final YangInstanceIdentifier path,
-                                                              final EffectiveModelContext schemaContext,
-                                                              final RestconfTransaction transaction,
-                                                              final NormalizedNode data) {
+    private static ListenableFuture<? extends CommitInfo> makePut(final YangInstanceIdentifier path,
+            final EffectiveModelContext schemaContext, final RestconfTransaction transaction,
+            final NormalizedNode data) {
         transaction.replace(path, data, schemaContext);
         return transaction.commit();
     }