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 20:53:26 UTC
svn commit: r1647199 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
config/BeansDeployer.java portable/events/generics/GProcessAnnotatedType.java
Author: rmannibucau
Date: Sun Dec 21 19:53:26 2014
New Revision: 1647199
URL: http://svn.apache.org/r1647199
Log:
ProcessAnnotatedType shouldn't be usable after it was fired
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/generics/GProcessAnnotatedType.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=1647199&r1=1647198&r2=1647199&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 19:53:26 2014
@@ -62,13 +62,13 @@ import org.apache.webbeans.logger.WebBea
import org.apache.webbeans.portable.AbstractProducer;
import org.apache.webbeans.portable.AnnotatedElementFactory;
import org.apache.webbeans.portable.BaseProducerProducer;
-import org.apache.webbeans.portable.events.ProcessAnnotatedTypeImpl;
import org.apache.webbeans.portable.events.ProcessBeanImpl;
import org.apache.webbeans.portable.events.ProcessSyntheticAnnotatedTypeImpl;
import org.apache.webbeans.portable.events.discovery.AfterBeanDiscoveryImpl;
import org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl;
import org.apache.webbeans.portable.events.discovery.AfterTypeDiscoveryImpl;
import org.apache.webbeans.portable.events.discovery.BeforeBeanDiscoveryImpl;
+import org.apache.webbeans.portable.events.generics.GProcessAnnotatedType;
import org.apache.webbeans.portable.events.generics.GProcessManagedBean;
import org.apache.webbeans.spi.BeanArchiveService;
import org.apache.webbeans.spi.JNDIService;
@@ -865,11 +865,12 @@ public class BeansDeployer
// Fires ProcessAnnotatedType
if (!annotatedType.getJavaClass().isAnnotation())
{
- ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
+ GProcessAnnotatedType processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
if (!processAnnotatedEvent.isVeto())
{
annotatedTypes.add(processAnnotatedEvent.getAnnotatedType());
}
+ processAnnotatedEvent.setAfter();
}
else
{
@@ -1195,7 +1196,7 @@ public class BeansDeployer
annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(clazz);
}
- ProcessAnnotatedTypeImpl<?> processAnnotatedEvent =
+ GProcessAnnotatedType processAnnotatedEvent =
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
// if veto() is called
@@ -1205,6 +1206,7 @@ public class BeansDeployer
}
annotatedType = processAnnotatedEvent.getAnnotatedType();
+ processAnnotatedEvent.setAfter();
Set<Annotation> annTypeAnnotations = annotatedType.getAnnotations();
if (annTypeAnnotations != null)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java?rev=1647199&r1=1647198&r2=1647199&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java Sun Dec 21 19:53:26 2014
@@ -25,11 +25,48 @@ import org.apache.webbeans.portable.even
@SuppressWarnings("unchecked")
public class GProcessAnnotatedType extends ProcessAnnotatedTypeImpl implements GenericBeanEvent
{
+ private boolean after = false;
+
public GProcessAnnotatedType(AnnotatedType annotatedType )
{
super(annotatedType);
}
+ public void setAfter()
+ {
+ this.after = true;
+ }
+
+ @Override
+ public AnnotatedType getAnnotatedType()
+ {
+ if (after)
+ {
+ throw new IllegalStateException("Can't call ProcessAnnotatedType.getAnnotatedType() after the event");
+ }
+ return super.getAnnotatedType();
+ }
+
+ @Override
+ public void setAnnotatedType(AnnotatedType type)
+ {
+ if (after)
+ {
+ throw new IllegalStateException("Can't call ProcessAnnotatedType.setAnnotatedType(at) after the event");
+ }
+ super.setAnnotatedType(type);
+ }
+
+ @Override
+ public void veto()
+ {
+ if (after)
+ {
+ throw new IllegalStateException("Can't call ProcessAnnotatedType.veto() after the event");
+ }
+ super.veto();
+ }
+
@Override
public Class<?> getBeanClassFor(Class<?> eventClass)
{