Author: rmannibucau
Date: Sun May 19 21:52:20 2013
New Revision: 1484354

URL: http://svn.apache.org/r1484354
Log:
servlet and web objects shouldnt be passivation capable if we want to inject 
depenent beans which is correct

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java?rev=1484354&r1=1484353&r2=1484354&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ConstructorInjectionBean.java
 Sun May 19 21:52:20 2013
@@ -46,13 +46,29 @@ public class ConstructorInjectionBean<T>
         INJECTION_TARGET_FIELD.setAccessible(true);
     }
 
+    private final boolean passivationCapable;
+
     public ConstructorInjectionBean(WebBeansContext webBeansContext, Class<T> 
returnType, AnnotatedType<T>  at) {
+        this(webBeansContext, returnType, at, null);
+    }
+
+    public ConstructorInjectionBean(WebBeansContext webBeansContext, Class<T> 
returnType, AnnotatedType<T>  at, Boolean passivationCapable) {
         super(webBeansContext, WebBeansType.DEPENDENT, at, 
BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(at).build(), 
returnType);
         try {
             INJECTION_TARGET_FIELD.set(this, new 
ConstructorInjectionTarget<T>(getAnnotatedType(), getInjectionPoints(), 
getWebBeansContext()));
         } catch (final Exception e) {
             throw new OpenEJBRuntimeException(e);
         }
+        if (passivationCapable != null) {
+            this.passivationCapable = passivationCapable;
+        } else {
+            this.passivationCapable = isPassivationCapable();
+        }
+    }
+
+    @Override
+    public boolean isPassivationCapable() {
+        return passivationCapable;
     }
 
     private static final class ConstructorInjectionTarget<T> extends 
InjectionTargetImpl<T> {

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java?rev=1484354&r1=1484353&r2=1484354&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
 Sun May 19 21:52:20 2013
@@ -22,6 +22,7 @@ import org.apache.openejb.InjectionProce
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.cdi.ConstructorInjectionBean;
 import org.apache.webbeans.component.InjectionTargetBean;
+import org.apache.webbeans.component.WebBeansType;
 import org.apache.webbeans.config.WebBeansContext;
 
 import javax.enterprise.context.Dependent;
@@ -29,6 +30,9 @@ import javax.enterprise.context.spi.Crea
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
+import javax.servlet.Filter;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContextListener;
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -152,7 +156,12 @@ public class WebContext {
             synchronized (this) {
                 beanDefinition = constructorInjectionBeanCache.get(beanClass);
                 if (beanDefinition == null) {
-                    beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass));
+                    if (Servlet.class.isAssignableFrom(beanClass) || 
Filter.class.isAssignableFrom(beanClass) || 
ServletContextListener.class.isAssignableFrom(beanClass)) {
+                        beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass), 
false);
+                    } else {
+                        beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass));
+                    }
+
                     constructorInjectionBeanCache.put(beanClass, 
beanDefinition);
                 }
             }


Reply via email to