X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmessages%2FReadyLocalTransactionSerializer.java;h=a08a27fd04d495529754f964cf5e9a8b4447bf54;hb=8ec73bf853a9b6708b455c0321a585992e02b125;hp=1091aa50706338b9a45e9bb12723f979a905dc48;hpb=376df7be9839100e31e6916d6e685dda9f8bd030;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyLocalTransactionSerializer.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyLocalTransactionSerializer.java index 1091aa5070..a08a27fd04 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyLocalTransactionSerializer.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyLocalTransactionSerializer.java @@ -8,20 +8,9 @@ package org.opendaylight.controller.cluster.datastore.messages; import akka.serialization.JSerializer; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import java.util.ArrayDeque; -import java.util.Deque; -import javax.annotation.Nonnull; import org.apache.commons.lang3.SerializationUtils; -import org.opendaylight.controller.cluster.datastore.DataStoreVersions; -import org.opendaylight.controller.cluster.datastore.modification.DeleteModification; -import org.opendaylight.controller.cluster.datastore.modification.MergeModification; -import org.opendaylight.controller.cluster.datastore.modification.WriteModification; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor; +import org.opendaylight.controller.cluster.datastore.utils.AbstractBatchedModificationsCursor; /** * Specialized message transformer, which transforms a {@link ReadyLocalTransaction} @@ -43,14 +32,14 @@ public final class ReadyLocalTransactionSerializer extends JSerializer { @Override public byte[] toBinary(final Object obj) { Preconditions.checkArgument(obj instanceof ReadyLocalTransaction, "Unsupported object type %s", obj.getClass()); - final ReadyLocalTransaction msg = (ReadyLocalTransaction) obj; - final BatchedModifications batched = new BatchedModifications(msg.getTransactionID(), - DataStoreVersions.CURRENT_VERSION, ""); - batched.setDoCommitOnReady(msg.isDoCommitOnReady()); + final ReadyLocalTransaction readyLocal = (ReadyLocalTransaction) obj; + final BatchedModifications batched = new BatchedModifications(readyLocal.getTransactionID(), + readyLocal.getRemoteVersion(), ""); + batched.setDoCommitOnReady(readyLocal.isDoCommitOnReady()); batched.setTotalMessagesSent(1); batched.setReady(true); - msg.getModification().applyToCursor(new BatchedCursor(batched)); + readyLocal.getModification().applyToCursor(new BatchedCursor(batched)); return SerializationUtils.serialize(batched); } @@ -60,70 +49,16 @@ public final class ReadyLocalTransactionSerializer extends JSerializer { return SerializationUtils.deserialize(bytes); } - private static final class BatchedCursor implements DataTreeModificationCursor { - private final Deque stack = new ArrayDeque<>(); + private static final class BatchedCursor extends AbstractBatchedModificationsCursor { private final BatchedModifications message; BatchedCursor(final BatchedModifications message) { this.message = Preconditions.checkNotNull(message); - stack.push(YangInstanceIdentifier.EMPTY); } @Override - public void delete(final PathArgument child) { - message.addModification(new DeleteModification(stack.peek().node(child))); - } - - @Override - public void merge(final PathArgument child, final NormalizedNode data) { - message.addModification(new MergeModification(stack.peek().node(child), data)); - } - - @Override - public void write(final PathArgument child, final NormalizedNode data) { - message.addModification(new WriteModification(stack.peek().node(child), data)); - } - - @Override - public void enter(@Nonnull final PathArgument child) { - stack.push(stack.peek().node(child)); - } - - @Override - public void enter(@Nonnull final PathArgument... path) { - for (PathArgument arg : path) { - enter(arg); - } - } - - @Override - public void enter(@Nonnull final Iterable path) { - for (PathArgument arg : path) { - enter(arg); - } - } - - @Override - public void exit() { - stack.pop(); - } - - @Override - public void exit(final int depth) { - Preconditions.checkArgument(depth < stack.size(), "Stack holds only %s elements, cannot exit %s levels", stack.size(), depth); - for (int i = 0; i < depth; ++i) { - stack.pop(); - } - } - - @Override - public Optional> readNode(@Nonnull final PathArgument child) { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public void close() { - // No-op + protected BatchedModifications getModifications() { + return message; } } }