Migrate users of Optional.get()
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / AbstractTransactionContextFactory.java
index 29b52f75579b57e2fbad4563585de9b10828d154..fa77b5fdb000610daf9e4fcde8da0d1e0efe7eaf 100644 (file)
@@ -24,7 +24,7 @@ import org.opendaylight.controller.cluster.datastore.utils.ActorUtils;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.ReadOnlyDataTree;
+import org.opendaylight.yangtools.yang.data.tree.api.ReadOnlyDataTree;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import scala.concurrent.Future;
@@ -41,8 +41,8 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
             AtomicLongFieldUpdater.newUpdater(AbstractTransactionContextFactory.class, "nextTx");
 
     private final ConcurrentMap<String, F> knownLocal = new ConcurrentHashMap<>();
-    private final LocalHistoryIdentifier historyId;
-    private final ActorUtils actorUtils;
+    private final @NonNull LocalHistoryIdentifier historyId;
+    private final @NonNull ActorUtils actorUtils;
 
     // Used via TX_COUNTER_UPDATER
     @SuppressWarnings("unused")
@@ -94,14 +94,14 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
                         parent.getIdentifier());
                 return new DirectTransactionContextWrapper(parent.getIdentifier(), actorUtils, shardName,
                         localContext);
-            } else {
-                LOG.debug("Tx {}: Local transaction context creation failed, using DelayedTransactionWrapper",
-                        parent.getIdentifier());
-                final RemoteTransactionContextSupport remote = new RemoteTransactionContextSupport(
-                        transactionContextWrapper, parent, shardName);
-                remote.setPrimaryShard(primaryShardInfo);
-                return transactionContextWrapper;
             }
+
+            LOG.debug("Tx {}: Local transaction context creation failed, using DelayedTransactionWrapper",
+                parent.getIdentifier());
+            final RemoteTransactionContextSupport remote = new RemoteTransactionContextSupport(
+                transactionContextWrapper, parent, shardName);
+            remote.setPrimaryShard(primaryShardInfo);
+            return transactionContextWrapper;
         } finally {
             onTransactionContextCreated(parent.getIdentifier());
         }
@@ -148,12 +148,10 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
         if (findPrimaryFuture.isCompleted()) {
             final Try<PrimaryShardInfo> maybe = findPrimaryFuture.value().get();
             if (maybe.isSuccess()) {
-                return maybeCreateDirectTransactionContextWrapper(maybe.get(), parent, shardName,
-                        contextWrapper);
-            } else {
-                onFindPrimaryShardFailure(maybe.failed().get(), parent, shardName,
-                        contextWrapper);
+                return maybeCreateDirectTransactionContextWrapper(maybe.get(), parent, shardName, contextWrapper);
             }
+
+            onFindPrimaryShardFailure(maybe.failed().get(), parent, shardName, contextWrapper);
         } else {
             findPrimaryFuture.onComplete(result -> {
                 if (result.isSuccess()) {
@@ -173,7 +171,8 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
             if (!knownLocal.containsKey(shardName)) {
                 LOG.debug("Shard {} resolved to local data tree - adding local factory", shardName);
 
-                F factory = factoryForShard(shardName, primaryShardInfo.getPrimaryShardActor(), maybeDataTree.get());
+                F factory = factoryForShard(shardName, primaryShardInfo.getPrimaryShardActor(),
+                    maybeDataTree.orElseThrow());
                 knownLocal.putIfAbsent(shardName, factory);
             }
         } else if (knownLocal.containsKey(shardName)) {
@@ -234,11 +233,10 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
 
     private static TransactionContext createLocalTransactionContext(final LocalTransactionFactory factory,
                                                                     final TransactionProxy parent) {
-
-        switch (parent.getType()) {
-            case READ_ONLY:
+        return switch (parent.getType()) {
+            case READ_ONLY -> {
                 final DOMStoreReadTransaction readOnly = factory.newReadOnlyTransaction(parent.getIdentifier());
-                return new LocalTransactionContext(readOnly, parent.getIdentifier(), factory) {
+                yield new LocalTransactionContext(readOnly, parent.getIdentifier(), factory) {
                     @Override
                     DOMStoreWriteTransaction getWriteDelegate() {
                         throw new UnsupportedOperationException();
@@ -249,9 +247,10 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
                         return readOnly;
                     }
                 };
-            case READ_WRITE:
+            }
+            case READ_WRITE -> {
                 final DOMStoreReadWriteTransaction readWrite = factory.newReadWriteTransaction(parent.getIdentifier());
-                return new LocalTransactionContext(readWrite, parent.getIdentifier(), factory) {
+                yield new LocalTransactionContext(readWrite, parent.getIdentifier(), factory) {
                     @Override
                     DOMStoreWriteTransaction getWriteDelegate() {
                         return readWrite;
@@ -262,9 +261,10 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
                         return readWrite;
                     }
                 };
-            case WRITE_ONLY:
+            }
+            case WRITE_ONLY -> {
                 final DOMStoreWriteTransaction writeOnly = factory.newWriteOnlyTransaction(parent.getIdentifier());
-                return new LocalTransactionContext(writeOnly, parent.getIdentifier(), factory) {
+                yield new LocalTransactionContext(writeOnly, parent.getIdentifier(), factory) {
                     @Override
                     DOMStoreWriteTransaction getWriteDelegate() {
                         return writeOnly;
@@ -275,8 +275,8 @@ abstract class AbstractTransactionContextFactory<F extends LocalTransactionFacto
                         throw new UnsupportedOperationException();
                     }
                 };
-            default:
-                throw new IllegalArgumentException("Invalid transaction type: " + parent.getType());
-        }
+            }
+            default -> throw new IllegalArgumentException("Invalid transaction type: " + parent.getType());
+        };
     }
 }