* 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.controller.cluster.sharding;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.stream.Collectors;
-import javax.annotation.Nonnull;
import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
ShardProxyTransaction(final DOMDataTreeIdentifier shardRoot,
final Collection<DOMDataTreeIdentifier> prefixes,
final DistributedShardModification modification) {
- this.shardRoot = Preconditions.checkNotNull(shardRoot);
- this.prefixes = Preconditions.checkNotNull(prefixes);
- this.modification = Preconditions.checkNotNull(modification);
+ this.shardRoot = requireNonNull(shardRoot);
+ this.prefixes = requireNonNull(prefixes);
+ this.modification = requireNonNull(modification);
}
private DOMDataTreeWriteCursor getCursor() {
return cursor;
}
- @Nonnull
@Override
- public DOMDataTreeWriteCursor createCursor(@Nonnull final DOMDataTreeIdentifier prefix) {
+ public DOMDataTreeWriteCursor createCursor(final DOMDataTreeIdentifier prefix) {
checkAvailable(prefix);
final YangInstanceIdentifier relativePath = toRelative(prefix.getRootIdentifier());
final DOMDataTreeWriteCursor ret = getCursor();
private YangInstanceIdentifier toRelative(final YangInstanceIdentifier path) {
final Optional<YangInstanceIdentifier> relative =
path.relativeTo(modification.getPrefix().getRootIdentifier());
- Preconditions.checkArgument(relative.isPresent());
+ checkArgument(relative.isPresent());
return relative.get();
}
public void ready() {
LOG.debug("Readying transaction for shard {}", shardRoot);
- Preconditions.checkNotNull(modification, "Attempting to ready an empty transaction.");
+ requireNonNull(modification, "Attempting to ready an empty transaction.");
cohorts.add(modification.seal());
for (Entry<DOMDataTreeIdentifier, ForeignShardModificationContext> entry
public ListenableFuture<Void> submit() {
LOG.debug("Submitting transaction for shard {}", shardRoot);
- Preconditions.checkState(!cohorts.isEmpty(), "Transaction not readied yet");
+ checkTransactionReadied();
final AsyncFunction<Boolean, Void> validateFunction = input -> prepare();
final AsyncFunction<Void, Void> prepareFunction = input -> commit();
return Futures.transformAsync(prepareFuture, prepareFunction, MoreExecutors.directExecutor());
}
+ private void checkTransactionReadied() {
+ checkState(!cohorts.isEmpty(), "Transaction not readied yet");
+ }
+
@Override
public ListenableFuture<Boolean> validate() {
LOG.debug("Validating transaction for shard {}", shardRoot);
- Preconditions.checkState(!cohorts.isEmpty(), "Transaction not readied yet");
+ checkTransactionReadied();
final List<ListenableFuture<Boolean>> futures =
cohorts.stream().map(DOMStoreThreePhaseCommitCohort::canCommit).collect(Collectors.toList());
final SettableFuture<Boolean> ret = SettableFuture.create();
public ListenableFuture<Void> prepare() {
LOG.debug("Preparing transaction for shard {}", shardRoot);
- Preconditions.checkState(!cohorts.isEmpty(), "Transaction not readied yet");
+ checkTransactionReadied();
final List<ListenableFuture<Void>> futures =
cohorts.stream().map(DOMStoreThreePhaseCommitCohort::preCommit).collect(Collectors.toList());
final SettableFuture<Void> ret = SettableFuture.create();
public ListenableFuture<Void> commit() {
LOG.debug("Committing transaction for shard {}", shardRoot);
- Preconditions.checkState(!cohorts.isEmpty(), "Transaction not readied yet");
+ checkTransactionReadied();
final List<ListenableFuture<Void>> futures =
cohorts.stream().map(DOMStoreThreePhaseCommitCohort::commit).collect(Collectors.toList());
final SettableFuture<Void> ret = SettableFuture.create();