Expose completion future from WriteOperations
[mdsal.git] / binding / mdsal-binding-util / src / main / java / org / opendaylight / mdsal / binding / util / TransactionAdapter.java
index 65b2618a2d9f5f667daa4dc401bfb335b35bd93d..0d0c5e7bc9d1e45c06d9d0457ec2791763c8f1e9 100644 (file)
@@ -12,7 +12,6 @@ import static com.google.common.base.Preconditions.checkArgument;
 import com.google.common.collect.ForwardingObject;
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.Optional;
-import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
@@ -46,13 +45,11 @@ public final class TransactionAdapter {
     public static ReadWriteTransaction toReadWriteTransaction(
             final TypedReadWriteTransaction<? extends Datastore> datastoreTx) {
         if (datastoreTx instanceof TypedReadWriteTransactionImpl) {
-            TypedReadWriteTransactionImpl<?> nonSubmitCancelableDatastoreReadWriteTransaction =
-                    (TypedReadWriteTransactionImpl<?>) datastoreTx;
-            return new ReadWriteTransactionAdapter<>(nonSubmitCancelableDatastoreReadWriteTransaction.datastoreType,
-                    nonSubmitCancelableDatastoreReadWriteTransaction);
+            final TypedReadWriteTransactionImpl<?> txImpl = (TypedReadWriteTransactionImpl<?>) datastoreTx;
+            return new ReadWriteTransactionAdapter<>(txImpl.getDatastoreType(), txImpl);
         }
-        throw new IllegalArgumentException(
-                "Unsupported TypedWriteTransaction implementation " + datastoreTx.getClass());
+        throw new IllegalArgumentException("Unsupported TypedWriteTransaction implementation "
+                + datastoreTx.getClass());
     }
 
     /**
@@ -64,13 +61,11 @@ public final class TransactionAdapter {
      */
     public static WriteTransaction toWriteTransaction(final TypedWriteTransaction<? extends Datastore> datastoreTx) {
         if (datastoreTx instanceof TypedWriteTransactionImpl) {
-            TypedWriteTransactionImpl<?> nonSubmitCancelableDatastoreWriteTransaction =
-                    (TypedWriteTransactionImpl<?>) datastoreTx;
-            return new WriteTransactionAdapter<>(nonSubmitCancelableDatastoreWriteTransaction.datastoreType,
-                    nonSubmitCancelableDatastoreWriteTransaction);
+            final TypedWriteTransactionImpl<?, ?> txImpl = (TypedWriteTransactionImpl<?, ?>) datastoreTx;
+            return new WriteTransactionAdapter<>(txImpl.getDatastoreType(), txImpl);
         }
-        throw new IllegalArgumentException(
-                "Unsupported TypedWriteTransaction implementation " + datastoreTx.getClass());
+        throw new IllegalArgumentException("Unsupported TypedWriteTransaction implementation "
+                + datastoreTx.getClass());
     }
 
     private static class WriteTransactionAdapter<S extends Datastore, D extends TypedWriteTransaction<S>>
@@ -91,10 +86,10 @@ public final class TransactionAdapter {
         }
 
         @Override
-        public <T extends DataObject> void put(final LogicalDatastoreType store, final InstanceIdentifier<T> path,
-                final T data, final boolean createMissingParents) {
+        public <T extends DataObject> void mergeParentStructurePut(final LogicalDatastoreType store,
+                final InstanceIdentifier<T> path, final T data) {
             checkStore(store);
-            delegate.put(path, data, createMissingParents);
+            delegate.mergeParentStructurePut(path, data);
         }
 
         @Override
@@ -105,10 +100,10 @@ public final class TransactionAdapter {
         }
 
         @Override
-        public <T extends DataObject> void merge(final LogicalDatastoreType store, final InstanceIdentifier<T> path,
-                final T data, final boolean createMissingParents) {
+        public <T extends DataObject> void mergeParentStructureMerge(final LogicalDatastoreType store,
+                final InstanceIdentifier<T> path, final T data) {
             checkStore(store);
-            delegate.merge(path, data, createMissingParents);
+            delegate.mergeParentStructureMerge(path, data);
         }
 
         @Override
@@ -123,7 +118,7 @@ public final class TransactionAdapter {
         }
 
         @Override
-        public @NonNull FluentFuture<? extends CommitInfo> commit() {
+        public FluentFuture<? extends CommitInfo> commit() {
             throw new UnsupportedOperationException("Managed transactions must not be committed");
         }
 
@@ -132,6 +127,11 @@ public final class TransactionAdapter {
             return delegate.getIdentifier();
         }
 
+        @Override
+        public FluentFuture<?> completionFuture() {
+            return delegate.completionFuture();
+        }
+
         @Override
         protected D delegate() {
             return delegate;
@@ -155,5 +155,11 @@ public final class TransactionAdapter {
             checkStore(store);
             return delegate().read(path);
         }
+
+        @Override
+        public FluentFuture<Boolean> exists(final LogicalDatastoreType store,final InstanceIdentifier<?> path) {
+            checkStore(store);
+            return delegate().exists(path);
+        }
     }
 }