import static org.mockito.Mockito.verify;
import com.google.common.base.Throwables;
+import com.google.common.collect.ClassToInstanceMap;
import com.google.common.collect.ImmutableMap;
-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 java.util.Arrays;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.SynchronousQueue;
import org.mockito.stubbing.Answer;
import org.opendaylight.controller.cluster.datastore.DistributedDataStore;
import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException;
+import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.DataStoreUnavailableException;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionChainListener;
import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
+import org.opendaylight.mdsal.dom.broker.TransactionCommitFailedExceptionMapper;
import org.opendaylight.mdsal.dom.spi.store.DOMStore;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction;
doReturn(Futures.immediateFuture(null)).when(mockCohort2).preCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort2).commit();
- ListenableFuture<Void> future = coordinator.submit(transaction, Arrays.asList(mockCohort1, mockCohort2));
+ ListenableFuture<? extends CommitInfo> future =
+ coordinator.commit(transaction, Arrays.asList(mockCohort1, mockCohort2));
final CountDownLatch doneLatch = new CountDownLatch(1);
final AtomicReference<Throwable> caughtEx = new AtomicReference<>();
- Futures.addCallback(future, new FutureCallback<Void>() {
+ Futures.addCallback(future, new FutureCallback<CommitInfo>() {
@Override
- public void onSuccess(final Void result) {
+ public void onSuccess(final CommitInfo result) {
doneLatch.countDown();
}
doReturn(Futures.immediateFuture(false)).when(mockCohort3).canCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort3).abort();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
+ ListenableFuture<? extends CommitInfo> future = coordinator.commit(
transaction, Arrays.asList(mockCohort1, mockCohort2, mockCohort3));
assertFailure(future, null, mockCohort1, mockCohort2, mockCohort3);
}
- private static void assertFailure(final CheckedFuture<Void, TransactionCommitFailedException> future,
+ private static void assertFailure(final ListenableFuture<?> future,
final Exception expCause, final DOMStoreThreePhaseCommitCohort... mockCohorts)
throws Exception {
try {
- future.checkedGet(5, TimeUnit.SECONDS);
+ future.get(5, TimeUnit.SECONDS);
fail("Expected TransactionCommitFailedException");
- } catch (TransactionCommitFailedException e) {
+ } catch (ExecutionException e) {
+ TransactionCommitFailedException tcf = TransactionCommitFailedExceptionMapper.COMMIT_ERROR_MAPPER.apply(e);
if (expCause != null) {
- assertSame("Expected cause", expCause.getClass(), e.getCause().getClass());
+ assertSame("Expected cause", expCause.getClass(), tcf.getCause().getClass());
}
InOrder inOrder = inOrder((Object[])mockCohorts);
doReturn(Futures.immediateFailedFuture(cause)).when(mockCohort2).canCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort2).abort();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
+ FluentFuture<? extends CommitInfo> future = coordinator.commit(
transaction, Arrays.asList(mockCohort1, mockCohort2));
assertFailure(future, cause, mockCohort1, mockCohort2);
doReturn(Futures.immediateFailedFuture(rootCause)).when(mockCohort2).canCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort2).abort();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
+ FluentFuture<? extends CommitInfo> future = coordinator.commit(
transaction, Arrays.asList(mockCohort1, mockCohort2));
assertFailure(future, cause, mockCohort1, mockCohort2);
.when(mockCohort3).preCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort3).abort();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
+ FluentFuture<? extends CommitInfo> future = coordinator.commit(
transaction, Arrays.asList(mockCohort1, mockCohort2, mockCohort3));
assertFailure(future, cause, mockCohort1, mockCohort2, mockCohort3);
.when(mockCohort3).commit();
doReturn(Futures.immediateFuture(null)).when(mockCohort3).abort();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
+ FluentFuture<? extends CommitInfo> future = coordinator.commit(
transaction, Arrays.asList(mockCohort1, mockCohort2, mockCohort3));
assertFailure(future, cause, mockCohort1, mockCohort2, mockCohort3);
doReturn(Futures.immediateFailedFuture(cause)).when(mockCohort2).canCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort2).abort();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
+ FluentFuture<? extends CommitInfo> future = coordinator.commit(
transaction, Arrays.asList(mockCohort1, mockCohort2));
assertFailure(future, cause, mockCohort1, mockCohort2);
LogicalDatastoreType.OPERATIONAL, operationalDomStore, LogicalDatastoreType.CONFIGURATION,
configDomStore), futureExecutor) {
@Override
- public CheckedFuture<Void, TransactionCommitFailedException> submit(DOMDataTreeWriteTransaction writeTx,
+ public FluentFuture<? extends CommitInfo> commit(DOMDataTreeWriteTransaction writeTx,
Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
commitCohorts.addAll(cohorts);
latch.countDown();
- return super.submit(writeTx, cohorts);
+ return super.commit(writeTx, cohorts);
}
}) {
DOMDataTreeReadWriteTransaction domDataReadWriteTransaction = dataBroker.newReadWriteTransaction();
domDataReadWriteTransaction.delete(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.EMPTY);
- domDataReadWriteTransaction.submit();
+ domDataReadWriteTransaction.commit();
assertTrue(latch.await(10, TimeUnit.SECONDS));
configDomStore), futureExecutor) {
@Override
@SuppressWarnings("checkstyle:hiddenField")
- public CheckedFuture<Void, TransactionCommitFailedException> submit(DOMDataTreeWriteTransaction writeTx,
+ public FluentFuture<? extends CommitInfo> commit(DOMDataTreeWriteTransaction writeTx,
Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
commitCohorts.addAll(cohorts);
latch.countDown();
- return super.submit(writeTx, cohorts);
+ return super.commit(writeTx, cohorts);
}
}) {
DOMDataTreeReadWriteTransaction domDataReadWriteTransaction = dataBroker.newReadWriteTransaction();
domDataReadWriteTransaction.merge(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY,
mock(NormalizedNode.class));
- domDataReadWriteTransaction.submit();
+ domDataReadWriteTransaction.commit();
assertTrue(latch.await(10, TimeUnit.SECONDS));
LogicalDatastoreType.OPERATIONAL, domStore, LogicalDatastoreType.CONFIGURATION, domStore),
futureExecutor)) {
- CheckedFuture<Void, TransactionCommitFailedException> submit1 =
- dataBroker.newWriteOnlyTransaction().submit();
+ FluentFuture<? extends CommitInfo> submit1 = dataBroker.newWriteOnlyTransaction().commit();
assertNotNull(submit1);
submit1.get();
- CheckedFuture<Void, TransactionCommitFailedException> submit2 =
- dataBroker.newReadWriteTransaction().submit();
+ FluentFuture<? extends CommitInfo> submit2 = dataBroker.newReadWriteTransaction().commit();
assertNotNull(submit2);
LogicalDatastoreType.OPERATIONAL, mockOperStore,
LogicalDatastoreType.CONFIGURATION, mockConfigStore), futureExecutor)) {
- Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> supportedExtensions =
- dataBroker.getSupportedExtensions();
- assertNotNull(supportedExtensions.get(DOMDataTreeChangeService.class));
+ ClassToInstanceMap<DOMDataBrokerExtension> supportedExtensions = dataBroker.getExtensions();
+ assertNotNull(supportedExtensions.getInstance(DOMDataTreeChangeService.class));
- DOMDataTreeCommitCohortRegistry cohortRegistry =
- (DOMDataTreeCommitCohortRegistry) supportedExtensions.get(DOMDataTreeCommitCohortRegistry.class);
+ DOMDataTreeCommitCohortRegistry cohortRegistry = supportedExtensions.getInstance(
+ DOMDataTreeCommitCohortRegistry.class);
assertNotNull(cohortRegistry);
DOMDataTreeCommitCohort mockCohort = mock(DOMDataTreeCommitCohort.class);