public void createRebindMethod() { JMethod rebindMethod = generatedClass.method(PUBLIC, getCodeModel().VOID, "rebind"); JVar contextParam = rebindMethod.param(getClasses().CONTEXT, "context"); JBlock body = rebindMethod.body(); body.assign(getContextField(), contextParam); body.invoke(getInit()); }
private void setConstructor() { constructor = generatedClass.constructor(PRIVATE); JVar constructorContextParam = constructor.param(getClasses().CONTEXT, "context"); JBlock constructorBody = constructor.body(); List<ExecutableElement> constructors = ElementFilter.constructorsIn(annotatedElement.getEnclosedElements()); ExecutableElement superConstructor = constructors.get(0); if (superConstructor.getParameters().size() == 1) { constructorBody.invoke("super").arg(constructorContextParam); } constructorBody.assign(getContextField(), constructorContextParam); }
@Override public void process(Element element, EComponentWithViewSupportHolder holder) throws Exception { ActionScanner.processActions(element, holder); uniquePriorityCounter++; final ViewsHolder viewsHolder = holder.getPluginHolder(new ViewsHolder(holder, annotationHelper)); final String methodName = element.getSimpleName().toString(); JBlock block = new JBlock(); JInvocation invoke = block.invoke(methodName); ExecutableElement exeElem = (ExecutableElement) element; for (VariableElement param : exeElem.getParameters()) { final String paramName = param.getSimpleName().toString(); ParamUtils.injectParam(paramName, invoke, viewsHolder); } SharedRecords.priorityAdd(holder.getOnViewChangedBody(), block, uniquePriorityCounter); }
public void createFactoryMethod(boolean hasSingletonScope) { AbstractJClass narrowedGeneratedClass = codeModelHelper.narrowGeneratedClass(generatedClass, annotatedElement.asType()); JMethod factoryMethod = generatedClass.method(PUBLIC | STATIC, narrowedGeneratedClass, GET_INSTANCE_METHOD_NAME); codeModelHelper.generify(factoryMethod, annotatedElement); JVar factoryMethodContextParam = factoryMethod.param(getClasses().CONTEXT, "context"); JBlock factoryMethodBody = factoryMethod.body(); /* * Singletons are bound to the application context */ if (hasSingletonScope) { JFieldVar instanceField = generatedClass.field(PRIVATE | STATIC, generatedClass, "instance" + generationSuffix()); JBlock creationBlock = factoryMethodBody // ._if(instanceField.eq(_null())) // ._then(); JVar previousNotifier = viewNotifierHelper.replacePreviousNotifierWithNull(creationBlock); creationBlock.assign( instanceField, _new(narrowedGeneratedClass) .arg(factoryMethodContextParam.invoke("getApplicationContext"))); creationBlock.invoke(instanceField, getInit()); viewNotifierHelper.resetPreviousNotifier(creationBlock, previousNotifier); factoryMethodBody._return(instanceField); } else { factoryMethodBody._return(_new(narrowedGeneratedClass).arg(factoryMethodContextParam)); } }
public void invokeInitInConstructor() { JBlock constructorBody = constructor.body(); constructorBody.invoke(getInit()); }