import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.controller.cluster.datastore.DataStoreVersions;
import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
public class DataExists extends AbstractRead<Boolean> {
+ private static final long serialVersionUID = 1L;
- public static final Class<ShardTransactionMessages.DataExists> SERIALIZABLE_CLASS =
- ShardTransactionMessages.DataExists.class;
-
- public DataExists(final YangInstanceIdentifier path) {
- super(path);
+ public DataExists() {
}
- @Override public Object toSerializable() {
- return ShardTransactionMessages.DataExists.newBuilder()
- .setInstanceIdentifierPathArguments(
- InstanceIdentifierUtils.toSerializable(getPath())).build();
+ public DataExists(final YangInstanceIdentifier path, final short version) {
+ super(path, version);
}
- public static DataExists fromSerializable(final Object serializable){
- ShardTransactionMessages.DataExists o = (ShardTransactionMessages.DataExists) serializable;
- return new DataExists(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments()));
+ @Deprecated
+ @Override
+ protected Object newLegacySerializedInstance() {
+ return ShardTransactionMessages.DataExists.newBuilder()
+ .setInstanceIdentifierPathArguments(InstanceIdentifierUtils.toSerializable(getPath())).build();
}
@Override
@Override
public void processResponse(Object response, SettableFuture<Boolean> returnFuture) {
- if(response instanceof DataExistsReply) {
- returnFuture.set(Boolean.valueOf(((DataExistsReply) response).exists()));
-
- } else if(response.getClass().equals(DataExistsReply.SERIALIZABLE_CLASS)) {
+ if(DataExistsReply.isSerializedType(response)) {
returnFuture.set(Boolean.valueOf(DataExistsReply.fromSerializable(response).exists()));
-
} else {
returnFuture.setException(new ReadFailedException("Invalid response checking exists for path " + getPath()));
}
}
+ @Override
+ protected AbstractRead<Boolean> newInstance(short withVersion) {
+ return new DataExists(getPath(), withVersion);
+ }
+
+ public static DataExists fromSerializable(final Object serializable){
+ if(serializable instanceof DataExists) {
+ return (DataExists)serializable;
+ } else {
+ ShardTransactionMessages.DataExists o = (ShardTransactionMessages.DataExists) serializable;
+ return new DataExists(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments()),
+ DataStoreVersions.LITHIUM_VERSION);
+ }
+ }
+
+ public static boolean isSerializedType(Object message) {
+ return message instanceof DataExists || message instanceof ShardTransactionMessages.DataExists;
+ }
}