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();