@Override
  public List<TCell> getVerTs(ByteBuffer tableName, ByteBuffer row, ByteBuffer column,
    long timestamp, int numVersions, Map<ByteBuffer, ByteBuffer> attributes) throws IOError {
    byte[][] famAndQf = CellUtil.parseColumn(getBytes(column));
    if (famAndQf.length == 1) {
      return getVerTs(tableName, row, famAndQf[0], null, timestamp, numVersions, attributes);
    }
    if (famAndQf.length == 2) {
      return getVerTs(tableName, row, famAndQf[0], famAndQf[1], timestamp, numVersions, attributes);
    }
    throw new IllegalArgumentException("Invalid familyAndQualifier provided.");
  }
Note: this public interface is slightly different from public Java APIs in regard to handling
of the qualifier. Here we differ from the public Java API in that null != byte[0]. Rather, we
respect qual == null as a request for the entire column family. If you want to access the
entire column family, use {@link #getVer(ByteBuffer, ByteBuffer, ByteBuffer, int, Map)} with a
{@code column} value that lacks a {@code ':'}.
hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.java