From 909831d806ef3b35358206559523f09716214e58 Mon Sep 17 00:00:00 2001 From: Gary Wu Date: Mon, 1 Feb 2016 16:45:25 -0800 Subject: [PATCH] Refactor VersionedExternalizableMessage messages Refactor VersionedExternalizableMessage messages to centralize version checking in toSerializable(). Change-Id: I6ad4477eb16e104ab801205842875efa164817af Signed-off-by: Gary Wu --- .../messages/AbortTransactionReply.java | 2 +- .../AbstractThreePhaseCommitMessage.java | 8 ----- .../messages/BatchedModificationsReply.java | 3 +- .../messages/CanCommitTransactionReply.java | 8 ++--- .../datastore/messages/CloseTransaction.java | 5 ++- .../messages/CloseTransactionChain.java | 10 ++---- .../messages/CloseTransactionReply.java | 3 +- .../messages/CommitTransactionReply.java | 2 +- .../datastore/messages/CreateTransaction.java | 13 +++---- .../messages/CreateTransactionReply.java | 11 ++---- .../datastore/messages/DataExists.java | 10 ++---- .../datastore/messages/DataExistsReply.java | 8 ++--- .../datastore/messages/EmptyReply.java | 36 ------------------- .../cluster/datastore/messages/ReadData.java | 10 ++---- .../datastore/messages/ReadDataReply.java | 3 +- .../messages/ReadyTransactionReply.java | 3 +- .../VersionedExternalizableMessage.java | 12 +++++++ 17 files changed, 44 insertions(+), 103 deletions(-) delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/EmptyReply.java diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbortTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbortTransactionReply.java index b2c9ea563f..ac65b5b489 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbortTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbortTransactionReply.java @@ -11,7 +11,7 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.protobuff.messages.cohort3pc.ThreePhaseCommitCohortMessages; -public class AbortTransactionReply extends EmptyReply { +public class AbortTransactionReply extends VersionedExternalizableMessage { private static final Object SERIALIZED_INSTANCE = ThreePhaseCommitCohortMessages.AbortTransactionReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractThreePhaseCommitMessage.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractThreePhaseCommitMessage.java index d96be31b2d..926b552a9e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractThreePhaseCommitMessage.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractThreePhaseCommitMessage.java @@ -11,7 +11,6 @@ import com.google.common.base.Preconditions; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; -import org.opendaylight.controller.cluster.datastore.DataStoreVersions; /** * Base class for a 3PC message. @@ -31,8 +30,6 @@ public abstract class AbstractThreePhaseCommitMessage extends VersionedExternali this.transactionID = Preconditions.checkNotNull(transactionID); } - protected abstract Object newLegacySerializedInstance(); - public String getTransactionID() { return transactionID; } @@ -49,11 +46,6 @@ public abstract class AbstractThreePhaseCommitMessage extends VersionedExternali out.writeUTF(transactionID); } - @Override - public Object toSerializable() { - return getVersion() >= DataStoreVersions.BORON_VERSION ? this : newLegacySerializedInstance(); - } - @Override public String toString() { return getClass().getSimpleName() + " [transactionID=" + transactionID + ", version=" + getVersion() diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsReply.java index 895de3a626..3f179cf001 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsReply.java @@ -45,7 +45,8 @@ public class BatchedModificationsReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { + protected Object newLegacySerializedInstance() { + // no legacy serialized type for this class; return self return this; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java index fa4fca5089..d2cf5fde7e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CanCommitTransactionReply.java @@ -53,12 +53,8 @@ public class CanCommitTransactionReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return canCommit ? YES_SERIALIZED : NO_SERIALIZED; - } + protected Object newLegacySerializedInstance() { + return canCommit ? YES_SERIALIZED : NO_SERIALIZED; } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java index 738a74f17b..69deff4969 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransaction.java @@ -8,7 +8,6 @@ package org.opendaylight.controller.cluster.datastore.messages; -import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class CloseTransaction extends VersionedExternalizableMessage { @@ -25,8 +24,8 @@ public class CloseTransaction extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { - return getVersion() >= DataStoreVersions.BORON_VERSION ? this : SERIALIZED_INSTANCE; + protected Object newLegacySerializedInstance() { + return SERIALIZED_INSTANCE; } public static boolean isSerializedType(Object message) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java index bc59c544ca..f49394a6cd 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionChain.java @@ -44,13 +44,9 @@ public class CloseTransactionChain extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return ShardTransactionChainMessages.CloseTransactionChain.newBuilder() - .setTransactionChainId(transactionChainId).build(); - } + protected Object newLegacySerializedInstance() { + return ShardTransactionChainMessages.CloseTransactionChain.newBuilder().setTransactionChainId(transactionChainId) + .build(); } public static CloseTransactionChain fromSerializable(final Object serializable){ diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java index 3e32233959..549a274759 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CloseTransactionReply.java @@ -15,7 +15,8 @@ public class CloseTransactionReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { + protected Object newLegacySerializedInstance() { + // no legacy serialized type for this class; return self return this; } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CommitTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CommitTransactionReply.java index 2b800c8346..4207cd5877 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CommitTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CommitTransactionReply.java @@ -11,7 +11,7 @@ package org.opendaylight.controller.cluster.datastore.messages; import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.protobuff.messages.cohort3pc.ThreePhaseCommitCohortMessages; -public class CommitTransactionReply extends EmptyReply { +public class CommitTransactionReply extends VersionedExternalizableMessage { private static final Object SERIALIZED_INSTANCE = ThreePhaseCommitCohortMessages.CommitTransactionReply.newBuilder().build(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java index 036cb58614..cd9479543e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransaction.java @@ -12,7 +12,6 @@ import com.google.common.base.Preconditions; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; -import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class CreateTransaction extends VersionedExternalizableMessage { @@ -62,14 +61,10 @@ public class CreateTransaction extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return ShardTransactionMessages.CreateTransaction.newBuilder() - .setTransactionId(transactionId).setTransactionType(transactionType) - .setTransactionChainId(transactionChainId).setMessageVersion(getVersion()).build(); - } + protected Object newLegacySerializedInstance() { + return ShardTransactionMessages.CreateTransaction.newBuilder().setTransactionId(transactionId) + .setTransactionType(transactionType).setTransactionChainId(transactionChainId) + .setMessageVersion(getVersion()).build(); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java index ec38f749e9..634d0492f9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/CreateTransactionReply.java @@ -11,7 +11,6 @@ package org.opendaylight.controller.cluster.datastore.messages; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; -import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; public class CreateTransactionReply extends VersionedExternalizableMessage { @@ -52,13 +51,9 @@ public class CreateTransactionReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return ShardTransactionMessages.CreateTransactionReply.newBuilder().setTransactionActorPath(transactionPath) - .setTransactionId(transactionId).setMessageVersion(getVersion()).build(); - } + protected Object newLegacySerializedInstance() { + return ShardTransactionMessages.CreateTransactionReply.newBuilder().setTransactionActorPath(transactionPath) + .setTransactionId(transactionId).setMessageVersion(getVersion()).build(); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java index 7d1bcdb8f6..6dec833088 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java @@ -28,13 +28,9 @@ public class DataExists extends AbstractRead { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return ShardTransactionMessages.DataExists.newBuilder().setInstanceIdentifierPathArguments( - InstanceIdentifierUtils.toSerializable(getPath())).build(); - } + protected Object newLegacySerializedInstance() { + return ShardTransactionMessages.DataExists.newBuilder() + .setInstanceIdentifierPathArguments(InstanceIdentifierUtils.toSerializable(getPath())).build(); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java index e68724a262..7eab81695f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExistsReply.java @@ -49,12 +49,8 @@ public class DataExistsReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return exists ? SERIALIZABLE_TRUE : SERIALIZABLE_FALSE; - } + protected Object newLegacySerializedInstance() { + return exists ? SERIALIZABLE_TRUE : SERIALIZABLE_FALSE; } public static DataExistsReply fromSerializable(final Object serializable) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/EmptyReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/EmptyReply.java deleted file mode 100644 index 7eea727a32..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/EmptyReply.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2015 Brocade Communications Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.cluster.datastore.messages; - -import org.opendaylight.controller.cluster.datastore.DataStoreVersions; - -/** - * A reply with no data. - * - * @author Thomas Pantelis - */ -public abstract class EmptyReply extends VersionedExternalizableMessage { - protected EmptyReply() { - } - - protected EmptyReply(short version) { - super(version); - } - - protected abstract Object newLegacySerializedInstance(); - - @Override - public Object toSerializable() { - return getVersion() >= DataStoreVersions.BORON_VERSION ? this : newLegacySerializedInstance(); - } - - @Override - public String toString() { - return getClass().getSimpleName() + " [version=" + getVersion() + "]"; - } -} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java index c2709d757f..7837493970 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java @@ -30,13 +30,9 @@ public class ReadData extends AbstractRead>> { } @Override - public Object toSerializable() { - if(getVersion() >= DataStoreVersions.BORON_VERSION) { - return this; - } else { - return ShardTransactionMessages.ReadData.newBuilder().setInstanceIdentifierPathArguments( - InstanceIdentifierUtils.toSerializable(getPath())).build(); - } + protected Object newLegacySerializedInstance() { + return ShardTransactionMessages.ReadData.newBuilder() + .setInstanceIdentifierPathArguments(InstanceIdentifierUtils.toSerializable(getPath())).build(); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadDataReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadDataReply.java index 72186af3f9..747ec99a71 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadDataReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadDataReply.java @@ -44,7 +44,8 @@ public class ReadDataReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { + protected Object newLegacySerializedInstance() { + // no legacy serialized type for this class; return self return this; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java index 636fa5ac2d..475ef3a363 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadyTransactionReply.java @@ -47,7 +47,8 @@ public class ReadyTransactionReply extends VersionedExternalizableMessage { } @Override - public Object toSerializable() { + protected Object newLegacySerializedInstance() { + // no legacy serialized type for this class; return self return this; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/VersionedExternalizableMessage.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/VersionedExternalizableMessage.java index 17b93f4b04..e1f96ca457 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/VersionedExternalizableMessage.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/VersionedExternalizableMessage.java @@ -43,4 +43,16 @@ public abstract class VersionedExternalizableMessage implements Externalizable, public void writeExternal(ObjectOutput out) throws IOException { out.writeShort(version); } + + protected abstract Object newLegacySerializedInstance(); + + @Override + public final Object toSerializable() { + return getVersion() >= DataStoreVersions.BORON_VERSION ? this : newLegacySerializedInstance(); + } + + @Override + public String toString() { + return getClass().getSimpleName() + " [version=" + getVersion() + "]"; + } } -- 2.36.6