/
ThriftColumnQuery.java
47 lines (43 loc) · 1.76 KB
/
ThriftColumnQuery.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package me.prettyprint.cassandra.model.thrift;
import me.prettyprint.cassandra.model.AbstractColumnQuery;
import me.prettyprint.cassandra.model.HColumnImpl;
import me.prettyprint.cassandra.model.KeyspaceOperationCallback;
import me.prettyprint.cassandra.model.KeyspaceOperator;
import me.prettyprint.cassandra.model.Result;
import me.prettyprint.cassandra.model.Serializer;
import me.prettyprint.cassandra.service.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.exceptions.HNotFoundException;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.query.ColumnQuery;
/**
* Thrift implementation of the ColumnQuery type.
*
* @author Ran Tavory
*
* @param <N> column name type
* @param <V> value type
*/
public final class ThriftColumnQuery<N, V> extends AbstractColumnQuery<N, V>
implements ColumnQuery<N, V> {
public ThriftColumnQuery(KeyspaceOperator keyspaceOperator, Serializer<N> nameSerializer,
Serializer<V> valueSerializer) {
super(keyspaceOperator, nameSerializer, valueSerializer);
}
@Override
public Result<HColumn<N, V>> execute() {
return new Result<HColumn<N, V>>(keyspaceOperator.doExecute(
new KeyspaceOperationCallback<HColumn<N, V>>() {
@Override
public HColumn<N, V> doInKeyspace(Keyspace ks) throws HectorException {
try {
org.apache.cassandra.thrift.Column thriftColumn =
ks.getColumn(key, ThriftFactory.createColumnPath(columnFamilyName, name, columnNameSerializer));
return new HColumnImpl<N, V>(thriftColumn, columnNameSerializer, valueSerializer);
} catch (HNotFoundException e) {
return null;
}
}
}), this);
}
}