public MutableDeclaredType addField(MutableVariableElement field) { return ensureDelegateType().addField(field); };
public static void addField(MutableProcessingEnvironment processingEnv, MutableDeclaredType ownerType, MutableTypeMirror fieldType, String fieldName) { MutableVariableElement field = processingEnv.getElementUtils().getParameterElement(fieldType, fieldName); ownerType.addField((MutableVariableElement) field.addModifier(Modifier.PROTECTED).addModifier(Modifier.FINAL)); field = processingEnv.getElementUtils().getParameterElement(fieldType, fieldName); ownerType.getConstructor().addParameter(field); ownerType.getConstructor().getPrintWriter().println("this." + fieldName + " = " + fieldName + ";"); }
outputType.addField((MutableVariableElement) processingEnv.getElementUtils().getParameterElement(Element.class, themeSupportAccessor.getElementName()). annotateWith(new UiFieldMutableAccessor(processingEnv).setProvided(provided))) .addField(processingEnv.getElementUtils().getParameterElement(Element.class, "parentElement")); outputType.addField((MutableVariableElement) processingEnv.getElementUtils().getParameterElement(Element.class, themeElementAccessor.getValue()). annotateWith(new UiFieldMutableAccessor(processingEnv).setProvided(provided))); for (ThemeResourceAccessor resource: themeResourcesAccessor.getValue()) { outputType.addField((MutableVariableElement) processingEnv.getElementUtils().getParameterElement( processingEnv.getTypeUtils().toMutableType(resource.getResourceClass()), resource.getName()). annotateWith(new UiFieldMutableAccessor(processingEnv).setProvided(resource.getUiField().isProvided())));
@Override protected void processElement(ProcessorContext context) { FormattedPrintWriter pw = context.getPrintWriter(); converterProviderPrinter = getConverterProviderPrinter(pw); TypeElement cachedConverterType = processingEnv.getElementUtils().getTypeElement(BasicCachedConverter.class.getCanonicalName()); ParameterElement[] constructorAdditionalParameters = getParametersResolverProvider().getParameterResolver(UsageType.DEFINITION).getConstructorAditionalParameters(); ConstructorPrinter constructorPrinter = new ConstructorPrinter(context.getOutputType(), processingEnv); constructorPrinter.printConstructors(cachedConverterType, constructorAdditionalParameters); TypeElement superClassElement = context.getOutputType().getSuperClass() != null ? context.getOutputType().getSuperClass().asElement() : null; for (ParameterElement constructorAdditionalParameter: constructorAdditionalParameters) { String parameterName = constructorAdditionalParameter.getName().toString(); if (constructorAdditionalParameter.getPropagationType().equals(PropagationType.PROPAGATED_MUTABLE) && !containsField(superClassElement, constructorAdditionalParameter)) { MutableVariableElement field = processingEnv.getElementUtils().getParameterElement(constructorAdditionalParameter.getType(), parameterName); context.getOutputType().addField((MutableVariableElement) field.addModifier(Modifier.PROTECTED)); MutableExecutableType setterMethod = processingEnv.getTypeUtils().getExecutable( processingEnv.getTypeUtils().toMutableType(processingEnv.getTypeUtils().getNoType(TypeKind.VOID)), MethodHelper.toSetter(parameterName)). addParameter(processingEnv.getElementUtils().getParameterElement(constructorAdditionalParameter.getType(), parameterName)).addModifier(Modifier.PUBLIC); context.getOutputType().addMethod(setterMethod); setterMethod.getPrintWriter().println("this." + parameterName + " = " + parameterName + ";"); } } super.processElement(context); converterProviderPrinter.printConverterMethods(context.getOutputType(), false, ConverterInstancerType.REFERENCED_CONVERTER_INSTANCER); }