@Override public void finish(ServiceTypeElement serviceTypeElement) { List<ConverterConstructorParameter> params = mergeSameParams(converterParameters); MutableExecutableType constructor = serviceTypeElement.getServiceConverter().getConstructor(); for (ConverterConstructorParameter converterParameter: params) { constructor.addParameter(processingEnv.getElementUtils().getParameterElement( converterParameter.getType(), converterParameter.getName())); } } }
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 + ";"); }
@Override public void print(ServiceConverterPrinterContext context) { super.print(context); context.getService().getServiceConverter().getConstructor(). addParameter(processingEnv.getElementUtils().getParameterElement(ProcessorUtils.replaceTypeVariablesByWildcards(context.getLocalServiceInterface().clone()), context.getLocalServiceFieldName())).addModifier(Modifier.PUBLIC); }
addParameter(processingEnv.getElementUtils().getParameterElement(Object.class, "o1")). addParameter(processingEnv.getElementUtils().getParameterElement( processingEnv.getTypeUtils().toMutableType(processingEnv.getTypeUtils().getPrimitiveType(TypeKind.INT)), "prime")). addParameter(processingEnv.getElementUtils().getParameterElement( processingEnv.getTypeUtils().toMutableType(processingEnv.getTypeUtils().getPrimitiveType(TypeKind.INT)), "result")). addModifier(Modifier.PRIVATE);
addParameter(processingEnv.getElementUtils().getParameterElement(Object.class, "o1")). addParameter(processingEnv.getElementUtils().getParameterElement(Object.class, "o2")).addModifier(Modifier.PRIVATE);
@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); }
@Override public void print(ConverterProviderType serviceConverterProvider) { List<MutableVariableElement> requiredParameters = contextType.getConstructor().getParameters(); List<MutableVariableElement> localFields = serviceConverterProvider.getFields(); for (MutableVariableElement generatedParameter: requiredParameters) { if (getLocalField(localFields, generatedParameter) == null) { initializeContextMethod.addParameter(processingEnv.getElementUtils().getParameterElement(generatedParameter.asType(), generatedParameter.getSimpleName())); } } HierarchyPrintWriter printWriter = initializeContextMethod.getPrintWriter(); printWriter.print("return new " + serviceConverterProvider.getSimpleName() + "("); int i = 0; for (MutableVariableElement parameter: requiredParameters) { if (i > 0) { printWriter.print(", "); } MutableVariableElement localField = getLocalField(localFields, parameter); if (localField == null) { MutableVariableElement methodParameter = getLocalField(initializeContextMethod.getParameters(), parameter); if (methodParameter == null) { serviceConverterProvider.getField(methodParameter); } printWriter.print(parameter.getSimpleName()); } else { printWriter.print(localField.getSimpleName()); } i++; } printWriter.println(");"); }
addParameter(processingEnv.getElementUtils().getParameterElement(String.class, "name")).addModifier(Modifier.PUBLIC);