Bump odlparent to 3.1.2
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / databroker / compat / LegacyDOMDataBrokerAdapter.java
index d1a4078fd84789206d7966c469b073b50f9569ea..24554668c9d57e9be7d791f1ca5dacdd78c900cc 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.controller.cluster.databroker.compat;
 
-import static com.google.common.base.Preconditions.checkState;
-
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ForwardingObject;
@@ -16,11 +14,13 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.MoreExecutors;
+import com.google.common.util.concurrent.SettableFuture;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.cluster.databroker.AbstractDOMBroker;
-import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface;
 import org.opendaylight.controller.cluster.datastore.compat.LegacyDOMStoreAdapter;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.DataStoreUnavailableException;
@@ -32,7 +32,6 @@ import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFaile
 import org.opendaylight.controller.md.sal.dom.api.ClusteredDOMDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
@@ -59,8 +58,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  * @author Thomas Pantelis
  */
 public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMDataBroker {
-    private static final ExceptionMapper<TransactionCommitFailedException> SUBMIT_EX_MAPPER =
-            new ExceptionMapper<TransactionCommitFailedException>("submit", TransactionCommitFailedException.class) {
+    private static final ExceptionMapper<TransactionCommitFailedException> COMMIT_EX_MAPPER =
+            new ExceptionMapper<TransactionCommitFailedException>("commit", TransactionCommitFailedException.class) {
         @Override
         protected TransactionCommitFailedException newWithCause(String message, Throwable cause) {
             if (cause instanceof org.opendaylight.mdsal.common.api.OptimisticLockFailedException) {
@@ -177,7 +176,7 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD
                     final org.opendaylight.mdsal.common.api.AsyncTransaction<?, ?> transaction, final Throwable cause) {
                 listener.onTransactionChainFailed(legacyChain.get(),
                         (AsyncTransaction) () -> transaction.getIdentifier(),
-                            cause instanceof Exception ? SUBMIT_EX_MAPPER.apply((Exception)cause) : cause);
+                            cause instanceof Exception ? COMMIT_EX_MAPPER.apply((Exception)cause) : cause);
             }
 
             @Override
@@ -213,17 +212,6 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD
         return legacyChain.get();
     }
 
-    @Override
-    public ListenerRegistration<DOMDataChangeListener> registerDataChangeListener(final LogicalDatastoreType store,
-            final YangInstanceIdentifier path, final DOMDataChangeListener listener,
-            final DataChangeScope triggeringScope) {
-        org.opendaylight.mdsal.dom.spi.store.DOMStore potentialStore = delegate().getTxFactories().get(convert(store));
-        checkState(potentialStore != null, "Requested logical data store is not available.");
-        checkState(potentialStore instanceof DistributedDataStoreInterface,
-                "Requested logical data store does not support DataChangeListener.");
-        return ((DistributedDataStoreInterface)potentialStore).registerChangeListener(path, listener, triggeringScope);
-    }
-
     private static org.opendaylight.mdsal.common.api.LogicalDatastoreType convert(LogicalDatastoreType datastoreType) {
         return org.opendaylight.mdsal.common.api.LogicalDatastoreType.valueOf(datastoreType.name());
     }
@@ -298,14 +286,26 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD
             return writeDelegate().cancel();
         }
 
-        @Override
-        public CheckedFuture<Void, TransactionCommitFailedException> submit() {
-            return MappingCheckedFuture.create(writeDelegate().submit(), SUBMIT_EX_MAPPER);
-        }
-
         @Override
         public FluentFuture<? extends CommitInfo> commit() {
-            return writeDelegate().commit();
+            final SettableFuture<CommitInfo> resultFuture = SettableFuture.create();
+            writeDelegate().commit().addCallback(new FutureCallback<CommitInfo>() {
+                @Override
+                public void onSuccess(CommitInfo result) {
+                    resultFuture.set(result);
+                }
+
+                @Override
+                public void onFailure(Throwable ex) {
+                    if (ex instanceof Exception) {
+                        resultFuture.setException(COMMIT_EX_MAPPER.apply((Exception)ex));
+                    } else {
+                        resultFuture.setException(ex);
+                    }
+                }
+            }, MoreExecutors.directExecutor());
+
+            return resultFuture;
         }
     }