Reduce preliferation of TransactionChainHandler 71/96171/3
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 14 May 2021 08:05:04 +0000 (10:05 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 14 May 2021 08:33:05 +0000 (10:33 +0200)
RestconfStrategy does not need to work on transaction chains -- we are
really dealing with standalone transactions every step of the way. This
ends up simplifying the flow quite a bit.

JIRA: NETCONF-773
Change-Id: I70c49e7c2f9da250c53ebfc32ddb99456f9b2c46
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
17 files changed:
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/handlers/TransactionChainHandler.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/BatchedExistenceCheck.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfStrategy.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfTransaction.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategy.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/RestconfStrategy.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/FutureCallbackTx.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/services/wrapper/ServicesWrapper.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImplTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/DeleteDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PatchDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PlainPatchDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtilTest.java

index 2d7008d7fd60bc43f08f7ebd1a45e563b16095b2..953627cc1c369038bd85cea4ce1d32ad2f956375 100644 (file)
@@ -7,7 +7,8 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.handlers;
 
-import java.util.Objects;
+import static java.util.Objects.requireNonNull;
+
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import javax.annotation.PreDestroy;
@@ -53,7 +54,7 @@ public class TransactionChainHandler implements AutoCloseable {
      */
     @Inject
     public TransactionChainHandler(final DOMDataBroker dataBroker) {
-        this.dataBroker = Objects.requireNonNull(dataBroker);
+        this.dataBroker = requireNonNull(dataBroker);
         this.transactionChainList = new ConcurrentLinkedQueue<>();
     }
 
@@ -83,7 +84,7 @@ public class TransactionChainHandler implements AutoCloseable {
      * @param transactionChain object to check.
      * @return true if object still exist in {@link TransactionChainHandler}.
      */
-    boolean verifyIfExistTransactionChain(DOMTransactionChain transactionChain) {
+    boolean verifyIfExistTransactionChain(final DOMTransactionChain transactionChain) {
         return this.transactionChainList.contains(transactionChain);
     }
 }
index b3efc69d161f8149b5f0a0f36327572a07f67634..6bcfe9e9d3897017c9fb6bd56d42b9213d7e8b89 100644 (file)
@@ -34,6 +34,7 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMActionResult;
 import org.opendaylight.mdsal.dom.api.DOMActionService;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMMountPoint;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
@@ -48,7 +49,6 @@ import org.opendaylight.restconf.common.patch.PatchContext;
 import org.opendaylight.restconf.common.patch.PatchStatusContext;
 import org.opendaylight.restconf.nb.rfc8040.Rfc8040;
 import org.opendaylight.restconf.nb.rfc8040.handlers.SchemaContextHandler;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RestconfDataService;
 import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RestconfStreamsSubscriptionService;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
@@ -107,21 +107,19 @@ public class RestconfDataServiceImpl implements RestconfDataService {
     private final SubscribeToStreamUtil streamUtils;
 
     private final SchemaContextHandler schemaContextHandler;
-    private final TransactionChainHandler transactionChainHandler;
     private final DOMMountPointService mountPointService;
     private final DOMActionService actionService;
+    private final DOMDataBroker dataBroker;
 
     public RestconfDataServiceImpl(final SchemaContextHandler schemaContextHandler,
-            final TransactionChainHandler transactionChainHandler,
-            final DOMMountPointService  mountPointService,
+            final DOMDataBroker dataBroker, final DOMMountPointService  mountPointService,
             final RestconfStreamsSubscriptionService delegRestconfSubscrService,
-            final DOMActionService actionService,
-            final Configuration configuration) {
-        this.actionService = requireNonNull(actionService);
+            final DOMActionService actionService, final Configuration configuration) {
         this.schemaContextHandler = requireNonNull(schemaContextHandler);
-        this.transactionChainHandler = requireNonNull(transactionChainHandler);
+        this.dataBroker = requireNonNull(dataBroker);
         this.mountPointService = requireNonNull(mountPointService);
         this.delegRestconfSubscrService = requireNonNull(delegRestconfSubscrService);
+        this.actionService = requireNonNull(actionService);
         streamUtils = configuration.isUseSSE() ? SubscribeToStreamUtil.serverSentEvents()
                 : SubscribeToStreamUtil.webSockets();
     }
@@ -373,7 +371,7 @@ public class RestconfDataServiceImpl implements RestconfDataService {
     // FIXME: why is this synchronized?
     public synchronized RestconfStrategy getRestconfStrategy(final DOMMountPoint mountPoint) {
         if (mountPoint == null) {
-            return new MdsalRestconfStrategy(transactionChainHandler);
+            return new MdsalRestconfStrategy(dataBroker);
         }
 
         return RestconfStrategy.forMountPoint(mountPoint).orElseThrow(() -> {
index d6d0acdd4685f8c6c9420e1cacb9e630e64821be..b3b9d862eeebeecf5be73ea5ddc39f5d520a1928 100644 (file)
@@ -18,8 +18,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -36,35 +35,33 @@ final class BatchedExistenceCheck {
         this.outstanding = total;
     }
 
-    static BatchedExistenceCheck start(final DOMTransactionChain transactionChain,
+    static BatchedExistenceCheck start(final DOMDataTreeReadOperations tx,
                                        final LogicalDatastoreType datastore, final YangInstanceIdentifier parentPath,
                                        final Collection<? extends NormalizedNode<?, ?>> children) {
         final BatchedExistenceCheck ret = new BatchedExistenceCheck(children.size());
-        try (DOMDataTreeReadTransaction tx = transactionChain.newReadOnlyTransaction()) {
-            for (NormalizedNode<?, ?> child : children) {
-                final YangInstanceIdentifier path = parentPath.node(child.getIdentifier());
-                tx.exists(datastore, path).addCallback(new FutureCallback<Boolean>() {
-                    @Override
-                    public void onSuccess(final Boolean result) {
-                        ret.complete(path, result);
-                    }
-
-                    @Override
-                    @SuppressFBWarnings("BC_UNCONFIRMED_CAST_OF_RETURN_VALUE")
-                    public void onFailure(final Throwable throwable) {
-                        final Exception e;
-                        if (throwable instanceof Exception) {
-                            e = (Exception) throwable;
-                        } else {
-                            e = new ExecutionException(throwable);
-                        }
+        for (NormalizedNode<?, ?> child : children) {
+            final YangInstanceIdentifier path = parentPath.node(child.getIdentifier());
+            tx.exists(datastore, path).addCallback(new FutureCallback<Boolean>() {
+                @Override
+                public void onSuccess(final Boolean result) {
+                    ret.complete(path, result);
+                }
 
-                        ret.complete(path, ReadFailedException.MAPPER.apply(e));
+                @Override
+                @SuppressFBWarnings("BC_UNCONFIRMED_CAST_OF_RETURN_VALUE")
+                public void onFailure(final Throwable throwable) {
+                    final Exception e;
+                    if (throwable instanceof Exception) {
+                        e = (Exception) throwable;
+                    } else {
+                        e = new ExecutionException(throwable);
                     }
-                }, MoreExecutors.directExecutor());
-            }
-            return ret;
+
+                    ret.complete(path, ReadFailedException.MAPPER.apply(e));
+                }
+            }, MoreExecutors.directExecutor());
         }
+        return ret;
     }
 
     Entry<YangInstanceIdentifier, ReadFailedException> getFailure() throws InterruptedException {
index f863987100bcba27c1a871baecb10d608b39a7cb..9029d65314f9e826a8aaba8ed1c80a0877d7f4f8 100644 (file)
@@ -19,7 +19,6 @@ 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.DOMTransactionChain;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -30,25 +29,21 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  * @see DOMDataTreeReadWriteTransaction
  */
 public final class MdsalRestconfStrategy extends RestconfStrategy {
-    private final DOMTransactionChain transactionChain;
+    private final DOMDataBroker dataBroker;
 
     public MdsalRestconfStrategy(final DOMDataBroker dataBroker) {
-        this(new TransactionChainHandler(dataBroker));
-    }
-
-    public MdsalRestconfStrategy(final TransactionChainHandler transactionChainHandler) {
-        transactionChain = requireNonNull(transactionChainHandler).get();
+        this.dataBroker = requireNonNull(dataBroker);
     }
 
     @Override
     public RestconfTransaction prepareWriteExecution() {
-        return new MdsalRestconfTransaction(transactionChain);
+        return new MdsalRestconfTransaction(dataBroker);
     }
 
     @Override
     public ListenableFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
                                                                  final YangInstanceIdentifier path) {
-        try (DOMDataTreeReadTransaction tx = transactionChain.newReadOnlyTransaction()) {
+        try (DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction()) {
             return tx.read(store, path);
         }
     }
@@ -62,13 +57,8 @@ public final class MdsalRestconfStrategy extends RestconfStrategy {
 
     @Override
     public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
-        try (DOMDataTreeReadTransaction tx = transactionChain.newReadOnlyTransaction()) {
+        try (DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction()) {
             return tx.exists(store, path);
         }
     }
-
-    @Override
-    public void close() {
-        transactionChain.close();
-    }
 }
index a6bfdb322512bd2080b5250bc7480a09d40269c3..8c6a18a446a6598b26792db55ef2b42278229301 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.restconf.nb.rfc8040.rests.transactions;
 
 import static com.google.common.base.Verify.verifyNotNull;
-import static java.util.Objects.requireNonNull;
 import static org.opendaylight.restconf.nb.rfc8040.rests.utils.DeleteDataTransactionUtil.DELETE_TX_TYPE;
 import static org.opendaylight.restconf.nb.rfc8040.rests.utils.PostDataTransactionUtil.checkItemDoesNotExists;
 
@@ -19,8 +18,8 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
+import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError;
 import org.opendaylight.restconf.nb.rfc8040.rests.utils.DeleteDataTransactionUtil;
@@ -34,12 +33,10 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 final class MdsalRestconfTransaction extends RestconfTransaction {
-    private final DOMTransactionChain transactionChain;
     private DOMDataTreeReadWriteTransaction rwTx;
 
-    MdsalRestconfTransaction(DOMTransactionChain transactionChain) {
-        this.transactionChain = requireNonNull(transactionChain);
-        this.rwTx = transactionChain.newReadWriteTransaction();
+    MdsalRestconfTransaction(final DOMDataBroker dataBroker) {
+        this.rwTx = dataBroker.newReadWriteTransaction();
     }
 
     @Override
@@ -48,7 +45,6 @@ final class MdsalRestconfTransaction extends RestconfTransaction {
             rwTx.cancel();
             rwTx = null;
         }
-        transactionChain.close();
     }
 
     @Override
@@ -81,7 +77,7 @@ final class MdsalRestconfTransaction extends RestconfTransaction {
             final Collection<? extends NormalizedNode<?, ?>> children =
                 ((NormalizedNodeContainer<?, ?, ?>) data).getValue();
             final BatchedExistenceCheck check =
-                BatchedExistenceCheck.start(transactionChain, LogicalDatastoreType.CONFIGURATION, path, children);
+                BatchedExistenceCheck.start(verifyNotNull(rwTx), LogicalDatastoreType.CONFIGURATION, path, children);
 
             for (final NormalizedNode<?, ?> child : children) {
                 final YangInstanceIdentifier childPath = path.node(child.getIdentifier());
index 129e19049e93e3ef0c01eb7d58259223ebf87260..59d4023a4b8e4db5afa82831861e2abe0212d2d6 100644 (file)
@@ -83,10 +83,6 @@ public final class NetconfRestconfStrategy extends RestconfStrategy {
                         MoreExecutors.directExecutor());
     }
 
-    @Override
-    public void close() {
-    }
-
     private static <T> FluentFuture<T> remapException(final ListenableFuture<T> input) {
         final SettableFuture<T> ret = SettableFuture.create();
         Futures.addCallback(input, new FutureCallback<T>() {
index 9061ebe76428ce284d64eeb3f423e8a22306601d..71dac9899c2f35c99b5929cb8ad682ec4f742619 100644 (file)
@@ -26,7 +26,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  */
 // FIXME: it seems the first three operations deal with lifecycle of a transaction, while others invoke various
 //        operations. This should be handled through proper allocation indirection.
-public abstract class RestconfStrategy implements AutoCloseable {
+public abstract class RestconfStrategy {
     RestconfStrategy() {
         // Hidden on purpose
     }
@@ -74,7 +74,7 @@ public abstract class RestconfStrategy implements AutoCloseable {
      * @param fields paths to selected fields relative to parent path
      * @return a ListenableFuture containing the result of the read
      */
-    public abstract  ListenableFuture<Optional<NormalizedNode<?, ?>>> read(LogicalDatastoreType store,
+    public abstract ListenableFuture<Optional<NormalizedNode<?, ?>>> read(LogicalDatastoreType store,
             YangInstanceIdentifier path, List<YangInstanceIdentifier> fields);
 
     /**
@@ -85,7 +85,4 @@ public abstract class RestconfStrategy implements AutoCloseable {
      * @return a FluentFuture containing the result of the check
      */
     public abstract FluentFuture<Boolean> exists(LogicalDatastoreType store, YangInstanceIdentifier path);
-
-    @Override
-    public abstract void close();
 }
index e4c88f22a683aa27aa7a4902fc885a1fc0cfe190..fddf1a78eb2b8dc2ce16807151c6b48a7f98d8af 100644 (file)
@@ -75,9 +75,7 @@ final class FutureCallbackTx {
     static <T> void addCallback(final ListenableFuture<T> listenableFuture, final String txType,
                                 final FutureDataFactory<? super T> dataFactory,
                                 @Nullable final RestconfStrategy strategy,
-                                final YangInstanceIdentifier path)
-        throws RestconfDocumentedException {
-
+                                final YangInstanceIdentifier path) throws RestconfDocumentedException {
         try {
             final T result = listenableFuture.get();
             dataFactory.setResult(result);
@@ -132,10 +130,6 @@ final class FutureCallbackTx {
             } else {
                 throw new RestconfDocumentedException("Transaction failed", e);
             }
-        } finally {
-            if (strategy != null) {
-                strategy.close();
-            }
         }
     }
 }
index 3aeb3518b094963488e89c37bffcbc4226806630..b4e552b55b254de9381cca26f9d2b12d0bfd8012 100644 (file)
@@ -219,7 +219,6 @@ public final class ReadDataTransactionUtil {
             case RestconfDataServiceConstant.ReadData.ALL:
                 return readAllData(strategy, path, withDefa, ctx);
             default:
-                strategy.close();
                 throw new RestconfDocumentedException(
                         new RestconfError(RestconfError.ErrorType.PROTOCOL, RestconfError.ErrorTag.INVALID_VALUE,
                                 "Invalid content parameter: " + valueOfContent, null,
@@ -257,7 +256,6 @@ public final class ReadDataTransactionUtil {
             case RestconfDataServiceConstant.ReadData.ALL:
                 return readAllData(strategy, path, withDefa, ctx, fields);
             default:
-                strategy.close();
                 throw new RestconfDocumentedException(new RestconfError(RestconfError.ErrorType.PROTOCOL,
                         RestconfError.ErrorTag.INVALID_VALUE, "Invalid content parameter: " + valueOfContent, null,
                         "The content parameter value must be either config, nonconfig or all (default)"));
index 956d84cf95ac574c085c2a947bec6ad35efc9aca..ca9299e8486b1e894c771a7adffa9e8e82c44658 100644 (file)
@@ -83,7 +83,7 @@ public final class ServicesWrapper implements BaseServicesWrapper, TransactionSe
             yangTextSourceProvider);
         RestconfStreamsSubscriptionService restconfSubscrService = new RestconfStreamsSubscriptionServiceImpl(
             dataBroker, notificationService, schemaCtxHandler, transactionChainHandler, configuration);
-        RestconfDataService restconfDataService = new RestconfDataServiceImpl(schemaCtxHandler, transactionChainHandler,
+        RestconfDataService restconfDataService = new RestconfDataServiceImpl(schemaCtxHandler, dataBroker,
             mountPointService, restconfSubscrService, actionService, configuration);
         RestconfInvokeOperationsService restconfInvokeOpsService = new RestconfInvokeOperationsServiceImpl(rpcService,
             schemaCtxHandler);
index f1ebf8ed1e76526d06e3dd4bbbade66ce18b92c9..21793e5d9208589cb82a87efc2fca77f5c33dfc2 100644 (file)
@@ -15,6 +15,7 @@ import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.opendaylight.restconf.common.patch.PatchEditOperation.CREATE;
 import static org.opendaylight.restconf.common.patch.PatchEditOperation.DELETE;
 import static org.opendaylight.restconf.common.patch.PatchEditOperation.REMOVE;
@@ -25,10 +26,9 @@ import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediate
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
+import java.util.Set;
 import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
@@ -38,7 +38,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -51,7 +50,6 @@ import org.opendaylight.mdsal.dom.api.DOMMountPoint;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
 import org.opendaylight.mdsal.dom.spi.FixedDOMSchemaService;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
@@ -106,7 +104,6 @@ public class RestconfDataServiceImplTest {
     private ContainerNode buildPlayerCont;
     private ContainerNode buildLibraryCont;
     private MapNode buildPlaylistList;
-    private TransactionChainHandler transactionChainHandler;
 
     @Mock
     private DOMTransactionChain domTransactionChain;
@@ -129,17 +126,16 @@ public class RestconfDataServiceImplTest {
     @Mock
     private DOMActionService actionService;
     @Mock
-    private DOMTransactionChain mountTransactionChain;
-    @Mock
     private RestconfStreamsSubscriptionService delegRestconfSubscrService;
     @Mock
     private Configuration configuration;
+    @Mock
+    private MultivaluedMap<String, String> queryParamenters;
 
     @Before
     public void setUp() throws Exception {
-        final MultivaluedMap<String, String> value = Mockito.mock(MultivaluedMap.class);
-        Mockito.when(value.entrySet()).thenReturn(new HashSet<>());
-        Mockito.when(this.uriInfo.getQueryParameters()).thenReturn(value);
+        doReturn(Set.of()).when(queryParamenters).entrySet();
+        doReturn(queryParamenters).when(this.uriInfo).getQueryParameters();
 
         this.baseQName = QName.create("http://example.com/ns/example-jukebox", "2015-04-04", "jukebox");
         this.containerPlayerQname = QName.create(this.baseQName, "player");
@@ -197,32 +193,27 @@ public class RestconfDataServiceImplTest {
         doReturn(CommitInfo.emptyFluentFuture()).when(this.write).commit();
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
 
-        doReturn(this.read).when(domTransactionChain).newReadOnlyTransaction();
-        doReturn(this.readWrite).when(domTransactionChain).newReadWriteTransaction();
         doReturn(this.write).when(domTransactionChain).newWriteOnlyTransaction();
 
-        DOMDataBroker mockDataBroker = Mockito.mock(DOMDataBroker.class);
-        Mockito.doReturn(domTransactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
+        DOMDataBroker mockDataBroker = mock(DOMDataBroker.class);
+        doReturn(this.read).when(mockDataBroker).newReadOnlyTransaction();
+        doReturn(this.readWrite).when(mockDataBroker).newReadWriteTransaction();
+        doReturn(domTransactionChain).when(mockDataBroker).createTransactionChain(any());
 
-        final SchemaContextHandler schemaContextHandler = new SchemaContextHandler(transactionChainHandler,
-                Mockito.mock(DOMSchemaService.class));
+        final SchemaContextHandler schemaContextHandler = new SchemaContextHandler(
+                new TransactionChainHandler(mockDataBroker), mock(DOMSchemaService.class));
 
         schemaContextHandler.onModelContextUpdated(this.contextRef);
-        this.dataService = new RestconfDataServiceImpl(schemaContextHandler, this.transactionChainHandler,
-                mountPointService, this.delegRestconfSubscrService,
-                this.actionService, configuration);
+        this.dataService = new RestconfDataServiceImpl(schemaContextHandler, mockDataBroker, mountPointService,
+                this.delegRestconfSubscrService, this.actionService, configuration);
         doReturn(Optional.of(this.mountPoint)).when(this.mountPointService)
                 .getMountPoint(any(YangInstanceIdentifier.class));
         doReturn(Optional.of(FixedDOMSchemaService.of(this.contextRef))).when(this.mountPoint)
                 .getService(DOMSchemaService.class);
         doReturn(Optional.of(this.mountDataBroker)).when(this.mountPoint).getService(DOMDataBroker.class);
         doReturn(Optional.empty()).when(this.mountPoint).getService(NetconfDataTreeService.class);
-        doReturn(this.mountTransactionChain).when(this.mountDataBroker)
-                .createTransactionChain(any(DOMTransactionChainListener.class));
-        doReturn(this.read).when(this.mountTransactionChain).newReadOnlyTransaction();
-        doReturn(this.readWrite).when(this.mountTransactionChain).newReadWriteTransaction();
+        doReturn(this.read).when(this.mountDataBroker).newReadOnlyTransaction();
+        doReturn(this.readWrite).when(this.mountDataBroker).newReadWriteTransaction();
     }
 
     @Test
@@ -310,7 +301,7 @@ public class RestconfDataServiceImplTest {
     @Test
     public void testReadDataConfigTest() {
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
-        parameters.put("content", Collections.singletonList("config"));
+        parameters.put("content", List.of("config"));
 
         doReturn(parameters).when(this.uriInfo).getQueryParameters();
         doReturn(immediateFluentFuture(Optional.of(this.buildBaseContConfig))).when(this.read)
@@ -338,7 +329,7 @@ public class RestconfDataServiceImplTest {
     @Test
     public void testReadDataOperationalTest() {
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
-        parameters.put("content", Collections.singletonList("nonconfig"));
+        parameters.put("content", List.of("nonconfig"));
 
         doReturn(parameters).when(this.uriInfo).getQueryParameters();
         doReturn(immediateFluentFuture(Optional.of(this.buildBaseContOperational))).when(this.read)
@@ -376,10 +367,6 @@ public class RestconfDataServiceImplTest {
 
     @Test
     public void testPutDataWithMountPoint() {
-//        final DOMDataBroker dataBroker = Mockito.mock(DOMDataBroker.class);
-//        doReturn(Optional.of(dataBroker)).when(mountPoint).getService(DOMDataBroker.class);
-//        doReturn(this.transactionChainHandler.get()).when(dataBroker)
-//                .createTransactionChain(RestConnectorProvider.TRANSACTION_CHAIN_LISTENER);
         final InstanceIdentifierContext<DataSchemaNode> iidContext =
                 new InstanceIdentifierContext<>(this.iidBase, this.schemaNode, mountPoint, this.contextRef);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont);
@@ -426,7 +413,7 @@ public class RestconfDataServiceImplTest {
         final YangInstanceIdentifier node =
                 payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier);
         doReturn(immediateFalseFluentFuture())
-                .when(this.read).exists(LogicalDatastoreType.CONFIGURATION, node);
+                .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node);
         doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, entryNode);
         doReturn(UriBuilder.fromUri("http://localhost:8181/restconf/15/")).when(this.uriInfo).getBaseUriBuilder();
 
@@ -542,9 +529,6 @@ public class RestconfDataServiceImplTest {
 
     @Test
     public void testGetRestconfStrategy() {
-        final InstanceIdentifierContext<? extends SchemaNode> iidContext = new InstanceIdentifierContext<>(
-                this.iidBase, this.schemaNode, this.mountPoint, this.contextRef);
-
         RestconfStrategy restconfStrategy = this.dataService.getRestconfStrategy(this.mountPoint);
         assertTrue(restconfStrategy instanceof MdsalRestconfStrategy);
 
index ed68afbe4f01d3f31c8b3702e71bad71075e8350..4d6230bd174b161e7472cf0c07d2ef8ba76e940b 100644 (file)
@@ -9,6 +9,8 @@ package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
 import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFalseFluentFuture;
 import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateTrueFluentFuture;
 
@@ -20,14 +22,12 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.api.DocumentedException;
 import org.opendaylight.netconf.api.NetconfDocumentedException;
@@ -36,7 +36,6 @@ import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError.ErrorTag;
 import org.opendaylight.restconf.common.errors.RestconfError.ErrorType;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
@@ -44,8 +43,6 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class DeleteDataTransactionUtilTest {
-    @Mock
-    private DOMTransactionChain transactionChain;
     @Mock
     private InstanceIdentifierContext<?> context;
     @Mock
@@ -55,22 +52,17 @@ public class DeleteDataTransactionUtilTest {
     @Mock
     private NetconfDataTreeService netconfService;
 
-    private TransactionChainHandler transactionChainHandler;
-
     @Before
     public void init() {
-        Mockito.when(this.transactionChain.newReadWriteTransaction()).thenReturn(this.readWrite);
-        Mockito.doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).discardChanges();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
+        doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).discardChanges();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
             .delete(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty());
-        Mockito.when(this.context.getInstanceIdentifier()).thenReturn(YangInstanceIdentifier.empty());
-
-        Mockito.doReturn(transactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
+        doReturn(YangInstanceIdentifier.empty()).when(this.context).getInstanceIdentifier();
+        doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
     }
 
     /**
@@ -79,10 +71,10 @@ public class DeleteDataTransactionUtilTest {
     @Test
     public void deleteData() {
         // assert that data to delete exists
-        Mockito.when(readWrite.exists(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty()))
+        when(readWrite.exists(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty()))
             .thenReturn(immediateTrueFluentFuture());
         // test
-        delete(new MdsalRestconfStrategy(transactionChainHandler));
+        delete(new MdsalRestconfStrategy(mockDataBroker));
         delete(new NetconfRestconfStrategy(netconfService));
     }
 
@@ -92,7 +84,7 @@ public class DeleteDataTransactionUtilTest {
     @Test
     public void deleteDataNegativeTest() {
         // assert that data to delete does NOT exist
-        Mockito.when(readWrite.exists(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty()))
+        when(readWrite.exists(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.empty()))
             .thenReturn(immediateFalseFluentFuture());
         final NetconfDocumentedException exception = new NetconfDocumentedException("id",
             DocumentedException.ErrorType.RPC, DocumentedException.ErrorTag.from("data-missing"),
@@ -101,10 +93,10 @@ public class DeleteDataTransactionUtilTest {
         ret.setException(new TransactionCommitFailedException(
             String.format("Commit of transaction %s failed", this), exception));
 
-        Mockito.when(this.netconfService.commit()).thenAnswer(invocation -> ret);
+        doReturn(ret).when(this.netconfService).commit();
 
         // test and assert error
-        deleteFail(new MdsalRestconfStrategy(transactionChainHandler));
+        deleteFail(new MdsalRestconfStrategy(mockDataBroker));
         deleteFail(new NetconfRestconfStrategy(netconfService));
     }
 
index 9772ce74a42ad70f04c15a70e226dc62e74bd521..4129d7f87cd96e39743dedf434993fc28f962b66 100644 (file)
@@ -29,7 +29,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -37,7 +36,6 @@ import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMRpcResult;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.api.DocumentedException;
 import org.opendaylight.netconf.api.NetconfDocumentedException;
@@ -49,7 +47,6 @@ import org.opendaylight.restconf.common.patch.PatchEntity;
 import org.opendaylight.restconf.common.patch.PatchStatusContext;
 import org.opendaylight.restconf.common.patch.PatchStatusEntity;
 import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
@@ -70,15 +67,12 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 public class PatchDataTransactionUtilTest {
     private static final String PATH_FOR_NEW_SCHEMA_CONTEXT = "/jukebox";
     @Mock
-    private DOMTransactionChain transactionChain;
-    @Mock
     private DOMDataTreeReadWriteTransaction rwTransaction;
     @Mock
     private DOMDataBroker mockDataBroker;
     @Mock
     private NetconfDataTreeService netconfService;
 
-    private TransactionChainHandler transactionChainHandler;
     private EffectiveModelContext refSchemaCtx;
     private YangInstanceIdentifier instanceIdContainer;
     private YangInstanceIdentifier instanceIdCreateAndDelete;
@@ -90,9 +84,6 @@ public class PatchDataTransactionUtilTest {
 
     @Before
     public void setUp() throws Exception {
-        doReturn(transactionChain).when(mockDataBroker).createTransactionChain(any());
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
-
         this.refSchemaCtx = YangParserTestUtils.parseYangFiles(
             TestRestconfUtils.loadFiles(PATH_FOR_NEW_SCHEMA_CONTEXT));
         final QName baseQName = QName.create("http://example.com/ns/example-jukebox", "2015-04-04", "jukebox");
@@ -173,7 +164,7 @@ public class PatchDataTransactionUtilTest {
                 .build();
 
         /* Mocks */
-        doReturn(this.rwTransaction).when(this.transactionChain).newReadWriteTransaction();
+        doReturn(this.rwTransaction).when(this.mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(this.rwTransaction).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).discardChanges();
@@ -204,7 +195,7 @@ public class PatchDataTransactionUtilTest {
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
             .remove(LogicalDatastoreType.CONFIGURATION, targetNodeMerge);
 
-        patch(patchContext, new MdsalRestconfStrategy(transactionChainHandler), false);
+        patch(patchContext, new MdsalRestconfStrategy(mockDataBroker), false);
         patch(patchContext, new NetconfRestconfStrategy(netconfService), false);
     }
 
@@ -232,7 +223,7 @@ public class PatchDataTransactionUtilTest {
         final InstanceIdentifierContext<? extends SchemaNode> iidContext =
                 new InstanceIdentifierContext<>(this.instanceIdCreateAndDelete, null, null, this.refSchemaCtx);
         final PatchContext patchContext = new PatchContext(iidContext, entities, "patchCD");
-        patch(patchContext, new MdsalRestconfStrategy(transactionChainHandler), true);
+        patch(patchContext, new MdsalRestconfStrategy(mockDataBroker), true);
         patch(patchContext, new NetconfRestconfStrategy(netconfService), true);
     }
 
@@ -247,7 +238,7 @@ public class PatchDataTransactionUtilTest {
         ret.setException(new TransactionCommitFailedException(
             String.format("Commit of transaction %s failed", this), exception));
 
-        Mockito.when(this.netconfService.commit()).thenAnswer(invocation -> ret);
+        doReturn(ret).when(this.netconfService).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
             .delete(LogicalDatastoreType.CONFIGURATION, this.targetNodeForCreateAndDelete);
 
@@ -259,7 +250,7 @@ public class PatchDataTransactionUtilTest {
         final InstanceIdentifierContext<? extends SchemaNode> iidContext =
                 new InstanceIdentifierContext<>(this.instanceIdCreateAndDelete, null, null, this.refSchemaCtx);
         final PatchContext patchContext = new PatchContext(iidContext, entities, "patchD");
-        deleteMdsal(patchContext, new MdsalRestconfStrategy(transactionChainHandler));
+        deleteMdsal(patchContext, new MdsalRestconfStrategy(mockDataBroker));
         deleteNetconf(patchContext, new NetconfRestconfStrategy(netconfService));
     }
 
@@ -274,7 +265,7 @@ public class PatchDataTransactionUtilTest {
         final InstanceIdentifierContext<? extends SchemaNode> iidContext =
                 new InstanceIdentifierContext<>(this.instanceIdCreateAndDelete, null, null, this.refSchemaCtx);
         final PatchContext patchContext = new PatchContext(iidContext, entities, "patchM");
-        patch(patchContext, new MdsalRestconfStrategy(transactionChainHandler), false);
+        patch(patchContext, new MdsalRestconfStrategy(mockDataBroker), false);
         patch(patchContext, new NetconfRestconfStrategy(netconfService), false);
     }
 
@@ -303,7 +294,7 @@ public class PatchDataTransactionUtilTest {
                 patchStatusContext.getEditCollection().get(0).getEditErrors().get(0).getErrorTag());
     }
 
-    private void deleteNetconf(PatchContext patchContext, RestconfStrategy strategy) {
+    private void deleteNetconf(final PatchContext patchContext, final RestconfStrategy strategy) {
         final PatchStatusContext patchStatusContext =
             PatchDataTransactionUtil.patchData(patchContext, strategy, this.refSchemaCtx);
 
index bce61de4897cda3e4ac43ce61da7fe3d598c0be9..270d8e07b78c4a3e28d07240604c96c372c9b28e 100644 (file)
@@ -18,7 +18,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -26,13 +25,11 @@ 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.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.context.NormalizedNodeContext;
 import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -53,8 +50,6 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 public class PlainPatchDataTransactionUtilTest {
     private static final String PATH_FOR_NEW_SCHEMA_CONTEXT = "/jukebox";
     @Mock
-    private DOMTransactionChain transactionChain;
-    @Mock
     private DOMDataTreeReadWriteTransaction readWrite;
     @Mock
     private DOMDataTreeReadTransaction read;
@@ -65,7 +60,6 @@ public class PlainPatchDataTransactionUtilTest {
     @Mock
     private NetconfDataTreeService netconfService;
 
-    private TransactionChainHandler transactionChainHandler;
     private LeafNode<?> leafGap;
     private ContainerNode jukeboxContainerWithPlayer;
     private ContainerNode jukeboxContainerWithPlaylist;
@@ -157,10 +151,8 @@ public class PlainPatchDataTransactionUtilTest {
                 .withChild(listBands)
                 .build();
 
-        Mockito.doReturn(transactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
     }
 
     @Test
@@ -169,14 +161,13 @@ public class PlainPatchDataTransactionUtilTest {
                 new InstanceIdentifierContext<>(this.iidJukebox, this.schemaNodeForJukebox, null, this.schema);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.jukeboxContainerWithPlayer);
 
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
-        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
-            .merge(any(), any(),any(),any());
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).merge(any(), any(),any(),
+                any());
 
-        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(transactionChainHandler),
-                this.schema);
+        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), this.schema);
         verify(this.readWrite).merge(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
 
@@ -192,14 +183,13 @@ public class PlainPatchDataTransactionUtilTest {
                 new InstanceIdentifierContext<>(this.iidGap, this.schemaNodeForGap, null, this.schema);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.leafGap);
 
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
             .merge(any(), any(), any(), any());
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
 
-        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(transactionChainHandler),
-                this.schema);
+        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), this.schema);
         verify(this.readWrite).merge(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
 
@@ -216,14 +206,13 @@ public class PlainPatchDataTransactionUtilTest {
                 new InstanceIdentifierContext<>(this.iidJukebox, this.schemaNodeForJukebox, null, this.schema);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.jukeboxContainerWithPlaylist);
 
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
             .merge(any(), any(),any(),any());
 
-        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(transactionChainHandler),
-                this.schema);
+        PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), this.schema);
         verify(this.readWrite).merge(LogicalDatastoreType.CONFIGURATION, this.iidJukebox, payload.getData());
 
         PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService),
index 738d6c8a9671a9c4bf519dc0439fcf06a05358d3..874af5a74d4e105a78dcc972a6b7d7793d27c836 100644 (file)
@@ -31,21 +31,17 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 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.DOMTransactionChain;
 import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.context.NormalizedNodeContext;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -64,23 +60,17 @@ import org.w3c.dom.DOMException;
 
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class PostDataTransactionUtilTest {
-
     private static final String PATH_FOR_NEW_SCHEMA_CONTEXT = "/jukebox";
 
-    @Mock
-    private DOMTransactionChain transactionChain;
     @Mock
     private DOMDataTreeReadWriteTransaction readWrite;
     @Mock
-    private DOMDataTreeReadTransaction read;
-    @Mock
     private UriInfo uriInfo;
     @Mock
     private DOMDataBroker mockDataBroker;
     @Mock
     private NetconfDataTreeService netconfService;
 
-    private TransactionChainHandler transactionChainHandler;
     private ContainerNode buildBaseCont;
     private EffectiveModelContext schema;
     private YangInstanceIdentifier iid2;
@@ -139,12 +129,10 @@ public class PostDataTransactionUtilTest {
                 .build();
 
         doReturn(UriBuilder.fromUri("http://localhost:8181/restconf/16/")).when(this.uriInfo).getBaseUriBuilder();
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
 
-        Mockito.doReturn(transactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
     }
 
     @Test
@@ -167,7 +155,7 @@ public class PostDataTransactionUtilTest {
                 payload.getData(), Optional.empty());
 
         Response response = PostDataTransactionUtil.postData(this.uriInfo, payload,
-                        new MdsalRestconfStrategy(transactionChainHandler), this.schema, null, null);
+                        new MdsalRestconfStrategy(mockDataBroker), this.schema, null, null);
         assertEquals(201, response.getStatus());
         verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iid2);
         verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION,
@@ -191,8 +179,7 @@ public class PostDataTransactionUtilTest {
         final NodeIdentifierWithPredicates identifier = entryNode.getIdentifier();
         final YangInstanceIdentifier node =
                 payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier);
-        doReturn(read).when(this.transactionChain).newReadOnlyTransaction();
-        doReturn(immediateFalseFluentFuture()).when(this.read).exists(LogicalDatastoreType.CONFIGURATION, node);
+        doReturn(immediateFalseFluentFuture()).when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node);
         doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, entryNode);
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
         doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService)
@@ -202,11 +189,11 @@ public class PostDataTransactionUtilTest {
             LogicalDatastoreType.CONFIGURATION, node, entryNode, Optional.empty());
 
         Response response = PostDataTransactionUtil.postData(this.uriInfo, payload,
-                        new MdsalRestconfStrategy(transactionChainHandler), this.schema, null, null);
+                        new MdsalRestconfStrategy(mockDataBroker), this.schema, null, null);
         assertEquals(201, response.getStatus());
         assertThat(URLDecoder.decode(response.getLocation().toString(), StandardCharsets.UTF_8),
             containsString(identifier.getValue(identifier.keySet().iterator().next()).toString()));
-        verify(this.read).exists(LogicalDatastoreType.CONFIGURATION, node);
+        verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node);
         verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, entryNode);
 
         response = PostDataTransactionUtil.postData(this.uriInfo, payload,
@@ -240,7 +227,7 @@ public class PostDataTransactionUtilTest {
 
         try {
             PostDataTransactionUtil.postData(this.uriInfo, payload,
-                    new MdsalRestconfStrategy(transactionChainHandler), this.schema, null, null);
+                    new MdsalRestconfStrategy(mockDataBroker), this.schema, null, null);
             fail("Expected RestconfDocumentedException");
         } catch (final RestconfDocumentedException e) {
             assertEquals(1, e.getErrors().size());
index cfe69a59490800c74a4f2512f507285939549bed..234443a53bf5b3d5d037c3100c3da33b5e44df53 100644 (file)
@@ -20,7 +20,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -28,14 +27,12 @@ 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.mdsal.dom.spi.DefaultDOMRpcResult;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.context.NormalizedNodeContext;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -56,8 +53,7 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 @RunWith(MockitoJUnitRunner.StrictStubs.class)
 public class PutDataTransactionUtilTest {
     private static final String PATH_FOR_NEW_SCHEMA_CONTEXT = "/jukebox";
-    @Mock
-    private DOMTransactionChain transactionChain;
+
     @Mock
     private DOMDataTreeReadWriteTransaction readWrite;
     @Mock
@@ -69,7 +65,6 @@ public class PutDataTransactionUtilTest {
     @Mock
     private NetconfDataTreeService netconfService;
 
-    private TransactionChainHandler transactionChainHandler;
     private LeafNode<?> buildLeaf;
     private ContainerNode buildBaseCont;
     private ContainerNode buildBaseContWithList;
@@ -166,10 +161,8 @@ public class PutDataTransactionUtilTest {
                 .withChild(buildList)
                 .build();
 
-        Mockito.doReturn(transactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-        transactionChainHandler = new TransactionChainHandler(mockDataBroker);
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
-        Mockito.doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).lock();
+        doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(this.netconfService).unlock();
     }
 
     @Test
@@ -222,16 +215,15 @@ public class PutDataTransactionUtilTest {
                 new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont);
 
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
-        doReturn(this.read).when(this.transactionChain).newReadOnlyTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
+        doReturn(this.read).when(this.mockDataBroker).newReadOnlyTransaction();
         doReturn(immediateFalseFluentFuture())
                 .when(this.read).exists(LogicalDatastoreType.CONFIGURATION, this.iid2);
         doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
 
-        PutDataTransactionUtil.putData(payload, this.schema, new MdsalRestconfStrategy(transactionChainHandler),
-                null, null);
+        PutDataTransactionUtil.putData(payload, this.schema, new MdsalRestconfStrategy(mockDataBroker), null, null);
         verify(this.read).exists(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier());
         verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION,
@@ -284,16 +276,15 @@ public class PutDataTransactionUtilTest {
                 new InstanceIdentifierContext<>(this.iid, this.schemaNode, null, this.schema);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildLeaf);
 
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
-        doReturn(this.read).when(this.transactionChain).newReadOnlyTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
+        doReturn(this.read).when(this.mockDataBroker).newReadOnlyTransaction();
         doReturn(immediateFalseFluentFuture())
                 .when(this.read).exists(LogicalDatastoreType.CONFIGURATION, this.iid);
         doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
 
-        PutDataTransactionUtil.putData(payload, this.schema, new MdsalRestconfStrategy(transactionChainHandler),
-                null, null);
+        PutDataTransactionUtil.putData(payload, this.schema, new MdsalRestconfStrategy(mockDataBroker), null, null);
         verify(this.read).exists(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier());
         verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION,
@@ -345,15 +336,14 @@ public class PutDataTransactionUtilTest {
                 new InstanceIdentifierContext<>(this.iid2, this.schemaNode2, null, this.schema);
         final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseContWithList);
 
-        doReturn(this.readWrite).when(this.transactionChain).newReadWriteTransaction();
-        doReturn(this.read).when(this.transactionChain).newReadOnlyTransaction();
+        doReturn(this.readWrite).when(this.mockDataBroker).newReadWriteTransaction();
+        doReturn(this.read).when(this.mockDataBroker).newReadOnlyTransaction();
         doReturn(immediateFalseFluentFuture())
                 .when(this.read).exists(LogicalDatastoreType.CONFIGURATION, this.iid2);
         doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION,
                 payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
         doReturn(CommitInfo.emptyFluentFuture()).when(this.readWrite).commit();
-        PutDataTransactionUtil.putData(payload, this.schema, new MdsalRestconfStrategy(transactionChainHandler),
-                null, null);
+        PutDataTransactionUtil.putData(payload, this.schema, new MdsalRestconfStrategy(mockDataBroker), null, null);
         verify(this.read).exists(LogicalDatastoreType.CONFIGURATION, this.iid2);
         verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, this.iid2, payload.getData());
     }
index 1679de17579c8ade2011aff46694c5bf1135f840..15e2a00e748c0cb00b467ee322beb88b9da8fdf3 100644 (file)
@@ -16,11 +16,11 @@ import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
@@ -32,12 +32,10 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
-import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.context.WriterParameters;
@@ -45,7 +43,6 @@ import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError;
 import org.opendaylight.restconf.common.errors.RestconfError.ErrorTag;
 import org.opendaylight.restconf.common.errors.RestconfError.ErrorType;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.NetconfRestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
@@ -76,8 +73,6 @@ public class ReadDataTransactionUtilTest {
     @Mock
     private NetconfDataTreeService netconfService;
     @Mock
-    private DOMTransactionChain transactionChain;
-    @Mock
     private InstanceIdentifierContext<ContainerSchemaNode> context;
     @Mock
     private DOMDataTreeReadTransaction read;
@@ -93,16 +88,15 @@ public class ReadDataTransactionUtilTest {
     public void setUp() {
         containerChildQName = QName.create("ns", "2016-02-28", "container-child");
 
-        when(transactionChain.newReadOnlyTransaction()).thenReturn(read);
         when(context.getSchemaContext()).thenReturn(schemaContext);
         when(context.getSchemaNode()).thenReturn(containerSchemaNode);
         when(containerSchemaNode.getQName()).thenReturn(NODE_IDENTIFIER.getNodeType());
         when(containerChildNode.getQName()).thenReturn(containerChildQName);
         when(containerSchemaNode.dataChildByName(containerChildQName)).thenReturn(containerChildNode);
 
-        DOMDataBroker mockDataBroker = Mockito.mock(DOMDataBroker.class);
-        Mockito.doReturn(transactionChain).when(mockDataBroker).createTransactionChain(Mockito.any());
-        mdsalStrategy = new MdsalRestconfStrategy(new TransactionChainHandler(mockDataBroker));
+        DOMDataBroker mockDataBroker = mock(DOMDataBroker.class);
+        doReturn(read).when(mockDataBroker).newReadOnlyTransaction();
+        mdsalStrategy = new MdsalRestconfStrategy(mockDataBroker);
         netconfStrategy = new NetconfRestconfStrategy(this.netconfService);
     }
 
@@ -344,7 +338,7 @@ public class ReadDataTransactionUtilTest {
      */
     @Test
     public void parseUriParametersDefaultTest() {
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
         // no parameters, default values should be used
@@ -365,16 +359,16 @@ public class ReadDataTransactionUtilTest {
      */
     @Test
     public void parseUriParametersUserDefinedTest() {
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
         final String content = "config";
         final String depth = "10";
         final String fields = containerChildQName.getLocalName();
 
-        parameters.put("content", Collections.singletonList(content));
-        parameters.put("depth", Collections.singletonList(depth));
-        parameters.put("fields", Collections.singletonList(fields));
+        parameters.put("content", List.of(content));
+        parameters.put("depth", List.of(depth));
+        parameters.put("fields", List.of(fields));
 
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
@@ -406,10 +400,10 @@ public class ReadDataTransactionUtilTest {
      */
     @Test
     public void parseUriParametersContentParameterNegativeTest() {
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
-        parameters.put("content", Collections.singletonList("not-allowed-parameter-value"));
+        parameters.put("content", List.of("not-allowed-parameter-value"));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         try {
@@ -428,11 +422,11 @@ public class ReadDataTransactionUtilTest {
      */
     @Test
     public void parseUriParametersDepthParameterNegativeTest() {
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
         // inserted value is not allowed
-        parameters.put("depth", Collections.singletonList("bounded"));
+        parameters.put("depth", List.of("bounded"));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         try {
@@ -451,12 +445,12 @@ public class ReadDataTransactionUtilTest {
      */
     @Test
     public void parseUriParametersDepthMinimalParameterNegativeTest() {
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
         // inserted value is too low
         parameters.put(
-                "depth", Collections.singletonList(String.valueOf(RestconfDataServiceConstant.ReadData.MIN_DEPTH - 1)));
+                "depth", List.of(String.valueOf(RestconfDataServiceConstant.ReadData.MIN_DEPTH - 1)));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         try {
@@ -475,12 +469,12 @@ public class ReadDataTransactionUtilTest {
      */
     @Test
     public void parseUriParametersDepthMaximalParameterNegativeTest() {
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
         // inserted value is too high
         parameters.put(
-                "depth", Collections.singletonList(String.valueOf(RestconfDataServiceConstant.ReadData.MAX_DEPTH + 1)));
+                "depth", List.of(String.valueOf(RestconfDataServiceConstant.ReadData.MAX_DEPTH + 1)));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         try {
@@ -501,9 +495,9 @@ public class ReadDataTransactionUtilTest {
     @Test
     public void parseUriParametersWithDefaultAndNonTaggedTest() {
         // preparation of input data
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
-        parameters.put(RestconfDataServiceConstant.ReadData.WITH_DEFAULTS, Collections.singletonList("explicit"));
+        parameters.put(RestconfDataServiceConstant.ReadData.WITH_DEFAULTS, List.of("explicit"));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         final WriterParameters writerParameters = ReadDataTransactionUtil.parseUriParameters(context, uriInfo);
@@ -517,9 +511,9 @@ public class ReadDataTransactionUtilTest {
     @Test
     public void parseUriParametersWithDefaultInvalidTest() {
         // preparation of input data
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
-        parameters.put(RestconfDataServiceConstant.ReadData.WITH_DEFAULTS, Collections.singletonList("invalid"));
+        parameters.put(RestconfDataServiceConstant.ReadData.WITH_DEFAULTS, List.of("invalid"));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         final RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
@@ -536,10 +530,10 @@ public class ReadDataTransactionUtilTest {
     @Test
     public void parseUriParametersWithDefaultAndTaggedTest() {
         // preparation of input data
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
         parameters.put(RestconfDataServiceConstant.ReadData.WITH_DEFAULTS,
-                Collections.singletonList(ReadData.WithDefaults.REPORT_ALL_TAGGED.value()));
+                List.of(ReadData.WithDefaults.REPORT_ALL_TAGGED.value()));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         final WriterParameters writerParameters = ReadDataTransactionUtil.parseUriParameters(context, uriInfo);
@@ -554,10 +548,10 @@ public class ReadDataTransactionUtilTest {
     @Test
     public void parseUriParametersWithDefaultAndReportAllTest() {
         // preparation of input data
-        final UriInfo uriInfo = Mockito.mock(UriInfo.class);
+        final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
         parameters.put(RestconfDataServiceConstant.ReadData.WITH_DEFAULTS,
-                Collections.singletonList(ReadData.WithDefaults.REPORT_ALL.value()));
+                List.of(ReadData.WithDefaults.REPORT_ALL.value()));
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
 
         final WriterParameters writerParameters = ReadDataTransactionUtil.parseUriParameters(context, uriInfo);