package me.prettyprint.cassandra.service; import java.nio.ByteBuffer; import java.util.Map; import me.prettyprint.cassandra.model.ExecutionResult; import me.prettyprint.hector.api.ConsistencyLevelPolicy; import me.prettyprint.hector.api.exceptions.HectorException; import org.apache.cassandra.thrift.Cassandra.Client; public class VirtualKeyspaceOperation<T> extends Operation<T> { Operation<T> operation; ByteBuffer prefixBytes; public VirtualKeyspaceOperation(Operation<T> operation, ByteBuffer prefixBytes) { super(operation.operationType, operation.failoverPolicy, operation.keyspaceName, operation.credentials); this.operation = operation; this.prefixBytes = prefixBytes; } @Override public void applyConnectionParams(String keyspace, ConsistencyLevelPolicy consistencyLevelPolicy, FailoverPolicy failoverPolicy, Map<String, String> credentials) { operation.applyConnectionParams(keyspace, consistencyLevelPolicy, failoverPolicy, credentials); } @Override public void setResult(T executionResult) { operation.setResult(executionResult); } @Override public T getResult() { return operation.getResult(); } @Override public ExecutionResult<T> getExecutionResult() { return operation.getExecutionResult(); } @Override public void executeAndSetResult(Client cassandra, CassandraHost cassandraHost) throws Exception { operation.executeAndSetResult(new VirtualKeyspaceCassandraClient(cassandra, prefixBytes), cassandraHost); } @Override public void setException(HectorException e) { operation.setException(e); } @Override public boolean hasException() { return operation.hasException(); } @Override public HectorException getException() { return operation.getException(); } @Override public CassandraHost getCassandraHost() { return operation.getCassandraHost(); } @Override public T execute(Client cassandra) throws Exception { return operation.execute(new VirtualKeyspaceCassandraClient(cassandra, prefixBytes)); } }