in core/src/main/java/com/datastax/oss/driver/internal/core/type/codec/registry/CachingCodecRegistry.java [409:472]
protected GenericType<?> inferJavaTypeFromCqlType(@NonNull DataType cqlType) {
if (cqlType instanceof ListType) {
DataType elementType = ((ListType) cqlType).getElementType();
return GenericType.listOf(inferJavaTypeFromCqlType(elementType));
} else if (cqlType instanceof SetType) {
DataType elementType = ((SetType) cqlType).getElementType();
return GenericType.setOf(inferJavaTypeFromCqlType(elementType));
} else if (cqlType instanceof MapType) {
DataType keyType = ((MapType) cqlType).getKeyType();
DataType valueType = ((MapType) cqlType).getValueType();
return GenericType.mapOf(
inferJavaTypeFromCqlType(keyType), inferJavaTypeFromCqlType(valueType));
} else if (cqlType instanceof VectorType) {
DataType elementType = ((VectorType) cqlType).getElementType();
GenericType<?> numberType = inferJavaTypeFromCqlType(elementType);
return GenericType.vectorOf(numberType);
}
switch (cqlType.getProtocolCode()) {
case ProtocolConstants.DataType.CUSTOM:
case ProtocolConstants.DataType.BLOB:
return GenericType.BYTE_BUFFER;
case ProtocolConstants.DataType.ASCII:
case ProtocolConstants.DataType.VARCHAR:
return GenericType.STRING;
case ProtocolConstants.DataType.BIGINT:
case ProtocolConstants.DataType.COUNTER:
return GenericType.LONG;
case ProtocolConstants.DataType.BOOLEAN:
return GenericType.BOOLEAN;
case ProtocolConstants.DataType.DECIMAL:
return GenericType.BIG_DECIMAL;
case ProtocolConstants.DataType.DOUBLE:
return GenericType.DOUBLE;
case ProtocolConstants.DataType.FLOAT:
return GenericType.FLOAT;
case ProtocolConstants.DataType.INT:
return GenericType.INTEGER;
case ProtocolConstants.DataType.TIMESTAMP:
return GenericType.INSTANT;
case ProtocolConstants.DataType.UUID:
case ProtocolConstants.DataType.TIMEUUID:
return GenericType.UUID;
case ProtocolConstants.DataType.VARINT:
return GenericType.BIG_INTEGER;
case ProtocolConstants.DataType.INET:
return GenericType.INET_ADDRESS;
case ProtocolConstants.DataType.DATE:
return GenericType.LOCAL_DATE;
case ProtocolConstants.DataType.TIME:
return GenericType.LOCAL_TIME;
case ProtocolConstants.DataType.SMALLINT:
return GenericType.SHORT;
case ProtocolConstants.DataType.TINYINT:
return GenericType.BYTE;
case ProtocolConstants.DataType.DURATION:
return GenericType.CQL_DURATION;
case ProtocolConstants.DataType.UDT:
return GenericType.UDT_VALUE;
case ProtocolConstants.DataType.TUPLE:
return GenericType.TUPLE_VALUE;
default:
throw new CodecNotFoundException(cqlType, null);
}
}