public TypeDescriptor getTypeDescriptor(Class<?> cls) { return typeDescriptors.get(cls); }
public TypeDescriptor getTypeDescriptor(TypeToken<?> typeToken) { return typeDescriptors.get(typeToken); }
private TypeDescriptor getTypeDescriptor(Class<?> clazz) { return getTypeDescriptors().get(clazz); }
public TypeDescriptor get(Class<?> clazz) { return get(TypeToken.of(clazz)); }
public TypeDescriptor getComponentType() { TypeToken<?> componentType= typeToken.getComponentType(); if (componentType == null) { return null; } return typeDescriptors.get(componentType); } }
public static TypeDescriptor getTypeDescriptor(Class<?> clazz) { Check.notNull(clazz, "clazz"); return DEFAULT.get(clazz); }
public TypeDescriptor resolveGenericParameter(Class<?> genericClass, int genericParam) { return typeDescriptors.get(typeToken.resolveType(genericClass.getTypeParameters()[genericParam])); }
TypeDescriptor getTypeDescriptor(TypeToken typeToken) { return getTypeDescriptors().get(typeToken); }
@Nonnull @Override public Result<Map<TypeDescriptor, String>> subclasses(TypeDescriptor type) { JsonSubTypes jsonSubType = type.getAnnotation(JsonSubTypes.class); if (jsonSubType != null && jsonSubType.value().length > 0) { TypeDescriptors typeDescriptors = type.getTypeDescriptors(); Map<TypeDescriptor, String> aliasesByTypes = asList(jsonSubType.value()).stream() .collect(toMap(subType -> typeDescriptors.get(subType.value()), Type::name)); return Result.of(aliasesByTypes); } return Result.notFound(); }
@Nullable @Override public Result<Map<TypeDescriptor, String>> subclasses(TypeDescriptor type) { Versionable versionable = type.getAnnotation(Versionable.class); if (versionable != null && versionable.subclasses().length > 0) { TypeDescriptors typeDescriptors = type.getTypeDescriptors(); Map<TypeDescriptor, String> aliasesByTypes = asList(versionable.subclasses()).stream() .collect(toMap(subclass -> typeDescriptors.get(subclass.value()), Subclass::alias)); return Result.of(aliasesByTypes); } return Result.notFound(); }
private ValueType functionSetType() { context.describeAsync(path.any(), new TypeContext(setType, elementType)); TypeDescriptor functionType = setType.getTypeDescriptors().get(setKey.by()); TypeDescriptor input = functionType.resolveGenericParameter(Function.class, 0); TypeDescriptor output = functionType.resolveGenericParameter(Function.class, 1); if (!input.isSuperTypeOf(elementType)) { throw new IllegalArgumentException("Input type of Function provided by @SetKey(by=+" + input + ") should be super type of Set's element type " + elementType); } IdentifiableType delegate = requireIdentifiable(context.describeNow(null, new TypeContext(output))); return newSetType(ImmutableList.of((new FunctionKey((Function) functionType.newInstance(), delegate)))); }