in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/util/TablestoreHelper.java [794:820]
public static PrimaryKey decodeNextPrimaryKeyToken(String nextPrimaryKeyToken) {
byte[] decodeBytes = Base64.getDecoder().decode(nextPrimaryKeyToken);
String sourceToken = new String(decodeBytes, StandardCharsets.UTF_8);
List<List<Object>> primaryKeys;
try {
primaryKeys = MAPPER.readValue(sourceToken, new TypeReference<List<List<Object>>>() {
});
} catch (Exception e) {
throw Exceptions.runtimeThrowable(String.format("decode nextPrimaryKey token failed, token:%s", nextPrimaryKeyToken), e);
}
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
for (List<Object> primaryKeyList : primaryKeys) {
if (primaryKeyList.size() != 2) {
throw Exceptions.illegalArgument("invalid primaryKey size:%s, primaryKey:%s", primaryKeyList.size(), primaryKeyList);
}
String name = (String) primaryKeyList.get(0);
Object object = primaryKeyList.get(1);
if (object instanceof String) {
primaryKeyBuilder.addPrimaryKeyColumn(name, PrimaryKeyValue.fromString(object.toString()));
} else if (object instanceof Number) {
primaryKeyBuilder.addPrimaryKeyColumn(name, PrimaryKeyValue.fromLong(((Number) object).longValue()));
} else {
throw Exceptions.illegalArgument("unsupported primaryKeyValue type:%s, value:%s", object.getClass(), object);
}
}
return primaryKeyBuilder.build();
}