private MutableDeclaredType stripTypeParametersTypes(MutableDeclaredType type) { if (type != null) { type.stripTypeParametersTypes(); } return type; }
@Override public MutableDeclaredType stripTypeParametersTypes() { return ensureDelegateType().stripTypeParametersTypes(); }
public BeanWrapperImplementationType(MutableDeclaredType bean, MutableProcessingEnvironment processingEnv) { this.bean = bean; setKind(MutableTypeKind.CLASS); List<MutableTypeMirror> interfaces = new ArrayList<MutableTypeMirror>(); interfaces.add(new BeanWrapperType(bean.clone().stripTypeParametersTypes(), processingEnv)); setInterfaces(interfaces); List<Modifier> modifiers = new ArrayList<Modifier>(); modifiers.addAll(bean.getModifiers()); modifiers.remove(Modifier.STATIC); setModifier(modifiers.toArray(new Modifier[] {})); }
@Override public MutableDeclaredType setInterfaces(List<? extends MutableTypeMirror> interfaces) { dirty(); this.interfaces = new ArrayList<MutableTypeMirror>(); Set<MutableTypeVariable> typeVariables = new HashSet<MutableTypeVariable>(); for (MutableTypeMirror interfaceType: interfaces) { this.interfaces.add(interfaceType); if ((((MutableDeclaredType) interfaceType).hasVariableParameterTypes()) && !hasTypeParameters()) { typeVariables.addAll(Arrays.asList(((MutableDeclaredType)interfaceType).getVariableParameterTypes())); ((MutableDeclaredType)interfaceType).stripTypeParametersTypes(); } } if (typeVariables.size() > 0) { //merge with superclass type variables setTypeVariables(typeVariables.toArray(new MutableTypeVariable[] {})); } //TODO handle conflict type variables - with same names return this; }
protected MutableTypeMirror toPrintableType(MutableTypeMirror mutableType) { if (mutableType.getKind().isDeclared()) { MutableDeclaredType declaredType = (MutableDeclaredType)mutableType; return declaredType.clone().stripTypeParametersTypes(); } return mutableType; } }
private Set<? extends MutableTypeMirror> stripTypeParametersTypes(Set<? extends MutableTypeMirror> bounds) { for (MutableTypeMirror bound: bounds) { if (bound.getKind().equals(MutableTypeKind.CLASS) || bound.getKind().equals(MutableTypeKind.INTERFACE)) { ((MutableDeclaredType)bound).stripTypeParametersTypes(); } } return bounds; }
@Override public MutableDeclaredType setSuperClass(MutableDeclaredType superClass) { dirty(); this.superClass = superClass; if (superClass != null && superClass.hasVariableParameterTypes() && !hasTypeParameters()) { setTypeVariables(superClass.getVariableParameterTypes()); superClass.stripTypeParametersTypes(); } return this; }
private MutableTypeMirror erasure(TypeMirror type, TypeElement owner) { switch (type.getKind()) { case TYPEVAR: TypeMirror erasure = ProcessorUtils.erasure(owner, (TypeVariable) type); if (erasure == null) { return processingEnv.getTypeUtils().getTypeVariable(((TypeVariable) type).asElement().getSimpleName().toString()); } return processingEnv.getTypeUtils().toMutableType(erasure); case DECLARED: DeclaredType declaredType = (DeclaredType)type; return processingEnv.getTypeUtils().toMutableType(declaredType).stripTypeParametersTypes(); default: return processingEnv.getTypeUtils().toMutableType(type); } }
public MutableTypeMirror toParamType(TypeMirror type) { switch (type.getKind()) { case TYPEVAR: return processingEnv.getTypeUtils().getTypeVariable(((TypeVariable)type).asElement().getSimpleName().toString()); case ARRAY: return processingEnv.getTypeUtils().getArrayType(toParamType(((ArrayType)type).getComponentType())); case DECLARED: MutableDeclaredType mutableType = (MutableDeclaredType) processingEnv.getTypeUtils().toMutableType(type); return mutableType.stripTypeParametersTypes(); default: return processingEnv.getTypeUtils().toMutableType(type); } }
protected void generateSetBeanAttributes(FormattedPrintWriter pw, List<ExecutableElement> methods, MutableDeclaredType beanType, TypeElement owner) { // create the set attribute method pw.println("public void setBeanAttribute(", String.class, " " + ATTRIBUTE_NAME + ", ", Object.class, " value) {"); PojoElement pojoElement = new PojoElement(owner, processingEnv); for (ExecutableElement method: methods) { if (MethodHelper.isSetterMethod(method) && method.getParameters().size() == 1) { ExecutableElement getterMethod = pojoElement.getGetterMethod(method); if (getterMethod == null) { continue; } pw.println("if (" + ATTRIBUTE_NAME + ".equals(\"" + MethodHelper.toField(method) + "\")) { "); pw.print("this." + method.getSimpleName() + "("); castFromString(pw, method.getParameters().get(0).asType(), "value", owner); pw.println(");"); pw.print("} else "); } } pw.println("if (attr.equals(\"" + BEAN_WRAPPER_CONTENT + "\")) {"); pw.println("this." + BEAN_WRAPPER_CONTENT + " = (", beanType.clone().stripTypeParametersTypes(), ") value;"); pw.println("}"); pw.println("}"); pw.println(); }
public MutableTypeMirror stripTypeVariableTypes(MutableTypeMirror mutableType) { if (mutableType instanceof MutableDeclaredType) { ((MutableDeclaredType)mutableType).stripTypeParametersTypes(); return mutableType; } if (mutableType instanceof MutableTypeVariable) { ((MutableTypeVariable)mutableType).setLowerBounds(null); ((MutableTypeVariable)mutableType).setUpperBounds(null); return mutableType; } if (mutableType instanceof MutableWildcardType) { ((MutableWildcardType)mutableType).setSuperBound(null); ((MutableWildcardType)mutableType).setExtendsBound(null); } if (mutableType instanceof MutableArrayType) { stripTypeVariableTypes(((MutableArrayType)mutableType).getComponentType()); } return mutableType; }
public static MutableTypeMirror stripTypeParametersTypes(MutableTypeMirror parameterType) { switch (parameterType.getKind()) { case CLASS: case INTERFACE: return ((MutableDeclaredType)parameterType).clone().stripTypeParametersTypes(); case TYPEVAR: if (((MutableTypeVariable)parameterType).getVariable() != null && ((MutableTypeVariable)parameterType).getVariable() != MutableWildcardType.WILDCARD_NAME) { return ((MutableTypeVariable)parameterType).clone().setLowerBounds(null).setUpperBounds(null); } default: return parameterType; } }
protected void generateWrapperMethods(FormattedPrintWriter pw, MutableDeclaredType beanType) { MutableDeclaredType beanElement = beanType.clone().stripTypeParametersTypes(); pw.println("public void setBeanWrapperContent(", beanElement, " " + BEAN_WRAPPER_CONTENT + ") {"); pw.println("this." + BEAN_WRAPPER_CONTENT + " = (", beanElement, ") " + BEAN_WRAPPER_CONTENT + ";"); pw.println("clearWrappers();"); pw.println("}"); pw.println(); pw.println("public ", beanElement, " getBeanWrapperContent() {"); pw.println("return this." + BEAN_WRAPPER_CONTENT + ";"); pw.println("}"); pw.println(); }
pw.print(prefixDomainParameter(((MutableDeclaredType)domain).clone()).stripTypeParametersTypes()); } else { pw.print(domain);
printableType = ((MutableDeclaredType)printableType).clone().stripTypeParametersTypes().stripWildcards();