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%2FAbstractRead.java;h=5b92545c82ad132f45256962fb01eab93dbf6ad2;hp=c1d83e989184a7795cb5b987438d4a562b67659b;hb=6a32d897d2dcb4fa54977b3b2defe76dc0a5d5e2;hpb=74926cb05f2e5e4937658ca61444f7d7c846eb00 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java index c1d83e9891..5b92545c82 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java @@ -8,10 +8,13 @@ package org.opendaylight.controller.cluster.datastore.messages; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.SettableFuture; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import org.opendaylight.controller.cluster.datastore.node.utils.stream.SerializationUtils; +import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** @@ -20,10 +23,16 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; * @author gwu * */ -public abstract class AbstractRead implements SerializableMessage { - private final YangInstanceIdentifier path; +public abstract class AbstractRead extends VersionedExternalizableMessage { + private static final long serialVersionUID = 1L; - public AbstractRead(final YangInstanceIdentifier path) { + private YangInstanceIdentifier path; + + protected AbstractRead() { + } + + public AbstractRead(final YangInstanceIdentifier path, final short version) { + super(version); this.path = path; } @@ -31,8 +40,25 @@ public abstract class AbstractRead implements SerializableMessage { return path; } - public abstract CheckedFuture apply(DOMStoreReadTransaction readDelegate); + @Override + public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { + super.readExternal(in); + path = SerializationUtils.deserializePath(in); + } + + @Override + public void writeExternal(final ObjectOutput out) throws IOException { + super.writeExternal(out); + SerializationUtils.writePath(out, path); + } + + public AbstractRead asVersion(final short version) { + return version == getVersion() ? this : newInstance(version); + } + + public abstract FluentFuture apply(DOMStoreReadTransaction readDelegate); public abstract void processResponse(Object reponse, SettableFuture promise); + protected abstract AbstractRead newInstance(short withVersion); }