You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2014/12/21 21:12:49 UTC
svn commit: r1647202 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
config/BeansDeployer.java
portable/events/discovery/AfterBeanDiscoveryImpl.java
Author: rmannibucau
Date: Sun Dec 21 20:12:49 2014
New Revision: 1647202
URL: http://svn.apache.org/r1647202
Log:
AfterBeanDiscovery started state + prevent producers for at created manually
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterBeanDiscoveryImpl.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1647202&r1=1647201&r2=1647202&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Sun Dec 21 20:12:49 2014
@@ -36,6 +36,7 @@ import org.apache.webbeans.component.cre
import org.apache.webbeans.component.creation.ObserverMethodsBuilder;
import org.apache.webbeans.component.creation.ProducerFieldBeansBuilder;
import org.apache.webbeans.component.creation.ProducerMethodBeansBuilder;
+import org.apache.webbeans.container.AnnotatedTypeWrapper;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.container.InjectableBeanManager;
import org.apache.webbeans.container.InjectionResolver;
@@ -579,10 +580,13 @@ public class BeansDeployer
{
BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
manager.setAfterBeanDiscoveryFired(true);
- manager.fireLifecycleEvent(new AfterBeanDiscoveryImpl(webBeansContext));
+ final AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(webBeansContext);
+ manager.fireLifecycleEvent(event);
webBeansContext.getWebBeansUtil().inspectErrorStack(
"There are errors that are added by AfterBeanDiscovery event observers. Look at logs for further details");
+
+ event.setStarted();
}
/**
@@ -1447,6 +1451,7 @@ public class BeansDeployer
final Set<ObserverMethod<?>> observerMethods;
final AnnotatedType<T> beanAnnotatedType = bean.getAnnotatedType();
+ final boolean ignoreProducer = AnnotatedTypeWrapper.class.isInstance(beanAnnotatedType);
if(bean.isEnabled())
{
observerMethods = new ObserverMethodsBuilder<T>(webBeansContext, beanAnnotatedType).defineObserverMethods(bean);
@@ -1457,8 +1462,10 @@ public class BeansDeployer
}
final WebBeansContext wbc = bean.getWebBeansContext();
- Set<ProducerFieldBean<?>> producerFields = new ProducerFieldBeansBuilder(wbc, beanAnnotatedType).defineProducerFields(bean);
- Set<ProducerMethodBean<?>> producerMethods = new ProducerMethodBeansBuilder(wbc, beanAnnotatedType).defineProducerMethods(bean, producerFields);
+ Set<ProducerFieldBean<?>> producerFields =
+ ignoreProducer ? Collections.emptySet() : new ProducerFieldBeansBuilder(wbc, beanAnnotatedType).defineProducerFields(bean);
+ Set<ProducerMethodBean<?>> producerMethods =
+ ignoreProducer ? Collections.emptySet() : new ProducerMethodBeansBuilder(wbc, beanAnnotatedType).defineProducerMethods(bean, producerFields);
ManagedBean<T> managedBean = (ManagedBean<T>)bean;
Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterBeanDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterBeanDiscoveryImpl.java?rev=1647202&r1=1647201&r2=1647202&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterBeanDiscoveryImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/AfterBeanDiscoveryImpl.java Sun Dec 21 20:12:49 2014
@@ -57,6 +57,7 @@ public class AfterBeanDiscoveryImpl impl
private static final Logger logger = WebBeansLoggerFacade.getLogger(AfterBeanDiscoveryImpl.class);
private final WebBeansContext webBeansContext;
private Object extension;
+ private boolean started;
public AfterBeanDiscoveryImpl(WebBeansContext webBeansContext)
{
@@ -64,12 +65,22 @@ public class AfterBeanDiscoveryImpl impl
beanManager = this.webBeansContext.getBeanManagerImpl();
}
+ public void setStarted()
+ {
+ started = true;
+ }
+
/**
* {@inheritDoc}
*/
@Override
public void addBean(Bean<?> bean)
{
+ if (started)
+ {
+ throw new IllegalStateException("Don't call AfterBeanDiscovery.addBean(bean) after the event is fired");
+ }
+
AnnotatedType<?> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(bean.getBeanClass());
//Fire Event
@@ -171,6 +182,10 @@ public class AfterBeanDiscoveryImpl impl
@Override
public void addContext(Context context)
{
+ if (started)
+ {
+ throw new IllegalStateException("Don't call AfterBeanDiscovery.addContext(...) after the event is fired");
+ }
beanManager.addContext(context);
}
@@ -181,6 +196,10 @@ public class AfterBeanDiscoveryImpl impl
@Override
public void addDefinitionError(Throwable t)
{
+ if (started)
+ {
+ throw new IllegalStateException("Don't call AfterBeanDiscovery.addBean(bean) after the event is fired");
+ }
beanManager.getErrorStack().pushError(t);
}
@@ -190,6 +209,10 @@ public class AfterBeanDiscoveryImpl impl
@Override
public void addObserverMethod(ObserverMethod<?> observerMethod)
{
+ if (started)
+ {
+ throw new IllegalStateException("Don't call AfterBeanDiscovery.addObserverMethod(...) after the event is fired");
+ }
ProcessObserverMethod<?, ?> event = new GProcessObservableMethod(null,observerMethod);
beanManager.fireEvent(event, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
beanManager.getNotificationManager().addObserver(observerMethod, observerMethod.getObservedType());
@@ -200,6 +223,10 @@ public class AfterBeanDiscoveryImpl impl
*/
public <T> AnnotatedType<T> getAnnotatedType(Class<T> type, String id)
{
+ if (started)
+ {
+ throw new IllegalStateException("Don't call AfterBeanDiscovery.getAnnotatedType(...) after the event is fired");
+ }
return (AnnotatedType<T>) beanManager.getAdditionalAnnotatedType(type, id);
}
@@ -208,6 +235,10 @@ public class AfterBeanDiscoveryImpl impl
*/
public <T> Iterable<AnnotatedType<T>> getAnnotatedTypes(Class<T> type)
{
+ if (started)
+ {
+ throw new IllegalStateException("Don't call AfterBeanDiscovery.getAnnotatedTypes(...) after the event is fired");
+ }
return beanManager.getAnnotatedTypes(type);
}