package org.opendaylight.controller.cluster.datastore.messages;
+import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.SettableFuture;
-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.controller.sal.core.spi.data.DOMStoreReadTransaction;
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);
- }
-
- @Override public Object toSerializable() {
- return ShardTransactionMessages.DataExists.newBuilder()
- .setInstanceIdentifierPathArguments(
- InstanceIdentifierUtils.toSerializable(getPath())).build();
+ public DataExists() {
}
- public static DataExists fromSerializable(final Object serializable){
- ShardTransactionMessages.DataExists o = (ShardTransactionMessages.DataExists) serializable;
- return new DataExists(InstanceIdentifierUtils.fromSerializable(o.getInstanceIdentifierPathArguments()));
+ public DataExists(final YangInstanceIdentifier path, final short version) {
+ super(path, version);
}
@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){
+ Preconditions.checkArgument(serializable instanceof DataExists);
+ return (DataExists)serializable;
+ }
+
+ public static boolean isSerializedType(Object message) {
+ return message instanceof DataExists;
+ }
}