in webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java [86:166]
public T doInjection()
{
Object owner = ownerInstance;
if (owner instanceof OwbNormalScopeProxy)
{
owner = NormalScopeProxyFactory.unwrapInstance(owner);
}
List<Object> list = new ArrayList<>();
for(int i=0;i<injectionPoints.size();i++)
{
for(InjectionPoint point : injectionPoints)
{
AnnotatedParameter<?> parameter = (AnnotatedParameter<?>)point.getAnnotated();
if (parameter.getPosition() == i)
{
if (point.isDelegate())
{
list.add(creationalContext.getDelegate());
break;
}
boolean injectionPoint = false;
if(getBean() instanceof ProducerMethodBean)
{
if(parameter.getBaseType().equals(InjectionPoint.class))
{
BeanManager manager = getWebBeansContext().getBeanManagerImpl();
Object reference = manager.getInjectableReference(point, creationalContext);
list.add(reference);
injectionPoint = true;
}
}
if(!injectionPoint)
{
if(isDisposable() && parameter.getAnnotation(Disposes.class) != null)
{
list.add(producerMethodInstance);
}
else
{
Object instance = inject(point);
InjectionResolver injectionResolver = getWebBeansContext().getBeanManagerImpl().getInjectionResolver();
Bean<?> injectedBean = injectionResolver.getInjectionPointBean(point);
if(injectedBean.getScope() == Dependent.class)
{
dependentParameters.put(injectedBean, instance);
}
list.add(instance);
}
}
break;
}
}
}
try
{
if (!method.isAccessible())
{
getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(method, true);
}
return (T) method.invoke(owner, list.toArray(new Object[list.size()]));
}
catch (Exception e)
{
throw new WebBeansException(e);
}
finally
{
transientCreationalContext.release();
}
}