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); }
protected MutableExecutableType toPrintableElement(TypeElement owner, ExecutableElement method) { MutableExecutableType mutableExecutableType = processingEnv.getElementUtils().toMutableElement(method).asType(); mutableExecutableType.setReturnType(toPrintableType(owner, castToDomainDataInterface(method.getReturnType()))); List<MutableVariableElement> printableParameters = new ArrayList<MutableVariableElement>(); for (MutableVariableElement parameter: mutableExecutableType.getParameters()) { printableParameters.add(processingEnv.getElementUtils().getParameterElement(toPrintableType(owner, castToDomainDataInterface(parameter.asType())), parameter.getSimpleName())); } mutableExecutableType.setParameters(printableParameters); return mutableExecutableType; }
private boolean printConstructors(HierarchyPrintWriter printWriter, MutableDeclaredType type) { if (!type.getConstructor().isDefault()) { type.getConstructor().setReturnType(null); printWriter.addNestedPrinter(type.getConstructor().getPrintWriter()); printWriter.addNestedPrinter(new FormattedPrintWriter(processingEnv)).println(""); return true; } return false; }
public void printMethodDefinition(MutableExecutableType method) { List<MutableTypeVariable> typeVariables = method.getTypeVariables(); for (Modifier modifier: method.getModifiers()) { printWriter.print(modifier.toString() + " "); if (method.getReturnType() != null) { printWriter.print(ProcessorUtils.stripTypeParametersTypes(method.getReturnType()), " "); printWriter.print(method.getSimpleName().toString() + "("); for (MutableVariableElement parameter: method.getParameters()) { if (i > 0) { printWriter.print(", ");
addParameter(processingEnv.getElementUtils().getParameterElement(Object.class, "o1")). addParameter(processingEnv.getElementUtils().getParameterElement(Object.class, "o2")).addModifier(Modifier.PRIVATE); HierarchyPrintWriter printWriter = equalsSupportMethod.getPrintWriter();
copiedMethod.setReturnType(processingEnv.getTransferObjectUtils().getDomainType(domainMethodOwner.getMethod().getReturnType()).getDto()); int parametersCount = copiedMethod.getParameters().size(); MutableVariableElement parameter = copiedMethod.getParameters().get(i); dto = processingEnv.getTransferObjectUtils().getDomainType(parameter.asType()).getDto(); copiedMethod.setParameters(dtoParameters); copiedMethod.setAnnotations((AnnotationMirror)null); copiedMethod.addModifier(Modifier.PUBLIC); copiedMethod.getPrintWriter().println(line.trim());
@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(");"); }
public HierarchyPrintWriter getPrintWriter(MutableDeclaredType type) { return type.getMethod(GET_METHOD_NAME).getPrintWriter(); }
mutableMethodType.annotateWith(annotation); context.getService().getServiceConverter().addMethod(mutableMethodType.addModifier(Modifier.PUBLIC)); HierarchyPrintWriter pw = remoteMutableMethod.asType().getPrintWriter();
@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())); } } }
@Override public void initialize(final ConverterProviderContextType contextType) { // final MutableExecutableType converterProviderContextMethod = processingEnv.getTypeUtils().getExecutable(context.getConvertProviderContextType(), HibernateServiceConverterProviderParameterResolver.GET_CONVERTER_PROVIDER_CONTEXT_METHOD); // converterProviderContextMethod.addModifier(Modifier.PROTECTED); // serviceTypeElement.getServiceConverter().addMethod(converterProviderContextMethod); // HierarchyPrintWriter methodPrinter = converterProviderContextMethod.getPrintWriter(); this.contextType = contextType; initializeContextMethod = processingEnv.getTypeUtils().getExecutable(processingEnv.getTypeUtils().toMutableType(Void.class), "initialize"); initializeContextMethod.addModifier(Modifier.PUBLIC); contextType.addMethod(initializeContextMethod); super.initialize(contextType); }
@Override protected void print() { int i = 0; for (MutableVariableElement parameter: type.getConstructor().getParameters()) { if (i > 0) { print(", "); } print(parameter.getSimpleName()); i++; } } });
@Override public MutableDeclaredType asType() { //TODO only declared types are supported //TODO add TypeVariables, arrays, etc return (MutableDeclaredType) executableReference.asType().getReturnType(); }
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); HierarchyPrintWriter printWriter = hashCodeSupportMethod.getPrintWriter();
private void printMethods(HierarchyPrintWriter printWriter, MutableDeclaredType type) { for (MutableExecutableType method: type.getMethods()) { printWriter.addNestedPrinter(method.getPrintWriter()); printWriter.println(" "); } }
@Override public void initialize(MutableProcessingEnvironment processingEnv, final HasConstructorParameters type, ConverterConstructorParametersResolverProvider.UsageType usageType) { super.initialize(processingEnv, type, usageType); MutableExecutableType getMethod = processingEnv.getTypeUtils().getExecutable(processingEnv.getTypeUtils().toMutableType(getResultClass()), GET_METHOD_NAME).addModifier(Modifier.PUBLIC); type.addMethod(getMethod); HierarchyPrintWriter printWriter = getPrintWriter(type); printWriter.print(type, " " + ConverterProviderContextPrinterDelegate.RESULT_INSTANCE_NAME + " = new ", type, "("); printWriter.addLazyPrinter(new LazyPrintWriter(processingEnv) { @Override protected void print() { int i = 0; for (MutableVariableElement parameter: type.getConstructor().getParameters()) { if (i > 0) { print(", "); } print(parameter.getSimpleName()); i++; } } }); printWriter.println(");"); }
pw.print(RESULT_INSTANCE_NAME + ".registerConverterProvider(new ", converterPrinterDelegate, "("); List<MutableVariableElement> converterParameters = converterProviderContextType.getConstructor().getParameters();
protected void printDtoInstancer(FormattedPrintWriter pw, EntityResolver entityResolver, DtoType type) { pw.println(type," " + RESULT + " = new ", type, "();"); if ((type instanceof DtoDeclaredType) && entityResolver.shouldHaveIdMethod((DomainDeclaredType) type.getDomainDefinitionConfiguration().getInstantiableDomain())) { MutableExecutableElement idMethod = ((DtoDeclaredType)type).getIdMethod(entityResolver); pw.println(RESULT + "." + MethodHelper.toSetter(idMethod) + "((", idMethod.asType().getReturnType(), ")id);"); } pw.println("return " + RESULT + ";"); }
@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); }