Take advantage of FluentFutures 62/73862/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 9 Jul 2018 22:12:06 +0000 (00:12 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 10 Jul 2018 16:11:16 +0000 (16:11 +0000)
FluentFutures allow

Change-Id: I8c260174cf6f824827d8a6ff8df15c00d70c81e0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/EmptyCommitInfo.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedWriteTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/SerializedDOMDataBroker.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMWriteTransactionAdapter.java

index 8ec663553d312814c943aa57c92e5849d0881b83..267a7d37f4d7bb2f01b6ba030acb5cb5f8a13bcc 100644 (file)
@@ -8,8 +8,8 @@
 package org.opendaylight.mdsal.common.api;
 
 import com.google.common.util.concurrent.FluentFuture;
-import com.google.common.util.concurrent.Futures;
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 
 /**
  * Empty commit info singleton. Useful when {@link AsyncWriteTransaction#commit()} has nothing more to say.
@@ -19,7 +19,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
 @NonNullByDefault
 final class EmptyCommitInfo implements CommitInfo {
     static final CommitInfo INSTANCE = new EmptyCommitInfo();
-    static final FluentFuture<CommitInfo> FLUENT_INSTANCE = FluentFuture.from(Futures.immediateFuture(INSTANCE));
+    static final FluentFuture<CommitInfo> FLUENT_INSTANCE = FluentFutures.immediateFluentFuture(INSTANCE);
 
     private EmptyCommitInfo() {
         // Hidden
index 29b3f3f22024b834400a9b9f2b1f6964ce1573db..c74bce66fb070788eca01fa2834c631bbff8de95 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.slf4j.Logger;
@@ -141,8 +142,8 @@ class DOMForwardedWriteTransaction<T extends DOMStoreWriteTransaction> extends
 
             ret = impl.commit(this, cohorts);
         } catch (RuntimeException e) {
-            ret = FluentFuture.from(Futures.immediateFailedFuture(
-                    TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e)));
+            ret = FluentFutures.immediateFailedFluentFuture(
+                    TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e));
         }
         FUTURE_UPDATER.lazySet(this, ret);
         return ret;
index 93c4bdcd0c494aaa08c52de90977133c8959233a..2f62c7bde08fe1a684279eb2eb6097d95bce4730 100644 (file)
@@ -5,13 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.mdsal.dom.broker;
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import java.util.Collection;
 import java.util.Map;
@@ -23,6 +20,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStore;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
 import org.opendaylight.yangtools.util.DurationStatisticsTracker;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -69,18 +67,13 @@ public class SerializedDOMDataBroker extends AbstractDOMDataBroker {
         Preconditions.checkArgument(cohorts != null, "Cohorts must not be null.");
         LOG.debug("Tx: {} is submitted for execution.", transaction.getIdentifier());
 
-        ListenableFuture<CommitInfo> commitFuture = null;
         try {
-            commitFuture = executor.submit(new CommitCoordinationTask(transaction, cohorts,
-                    commitStatsTracker));
+            return FluentFuture.from(executor.submit(
+                new CommitCoordinationTask(transaction, cohorts, commitStatsTracker)));
         } catch (RejectedExecutionException e) {
-            LOG.error("The commit executor's queue is full - submit task was rejected. \n"
-                    + executor, e);
-            return FluentFuture.from(Futures.immediateFailedFuture(
-                    new TransactionCommitFailedException(
-                        "Could not submit the commit task - the commit queue capacity has been exceeded.", e)));
+            LOG.error("The commit executor's queue is full - submit task was rejected. \n{}", executor, e);
+            return FluentFutures.immediateFailedFluentFuture(new TransactionCommitFailedException(
+                "Could not submit the commit task - the commit queue capacity has been exceeded.", e));
         }
-
-        return FluentFuture.from(commitFuture);
     }
 }
index b446477194672350813c55808a2d80a32a92e3db..d4ec4c0e91c8f1288798f0853bf4287e9f66a94c 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.mdsal.dom.broker;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Collections;
 import java.util.EnumMap;
@@ -82,16 +81,15 @@ public class ShardedDOMWriteTransactionAdapter implements DOMDataTreeWriteTransa
         }
         // First we need to close cursors
         cursorMap.values().forEach(DOMDataTreeWriteCursor::close);
-        final ListenableFuture<List<Void>> aggregatedSubmit = Futures.allAsList(
+        final FluentFuture<List<Void>> aggregatedSubmit = FluentFuture.from(Futures.allAsList(
                 transactionMap.get(LogicalDatastoreType.CONFIGURATION).submit(),
-                transactionMap.get(LogicalDatastoreType.OPERATIONAL).submit());
+                transactionMap.get(LogicalDatastoreType.OPERATIONAL).submit()));
 
         // Now we can close producers and mark transaction as finished
         closeProducers();
         finished = true;
 
-        return FluentFuture.from(Futures.transform(aggregatedSubmit,
-            unused -> CommitInfo.empty(), MoreExecutors.directExecutor()));
+        return aggregatedSubmit.transform(unused -> CommitInfo.empty(), MoreExecutors.directExecutor());
     }
 
     @Override