in webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterBeanDiscoveryImpl.java [91:205]
public void addBean(Bean<?> bean)
{
checkState();
if (bean.isAlternative() && !webBeansContext.getAlternativesManager().isAlternative(bean)
&& !(bean instanceof Prioritized) && !bean.getBeanClass().isAnnotationPresent(Priority.class))
{
// if the given Bean is an alternative, then at least one of the following
// conditions must be met:
// * Alternative is enabled via beans.xml
// * implements Prioritized
// * beanClass has a @Priority annotation
// , otherwise the bean is not active
return;
}
AnnotatedType<?> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(bean.getBeanClass());
//Fire Event
ProcessSyntheticBean<?> processSyntheticBean = new GProcessSyntheticBean(bean,annotatedType, extension);
beanManager.fireEvent(processSyntheticBean, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
if(bean instanceof Interceptor)
{
//Required for custom interceptors
webBeansContext.getWebBeansUtil().defineManagedBeanWithoutFireEvents((AnnotatedType<?>) annotatedType);
Interceptor<?> interceptor = (Interceptor<?>)bean;
if(interceptor.getScope() != Dependent.class)
{
if(logger.isLoggable(Level.WARNING))
{
logger.log(Level.WARNING, OWBLogConst.WARN_0005_1, interceptor.getBeanClass().getName());
}
}
if(interceptor.getName() != null)
{
if(logger.isLoggable(Level.WARNING))
{
logger.log(Level.WARNING, OWBLogConst.WARN_0005_2, interceptor.getBeanClass().getName());
}
}
if(interceptor.isAlternative())
{
if(logger.isLoggable(Level.WARNING))
{
logger.log(Level.WARNING, OWBLogConst.WARN_0005_3, interceptor.getBeanClass().getName());
}
}
InterceptorsManager interceptorsManager = webBeansContext.getInterceptorsManager();
interceptorsManager.addCdiInterceptor(interceptor);
interceptorsManager.addCustomInterceptorClass(bean.getBeanClass());
}
else if(bean instanceof Decorator)
{
//Required for custom decorators
ManagedBean<?> managedBean =
webBeansContext.getWebBeansUtil().defineManagedBeanWithoutFireEvents(
(AnnotatedType<?>) annotatedType);
if(managedBean.getScope() != Dependent.class)
{
if(logger.isLoggable(Level.WARNING))
{
logger.log(Level.WARNING, OWBLogConst.WARN_0005_1, managedBean.getBeanClass().getName());
}
}
if(managedBean.getName() != null)
{
if(logger.isLoggable(Level.WARNING))
{
logger.log(Level.WARNING, OWBLogConst.WARN_0005_2, managedBean.getBeanClass().getName());
}
}
if(managedBean.isAlternative())
{
if(logger.isLoggable(Level.WARNING))
{
logger.log(Level.WARNING, OWBLogConst.WARN_0005_3, managedBean.getBeanClass().getName());
}
}
boolean found = false;
for (InjectionPoint ip : bean.getInjectionPoints())
{
if (ip.isDelegate())
{
found = true;
break;
}
}
if (!found)
{
throw new WebBeansConfigurationException("Decorators must have a one @Delegate injection point. " +
"But the decorator bean : " + managedBean.toString() + " has more than one");
}
webBeansContext.getDecoratorsManager().addDecorator((Decorator<?>) bean);
webBeansContext.getDecoratorsManager().addCustomDecoratorClass(bean.getBeanClass());
}
else
{
if (bean.isAlternative() && bean instanceof Prioritized)
{
webBeansContext.getAlternativesManager().addPrioritizedAlternativeBean(bean);
}
beanManager.addBean(bean);
}
}