public void createEditorFieldMethods(ExecutableElement method, IJExpression keyExpression) { String returnType = method.getReturnType().toString(); EditorFieldHolder editorFieldHolder = EDITOR_FIELD_BY_TYPE.get(returnType); AbstractJClass editorFieldClass = getJClass(editorFieldHolder.fieldClass); String fieldName = method.getSimpleName().toString(); JMethod editorFieldMethod = editorClass.method(PUBLIC, editorFieldClass.narrow(editorClass), fieldName); String docComment = getProcessingEnvironment().getElementUtils().getDocComment(method); codeModelHelper.addTrimmedDocComment(editorFieldMethod, docComment); editorFieldMethod.body()._return(JExpr.invoke(editorFieldHolder.fieldMethodName).arg(keyExpression)); }
public void createFieldMethod(Class<?> prefFieldHelperClass, IJExpression keyExpression, String fieldName, String fieldHelperMethodName, IJExpression defaultValue, String docComment, String defaultValueStr) { JMethod fieldMethod = generatedClass.method(PUBLIC, prefFieldHelperClass, fieldName); if (defaultValueStr != null) { boolean isStringPrefField = StringPrefField.class == prefFieldHelperClass; final String defaultValueJavaDoc; if (isStringPrefField) { defaultValueJavaDoc = "\"" + defaultValueStr + "\""; } else { defaultValueJavaDoc = defaultValueStr; } fieldMethod.javadoc().append("<p><b>Defaults to</b>: " + defaultValueJavaDoc + "</p>\n"); } codeModelHelper.addTrimmedDocComment(fieldMethod, docComment); fieldMethod.javadoc().addReturn().append("a {@link " + prefFieldHelperClass.getSimpleName() + "} instance to retrieve or write the pref value"); fieldMethod.body()._return(JExpr.invoke(fieldHelperMethodName).arg(keyExpression).arg(defaultValue)); }
private void addActionToIntentBuilder(EIntentServiceHolder holder, ExecutableElement executableElement, String methodName, JFieldVar actionKeyField) { JMethod method = holder.getIntentBuilderClass().method(PUBLIC, holder.getIntentBuilderClass(), methodName); JBlock body = method.body(); String docComment = getProcessingEnvironment().getElementUtils().getDocComment(executableElement); codeModelHelper.addTrimmedDocComment(method, docComment); method.javadoc().addReturn().append("the IntentBuilder to chain calls"); // setAction body.invoke("action").arg(actionKeyField); for (VariableElement param : executableElement.getParameters()) { String paramName = param.getSimpleName().toString(); AbstractJClass parameterClass = codeModelHelper.typeMirrorToJClass(param.asType()); JFieldVar paramVar = getStaticExtraField(holder, paramName); JVar methodParam = method.param(parameterClass, paramName); JInvocation putExtraInvocation = holder.getIntentBuilder().getSuperPutExtraInvocation(param.asType(), methodParam, paramVar); body.add(putExtraInvocation); } body._return(JExpr._this()); }
private JMethod addPutExtraMethod(Element element, List<IntentExtra> intentExtras) { String docComment = elementUtils.getDocComment(element); JMethod method = holder.getIntentBuilderClass().method(PUBLIC, holder.getIntentBuilderClass(), element.getSimpleName().toString()); method.javadoc().addReturn().append("the IntentBuilder to chain calls"); codeModelHelper.addTrimmedDocComment(method, docComment); int paramCount = intentExtras.size(); for (int i = 0; i < paramCount; i++) { IntentExtra intentExtra = intentExtras.get(i); method.javadoc().addParam(intentExtra.parameterName).append("the value for this extra"); AbstractJClass parameterClass = codeModelHelper.typeMirrorToJClass(intentExtra.type); JVar extraParameterVar = method.param(parameterClass, intentExtra.parameterName); JInvocation superCall = getSuperPutExtraInvocation(intentExtra.type, extraParameterVar, intentExtra.keyField); if (i + 1 == paramCount) { method.body()._return(superCall); } else { method.body().add(superCall); } } return method; }
public void createBuilderInjectMethod(EFragmentHolder holder, Element element, List<ArgHelper> argHelpers) { JDefinedClass builderClass = holder.getBuilderClass(); JFieldRef builderArgsField = holder.getBuilderArgsField(); JMethod builderMethod = builderClass.method(PUBLIC, holder.narrow(builderClass), element.getSimpleName().toString()); String docComment = getProcessingEnvironment().getElementUtils().getDocComment(element); codeModelHelper.addTrimmedDocComment(builderMethod, docComment); for (ArgHelper argHelper : argHelpers) { String fieldName = argHelper.param.getSimpleName().toString(); TypeMirror actualType = codeModelHelper.getActualTypeOfEnclosingElementOfInjectedElement(holder, argHelper.param); BundleHelper bundleHelper = new BundleHelper(getEnvironment(), actualType); JFieldVar argKeyStaticField = getOrCreateStaticArgField(holder, argHelper.argKey, fieldName); AbstractJClass paramClass = codeModelHelper.typeMirrorToJClass(actualType); JVar arg = builderMethod.param(paramClass, fieldName); builderMethod.body().add(bundleHelper.getExpressionToSaveFromField(builderArgsField, argKeyStaticField, arg)); builderMethod.javadoc().addParam(fieldName).append("value for this Fragment argument"); } builderMethod.javadoc().addReturn().append("the FragmentBuilder to chain calls"); builderMethod.body()._return(_this()); }
public void createEditorFieldMethods(ExecutableElement method, IJExpression keyExpression) { String returnType = method.getReturnType().toString(); EditorFieldHolder editorFieldHolder = EDITOR_FIELD_BY_TYPE.get(returnType); AbstractJClass editorFieldClass = getJClass(editorFieldHolder.fieldClass); String fieldName = method.getSimpleName().toString(); JMethod editorFieldMethod = editorClass.method(PUBLIC, editorFieldClass.narrow(editorClass), fieldName); String docComment = getProcessingEnvironment().getElementUtils().getDocComment(method); codeModelHelper.addTrimmedDocComment(editorFieldMethod, docComment); editorFieldMethod.body()._return(JExpr.invoke(editorFieldHolder.fieldMethodName).arg(keyExpression)); }
public void createFieldMethod(Class<?> prefFieldHelperClass, IJExpression keyExpression, String fieldName, String fieldHelperMethodName, IJExpression defaultValue, String docComment, String defaultValueStr) { JMethod fieldMethod = generatedClass.method(PUBLIC, prefFieldHelperClass, fieldName); if (defaultValueStr != null) { boolean isStringPrefField = StringPrefField.class == prefFieldHelperClass; final String defaultValueJavaDoc; if (isStringPrefField) { defaultValueJavaDoc = "\"" + defaultValueStr + "\""; } else { defaultValueJavaDoc = defaultValueStr; } fieldMethod.javadoc().append("<p><b>Defaults to</b>: " + defaultValueJavaDoc + "</p>\n"); } codeModelHelper.addTrimmedDocComment(fieldMethod, docComment); fieldMethod.javadoc().addReturn().append("a {@link " + prefFieldHelperClass.getSimpleName() + "} instance to retrieve or write the pref value"); fieldMethod.body()._return(JExpr.invoke(fieldHelperMethodName).arg(keyExpression).arg(defaultValue)); }
private void addActionToIntentBuilder(EIntentServiceHolder holder, ExecutableElement executableElement, String methodName, JFieldVar actionKeyField) { JMethod method = holder.getIntentBuilderClass().method(PUBLIC, holder.getIntentBuilderClass(), methodName); JBlock body = method.body(); String docComment = getProcessingEnvironment().getElementUtils().getDocComment(executableElement); codeModelHelper.addTrimmedDocComment(method, docComment); method.javadoc().addReturn().append("the IntentBuilder to chain calls"); // setAction body.invoke("action").arg(actionKeyField); for (VariableElement param : executableElement.getParameters()) { String paramName = param.getSimpleName().toString(); AbstractJClass parameterClass = codeModelHelper.typeMirrorToJClass(param.asType()); JFieldVar paramVar = getStaticExtraField(holder, paramName); JVar methodParam = method.param(parameterClass, paramName); JInvocation putExtraInvocation = holder.getIntentBuilder().getSuperPutExtraInvocation(param.asType(), methodParam, paramVar); body.add(putExtraInvocation); } body._return(JExpr._this()); }
private JMethod addPutExtraMethod(Element element, List<IntentExtra> intentExtras) { String docComment = elementUtils.getDocComment(element); JMethod method = holder.getIntentBuilderClass().method(PUBLIC, holder.getIntentBuilderClass(), element.getSimpleName().toString()); method.javadoc().addReturn().append("the IntentBuilder to chain calls"); codeModelHelper.addTrimmedDocComment(method, docComment); int paramCount = intentExtras.size(); for (int i = 0; i < paramCount; i++) { IntentExtra intentExtra = intentExtras.get(i); method.javadoc().addParam(intentExtra.parameterName).append("the value for this extra"); AbstractJClass parameterClass = codeModelHelper.typeMirrorToJClass(intentExtra.type); JVar extraParameterVar = method.param(parameterClass, intentExtra.parameterName); JInvocation superCall = getSuperPutExtraInvocation(intentExtra.type, extraParameterVar, intentExtra.keyField); if (i + 1 == paramCount) { method.body()._return(superCall); } else { method.body().add(superCall); } } return method; }
public void createBuilderInjectMethod(EFragmentHolder holder, Element element, List<ArgHelper> argHelpers) { JDefinedClass builderClass = holder.getBuilderClass(); JFieldRef builderArgsField = holder.getBuilderArgsField(); JMethod builderMethod = builderClass.method(PUBLIC, holder.narrow(builderClass), element.getSimpleName().toString()); String docComment = getProcessingEnvironment().getElementUtils().getDocComment(element); codeModelHelper.addTrimmedDocComment(builderMethod, docComment); for (ArgHelper argHelper : argHelpers) { String fieldName = argHelper.param.getSimpleName().toString(); TypeMirror actualType = codeModelHelper.getActualTypeOfEnclosingElementOfInjectedElement(holder, argHelper.param); BundleHelper bundleHelper = new BundleHelper(getEnvironment(), actualType); JFieldVar argKeyStaticField = getOrCreateStaticArgField(holder, argHelper.argKey, fieldName); AbstractJClass paramClass = codeModelHelper.typeMirrorToJClass(actualType); JVar arg = builderMethod.param(paramClass, fieldName); builderMethod.body().add(bundleHelper.getExpressionToSaveFromField(builderArgsField, argKeyStaticField, arg)); builderMethod.javadoc().addParam(fieldName).append("value for this Fragment argument"); } builderMethod.javadoc().addReturn().append("the FragmentBuilder to chain calls"); builderMethod.body()._return(_this()); }