public MutableDeclaredType getDeclaredType(MutableDeclaredType type, MutableDeclaredType... typeArgs) { MutableTypeVariable[] typeVariables = new MutableTypeVariable[typeArgs.length]; for (int i = 0; i < typeArgs.length; i++) { typeVariables[i] = getTypeVariable(null, typeArgs[i]); } return getDeclaredType(type, typeVariables); }
private void copyTypeParameters() { if (type != null && type.getKind().equals(TypeKind.DECLARED)) { List<? extends TypeMirror> typeArguments = ((DeclaredType)type).getTypeArguments(); for (TypeMirror typeArgument: typeArguments) { MutableTypeMirror mutableTypeArgument = processingEnv.getTypeUtils().toMutableType(typeArgument); if (mutableTypeArgument instanceof MutableTypeVariable) { typeVariables.add((MutableTypeVariable)mutableTypeArgument); } else { typeVariables.add(processingEnv.getTypeUtils().getTypeVariable(null, mutableTypeArgument)); } } } }
protected MutableDeclaredType toParametrizedMutableDeclaredType(MutableDeclaredType baseType, MutableDeclaredType... typeVariables) { for(MutableDeclaredType typeVariable : typeVariables) { baseType.addTypeVariable(processingEnv.getTypeUtils().getTypeVariable(null, typeVariable)); } return baseType; }
public MutableDeclaredType applyVariableTypeParameters(MutableDeclaredType type, DeclaredType declaredType) { if (declaredType.getTypeArguments() != null && declaredType.getTypeArguments().size() > 0) { MutableTypeVariable[] variables = new MutableTypeVariable[declaredType.getTypeArguments().size()]; int i = 0; for (TypeMirror typeParameterElement: declaredType.getTypeArguments()) { if (typeParameterElement.getKind().equals(TypeKind.TYPEVAR)) { variables[i] = processingEnv.getTypeUtils().getTypeVariable(typeParameterElement.toString()); } else { variables[i] = processingEnv.getTypeUtils().getWildcardType((MutableTypeMirror)null, null); } i++; } return processingEnv.getTypeUtils().getDeclaredType(type, variables); } return type; }
public Type applyTypeParameters(Type type, DeclaredType declaredType) { if (declaredType.getTypeArguments() != null && declaredType.getTypeArguments().size() > 0) { MutableTypeVariable[] variables = new MutableTypeVariable[declaredType.getTypeArguments().size()]; int i = 0; for (TypeMirror typeArgumentMirror: declaredType.getTypeArguments()) { variables[i++] = processingEnv.getTypeUtils().getTypeVariable(null, processingEnv.getTypeUtils().toMutableType(typeArgumentMirror)); } return processingEnv.getTypeUtils().getDeclaredType((MutableDeclaredType)processingEnv.getTypeUtils().toMutableType(type), variables); } return type; }
protected void setDataTypeVariables() { List<? extends MutableTypeVariable> typeVariables = getTypeVariables(); List<MutableTypeVariable> dataTypeVariables = new ArrayList<MutableTypeVariable>(); for (MutableTypeVariable typeVariable: typeVariables) { dataTypeVariables.add(processingEnv.getTypeUtils().getTypeVariable(typeVariable.getVariable(), getDataTypes(typeVariable.getUpperBounds()).toArray(new MutableTypeMirror[] {}), getDataTypes(typeVariable.getLowerBounds()).toArray(new MutableTypeMirror[] {}))); } setTypeVariables(dataTypeVariables.toArray(new MutableTypeVariable[] {})); } }
private DomainDeclaredType replaceTypeParamsByWildcard(DomainDeclaredType domainDeclared) { if (domainDeclared.getTypeVariables().size() > 0) { MutableTypeVariable[] typeVariables = new MutableTypeVariable[domainDeclared.getTypeVariables().size()]; for (int i = 0; i < domainDeclared.getTypeVariables().size(); i++) { typeVariables[i] = envContext.getProcessingEnv().getTypeUtils().getTypeVariable(MutableWildcardType.WILDCARD_NAME); } domainDeclared.setTypeVariables(typeVariables); } return domainDeclared; } }
public ThemeUiBinderType(String name, MutableDeclaredType type, MutableProcessingEnvironment processingEnv) { this.mutableTypes = processingEnv.getTypeUtils(); this.prefixName = name; setKind(MutableTypeKind.INTERFACE); setSuperClass(mutableTypes.toMutableType(UiBinder.class).setTypeVariables(mutableTypes.getTypeVariable(null, mutableTypes.toMutableType(Element.class)), mutableTypes.getTypeVariable(null, type))); setModifier(); }
protected MutableTypeVariable getDataObject(MutableTypeVariable typeVariable) { Set<? extends MutableTypeMirror> lowerBounds = getDataBounds(typeVariable.getLowerBounds()); Set<? extends MutableTypeMirror> upperBounds = getDataBounds(typeVariable.getUpperBounds()); return processingEnv.getTypeUtils().getTypeVariable(typeVariable.getVariable(), lowerBounds.toArray(new MutableTypeMirror[] {}), upperBounds.toArray(new MutableTypeMirror[] {})); }
protected MutableDeclaredType getDataType(MutableDeclaredType inputType) { if (inputType.getTypeVariables().size() > 0) { MutableTypeVariable[] typeVariables = new MutableTypeVariable[inputType.getTypeVariables().size()]; for (int i = 0; i < inputType.getTypeVariables().size(); i++) { typeVariables[i] = processingEnv.getTypeUtils().getTypeVariable(MutableWildcardType.WILDCARD_NAME); } inputType = inputType.clone().setTypeVariables(typeVariables); } if (inputType.getAnnotation(DomainInterface.class) != null) { return new DomainDataInterfaceType(inputType, processingEnv); } return inputType; }
@Override protected MutableDeclaredType getResultType(MutableDeclaredType inputType) { return inputType.removeClassSuffix(MODEL_SUFFIX).addClassSufix(DataInterfaceProcessor.DATA_SUFFIX) .addTypeVariable(processingEnv.getTypeUtils().getTypeVariable("T")); }
@Override protected List<MutableDeclaredType> getTypeInterfaces() { MutableTypeVariable[] typeVariable = new MutableTypeVariable[] { processingEnv.getTypeUtils().getTypeVariable("T") }; List<MutableDeclaredType> interfaces = new ArrayList<MutableDeclaredType>(); interfaces.add(processingEnv.getTypeUtils().getDeclaredType((MutableDeclaredType)processingEnv.getTypeUtils().toMutableType(ICrudDAO.class), typeVariable)); interfaces.add(processingEnv.getTypeUtils().getDeclaredType((MutableDeclaredType)processingEnv.getTypeUtils().toMutableType(IEntityInstancer.class), typeVariable)); ElementSorter.sortMutableTypes(interfaces); return interfaces; } }
@Override public List<MutableDeclaredType> getTypes(MutableDeclaredType typeElement) { MutableDeclaredType interfaceType = processingEnv.getTypeUtils().toMutableType( IMutableDomainObject.class); interfaceType.addTypeVariable(processingEnv.getTypeUtils().getTypeVariable("T")); return asList(interfaceType); } };
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 MutableDeclaredType toParametrizedMutableDeclaredType(Class<?> baseType, Class<?>... typeVariables) { MutableDeclaredType mutableType = processingEnv.getTypeUtils().toMutableType(baseType); for(Class<?> typeVariable : typeVariables) { MutableDeclaredType typeVariableMirror = processingEnv.getTypeUtils().toMutableType(typeVariable); mutableType.addTypeVariable(processingEnv.getTypeUtils().getTypeVariable(null, typeVariableMirror)); } return mutableType; }
public MutableTypeMirror toParamType(MutableTypeMirror type) { switch (type.getKind()) { case TYPEVAR: return processingEnv.getTypeUtils().getTypeVariable(((MutableTypeVariable)type).getVariable().toString()); case ARRAY: return processingEnv.getTypeUtils().getArrayType(toParamType(((MutableArrayType)type).getComponentType())); default: return processingEnv.getTypeUtils().toMutableType(type); } } }
private MutableDeclaredType toOutput(MutableDeclaredType inputType, MutableProcessingEnvironment processingEnv) { MutableDeclaredType result = inputType.clone(); PackageValidator packageValidator = getPackageValidatorProvider().get(result); if (packageValidator.isValid()) { packageValidator.moveTo(LocationType.SERVER).moveTo(LayerType.DAO).moveTo(ImplementationType.API); } else { packageValidator.setType(LocationType.SERVER.getName() + "." + LayerType.DAO.getName() + "." + ImplementationType.API.getName()); } return result.changePackage(packageValidator.toString()) .addClassSufix(DAO_API_CLASS_SUFFIX) .setTypeVariables(processingEnv.getTypeUtils().getTypeVariable("T", getDataType(inputType))); }
protected void printResultConverter(ConverterProviderPrinterContext context) { pw.print("return (", getTypedDtoConverter(), ") "); MutableDeclaredType fieldType = processingEnv.getTypeUtils().getDeclaredType(processingEnv.getTypeUtils().toMutableType(Class.class), processingEnv.getTypeUtils().getTypeVariable(ConverterTypeElement.DOMAIN_TYPE_ARGUMENT_PREFIX)); Field field = new Field(DOMAIN_CLASS_PARAMETER_NAME, fieldType); field.setCastType(processingEnv.getTypeUtils().getDeclaredType(processingEnv.getTypeUtils().toMutableType(Class.class), new MutableDeclaredType[] { context.getRawDomain() })); converterProviderPrinter.printDomainGetConverterMethodName(context.getRawDomain(), field, ((ServiceConverterProviderPrinterContext)context).getLocalMethod(), pw, false); }
@Override protected void printResultConverter(ConverterProviderPrinterContext context) { pw.print("return (", getTypedDtoConverter(), ") "); MutableDeclaredType fieldType = processingEnv.getTypeUtils().getDeclaredType(processingEnv.getTypeUtils().toMutableType(Class.class), processingEnv.getTypeUtils().getTypeVariable(ConverterTypeElement.DTO_TYPE_ARGUMENT_PREFIX)); Field field = new Field(DTO_CLASS_PARAMETER_NAME, fieldType); field.setCastType(processingEnv.getTypeUtils().getDeclaredType(processingEnv.getTypeUtils().toMutableType(Class.class), new MutableDeclaredType[] { context.getDto() })); converterProviderPrinter.printDtoGetConverterMethodName(context.getRawDto(), field, ((ServiceConverterProviderPrinterContext)context).getLocalMethod(), pw, false); }