public static <K, V> ThriftType map(ThriftTypeReference keyTypeReference, ThriftTypeReference valueTypeReference) { checkNotNull(keyTypeReference, "keyTypeReference is null"); checkNotNull(valueTypeReference, "valueTypeReference is null"); @SuppressWarnings("serial") Type javaType = new TypeToken<Map<K, V>>(){} .where(new TypeParameter<K>(){}, (TypeToken<K>) TypeToken.of(keyTypeReference.getJavaType())) .where(new TypeParameter<V>(){}, (TypeToken<V>) TypeToken.of(valueTypeReference.getJavaType())) .getType(); return new ThriftType(ThriftProtocolType.MAP, javaType, keyTypeReference, valueTypeReference); }
public static ThriftType array(ThriftTypeReference valueTypeReference) { checkNotNull(valueTypeReference, "valueTypeReference is null"); Class<?> javaType = ReflectionHelper.getArrayOfType(valueTypeReference.getJavaType()); return new ThriftType(ThriftProtocolType.LIST, javaType, null, valueTypeReference); }
public static <E> ThriftType set(ThriftTypeReference valueTypeReference) { Preconditions.checkNotNull(valueTypeReference, "valueTypeReference is null"); @SuppressWarnings("serial") Type javaType = new TypeToken<Set<E>>(){} .where(new TypeParameter<E>(){}, (TypeToken<E>) TypeToken.of(valueTypeReference.getJavaType())) .getType(); return new ThriftType(ThriftProtocolType.SET, javaType, null, valueTypeReference); }
public static <E> ThriftType list(ThriftTypeReference valueTypeReference) { checkNotNull(valueTypeReference, "valueTypeReference is null"); @SuppressWarnings("serial") Type javaType = new TypeToken<List<E>>(){} .where(new TypeParameter<E>(){}, (TypeToken<E>) TypeToken.of(valueTypeReference.getJavaType())) .getType(); return new ThriftType(ThriftProtocolType.LIST, javaType, null, valueTypeReference); }
public static ParameterizedType toParameterizedType(ThriftTypeReference typeRef) { if (ReflectionHelper.isArray(typeRef.getJavaType())) { return type((Class<?>) typeRef.getJavaType()); } switch (typeRef.getProtocolType()) { case BOOL: case BYTE: case DOUBLE: case I16: case I32: case I64: case STRING: case BINARY: case STRUCT: case ENUM: return type((Class<?>) typeRef.getJavaType()); case MAP: return type(Map.class, toParameterizedType(typeRef.get().getKeyTypeReference()), toParameterizedType(typeRef.get().getValueTypeReference())); case SET: return type(Set.class, toParameterizedType(typeRef.get().getValueTypeReference())); case LIST: return type(List.class, toParameterizedType(typeRef.get().getValueTypeReference())); default: throw new IllegalArgumentException("Unsupported thrift field type " + typeRef.getJavaType()); } }