[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