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 2016/04/14 18:55:07 UTC

svn commit: r1739140 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/BeansDeployer.java container/BeanManagerImpl.java container/InjectableBeanManager.java container/InjectionResolver.java

Author: rmannibucau
Date: Thu Apr 14 16:55:07 2016
New Revision: 1739140

URL: http://svn.apache.org/viewvc?rev=1739140&view=rev
Log:
OWB-1129 AfterBeanDiscovery flag needs to handle 3 states

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.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=1739140&r1=1739139&r2=1739140&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 Thu Apr 14 16:55:07 2016
@@ -670,13 +670,15 @@ public class BeansDeployer
     private void fireAfterBeanDiscoveryEvent()
     {
         BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
-        manager.setAfterBeanDiscoveryFired(true);
+        manager.setAfterBeanDiscoveryStart();
         final AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(webBeansContext);
         manager.fireLifecycleEvent(event);
 
+
         webBeansContext.getWebBeansUtil().inspectDefinitionErrorStack(
                 "There are errors that are added by AfterBeanDiscovery event observers. Look at logs for further details");
 
+        manager.setAfterBeanDiscoveryDone();
         event.setStarted();
     }
     

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1739140&r1=1739139&r2=1739140&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Thu Apr 14 16:55:07 2016
@@ -194,10 +194,10 @@ public class BeanManagerImpl implements
     private boolean inUse = false;
 
     /**
-     * This flag will get set to {@code true} after the
-     * {@link javax.enterprise.inject.spi.AfterBeanDiscovery} gets fired
+     * This flag will get set to handle lifecyle around
+     * {@link javax.enterprise.inject.spi.AfterBeanDiscovery}
      */
-    private boolean afterBeanDiscoveryFired = false;
+    private LifecycleState beanDiscoveryState = LifecycleState.BEFORE_DISCOVERY;
 
     /**
      * This flag will get set to {@code true} after the
@@ -1214,7 +1214,7 @@ public class BeanManagerImpl implements
                         webBeansContext,
                         interceptorUtil.getLifecycleMethods(type, PostConstruct.class),
                         interceptorUtil.getLifecycleMethods(type, PreDestroy.class));
-        if (afterBeanDiscoveryFired)
+        if (isAfterBeanDiscoveryDone())
         {
             try
             {
@@ -1435,23 +1435,38 @@ public class BeanManagerImpl implements
         return inUse;
     }
 
-    public boolean isAfterBeanDiscoveryFired()
+    public boolean isAfterDeploymentValidationFired()
     {
-        return afterBeanDiscoveryFired;
+        return afterDeploymentValidationFired;
     }
 
-    public void setAfterBeanDiscoveryFired(boolean afterBeanDiscoveryFired)
+    public void setAfterDeploymentValidationFired(boolean afterDeploymentValidationFired)
     {
-        this.afterBeanDiscoveryFired = afterBeanDiscoveryFired;
+        this.afterDeploymentValidationFired = afterDeploymentValidationFired;
     }
 
-    public boolean isAfterDeploymentValidationFired()
+    public void setAfterBeanDiscoveryStart()
     {
-        return afterDeploymentValidationFired;
+        this.beanDiscoveryState = LifecycleState.DISCOVERY;
     }
 
-    public void setAfterDeploymentValidationFired(boolean afterDeploymentValidationFired)
+    public void setAfterBeanDiscoveryDone()
     {
-        this.afterDeploymentValidationFired = afterDeploymentValidationFired;
+        this.beanDiscoveryState = LifecycleState.AFTER_DISCOVERY;
+    }
+
+    public boolean isAfterBeanDiscoveryDone()
+    {
+        return beanDiscoveryState == LifecycleState.AFTER_DISCOVERY;
+    }
+
+    public boolean isAfterBeanDiscovery()
+    {
+        return beanDiscoveryState == LifecycleState.DISCOVERY;
+    }
+
+    private enum LifecycleState
+    {
+        BEFORE_DISCOVERY, DISCOVERY, AFTER_DISCOVERY
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java?rev=1739140&r1=1739139&r2=1739140&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java Thu Apr 14 16:55:07 2016
@@ -397,7 +397,7 @@ public class InjectableBeanManager imple
      */
     private void checkAfterBeanDiscoveryProcessed(String message)
     {
-        if (!bm.isAfterBeanDiscoveryFired())
+        if (!bm.isAfterBeanDiscoveryDone() && !bm.isAfterBeanDiscovery())
         {
             throw new IllegalStateException(message);
         }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java?rev=1739140&r1=1739139&r2=1739140&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java Thu Apr 14 16:55:07 2016
@@ -189,7 +189,7 @@ public class InjectionResolver
             throw new WebBeansConfigurationException("Injection point type : " + injectionPoint + " type can not be defined as Typevariable or Wildcard type!");
         }
 
-        if (webBeansContext.getBeanManagerImpl().isAfterBeanDiscoveryFired())
+        if (webBeansContext.getBeanManagerImpl().isAfterBeanDiscoveryDone())
         {
             Annotation[] qualifiers = new Annotation[injectionPoint.getQualifiers().size()];
             qualifiers = injectionPoint.getQualifiers().toArray(qualifiers);