in server-common/src/main/java/org/apache/cassandra/sidecar/common/server/cluster/locator/TokenRange.java [48:87]
public static List<TokenRange> from(com.datastax.driver.core.TokenRange dsTokenRange)
{
DataType tokenDataType = dsTokenRange.getStart().getType();
if (tokenDataType == DataType.varint()) // BigInteger - RandomPartitioner
{
return dsTokenRange.unwrap()
.stream()
.map(range -> {
BigInteger start = (BigInteger) range.getStart().getValue();
BigInteger end = (BigInteger) range.getEnd().getValue();
if (end.compareTo(Partitioners.RANDOM.minimumToken().toBigInteger()) == 0)
{
end = Partitioners.RANDOM.maximumToken().toBigInteger();
}
return new TokenRange(start, end);
})
.collect(Collectors.toList());
}
else if (tokenDataType == DataType.bigint()) // Long - Murmur3Partitioner
{
return dsTokenRange.unwrap()
.stream()
.map(range -> {
BigInteger start = BigInteger.valueOf((Long) range.getStart().getValue());
BigInteger end = BigInteger.valueOf((Long) range.getEnd().getValue());
if (end.compareTo(Partitioners.MURMUR3.minimumToken().toBigInteger()) == 0)
{
end = Partitioners.MURMUR3.maximumToken().toBigInteger();
}
return new TokenRange(start, end);
})
.collect(Collectors.toList());
}
else
{
throw new IllegalArgumentException(
"Unsupported token type: " + tokenDataType +
". Only tokens of Murmur3Partitioner and RandomPartitioner are supported.");
}
}