Map<List<String>,byte[]> result = new HashMap<>();
for (KeyValue kv : kvs) {
byte[] tupleBytes = new byte[kv.getKey().length - confKey.length];
System.arraycopy(kv.getKey(), confKey.length, tupleBytes, 0, tupleBytes.length);
// TODO: It's a shame that there isn't a fromBytes with index offets.
Tuple2 tuple = Tuple2.fromBytes(tupleBytes);
List<String> list = new ArrayList<>(tuple.size());
for (int i = 0; i < tuple.size(); i++) {
if (BINARY_STRINGS) {
try {
list.add(new String(tuple.getBytes(i), "UTF-8"));
}
catch (UnsupportedEncodingException ex) {
throw new AkibanInternalException("Error decoding binary string", ex);
}
}
else {
list.add(tuple.getString(i));
}
}
result.put(list, kv.getValue());
}
// Initiate a watch (from this same transaction) for changes to the key