private Expression getTypeExpression(DeclaredTypeName fieldType) { List<? extends TypeName> typeArgs = fieldType.getTypeArgs(); if (AptUtils.isEmpty(typeArgs)) { return Expressions.classObject(fieldType); } else { List<Expression> parameterizedTypeBuilderArgs = new ArrayList<>(); parameterizedTypeBuilderArgs.add(Expressions.classObject(fieldType)); for (TypeName typeArg : typeArgs) { // The cast to DeclaredTypeName is safe because we recursively check all type args before constructing // an instance of this property generator parameterizedTypeBuilderArgs.add(getTypeExpression((DeclaredTypeName) typeArg)); } return Expressions.staticMethod(JSONTypes.PARAMETERIZED_TYPE_BUILDER, "build", parameterizedTypeBuilderArgs); } }
@Override protected void writeGetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { Expression typeExpression = getTypeExpression(fieldType); writer.writeStatement(Expressions.staticMethod(JSONTypes.JSON_PROPERTY_SUPPORT, "getValueFromJSON", "this", propertyName, typeExpression).returnExpr()); }
@Override protected void writeSetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { Expression typeExpression = getTypeExpression(fieldType); writer.writeStatement(Expressions.staticMethod(JSONTypes.JSON_PROPERTY_SUPPORT, "setValueAsJSON", "this", propertyName, params.getArgumentNames().get(0), typeExpression)); writer.writeStringStatement("return this"); }
private Expression constructInitializer(String name, boolean view) { if (view) { return Expressions.staticMethod(TypeConstants.VIEW, "fromQuery", QUERY_NAME, name, Expressions.classObject(modelSpec.getGeneratedClassName()), PROPERTIES_ARRAY_NAME); } else { return Expressions.callMethodOn(QUERY_NAME, "as", name, Expressions.classObject(modelSpec.getGeneratedClassName()), PROPERTIES_ARRAY_NAME); } }
private void emitModelMethod(JavaFileWriter writer, ExecutableElement e, Modifier... modifiers) throws IOException { MethodDeclarationParameters params = utils.methodDeclarationParamsFromExecutableElement(e, modifiers); ModelMethod methodAnnotation = e.getAnnotation(ModelMethod.class); List<Object> arguments = new ArrayList<>(); if (methodAnnotation != null) { String name = methodAnnotation.name(); if (!AptUtils.isEmpty(name)) { params.setMethodName(name); } params.getArgumentTypes().remove(0); params.getArgumentNames().remove(0); arguments.add(0, "this"); } arguments.addAll(params.getArgumentNames()); Expression methodCall = Expressions.staticMethod(modelSpec.getModelSpecName(), e.getSimpleName().toString(), arguments); if (!CoreTypes.VOID.equals(params.getReturnType())) { methodCall = methodCall.returnExpr(); } JavadocPlugin.writeJavadocFromElement(pluginEnv, writer, e); writer.beginMethodDefinition(params) .writeStatement(methodCall) .finishMethodDefinition(); }
@Override protected void writeGetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { final String value = "value"; writer.writeFieldDeclaration(CoreTypes.JAVA_STRING, value, Expressions.callMethod("get", propertyName)); Expression condition = Expressions.fromString(value + " == null"); Expression ifTrue = Expressions.fromString("null"); Expression ifFalse = Expressions.staticMethod(enumType, "valueOf", value); TernaryExpression ternary = new TernaryExpression(condition, ifTrue, ifFalse); writer.writeStatement(ternary.returnExpr()); }
private Expression constructInitializer(String name, boolean view) { if (view) { return Expressions.staticMethod(TypeConstants.VIEW, "fromQuery", QUERY_NAME, name, Expressions.classObject(modelSpec.getGeneratedClassName()), PROPERTIES_ARRAY_NAME); } else { return Expressions.callMethodOn(QUERY_NAME, "as", name, Expressions.classObject(modelSpec.getGeneratedClassName()), PROPERTIES_ARRAY_NAME); } }
private void emitModelMethod(JavaFileWriter writer, ExecutableElement e, Modifier... modifiers) throws IOException { MethodDeclarationParameters params = utils.methodDeclarationParamsFromExecutableElement(e, modifiers); ModelMethod methodAnnotation = e.getAnnotation(ModelMethod.class); List<Object> arguments = new ArrayList<>(); if (methodAnnotation != null) { String name = methodAnnotation.name(); if (!AptUtils.isEmpty(name)) { params.setMethodName(name); } params.getArgumentTypes().remove(0); params.getArgumentNames().remove(0); arguments.add(0, "this"); } arguments.addAll(params.getArgumentNames()); Expression methodCall = Expressions.staticMethod(modelSpec.getModelSpecName(), e.getSimpleName().toString(), arguments); if (!CoreTypes.VOID.equals(params.getReturnType())) { methodCall = methodCall.returnExpr(); } JavadocPlugin.writeJavadocFromElement(pluginEnv, writer, e); writer.beginMethodDefinition(params) .writeStatement(methodCall) .finishMethodDefinition(); }
@Override protected void writeGetterBody(JavaFileWriter writer, MethodDeclarationParameters params) throws IOException { final String value = "value"; writer.writeFieldDeclaration(CoreTypes.JAVA_STRING, value, Expressions.callMethod("get", propertyName)); Expression condition = Expressions.fromString(value + " == null"); Expression ifTrue = Expressions.fromString("null"); Expression ifFalse = Expressions.staticMethod(enumType, "valueOf", value); TernaryExpression ternary = new TernaryExpression(condition, ifTrue, ifFalse); writer.writeStatement(ternary.returnExpr()); }