private boolean verifyElementType(ThriftTypeReference t) { if (!recursive && t.isRecursive()) { return true; } else { return verifyField(t.get()); } }
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()); } }
public ThriftType getThriftType() { return thriftTypeReference.get(); }
public boolean isTypeReferenceRecursive() { return thriftTypeReference.isRecursive(); }
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 ThriftCodec<?> getElementCodec(ThriftTypeReference thriftTypeReference) throws Exception { return getCodec(thriftTypeReference.get()); }
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); }
if (!thriftTypeReference.isRecursive() && thriftTypeReference.get().isCoerced()) { coercion = catalog.getDefaultCoercion(thriftTypeReference.get().getJavaType());
public String toString(ThriftType t) { switch (t.getProtocolType()) { case BOOL: return "bool"; case BYTE: return "byte"; case DOUBLE: return "double"; case I16: return "i16"; case I32: return "i32"; case I64: return "i64"; case ENUM: return prefix(t) + t.getEnumMetadata().getEnumName(); case MAP: return "map<" + toString(t.getKeyTypeReference().get()) + ", " + toString(t.getValueTypeReference().get()) + ">"; case SET: return "set<" + toString(t.getValueTypeReference().get()) + ">"; case LIST: return "list<" + toString(t.getValueTypeReference().get()) + ">"; // void is encoded as a struct case STRUCT: return t.equals(ThriftType.VOID) ? "void" : prefix(t) + t.getStructMetadata().getStructName(); case STRING: return "string"; case BINARY: return "binary"; } throw new IllegalStateException("Bad protocol type" + t.getProtocolType()); }
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); }
if (!thriftTypeReference.isRecursive() && thriftTypeReference.get().isCoerced()) { coercion = catalog.getDefaultCoercion(thriftTypeReference.get().getJavaType());
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); }