use of org.opendaylight.controller.cluster.access.commands.TransactionMerge in project controller by opendaylight.
the class LocalReadWriteProxyTransaction method flushState.
@Override
Optional<ModifyTransactionRequest> flushState() {
final ModifyTransactionRequestBuilder b = new ModifyTransactionRequestBuilder(getIdentifier(), localActor());
b.setSequence(0);
sealedModification.applyToCursor(new AbstractDataTreeModificationCursor() {
@Override
public void write(final PathArgument child, final NormalizedNode<?, ?> data) {
b.addModification(new TransactionWrite(current().node(child), data));
}
@Override
public void merge(final PathArgument child, final NormalizedNode<?, ?> data) {
b.addModification(new TransactionMerge(current().node(child), data));
}
@Override
public void delete(final PathArgument child) {
b.addModification(new TransactionDelete(current().node(child)));
}
});
return Optional.of(b.build());
}
use of org.opendaylight.controller.cluster.access.commands.TransactionMerge in project controller by opendaylight.
the class RemoteProxyTransaction method replayLocalCommitRequest.
private void replayLocalCommitRequest(final CommitLocalTransactionRequest request, final Consumer<Response<?, ?>> callback, final long enqueuedTicks) {
final DataTreeModification mod = request.getModification();
final Optional<Long> optTicks = Optional.of(Long.valueOf(enqueuedTicks));
mod.applyToCursor(new AbstractDataTreeModificationCursor() {
@Override
public void write(final PathArgument child, final NormalizedNode<?, ?> data) {
appendModification(new TransactionWrite(current().node(child), data), optTicks);
}
@Override
public void merge(final PathArgument child, final NormalizedNode<?, ?> data) {
appendModification(new TransactionMerge(current().node(child), data), optTicks);
}
@Override
public void delete(final PathArgument child) {
appendModification(new TransactionDelete(current().node(child)), optTicks);
}
});
enqueueRequest(commitRequest(request.isCoordinated()), callback, enqueuedTicks);
}
use of org.opendaylight.controller.cluster.access.commands.TransactionMerge in project controller by opendaylight.
the class LocalReadWriteProxyTransactionTest method applyModifyTransactionRequest.
private void applyModifyTransactionRequest(final boolean coordinated) {
final TestProbe probe = createProbe();
final ModifyTransactionRequestBuilder builder = new ModifyTransactionRequestBuilder(TRANSACTION_ID, probe.ref());
final TransactionModification write = new TransactionWrite(PATH_1, DATA_1);
final TransactionModification merge = new TransactionMerge(PATH_2, DATA_2);
final TransactionModification delete = new TransactionDelete(PATH_3);
builder.addModification(write);
builder.addModification(merge);
builder.addModification(delete);
builder.setSequence(0L);
builder.setCommit(coordinated);
final ModifyTransactionRequest request = builder.build();
final Consumer<Response<?, ?>> callback = createCallbackMock();
transaction.replayModifyTransactionRequest(request, callback, Ticker.systemTicker().read());
verify(modification).write(PATH_1, DATA_1);
verify(modification).merge(PATH_2, DATA_2);
verify(modification).delete(PATH_3);
final CommitLocalTransactionRequest commitRequest = getTester().expectTransactionRequest(CommitLocalTransactionRequest.class);
Assert.assertEquals(modification, commitRequest.getModification());
Assert.assertEquals(coordinated, commitRequest.isCoordinated());
}
Aggregations