@Override public void process(Element element, HasInstanceState holder) { AbstractJClass elementClass = codeModelHelper.typeMirrorToJClass(element.asType()); String fieldName = element.getSimpleName().toString(); JBlock saveStateBody = holder.getSaveStateMethodBody(); JVar saveStateBundleParam = holder.getSaveStateBundleParam(); JMethod restoreStateMethod = holder.getRestoreStateMethod(); JBlock restoreStateBody = holder.getRestoreStateMethodBody(); JVar restoreStateBundleParam = holder.getRestoreStateBundleParam(); TypeMirror type = codeModelHelper.getActualType(element, holder); BundleHelper bundleHelper = new BundleHelper(getEnvironment(), type); JFieldRef ref = ref(fieldName); saveStateBody.add(bundleHelper.getExpressionToSaveFromField(saveStateBundleParam, JExpr.lit(fieldName), ref)); IJExpression restoreMethodCall = bundleHelper.getExpressionToRestoreFromBundle(elementClass, restoreStateBundleParam, JExpr.lit(fieldName), restoreStateMethod); restoreStateBody.assign(ref, restoreMethodCall); } }
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()); }
@Override public void process(Element element, HasInstanceState holder) { AbstractJClass elementClass = codeModelHelper.typeMirrorToJClass(element.asType()); String fieldName = element.getSimpleName().toString(); JBlock saveStateBody = holder.getSaveStateMethodBody(); JVar saveStateBundleParam = holder.getSaveStateBundleParam(); JMethod restoreStateMethod = holder.getRestoreStateMethod(); JBlock restoreStateBody = holder.getRestoreStateMethodBody(); JVar restoreStateBundleParam = holder.getRestoreStateBundleParam(); TypeMirror type = codeModelHelper.getActualType(element, holder); BundleHelper bundleHelper = new BundleHelper(getEnvironment(), type); JFieldRef ref = ref(fieldName); saveStateBody.add(bundleHelper.getExpressionToSaveFromField(saveStateBundleParam, JExpr.lit(fieldName), ref)); IJExpression restoreMethodCall = bundleHelper.getExpressionToRestoreFromBundle(elementClass, restoreStateBundleParam, JExpr.lit(fieldName), restoreStateMethod); restoreStateBody.assign(ref, restoreMethodCall); } }
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()); }