@Override public TypedExpression buildVariable( InjectionBuilderContext injectionBuilderContext, InjectionNode injectionNode) { TypedExpression providerVar = injectionExpressionBuilder.buildVariable(injectionBuilderContext, providerInjectionNode); JExpression expression = providerVar.getExpression().invoke(PROVIDER_METHOD); return typedExpressionFactory.build(injectionNode.getASTType(), expression); }
public TypedExpression buildVariable( InjectionBuilderContext injectionBuilderContext, InjectionNode injectionNode) { // build provider JDefinedClass providerClass = providerGenerator.generateProvider(injectionNode, true); JExpression provider = JExpr._new(providerClass).arg(injectionBuilderContext.getScopeVar()); // build scope call // <T> T getScopedObject(Class<T> clazz, Provider<T> provider); TypedExpression contextScopeHolderExpression = injectionExpressionBuilder.buildVariable(injectionBuilderContext, this.contextScopeHolder); JExpression cast = invocationHelper.coerceType(ContextScopeHolder.class, contextScopeHolderExpression); JExpression scopeVar = cast.invoke(ContextScopeHolder.GET_SCOPE); JExpression expression = scopeVar.invoke(Scope.GET_SCOPED_OBJECT).arg(buildScopeKey(injectionNode)).arg(provider); return typedExpressionFactory.build(injectionNode.getASTType(), expression); }