import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import org.opendaylight.controller.cluster.datastore.DataStoreVersions;
/**
* Abstract base class for a versioned Externalizable message.
public abstract class VersionedExternalizableMessage implements Externalizable, SerializableMessage {
private static final long serialVersionUID = 1L;
- private short version;
+ private short version = DataStoreVersions.CURRENT_VERSION;
public VersionedExternalizableMessage() {
}
public VersionedExternalizableMessage(short version) {
- this.version = version;
+ this.version = version <= DataStoreVersions.CURRENT_VERSION ? version : DataStoreVersions.CURRENT_VERSION;
}
public short getVersion() {
public void writeExternal(ObjectOutput out) throws IOException {
out.writeShort(version);
}
+
+ @Override
+ public final Object toSerializable() {
+ if (getVersion() < DataStoreVersions.BORON_VERSION) {
+ throw new UnsupportedOperationException("Versions prior to " + DataStoreVersions.BORON_VERSION
+ + " are not supported");
+ }
+
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + " [version=" + getVersion() + "]";
+ }
}