protected boolean isReadOnlyMethod(ReadOnlyAccessor readOnlyAccessor, ExecutableElement method) { return readOnlyAccessor.isReadonly() && (!MethodHelper.toField(method).equals(method.getSimpleName().toString()) || ReadOnly.PropertyType.METHOD.equals(readOnlyAccessor.getPropertyType())); }
if (MetamodelMethodStrategy.GETTER_SETTER.equals(methodStrategy) && !MethodHelper.isGetterMethod(method)) { String setterMethodName = MethodHelper.toSetter(method); handler.handle(method, MethodHelper.toField(method)); } else if(MetamodelMethodStrategy.PURE.equals(methodStrategy)) { handler.handle(method, simpleMethodName);
public static String toGetterMethod(TypeElement typeElement, String fieldName) { if (typeElement != null && ProcessorUtils.hasMethod(toMethod(MethodHelper.GETTER_IS_PREFIX, fieldName), typeElement)) { return toIsGetter(fieldName); } return toGetter(fieldName); }
private boolean hasAbstractMethod(TypeElement processingElement) { List<ExecutableElement> methods = ElementFilter.methodsIn(processingElement.getEnclosedElements()); ElementSorter.sort(methods); for (ExecutableElement method: methods) { if (!MethodHelper.isGetterMethod(method) && !MethodHelper.isSetterMethod(method) && !isObjectMethod(method)) { return true; } if (MethodHelper.isGetterMethod(method) && !ProcessorUtils.hasMethod(MethodHelper.toSetter(method), domainDataType.asElement(), true)) { return true; } } for (TypeMirror interfaceType: processingElement.getInterfaces()) { TypeElement interfaceTypeElement = (TypeElement)((DeclaredType)interfaceType).asElement(); if (hasAbstractMethod(interfaceTypeElement)) { return true; } } return false; } }
if (!MethodHelper.isGetterMethod(method)) { if(!isDataInterface && !MethodHelper.isSetterMethod(method)) { } else if (!isDataInterface && !ProcessorUtils.hasMethod(MethodHelper.toSetter(method), owner, true)) { if (generatedProperties.contains(MethodHelper.toField(method))) { continue; generatedProperties.add(MethodHelper.toField(method));
private void printAccessorForField(FormattedPrintWriter pw, TypeElement owner, MutableTypeMirror mutableReturnType, ExecutableElement method) { String fieldName = MethodHelper.toField(method); pw.print(MethodHelper.toIsGetter(fieldName)); } else { pw.print(MethodHelper.toGetter(fieldName)); !printableType.toString(ClassSerializer.CANONICAL, true).equals(setterType.toString(ClassSerializer.CANONICAL, true)); pw.println("public void " + MethodHelper.toSetter(fieldName) + "(", setterType, " " + fieldName + ") {"); pw.print("this." + fieldName + " = ");
ExecutableElement domainGetterMethod; if (domainTypeElement.asElement() != null && ProcessorUtils.hasMethod(MethodHelper.toMethod(MethodHelper.GETTER_IS_PREFIX, domainPathResolver.getCurrent()), domainTypeElement.asElement())) { isMethod = true; pw.print(")"); pw.print("." + MethodHelper.toSetter(domainPathResolver.getPath()) + "("); pw.print(TransferObjectElementPrinter.DTO_NAME + "." + ((isMethod) ? MethodHelper.toIsGetter(dtoField) : MethodHelper.toGetter(dtoField))); pw.println(");"); } else if (!entityResolver.isImmutable(domainTypeElement.asElement())) { VariableElement field = MethodHelper.getField(domainTypeElement.asConfigurationElement(), domainPathResolver.getCurrent());
case ENUM: case PRIMITIVE: pw.println(RESULT_NAME + "." + MethodHelper.toSetter(context.getDtoFieldName()) + "(" + MethodHelper.toGetter(context.getDtoFieldName()) + ");"); return; case CLASS: String newFieldName = "new" + MethodHelper.toMethod(context.getDomainFieldPath()); pw.println(context.getDtoFieldType(), " " + newFieldName + " = null;" ); pw.println("if (" + MethodHelper.toGetter(context.getDtoFieldName()) + " != null) {"); pw.println("for (", elementType, " _element: " + MethodHelper.toGetter(context.getDtoFieldName()) + ") {"); pw.print(newFieldName + ".add(_element"); if (dtoHasClone) { pw.println(RESULT_NAME + "." + MethodHelper.toSetter(context.getDtoFieldName()) + "(" + newFieldName + ");"); pw.println("}"); } else { pw.print(RESULT_NAME + "." + MethodHelper.toSetter(context.getDtoFieldName()) + "(" + MethodHelper.toGetter(context.getDtoFieldName()));
pw.println(dtoType, " " + RESULT_NAME + " = getDtoInstance(" + DOMAIN_NAME + ", " + DOMAIN_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)) + ");"); pw.println("if (" + RESULT_NAME + " != null) {"); pw.println("return " + RESULT_NAME + ";"); String methodName = DOMAIN_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)); pw.println(dtoType, " dtoFromCache = getDtoFromCache(" + DOMAIN_NAME + ", " + DOMAIN_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)) + ");"); pw.println(); pw.println("if (dtoFromCache != null) {"); pw.println("putDtoIntoCache(" + DOMAIN_NAME + ", " + RESULT_NAME + "," + RESULT_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)) + ");"); pw.println();
@Override public String toMethod(ExecutableElement method) { return MethodHelper.toSetter(method); }
protected void printCopyNested(PathResolver domainPathResolver, String fullPath, DomainDeclaredType referenceDomainType, ExecutableElement method, FormattedPrintWriter pw, Field field, String dtoName) { DomainDeclaredType instantiableDomain = (DomainDeclaredType)referenceDomainType.getConverter().getInstantiableDomain(); pw.print(referenceDomainType, " " + domainPathResolver.getCurrent() + " = "); if (instantiableDomain.getId(entityResolver) != null) { if (referenceDomainType.getConverter() == null) { processingEnv.getMessager().printMessage(Kind.ERROR, "[ERROR] No converter/configuration for " + referenceDomainType + " was found. Please, define configuration for " + referenceDomainType); } converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, referenceDomainType, field, method, true); pw.println(".createDomainInstance(" + dtoName + "." + MethodHelper.toGetter(fullPath + MethodHelper.toMethod(MethodHelper.toField(instantiableDomain.getIdMethod(entityResolver)))) + ");"); } else { pw.println(TransferObjectElementPrinter.RESULT_NAME + "." + MethodHelper.toGetter(domainPathResolver.getCurrent()) + ";"); pw.println("if (" + domainPathResolver.getCurrent() + " == null) {"); pw.print(domainPathResolver.getCurrent() + " = "); // TODO add NPE check converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, referenceDomainType, field, method, true); pw.println(".createDomainInstance(null);"); pw.println("}"); } }
protected void generateGetBeanAttributes(FormattedPrintWriter pw, List<ExecutableElement> methods) { // create the getAttribute method pw.println("public ", Object.class, " getBeanAttribute(", String.class, " attr) {"); for (ExecutableElement method: methods) { if (MethodHelper.isGetterMethod(method) && method.getParameters().size() == 0) { pw.println("if (attr.equals(\"" + MethodHelper.toField(method) + "\")) {"); pw.println("return " + castToString(method.getReturnType(), "this." + method.getSimpleName().toString() + "()") + ";"); pw.print("} else "); } } pw.println("if (attr.equals(\"" + BEAN_WRAPPER_CONTENT + "\")) {"); pw.println("return " + BEAN_WRAPPER_CONTENT + ";"); pw.println("} else {"); pw.println("return null;"); pw.println("}"); pw.println("}"); pw.println(); }
protected void printCopyByLocalConverter(String localConverterName, PathResolver domainPathResolver, DomainType domainMethodReturnType, String dtoField, FormattedPrintWriter pw) { pw.println("if (" + localConverterName + " != null) {"); pw.print(TransferObjectElementPrinter.RESULT_NAME + "." + MethodHelper.toSetter(domainPathResolver.getPath()) + "(" + localConverterName + ".fromDto(" + TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(dtoField) + ")"); pw.println(");"); pw.println("} else {"); pw.print(TransferObjectElementPrinter.RESULT_NAME + "." + MethodHelper.toSetter(domainPathResolver.getPath())); if (domainMethodReturnType.getKind().equals(MutableTypeKind.TYPEVAR)) { pw.print("((" + ConverterTypeElement.DOMAIN_TYPE_ARGUMENT_PREFIX + "_" + ((MutableTypeVariable) domainMethodReturnType).getVariable() + ")"); } else { pw.print("((" + domainMethodReturnType + ")"); } pw.print(TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(dtoField)); pw.println(");"); pw.println("}"); } }
public static String toMethod(String prefix, String fieldName) { PathResolver pathResolver = new PathResolver(fieldName); if (pathResolver.isNested()) { int i = 0; String result = ""; while (pathResolver.hasNext()) { if (i > 0) { result += "."; } String path = pathResolver.next(); if (pathResolver.hasNext()) { result += toGetter(path); } else { result += toMethod(prefix, path); } i++; } return result; } return prefix + toMethod(fieldName); }
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(); }
@Override public boolean isMethodOfType(ExecutableElement method) { return MethodHelper.isGetterMethod(method); } },
@Override public String toMethod(ExecutableElement method) { String getter = MethodHelper.toGetter(method); return getter.substring(0, getter.length() - 2); }
pw.println(previousPath + "." + MethodHelper.toSetter(currentPath) + "(" + currentPath + ");"); fullPath += MethodHelper.toMethod(currentPath); ExecutableElement domainGetterMethod = instantiableDomainTypeElement.getGetterMethod(currentPath); VariableElement field = MethodHelper.getField(instantiableDomainTypeElement.asConfigurationElement(), currentPath);
if (method.getModifiers().contains(Modifier.STATIC) || (!MethodHelper.isGetterMethod(method) && !MethodHelper.isSetterMethod(method))) { continue;