@Override public ArrayTypeName visitArray(ArrayType t, Void p) { return ArrayTypeName.get(t, typeVariables); }
/** Returns an array type equivalent to {@code mirror}. */ public static ArrayTypeName get(ArrayType mirror) { return get(mirror, new LinkedHashMap<>()); }
/** Returns an array type equivalent to {@code type}. */ public static ArrayTypeName get(GenericArrayType type) { return get(type, new LinkedHashMap<>()); }
static ArrayTypeName get(GenericArrayType type, Map<Type, TypeVariableName> map) { return ArrayTypeName.of(get(type.getGenericComponentType(), map)); } }
static ArrayTypeName get( ArrayType mirror, Map<TypeParameterElement, TypeVariableName> typeVariables) { return new ArrayTypeName(get(mirror.getComponentType(), typeVariables)); }
static TypeName get(Type type, Map<Type, TypeVariableName> map) { if (type instanceof Class<?>) { Class<?> classType = (Class<?>) type; if (type == void.class) return VOID; if (type == boolean.class) return BOOLEAN; if (type == byte.class) return BYTE; if (type == short.class) return SHORT; if (type == int.class) return INT; if (type == long.class) return LONG; if (type == char.class) return CHAR; if (type == float.class) return FLOAT; if (type == double.class) return DOUBLE; if (classType.isArray()) return ArrayTypeName.of(get(classType.getComponentType(), map)); return ClassName.get(classType); } else if (type instanceof ParameterizedType) { return ParameterizedTypeName.get((ParameterizedType) type, map); } else if (type instanceof WildcardType) { return WildcardTypeName.get((WildcardType) type, map); } else if (type instanceof TypeVariable<?>) { return TypeVariableName.get((TypeVariable<?>) type, map); } else if (type instanceof GenericArrayType) { return ArrayTypeName.get((GenericArrayType) type, map); } else { throw new IllegalArgumentException("unexpected type: " + type); } }
@Override public ArrayTypeName visitArray(ArrayType t, Void p) { return ArrayTypeName.get(t, typeVariables); }
@Override public ArrayTypeName visitArray(ArrayType t, Void p) { return ArrayTypeName.get(t, typeVariables); }
/** Returns an array type equivalent to {@code mirror}. */ public static ArrayTypeName get(ArrayType mirror) { return get(mirror, new LinkedHashMap<TypeParameterElement, TypeVariableName>()); }
/** Returns an array type equivalent to {@code mirror}. */ public static ArrayTypeName get(ArrayType mirror) { return get(mirror, new LinkedHashMap<TypeParameterElement, TypeVariableName>()); }
/** Returns an array type equivalent to {@code type}. */ public static ArrayTypeName get(GenericArrayType type) { return get(type, new LinkedHashMap<Type, TypeVariableName>()); }
public static TypeName getArrayEnclosedType(Element element) { return ((ArrayTypeName) ArrayTypeName.get(element.asType())).componentType; }
/** Returns an array type equivalent to {@code type}. */ public static ArrayTypeName get(GenericArrayType type) { return get(type, new LinkedHashMap<Type, TypeVariableName>()); }
public TypeSpec generate() { return TypeSpec.interfaceBuilder(Constants.QUERY_LOGGER) .addModifiers(Modifier.PUBLIC) .addMethod(MethodSpec.methodBuilder("onQuery") .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT) .addParameter(ClassName.get(String.class), "query") .addParameter(ArrayTypeName.get(String[].class), "datas") .build()) .build(); }
static ArrayTypeName get(GenericArrayType type, Map<Type, TypeVariableName> map) { return ArrayTypeName.of(get(type.getGenericComponentType(), map)); } }
static ArrayTypeName get(GenericArrayType type, Map<Type, TypeVariableName> map) { return ArrayTypeName.of(get(type.getGenericComponentType(), map)); } }
static ArrayTypeName get( ArrayType mirror, Map<TypeParameterElement, TypeVariableName> typeVariables) { return new ArrayTypeName(get(mirror.getComponentType(), typeVariables)); }
static ArrayTypeName get( ArrayType mirror, Map<TypeParameterElement, TypeVariableName> typeVariables) { return new ArrayTypeName(get(mirror.getComponentType(), typeVariables)); }
static TypeName get(Type type, Map<Type, TypeVariableName> map) { if (type instanceof Class<?>) { Class<?> classType = (Class<?>) type; if (type == void.class) return VOID; if (type == boolean.class) return BOOLEAN; if (type == byte.class) return BYTE; if (type == short.class) return SHORT; if (type == int.class) return INT; if (type == long.class) return LONG; if (type == char.class) return CHAR; if (type == float.class) return FLOAT; if (type == double.class) return DOUBLE; if (classType.isArray()) return ArrayTypeName.of(get(classType.getComponentType(), map)); return ClassName.get(classType); } else if (type instanceof ParameterizedType) { return ParameterizedTypeName.get((ParameterizedType) type, map); } else if (type instanceof WildcardType) { return WildcardTypeName.get((WildcardType) type, map); } else if (type instanceof TypeVariable<?>) { return TypeVariableName.get((TypeVariable<?>) type, map); } else if (type instanceof GenericArrayType) { return ArrayTypeName.get((GenericArrayType) type, map); } else { throw new IllegalArgumentException("unexpected type: " + type); } }
protected void generateInvocationContextExec(MethodElement methodElement, MethodSpec.Builder proxyMethodBuilder) { List<ParameterElement> methodParams = methodElement.getParameters(); List<String> paramNames = new ArrayList<>(); for (ParameterElement paramElm : methodParams) { paramNames.add(StrUtils.addPrefix(METHOD_PARAM_PREFIX, paramElm.getName())); } String paramsArrayLiteral = "{" + String.join(",", paramNames) + "}"; proxyMethodBuilder.addStatement("final $T " + INV_CONTEXT_VARIABLE + "=new $T(this,$S,new $T[]$L," + INTERCEPTORS_CHAIN_VARIABLE + ")", ClassName.get(InvocationContext.class), ClassName.get(InvocationContext.class), methodElement.getName(), ArrayTypeName.get(Object.class), paramsArrayLiteral); TypeMirror returnType = methodElement.getReturnType(); boolean voidResult = returnType instanceof NoType; if (voidResult) { proxyMethodBuilder.addStatement(INV_CONTEXT_VARIABLE + "." + InvocationContext.PROCEED_METHOD + "()"); } else { proxyMethodBuilder.addStatement("return ($T)" + INV_CONTEXT_VARIABLE + "." + InvocationContext.PROCEED_METHOD + "()", TypeName.get(methodElement.getReturnType())); } }