[weld-commits] Weld SVN: r5229 - in core/trunk: impl/src/main/java/org/jboss/weld/bean and 5 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Tue Dec 8 12:53:21 EST 2009


Author: pete.muir at jboss.org
Date: 2009-12-08 12:53:20 -0500 (Tue, 08 Dec 2009)
New Revision: 5229

Added:
   core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/
   core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/EnterpriseBeanLifecycleTest.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBean.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBeanLocal.java
   core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/SimpleBean.java
Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/Validator.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java
   core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
Log:
WELD-290

Modified: core/trunk/impl/src/main/java/org/jboss/weld/Validator.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/Validator.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/Validator.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -272,7 +272,7 @@
    
    public void validateInjectionPointPassivationCapable(InjectionPoint ij, Bean<?> resolvedBean, BeanManagerImpl beanManager)
    {
-      if (!ij.isTransient() && !Beans.isPassivationCapableBean(resolvedBean))
+      if (!ij.isTransient() && !Beans.isPassivationCapableDependency(resolvedBean))
       {
          if (resolvedBean.getScope().equals(Dependent.class) && resolvedBean instanceof AbstractProducerBean<?, ?,?>)
          {

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -53,6 +53,7 @@
 import javax.inject.Scope;
 
 import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
 import org.jboss.weld.DefinitionException;
 import org.jboss.weld.IllegalProductException;
 import org.jboss.weld.WeldException;
@@ -77,7 +78,8 @@
    private static final LocLogger log = loggerFactory().getLogger(BEAN);
    
    private Producer<T> producer;
-   private boolean passivationCapable;
+   private boolean passivationCapableBean;
+   private boolean passivationCapableDependency;
 
    /**
     * Constructor
@@ -170,12 +172,24 @@
    {
       if (getAnnotatedItem().isFinal() && !Serializable.class.isAssignableFrom(getAnnotatedItem().getJavaClass()))
       {
-         this.passivationCapable = false;
+         this.passivationCapableBean = false;
       }
       else
       {
-         this.passivationCapable = true;
+         this.passivationCapableBean = true;
       }
+      if (Container.instance().deploymentServices().get(MetaAnnotationStore.class).getScopeModel(getScope()).isNormal())
+      {
+         this.passivationCapableDependency = true;
+      }
+      else if (getScope().equals(Dependent.class) && passivationCapableBean)
+      {
+         this.passivationCapableDependency = true;
+      }
+      else
+      {
+         this.passivationCapableDependency = false;
+      }
    }
    
    @Override
@@ -185,12 +199,18 @@
    }
 
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
-      return passivationCapable;
+      return passivationCapableBean;
    }
    
    @Override
+   public boolean isPassivationCapableDependency()
+   {
+      return passivationCapableDependency;
+   }
+   
+   @Override
    public Set<InjectionPoint> getInjectionPoints()
    {
       return getProducer().getInjectionPoints();

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -148,11 +148,18 @@
    }
 
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
       // Not relevant
       return false;
    }
+   
+   @Override
+   public boolean isPassivationCapableDependency()
+   {
+      // Not relevant
+      return false;
+   }
 
    @Override
    public boolean isProxyable()

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -34,6 +34,7 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.Disposes;
@@ -48,6 +49,7 @@
 import org.jboss.interceptor.registry.InterceptorRegistry;
 import org.jboss.interceptor.util.InterceptionUtils;
 import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
 import org.jboss.weld.DefinitionException;
 import org.jboss.weld.DeploymentException;
 import org.jboss.weld.ForbiddenStateException;
@@ -93,7 +95,8 @@
 
    private ManagedBean<?> specializedBean;
    
-   private boolean passivationCapable;
+   private boolean passivationCapableBean;
+   private boolean passivationCapableDependency;
 
    /**
     * Creates a simple, annotation defined Web Bean
@@ -277,35 +280,35 @@
    public void initializeAfterBeanDiscovery()
    {
       super.initializeAfterBeanDiscovery();
-      if (this.passivationCapable && this.hasDecorators())
+      if (this.passivationCapableBean && this.hasDecorators())
       {
          for (Decorator<?> decorator : this.getDecorators())
          {
             if (!(PassivationCapable.class.isAssignableFrom(decorator.getClass())) || !Reflections.isSerializable(decorator.getBeanClass()))
             {
-               this.passivationCapable = false;
+               this.passivationCapableBean = false;
                break;
             }
          }
       }
-      if (this.passivationCapable && hasCdiBoundInterceptors())
+      if (this.passivationCapableBean && hasCdiBoundInterceptors())
       {
          for (SerializableContextual<Interceptor<?>, ?> interceptor : getManager().getCdiInterceptorsRegistry().getInterceptionModel(getType()).getAllInterceptors())
          {
             if (!(PassivationCapable.class.isAssignableFrom(interceptor.get().getClass())) || !Reflections.isSerializable(interceptor.get().getBeanClass()))
             {
-               this.passivationCapable = false;
+               this.passivationCapableBean = false;
                break;
             }
          }
       }
-      if (this.passivationCapable && hasDirectlyDefinedInterceptors())
+      if (this.passivationCapableBean && hasDirectlyDefinedInterceptors())
       {
          for (Class<?> interceptorClass : getManager().getClassDeclaredInterceptorsRegistry().getInterceptionModel(getType()).getAllInterceptors())
          {
             if (!Reflections.isSerializable(interceptorClass))
             {
-               this.passivationCapable = false;
+               this.passivationCapableBean = false;
                break;
             }
          }
@@ -314,14 +317,32 @@
 
    private void initPassivationCapable()
    {
-      this.passivationCapable = Reflections.isSerializable(getAnnotatedItem().getJavaClass());
+      this.passivationCapableBean = Reflections.isSerializable(getAnnotatedItem().getJavaClass());
+      if (Container.instance().deploymentServices().get(MetaAnnotationStore.class).getScopeModel(getScope()).isNormal())
+      {
+         this.passivationCapableDependency = true;
+      }
+      else if (getScope().equals(Dependent.class) && passivationCapableBean)
+      {
+         this.passivationCapableDependency = true;
+      }
+      else
+      {
+         this.passivationCapableDependency = false;
+      }
    }
    
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
-      return passivationCapable;
+      return passivationCapableBean;
    }
+   
+   @Override
+   public boolean isPassivationCapableDependency()
+   {
+      return passivationCapableDependency;
+   }
 
    private void initEEInjectionPoints()
    {
@@ -349,7 +370,7 @@
          throw new DefinitionException(BEAN_MUST_BE_DEPENDENT, type);
       }
       boolean passivating = manager.getServices().get(MetaAnnotationStore.class).getScopeModel(scopeType).isPassivating();
-      if (passivating && !isPassivationCapable())
+      if (passivating && !isPassivationCapableBean())
       {
          throw new DefinitionException(PASSIVATING_BEAN_NEEDS_SERIALIZABLE_IMPL, this);
       }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -25,7 +25,6 @@
 
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
-import org.jboss.weld.bootstrap.api.Environment;
 import org.jboss.weld.injection.WeldInjectionPoint;
 
 /**
@@ -91,7 +90,9 @@
 
    public abstract boolean isProxyable();
    
-   public abstract boolean isPassivationCapable();
+   public abstract boolean isPassivationCapableBean();
+   
+   public abstract boolean isPassivationCapableDependency();
 
    public boolean isProxyRequired()
    {

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -357,10 +357,16 @@
    }
    
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
       return getEjbDescriptor().isStateful();
    }
+   
+   @Override
+   public boolean isPassivationCapableDependency()
+   {
+      return true;
+   }
 
    public InternalEjbDescriptor<T> getEjbDescriptor()
    {

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -112,12 +112,18 @@
    }
    
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
       return true;
    }
    
    @Override
+   public boolean isPassivationCapableDependency()
+   {
+      return true;
+   }
+   
+   @Override
    public String getDescription()
    {
       return "Built-in bean " + getClass().getSimpleName();

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -68,7 +68,7 @@
    }
    
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
       return passivationCapable;
    }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -176,7 +176,7 @@
    }
    
    @Override
-   public boolean isPassivationCapable()
+   public boolean isPassivationCapableBean()
    {
       return true;
    }

Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java	2009-12-08 16:01:25 UTC (rev 5228)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -52,6 +52,7 @@
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.decorator.Decorator;
+import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.event.Observes;
@@ -143,13 +144,43 @@
    {
       if (bean instanceof RIBean<?>)
       {
-         return ((RIBean<?>) bean).isPassivationCapable();
+         return ((RIBean<?>) bean).isPassivationCapableBean();
       }
       else
       {
          return Reflections.isSerializable(bean.getBeanClass());
       }
    }
+   
+   /**
+    * Tests if a bean is capable of having its state temporarily stored to
+    * secondary storage
+    * 
+    * @param bean The bean to inspect
+    * @return True if the bean is passivation capable
+    */
+   public static boolean isPassivationCapableDependency(Bean<?> bean)
+   {
+      if (bean instanceof RIBean<?>)
+      {
+         return ((RIBean<?>) bean).isPassivationCapableDependency();
+      }
+      else
+      {
+         if (Container.instance().deploymentServices().get(MetaAnnotationStore.class).getScopeModel(bean.getScope()).isNormal())
+         {
+            return true;
+         }
+         else if (bean.getScope().equals(Dependent.class) && isPassivationCapableBean(bean))
+         {
+            return true;
+         }
+         else
+         {
+            return false;
+         }
+      }
+   }
 
    /**
     * Indicates if a bean is proxyable

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/EnterpriseBeanLifecycleTest.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/EnterpriseBeanLifecycleTest.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/EnterpriseBeanLifecycleTest.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -0,0 +1,24 @@
+package org.jboss.weld.tests.enterprise.proxyability;
+
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.IntegrationTest;
+import org.jboss.testharness.impl.packaging.Packaging;
+import org.jboss.testharness.impl.packaging.PackagingType;
+import org.jboss.weld.test.AbstractWeldTest;
+import org.testng.annotations.Test;
+
+ at Artifact
+ at Packaging(PackagingType.EAR)
+ at IntegrationTest
+public class EnterpriseBeanLifecycleTest extends AbstractWeldTest
+{
+
+   @Test(description="WELD-290")
+   public void testSLSBInjectedIntoPassivatingManagedBean()
+   {
+      SimpleBean bean = getCurrentManager().getInstanceByType(SimpleBean.class);
+      assert bean.getMessage().equals("This is my message from my stateless bean");
+      
+   }
+ 
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/EnterpriseBeanLifecycleTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBean.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBean.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -0,0 +1,18 @@
+package org.jboss.weld.tests.enterprise.proxyability;
+
+import java.io.Serializable;
+
+import javax.ejb.Stateless;
+
+/**
+ * Session Bean implementation class MyStatelessBean
+ */
+ at Stateless
+public class MyStatelessBean implements MyStatelessBeanLocal, Serializable
+{
+
+   public String getText()
+   {
+      return "This is my message from my stateless bean";
+   }
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBean.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBeanLocal.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBeanLocal.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBeanLocal.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -0,0 +1,10 @@
+package org.jboss.weld.tests.enterprise.proxyability;
+
+import javax.ejb.Local;
+
+ at Local
+public interface MyStatelessBeanLocal
+{
+
+   String getText();
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/MyStatelessBeanLocal.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/SimpleBean.java
===================================================================
--- core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/SimpleBean.java	                        (rev 0)
+++ core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/SimpleBean.java	2009-12-08 17:53:20 UTC (rev 5229)
@@ -0,0 +1,20 @@
+package org.jboss.weld.tests.enterprise.proxyability;
+
+import java.io.Serializable;
+
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Inject;
+
+ at SessionScoped
+public class SimpleBean implements Serializable
+{
+
+   @Inject
+   private MyStatelessBeanLocal myStatelessBean;
+
+   public String getMessage()
+   {
+      return myStatelessBean.getText();
+   }
+
+}


Property changes on: core/trunk/tests/src/test/java/org/jboss/weld/tests/enterprise/proxyability/SimpleBean.java
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the weld-commits mailing list