*/
package org.opendaylight.restconf.nb.rfc8040.rests.utils;
-import com.google.common.util.concurrent.ListenableFuture;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
-import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
-import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfTransaction;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
* Util class for plain patch data to DS.
*/
public final class PlainPatchDataTransactionUtil {
-
private static final Logger LOG = LoggerFactory.getLogger(PlainPatchDataTransactionUtil.class);
private PlainPatchDataTransactionUtil() {
+ // Hidden on purpose
}
/**
* Prepare variables for put data to DS. Close {@link DOMTransactionChain} if any inside of object
* {@link RestconfStrategy} provided as a parameter if any.
*
- * @param payload data to put
+ * @param path data path
+ * @param data data to put
* @param schemaContext reference to {@link EffectiveModelContext}
* @param strategy object that perform the actual DS operations
* @return {@link Response}
*/
- public static Response patchData(final NormalizedNodePayload payload,
- final RestconfStrategy strategy,
- final EffectiveModelContext schemaContext) {
-
+ public static Response patchData(final YangInstanceIdentifier path, final NormalizedNode data,
+ final RestconfStrategy strategy, final EffectiveModelContext schemaContext) {
final RestconfTransaction transaction = strategy.prepareWriteExecution();
- YangInstanceIdentifier path = payload.getInstanceIdentifierContext().getInstanceIdentifier();
- NormalizedNode data = payload.getData();
try {
LOG.trace("Merge CONFIGURATION within Restconf Patch: {} with payload {}", path, data);
throw new IllegalArgumentException(e);
}
- final ListenableFuture<? extends CommitInfo> future = transaction.commit();
+ final var future = transaction.commit();
final ResponseFactory response = new ResponseFactory(Status.OK);
// closes transactionChain if any, may throw
import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
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.nb.rfc8040.AbstractJukeboxTest;
-import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
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;
@Test
public void testPatchContainerData() {
- final InstanceIdentifierContext iidContext =
- InstanceIdentifierContext.ofLocalPath(JUKEBOX_SCHEMA, iidJukebox);
- final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, jukeboxContainerWithPlayer);
-
doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
doReturn(CommitInfo.emptyFluentFuture()).when(readWrite).commit();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).merge(any(), any(),any(),
any());
- PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
- verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION,
- payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
+ PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlayer,
+ new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
+ verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlayer);
- PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
- verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION,
- payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty());
+ PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlayer,
+ new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
+ verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlayer,
+ Optional.empty());
}
@Test
public void testPatchLeafData() {
- final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(JUKEBOX_SCHEMA, iidGap);
- final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, leafGap);
-
doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
doReturn(CommitInfo.emptyFluentFuture()).when(readWrite).commit();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService)
.merge(any(), any(), any(), any());
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
- PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
- verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION,
- payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData());
+ PlainPatchDataTransactionUtil.patchData(iidGap, leafGap, new MdsalRestconfStrategy(mockDataBroker),
+ JUKEBOX_SCHEMA);
+ verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidGap, leafGap);
- PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
+ PlainPatchDataTransactionUtil.patchData(iidGap, leafGap, new NetconfRestconfStrategy(netconfService),
+ JUKEBOX_SCHEMA);
verify(netconfService).lock();
- verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION,
- payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData(), Optional.empty());
+ verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidGap, leafGap, Optional.empty());
}
@Test
public void testPatchListData() {
- final InstanceIdentifierContext iidContext = InstanceIdentifierContext.ofLocalPath(JUKEBOX_SCHEMA, iidJukebox);
- final NormalizedNodePayload payload = NormalizedNodePayload.of(iidContext, jukeboxContainerWithPlaylist);
-
doReturn(readWrite).when(mockDataBroker).newReadWriteTransaction();
doReturn(CommitInfo.emptyFluentFuture()).when(readWrite).commit();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService).commit();
doReturn(Futures.immediateFuture(new DefaultDOMRpcResult())).when(netconfService)
.merge(any(), any(),any(),any());
- PlainPatchDataTransactionUtil.patchData(payload, new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
- verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, payload.getData());
+ PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlaylist,
+ new MdsalRestconfStrategy(mockDataBroker), JUKEBOX_SCHEMA);
+ verify(readWrite).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlaylist);
- PlainPatchDataTransactionUtil.patchData(payload, new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
- verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, payload.getData(),
- Optional.empty());
+ PlainPatchDataTransactionUtil.patchData(iidJukebox, jukeboxContainerWithPlaylist,
+ new NetconfRestconfStrategy(netconfService), JUKEBOX_SCHEMA);
+ verify(netconfService).merge(LogicalDatastoreType.CONFIGURATION, iidJukebox, jukeboxContainerWithPlaylist,
+ Optional.empty());
}
}