X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcds-access-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fcommands%2FTransactionModification.java;h=a4e019437393731b8c7794f9cf3220c6e0b18168;hb=69bb0432be7c20fbf051f51242188d527c5a7aaf;hp=d71142201c2c25807e73fcd1e22128d16f5e7ca3;hpb=d9e3fa9b7d4f1ad484931151c3b3ef237a674ab2;p=controller.git diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java index d71142201c..a4e0194373 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java @@ -7,18 +7,21 @@ */ package org.opendaylight.controller.cluster.access.commands; +import static java.util.Objects.requireNonNull; + import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; import java.io.IOException; -import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataInput; -import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataOutput; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.stream.ReusableStreamReceiver; +import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput; +import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput; /** * An individual modification of a transaction's state. This class and its subclasses are not serializable, but rather - * expose {@link #writeTo(NormalizedNodeDataOutput)} and {@link #readFrom(NormalizedNodeDataInput)} methods for explicit - * serialization. The reason for this is that they are usually transmitted in bulk, hence it is advantageous to reuse + * expose {@link #writeTo(NormalizedNodeDataOutput)} and + * {@link #readFrom(NormalizedNodeDataInput, ReusableStreamReceiver)} methods for explicit serialization. The reason for + * this is that they are usually transmitted in bulk, hence it is advantageous to reuse * a {@link NormalizedNodeDataOutput} instance to achieve better compression. * * @author Robert Varga @@ -32,7 +35,7 @@ public abstract class TransactionModification { private final YangInstanceIdentifier path; TransactionModification(final YangInstanceIdentifier path) { - this.path = Preconditions.checkNotNull(path); + this.path = requireNonNull(path); } public final YangInstanceIdentifier getPath() { @@ -51,15 +54,16 @@ public abstract class TransactionModification { out.writeYangInstanceIdentifier(path); } - static TransactionModification readFrom(final NormalizedNodeDataInput in) throws IOException { + static TransactionModification readFrom(final NormalizedNodeDataInput in, final ReusableStreamReceiver writer) + throws IOException { final byte type = in.readByte(); switch (type) { case TYPE_DELETE: return new TransactionDelete(in.readYangInstanceIdentifier()); case TYPE_MERGE: - return new TransactionMerge(in.readYangInstanceIdentifier(), in.readNormalizedNode()); + return new TransactionMerge(in.readYangInstanceIdentifier(), in.readNormalizedNode(writer)); case TYPE_WRITE: - return new TransactionWrite(in.readYangInstanceIdentifier(), in.readNormalizedNode()); + return new TransactionWrite(in.readYangInstanceIdentifier(), in.readNormalizedNode(writer)); default: throw new IllegalArgumentException("Unhandled type " + type); }