package org.opendaylight.mdsal.binding.dom.adapter;
import com.google.common.base.Preconditions;
-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.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.BindingTransactionChain;
import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.AsyncTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.TransactionChain;
import org.opendaylight.mdsal.common.api.TransactionChainListener;
-import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
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.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import org.opendaylight.yangtools.concepts.Delegator;
return new BindingDOMWriteTransactionAdapter<DOMDataTreeWriteTransaction>(delegateTx, codec) {
@Override
- public CheckedFuture<Void,TransactionCommitFailedException> submit() {
- return listenForFailure(this,super.submit());
+ public @NonNull FluentFuture<? extends @NonNull CommitInfo> commit() {
+ return listenForFailure(this, super.commit());
}
};
}
+ @Override
+ public ReadWriteTransaction newReadWriteTransaction() {
+ final DOMDataTreeReadWriteTransaction delegateTx = delegate.newReadWriteTransaction();
+ return new BindingDOMReadWriteTransactionAdapter(delegateTx, codec) {
+
+ @Override
+ public @NonNull FluentFuture<? extends @NonNull CommitInfo> commit() {
+ return listenForFailure(this, super.commit());
+ }
+ };
+ }
+
private <T, F extends ListenableFuture<T>> F listenForFailure(final WriteTransaction tx, final F future) {
Futures.addCallback(future, new FutureCallback<T>() {
@Override
return future;
}
+
private void failTransactionChain(final WriteTransaction tx, final Throwable throwable) {
/*
* We asume correct state change for underlaying transaction
bindingListener.onTransactionChainSuccessful(BindingDOMTransactionChainAdapter.this);
}
}
-
}