Do not use FluentFuture in RestconfStrategy 84/107084/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 15:08:59 +0000 (17:08 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 15:08:59 +0000 (17:08 +0200)
We are not using the transform(), do not wrap the futures we are using.

Change-Id: Iaf061e2d9a0feb867373265d33afd200d8beab48
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/RestconfStrategy.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 dbb7adc356d67bfe29e6f7fea57db4f89b641173..df5764ac2cada0eafd178cd33a1a66fa11620f40 100644 (file)
@@ -9,14 +9,12 @@ package org.opendaylight.restconf.nb.rfc8040.rests.transactions;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.List;
 import java.util.Optional;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -43,7 +41,7 @@ public final class MdsalRestconfStrategy extends RestconfStrategy {
     @Override
     public ListenableFuture<Optional<NormalizedNode>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
-        try (DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction()) {
+        try (var tx = dataBroker.newReadOnlyTransaction()) {
             return tx.read(store, path);
         }
     }
@@ -56,8 +54,8 @@ public final class MdsalRestconfStrategy extends RestconfStrategy {
     }
 
     @Override
-    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
-        try (DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction()) {
+    public ListenableFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
+        try (var tx = dataBroker.newReadOnlyTransaction()) {
             return tx.exists(store, path);
         }
     }
index e1f6b1efb61edc935ead60029cfad0aed6ef266c..91510806c0fcd35e8308decc77a948f351401f74 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.restconf.nb.rfc8040.rests.transactions;
 
 import static java.util.Objects.requireNonNull;
 
-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;
@@ -59,16 +58,15 @@ public final class NetconfRestconfStrategy extends RestconfStrategy {
     }
 
     @Override
-    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
-        return remapException(read(store, path))
-                .transform(optionalNode -> optionalNode != null && optionalNode.isPresent(),
-                        MoreExecutors.directExecutor());
+    public ListenableFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
+        return Futures.transform(remapException(read(store, path)),
+            optionalNode -> optionalNode != null && optionalNode.isPresent(),
+            MoreExecutors.directExecutor());
     }
 
-    private static <T> FluentFuture<T> remapException(final ListenableFuture<T> input) {
-        final SettableFuture<T> ret = SettableFuture.create();
+    private static <T> ListenableFuture<T> remapException(final ListenableFuture<T> input) {
+        final var ret = SettableFuture.<T>create();
         Futures.addCallback(input, new FutureCallback<T>() {
-
             @Override
             public void onSuccess(final T result) {
                 ret.set(result);
@@ -80,6 +78,6 @@ public final class NetconfRestconfStrategy extends RestconfStrategy {
                     : new ReadFailedException("NETCONF operation failed", cause));
             }
         }, MoreExecutors.directExecutor());
-        return FluentFuture.from(ret);
+        return ret;
     }
 }
index ce98545deaff7e4017754dc00b4f08a9faa72c8c..f15f01f208fb4dd7e3d6ff7ffff44c366503c29f 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.rests.transactions;
 
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.List;
 import java.util.Optional;
@@ -84,5 +83,5 @@ public abstract class RestconfStrategy {
      * @param path the data object path
      * @return a FluentFuture containing the result of the check
      */
-    public abstract FluentFuture<Boolean> exists(LogicalDatastoreType store, YangInstanceIdentifier path);
+    public abstract ListenableFuture<Boolean> exists(LogicalDatastoreType store, YangInstanceIdentifier path);
 }
index 5922287e93c79c88b5baad768d126469a7a5a7ff..2f2ddbad89bd651163fb2740c7f5a463adb24d06 100644 (file)
@@ -8,6 +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 java.net.URI;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
@@ -212,7 +213,7 @@ public final class PostDataTransactionUtil {
      * @param isExistsFuture if checked data exists
      * @param path           Path to be checked
      */
-    public static void checkItemDoesNotExists(final FluentFuture<Boolean> isExistsFuture,
+    public static void checkItemDoesNotExists(final ListenableFuture<Boolean> isExistsFuture,
                                               final YangInstanceIdentifier path) {
         final FutureDataFactory<Boolean> response = new FutureDataFactory<>();
         FutureCallbackTx.addCallback(isExistsFuture, POST_TX_TYPE, response);
index a1012e1c0be8b1983cd08af69e56d536098815ad..424fd376c0adcffaa3c9c1e9d832ed63c5352ee0 100644 (file)
@@ -8,6 +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;
@@ -58,7 +59,7 @@ public final class PutDataTransactionUtil {
                                    final RestconfStrategy strategy, final WriteDataParams params) {
         final YangInstanceIdentifier path = payload.getInstanceIdentifierContext().getInstanceIdentifier();
 
-        final FluentFuture<Boolean> existsFuture = strategy.exists(LogicalDatastoreType.CONFIGURATION, path);
+        final ListenableFuture<Boolean> existsFuture = strategy.exists(LogicalDatastoreType.CONFIGURATION, path);
         final FutureDataFactory<Boolean> existsResponse = new FutureDataFactory<>();
         FutureCallbackTx.addCallback(existsFuture, PUT_TX_TYPE, existsResponse);