/** * Creates a new generic TypeParamRef. * @param letter The letter of the type. * @return The param reference. */ public static TypeParamRef newTypeParamRef(String letter) { return new TypeParamRefBuilder().withName(letter).build(); }
public TypeParamRef apply(TypeVariable item) { return new TypeParamRefBuilder().withName(item.asElement().getSimpleName().toString()).build(); } };
public TypeParamRef withDimensions(int dimensions) { return new TypeParamRefBuilder(this).withDimensions(dimensions).build(); }
public TypeParamRef toReference() { return new TypeParamRefBuilder() .withName(name) .withAttributes(getAttributes()) .build(); }
public TypeRef apply(TypeRef type) { if (type instanceof ClassRef) { return new ClassRefBuilder((ClassRef) type) .withDimensions(1) .build(); } else if (type instanceof PrimitiveRef) { return new PrimitiveRefBuilder((PrimitiveRef) type) .withDimensions(1) .build(); } else if (type instanceof TypeParamRef) { return new TypeParamRefBuilder((TypeParamRef) type) .withDimensions(1) .build(); } else { throw new IllegalStateException("A property type should be either class, primitive or param referemce."); } } };
return new WildcardRefBuilder().build(); } else if (item instanceof TypeVariable) { return new TypeParamRefBuilder().withName(((TypeVariable) item).getName()).build(); } else if (item instanceof GenericArrayType) { Type target = item;
public TypeRef apply(TypeRef item) { if (item instanceof PrimitiveRef) { return new PrimitiveRefBuilder((PrimitiveRef) item).withDimensions(0).build(); } else if (item instanceof ClassRef) { return new ClassRefBuilder((ClassRef) item).withDimensions(0).build(); } else if (item instanceof TypeParamRef) { return new TypeParamRefBuilder((TypeParamRef) item).withDimensions(0).build(); } else { return item; } } };
arguments.add(new TypeParamRefBuilder((TypeParamRef) intermediateRef) .withDimensions(dimensions) .build()); } else { throw new IllegalStateException("Expected class or type param reference"); .withName(name) .withDimensions(dimensions) .build()); return new TypeParamRefBuilder().withName(boundName).build(); } else if (classOrInterfaceType.getTypeArgs().isEmpty() && boundName.length() == 1) { return new TypeParamRefBuilder().withName(boundName).build(); } else { return new ClassRefBuilder()
public TypeRef apply(Type type) { if (type instanceof VoidType) { return new VoidRef(); } else if (type instanceof WildcardType) { return new WildcardRef(); } else if (type instanceof ReferenceType) { ReferenceType referenceType = (ReferenceType) type; int dimensions = referenceType.getArrayCount(); TypeRef typeRef = TYPEREF.apply(referenceType.getType()); if (dimensions == 0) { return typeRef; } else if (typeRef instanceof ClassRef) { return new ClassRefBuilder((ClassRef)typeRef).withDimensions(dimensions).build(); } else if (typeRef instanceof PrimitiveRef) { return new PrimitiveRefBuilder((PrimitiveRef)typeRef).withDimensions(dimensions).build(); } else if (typeRef instanceof TypeParamRef) { return new TypeParamRefBuilder((TypeParamRef)typeRef).withDimensions(dimensions).build(); } } else if (type instanceof PrimitiveType) { PrimitiveType primitiveType = (PrimitiveType) type; return new PrimitiveRefBuilder().withName(primitiveType.getType().name()).build(); } else if (type instanceof ClassOrInterfaceType) { return CLASS_OR_TYPEPARAM_REF.apply((ClassOrInterfaceType) type); } throw new IllegalArgumentException("Can't handle type:[" + type + "]."); } };