TypeCodec firstCodec = codecRegistry.codecFor(firstArg); if (dataType.equals(DataType.set(firstArg))) { return row.getSet(i, firstCodec.getJavaType()); } else if (dataType.equals(DataType.list(firstArg))) { return row.getList(i, firstCodec.getJavaType()); } else { TypeCodec secondCodec = codecRegistry.codecFor(secondArg); if (dataType.equals(DataType.map(firstArg, secondArg))) { return row.getMap(i, firstCodec.getJavaType(), secondCodec.getJavaType());
@SuppressWarnings("unchecked") TypeMapping(TypeCodec<T> codec, DataType outerType, T value) { this.codec = codec; this.javaType = (TypeToken<Object>) codec.getJavaType(); this.outerType = outerType; this.value = value; } }
protected AbstractMapCodec(TypeCodec<K> keyCodec, TypeCodec<V> valueCodec) { super( DataType.map(keyCodec.getCqlType(), valueCodec.getCqlType()), TypeTokens.mapOf(keyCodec.getJavaType(), valueCodec.getJavaType())); this.keyCodec = keyCodec; this.valueCodec = valueCodec; }
private SetCodec(TypeCodec<T> eltCodec) { super(DataType.set(eltCodec.cqlType), TypeTokens.setOf(eltCodec.getJavaType()), eltCodec); }
@Override public ByteBuffer serialize(C value, ProtocolVersion protocolVersion) { if (value == null) return null; int i = 0; ByteBuffer[] bbs = new ByteBuffer[value.size()]; for (E elt : value) { if (elt == null) { throw new NullPointerException("Collection elements cannot be null"); } ByteBuffer bb; try { bb = eltCodec.serialize(elt, protocolVersion); } catch (ClassCastException e) { throw new InvalidTypeException( String.format( "Invalid type for %s element, expecting %s but got %s", cqlType, eltCodec.getJavaType(), elt.getClass()), e); } bbs[i++] = bb; } return CodecUtils.pack(bbs, value.size(), protocolVersion); }
String.format( "Invalid type for map key, expecting %s but got %s", keyCodec.getJavaType(), key.getClass()), e); String.format( "Invalid type for map value, expecting %s but got %s", valueCodec.getJavaType(), v.getClass()), e);
private ListCodec(TypeCodec<T> eltCodec) { super( DataType.list(eltCodec.getCqlType()), TypeTokens.listOf(eltCodec.getJavaType()), eltCodec); }
@Override protected String formatField(TupleValue value, int index) { DataType elementType = definition.getComponentTypes().get(index); TypeCodec<Object> codec = definition.getCodecRegistry().codecFor(elementType); return codec.format(value.get(index, codec.getJavaType())); }
private <T> TypeCodec<T> mockCodec(DataType cqlType, TypeToken<T> javaType) { @SuppressWarnings("unchecked") TypeCodec<T> newCodec = mock(TypeCodec.class); when(newCodec.getCqlType()).thenReturn(cqlType); when(newCodec.getJavaType()).thenReturn(javaType); when(newCodec.accepts(cqlType)).thenReturn(true); when(newCodec.accepts(javaType)).thenReturn(true); when(newCodec.toString()).thenReturn(String.format("MockCodec [%s <-> %s]", cqlType, javaType)); return newCodec; } }
@Override protected TupleValue parseAndSetField(String input, TupleValue target, int index) { DataType elementType = definition.getComponentTypes().get(index); TypeCodec<Object> codec = definition.getCodecRegistry().codecFor(elementType); target.set(index, codec.parse(input), codec.getJavaType()); return target; } }
if (oldCodec.accepts(newCodec.getCqlType()) && oldCodec.accepts(newCodec.getJavaType())) { logger.warn( "Ignoring codec {} because it collides with previously registered codec {}", if (oldCodec.accepts(newCodec.getCqlType()) && oldCodec.accepts(newCodec.getJavaType())) { logger.warn( "Ignoring codec {} because it collides with previously registered codec {}", CacheKey key = new CacheKey(newCodec.getCqlType(), newCodec.getJavaType()); TypeCodec<?> existing = cache.getIfPresent(key); if (existing != null) {
protected NumberBoxCodec(TypeCodec<T> numberCodec) { // @formatter:off super( numberCodec.getCqlType(), new TypeToken<NumberBox<T>>() {}.where( new TypeParameter<T>() {}, numberCodec.getJavaType())); // @formatter:on this.numberCodec = numberCodec; }
@Override protected String formatField(UDTValue source, String fieldName) { DataType elementType = definition.getFieldType(fieldName); TypeCodec<Object> codec = definition.getCodecRegistry().codecFor(elementType); return codec.format(source.get(fieldName, codec.getJavaType())); }
@Override protected UDTValue parseAndSetField(String input, UDTValue target, String fieldName) { DataType elementType = definition.getFieldType(fieldName); TypeCodec<Object> codec = definition.getCodecRegistry().codecFor(elementType); target.set(fieldName, codec.parse(input), codec.getJavaType()); return target; } }
assertThat(row.getList("l", mapping.codec.getJavaType())).isEqualTo(list); assertThat(row.getMap("m", mapping.codec.getJavaType(), mapping.codec.getJavaType())) .isEqualTo(map); assertThat(row.getList(1, mapping.codec.getJavaType())).isEqualTo(list); assertThat(row.getMap(2, mapping.codec.getJavaType(), mapping.codec.getJavaType())) .isEqualTo(map);
case LIST: Class<?> listEltClass = codecRegistry.codecFor(type.getTypeArguments().get(0)).getJavaType().getRawType(); return data.getList(name, listEltClass); case SET: Class<?> setEltClass = codecRegistry.codecFor(type.getTypeArguments().get(0)).getJavaType().getRawType(); return data.getSet(name, setEltClass); case MAP: Class<?> keyClass = codecRegistry.codecFor(type.getTypeArguments().get(0)).getJavaType().getRawType(); Class<?> valueClass = codecRegistry.codecFor(type.getTypeArguments().get(1)).getJavaType().getRawType(); return data.getMap(name, keyClass, valueClass);
case LIST: Class<?> listEltClass = codecRegistry.codecFor(type.getTypeArguments().get(0)).getJavaType().getRawType(); return data.getList(i, listEltClass); case SET: Class<?> setEltClass = codecRegistry.codecFor(type.getTypeArguments().get(0)).getJavaType().getRawType(); return data.getSet(i, setEltClass); case MAP: Class<?> keyClass = codecRegistry.codecFor(type.getTypeArguments().get(0)).getJavaType().getRawType(); Class<?> valueClass = codecRegistry.codecFor(type.getTypeArguments().get(1)).getJavaType().getRawType(); return data.getMap(i, keyClass, valueClass);
case LIST: return data.getList( 0, codecRegistry.codecFor(dataType.getTypeArguments().get(0)).getJavaType()); case SET: return data.getSet( 0, codecRegistry.codecFor(dataType.getTypeArguments().get(0)).getJavaType()); case MAP: return data.getMap( 0, codecRegistry.codecFor(dataType.getTypeArguments().get(0)).getJavaType(), codecRegistry.codecFor(dataType.getTypeArguments().get(1)).getJavaType()); case DURATION: return data.get(0, Duration.class);
TypeCodec<List<A>> actual = codecRegistry.codecFor(list(cint()), LIST_OF_A_TOKEN); assertThat(actual.getCqlType()).isEqualTo(expected.getCqlType()); assertThat(actual.getJavaType()).isEqualTo(expected.getJavaType()); TypeCodec<List<B>> actualB = codecRegistry.codecFor(list(cint()), LIST_OF_B_TOKEN); assertThat(actualB.getCqlType()).isEqualTo(expectedB.getCqlType()); assertThat(actualB.getJavaType()).isEqualTo(expectedB.getJavaType());
public static ByteBuffer serialize(TypeCodec<?> codec, ProtocolVersion protocolVersion, Object value) { if (!codec.getJavaType().getRawType().isAssignableFrom(value.getClass())) throw new InvalidTypeException("Invalid value for CQL type " + codec.getCqlType().getName().toString()); return ((TypeCodec)codec).serialize(value, com.datastax.driver.core.ProtocolVersion.fromInt(protocolVersion.asInt())); }