Author: rmannibucau
Date: Mon May 20 14:06:03 2013
New Revision: 1484483

URL: http://svn.apache.org/r1484483
Log:
more complete web object handling in WebContext

Modified:
    
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/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=1484483&r1=1484482&r2=1484483&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
 Mon May 20 14:06:03 2013
@@ -27,12 +27,18 @@ import org.apache.webbeans.config.WebBea
 
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedType;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import javax.servlet.Filter;
 import javax.servlet.Servlet;
+import javax.servlet.ServletContextAttributeListener;
 import javax.servlet.ServletContextListener;
+import javax.servlet.ServletRequestAttributeListener;
+import javax.servlet.ServletRequestListener;
+import javax.servlet.http.HttpSessionAttributeListener;
+import javax.servlet.http.HttpSessionListener;
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -156,10 +162,11 @@ public class WebContext {
             synchronized (this) {
                 beanDefinition = constructorInjectionBeanCache.get(beanClass);
                 if (beanDefinition == null) {
-                    if (Servlet.class.isAssignableFrom(beanClass) || 
Filter.class.isAssignableFrom(beanClass) || 
ServletContextListener.class.isAssignableFrom(beanClass)) {
-                        beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass), 
false);
+                    final AnnotatedType annotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass);
+                    if (isWeb(beanClass)) {
+                        beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, annotatedType, 
false);
                     } else {
-                        beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass));
+                        beanDefinition = new 
ConstructorInjectionBean<Object>(webBeansContext, beanClass, annotatedType);
                     }
 
                     constructorInjectionBeanCache.put(beanClass, 
beanDefinition);
@@ -169,6 +176,17 @@ public class WebContext {
         return beanDefinition;
     }
 
+    private static boolean isWeb(final Class<?> beanClass) {
+        return Servlet.class.isAssignableFrom(beanClass)
+                || Filter.class.isAssignableFrom(beanClass)
+                || 
HttpSessionAttributeListener.class.isAssignableFrom(beanClass)
+                || ServletContextListener.class.isAssignableFrom(beanClass)
+                || 
HttpSessionAttributeListener.class.isAssignableFrom(beanClass)
+                || ServletRequestListener.class.isAssignableFrom(beanClass)
+                || 
ServletContextAttributeListener.class.isAssignableFrom(beanClass)
+                || 
ServletRequestAttributeListener.class.isAssignableFrom(beanClass);
+    }
+
     private WebBeansContext getWebBeansContext() {
         if (webbeansContext == null) {
             return getAppContext().getWebBeansContext();


Reply via email to