You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2011/04/18 13:47:35 UTC
svn commit: r1094503 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
config/BeansDeployer.java util/WebBeansUtil.java
Author: struberg
Date: Mon Apr 18 11:47:35 2011
New Revision: 1094503
URL: http://svn.apache.org/viewvc?rev=1094503&view=rev
Log:
OWB-566 postpone sending ProcessInjectionTargetEvent for ManagedBeans
this event must only be fired after all the ManagedBean creation
has been performed.
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.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=1094503&r1=1094502&r2=1094503&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 Mon Apr 18 11:47:35 2011
@@ -67,6 +67,7 @@ import org.apache.webbeans.portable.even
import org.apache.webbeans.portable.events.discovery.AfterBeanDiscoveryImpl;
import org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl;
import org.apache.webbeans.portable.events.discovery.BeforeBeanDiscoveryImpl;
+import org.apache.webbeans.portable.events.generics.GProcessInjectionTarget;
import org.apache.webbeans.spi.JNDIService;
import org.apache.webbeans.spi.ScannerService;
import org.apache.webbeans.spi.plugins.OpenWebBeansJavaEEPlugin;
@@ -791,7 +792,7 @@ public class BeansDeployer
//Temporary managed bean instance creationa
ManagedBean<T> managedBean = new ManagedBean<T>(clazz,WebBeansType.MANAGED, webBeansContext);
ManagedBeanCreatorImpl<T> managedBeanCreator = new ManagedBeanCreatorImpl<T>(managedBean);
-
+
boolean annotationTypeSet = false;
if(processAnnotatedEvent.isSet())
{
@@ -799,15 +800,16 @@ public class BeansDeployer
managedBean.setAnnotatedType(annotatedType);
managedBeanCreator.setAnnotatedType(annotatedType);
managedBeanCreator.setMetaDataProvider(MetaDataProvider.THIRDPARTY);
- }
-
- //If ProcessInjectionTargetEvent is not set, set it
+ }
+
+ GProcessInjectionTarget processInjectionTarget = null;
if(processInjectionTargetEvent == null)
{
- processInjectionTargetEvent =
- webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEvent(managedBean);
- }
-
+ processInjectionTarget = webBeansContext.getWebBeansUtil().createProcessInjectionTargetEvent(managedBean);
+ processInjectionTargetEvent = processInjectionTarget;
+ }
+
+
//Decorator
if(WebBeansUtil.isAnnotatedTypeDecorator(annotatedType))
{
@@ -857,7 +859,12 @@ public class BeansDeployer
webBeansContext.getWebBeansUtil().defineManagedBean(managedBeanCreator,
processInjectionTargetEvent, true);
}
-
+
+ if(processInjectionTarget != null)
+ {
+ webBeansContext.getWebBeansUtil().fireProcessInjectionTargetEvent(processInjectionTarget);
+ }
+
return true;
}
else
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1094503&r1=1094502&r2=1094503&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Mon Apr 18 11:47:35 2011
@@ -2163,18 +2163,29 @@ public final class WebBeansUtil
*/
public <T> GProcessInjectionTarget fireProcessInjectionTargetEvent(AbstractInjectionTargetBean<T> bean)
{
- AnnotatedType<T> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(bean.getReturnType());
- InjectionTargetProducer<T> injectionTarget = new InjectionTargetProducer<T>(bean);
- GProcessInjectionTarget processInjectionTargetEvent = new GProcessInjectionTarget(injectionTarget,
- annotatedType);
+ GProcessInjectionTarget processInjectionTargetEvent = createProcessInjectionTargetEvent(bean);
+ return fireProcessInjectionTargetEvent(processInjectionTargetEvent);
+
+ }
+
+ public GProcessInjectionTarget fireProcessInjectionTargetEvent(GProcessInjectionTarget processInjectionTargetEvent)
+ {
//Fires ProcessInjectionTarget
webBeansContext.getBeanManagerImpl().fireEvent(processInjectionTargetEvent, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
return processInjectionTargetEvent;
+ }
+ public <T> GProcessInjectionTarget createProcessInjectionTargetEvent(AbstractInjectionTargetBean<T> bean)
+ {
+ AnnotatedType<T> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(bean.getReturnType());
+ InjectionTargetProducer<T> injectionTarget = new InjectionTargetProducer<T>(bean);
+ return new GProcessInjectionTarget(injectionTarget,
+ annotatedType);
}
+
/**
* Returns <code>ProcessInjectionTarget</code> event.
* @param <T> bean type
@@ -2187,9 +2198,7 @@ public final class WebBeansUtil
GProcessInjectionTarget processInjectionTargetEvent = new GProcessInjectionTarget(injectionTarget,annotatedType);
//Fires ProcessInjectionTarget
- webBeansContext.getBeanManagerImpl().fireEvent(processInjectionTargetEvent, AnnotationUtil.EMPTY_ANNOTATION_ARRAY);
-
- return processInjectionTargetEvent;
+ return fireProcessInjectionTargetEvent(processInjectionTargetEvent);
}