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 2014/09/06 00:20:41 UTC

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

Author: struberg
Date: Fri Sep  5 22:20:41 2014
New Revision: 1622812

URL: http://svn.apache.org/r1622812
Log:
OWB-995 some BeanManager methods must trigger an Exception if called before AfterBeanDiscovery, etc

txs to Reinhard sandtner for the patch! applied.


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

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=1622812&r1=1622811&r2=1622812&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 Fri Sep  5 22:20:41 2014
@@ -471,6 +471,7 @@ public class BeansDeployer
     private void fireAfterBeanDiscoveryEvent()
     {
         BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
+        manager.setAfterBeanDiscoveryFired(true);
         manager.fireLifecycleEvent(new AfterBeanDiscoveryImpl(webBeansContext));
 
         webBeansContext.getWebBeansUtil().inspectErrorStack(
@@ -501,6 +502,7 @@ public class BeansDeployer
     private void fireAfterDeploymentValidationEvent()
     {
         BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
+        manager.setAfterDeploymentValidationFired(true);
         manager.fireLifecycleEvent(new AfterDeploymentValidationImpl(manager));
 
         webBeansContext.getWebBeansUtil().inspectErrorStack(

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=1622812&r1=1622811&r2=1622812&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 Fri Sep  5 22:20:41 2014
@@ -188,6 +188,17 @@ 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
+     */
+    private boolean afterBeanDiscoveryFired = false;
+
+    /**
+     * This flag will get set to {@code true} after the
+     * {@link javax.enterprise.inject.spi.AfterDeploymentValidation} gets fired
+     */
+    private boolean afterDeploymentValidationFired = false;
 
     /**
      * we cache results of calls to {@link #isNormalScope(Class)} because
@@ -1289,4 +1300,24 @@ public class BeanManagerImpl implements 
     {
         return inUse;
     }
+
+    public boolean isAfterBeanDiscoveryFired()
+    {
+        return afterBeanDiscoveryFired;
+    }
+
+    public void setAfterBeanDiscoveryFired(boolean afterBeanDiscoveryFired)
+    {
+        this.afterBeanDiscoveryFired = afterBeanDiscoveryFired;
+    }
+
+    public boolean isAfterDeploymentValidationFired()
+    {
+        return afterDeploymentValidationFired;
+    }
+
+    public void setAfterDeploymentValidationFired(boolean afterDeploymentValidationFired)
+    {
+        this.afterDeploymentValidationFired = afterDeploymentValidationFired;
+    }
 }

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=1622812&r1=1622811&r2=1622812&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 Fri Sep  5 22:20:41 2014
@@ -110,12 +110,16 @@ public class InjectableBeanManager imple
     @Override
     public Set<Bean<?>> getBeans(String name)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call getBeans(String) before AfterBeanDiscovery");
+
         return bm.getBeans(name);
     }
 
     @Override
     public Set<Bean<?>> getBeans(Type beanType, Annotation... qualifiers)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call getBeans(Type, Annotation...) before AfterBeanDiscovery");
+
         return bm.getBeans(beanType, qualifiers);
     }
 
@@ -134,6 +138,8 @@ public class InjectableBeanManager imple
     @Override
     public Object getInjectableReference(InjectionPoint injectionPoint, CreationalContext<?> ctx)
     {
+        checkAfterDeploymentValidationFired("It's not allowed to call getInjectableReference(InjectionPoin, CreationalContext) before AfterDeploymentValidation");
+
         return bm.getInjectableReference(injectionPoint, ctx);
     }
 
@@ -146,12 +152,16 @@ public class InjectableBeanManager imple
     @Override
     public Bean<?> getPassivationCapableBean(String id)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call getPassivationCapableBean(String) before AfterBeanDiscovery");
+
         return bm.getPassivationCapableBean(id);
     }
 
     @Override
     public Object getReference(Bean<?> bean, Type beanType, CreationalContext<?> ctx)
     {
+        checkAfterDeploymentValidationFired("It's not allowed to call getReference(Bean, Type, CreationalContext) before AfterDeploymentValidation");
+
         return bm.getReference(bean, beanType, ctx);
     }
 
@@ -200,30 +210,40 @@ public class InjectableBeanManager imple
     @Override
     public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call resolve(Set<Bean>) before AfterBeanDiscovery");
+
         return bm.resolve(beans);
     }
 
     @Override
     public List<Decorator<?>> resolveDecorators(Set<Type> types, Annotation... qualifiers)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call resolveDecorators(Set<Type>, Annotation...) before AfterBeanDiscovery");
+
         return bm.resolveDecorators(types, qualifiers);
     }
 
     @Override
     public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Annotation... interceptorBindings)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call resolveInterceptors(InterceptionType, Annotation...) before AfterBeanDiscovery");
+
         return bm.resolveInterceptors(type, interceptorBindings);
     }
 
     @Override
     public <T> Set<ObserverMethod<? super T>> resolveObserverMethods(T event, Annotation... qualifiers)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call resolveObserverMethods(Object, Annotation...) before AfterBeanDiscovery");
+
         return bm.resolveObserverMethods(event, qualifiers);
     }
 
     @Override
     public void validate(InjectionPoint injectionPoint)
     {
+        checkAfterBeanDiscoveryProcessed("It's not allowed to call validate(InjectionPoint) before AfterBeanDiscovery");
+
         bm.validate(injectionPoint);
     }
 
@@ -370,7 +390,29 @@ public class InjectableBeanManager imple
         
         return true;
     }
-    
-    
+
+
+    /**
+     * @throws IllegalStateException if {@link javax.enterprise.inject.spi.AfterBeanDiscovery}
+     */
+    private void checkAfterBeanDiscoveryProcessed(String message)
+    {
+        if (!bm.isAfterBeanDiscoveryFired())
+        {
+            throw new IllegalStateException(message);
+        }
+    }
+
+    /**
+     * @throws IllegalStateException if {@link javax.enterprise.inject.spi.AfterDeploymentValidation}
+     */
+    private void checkAfterDeploymentValidationFired(String message)
+    {
+        if (!bm.isAfterDeploymentValidationFired())
+        {
+            throw new IllegalStateException(message);
+        }
+    }
+
 
 }