X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmessages%2FReadyLocalTransactionSerializer.java;h=a08a27fd04d495529754f964cf5e9a8b4447bf54;hp=fc5a99fe9adf88d05a386429345e30ead5944f33;hb=26721a6f2bc3ce4d524ccb562d7e7a38b4b76068;hpb=f2b5692224570e7ecccb139594ed55237efeec03 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 fc5a99fe9a..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,19 +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.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} @@ -59,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; } } }