Author: rmannibucau
Date: Fri Jan  4 12:54:33 2013
New Revision: 1428825

URL: http://svn.apache.org/viewvc?rev=1428825&view=rev
Log:
TOMEE-701 ejb in webapp are not in cdi context

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonService.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1428825&r1=1428824&r2=1428825&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
 Fri Jan  4 12:54:33 2013
@@ -1589,6 +1589,10 @@ public class BeanContext extends Deploym
         return proxyClass;
     }
 
+    public boolean isCdiCompatible(){
+        return componentType.isCdiCompatible() && 
!Comp.class.equals(beanClass);
+    }
+
     public class ViewContext {
 
         private final Map<Method, MethodContext> methodContextMap = new 
HashMap<Method, MethodContext>();

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java?rev=1428825&r1=1428824&r2=1428825&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
 Fri Jan  4 12:54:33 2013
@@ -214,60 +214,56 @@ public class OpenEJBLifecycle implements
                 //Discover classpath classes
                 deployManagedBeans(scannerService.getBeanClasses(), 
stuff.getBeanContexts());
 
-                boolean deployEjb = stuff.getWebContext() == null;
+                for (BeanContext beanContext : stuff.getBeanContexts()) {
+                    if (!beanContext.isCdiCompatible()) continue;
 
-                if (deployEjb) {
-                    for (BeanContext beanContext : stuff.getBeanContexts()) {
-                        if (!beanContext.getComponentType().isCdiCompatible()) 
continue;
+                    final Class implClass = beanContext.getManagedClass();
 
-                        final Class implClass = beanContext.getManagedClass();
+                    //Define annotation type
+                    final AnnotatedType<Object> annotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
 
-                        //Define annotation type
-                        final AnnotatedType<Object> annotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
+                    //Fires ProcessAnnotatedType
+                    final ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = 
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
 
-                        //Fires ProcessAnnotatedType
-                        final ProcessAnnotatedTypeImpl<?> 
processAnnotatedEvent = 
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
-
-                        // TODO Can you really veto an EJB?
-                        //if veto() is called
-                        if (processAnnotatedEvent.isVeto()) {
-                            continue;
-                        }
+                    // TODO Can you really veto an EJB?
+                    //if veto() is called
+                    if (processAnnotatedEvent.isVeto()) {
+                        continue;
+                    }
 
-                        final CdiEjbBean<Object> bean = new 
CdiEjbBean<Object>(beanContext, webBeansContext);
-                        bean.setAnnotatedType((AnnotatedType<Object>) 
processAnnotatedEvent.getAnnotatedType()); // update AnnotatedType -- can be 
updated in extensions
+                    final CdiEjbBean<Object> bean = new 
CdiEjbBean<Object>(beanContext, webBeansContext);
+                    bean.setAnnotatedType((AnnotatedType<Object>) 
processAnnotatedEvent.getAnnotatedType()); // update AnnotatedType -- can be 
updated in extensions
 
-                        beanContext.set(CdiEjbBean.class, bean);
-                        beanContext.set(CurrentCreationalContext.class, new 
CurrentCreationalContext());
-                        beanContext.addSystemInterceptor(new 
CdiInterceptor(bean, beanManager, cdiPlugin.getContexsServices()));
+                    beanContext.set(CdiEjbBean.class, bean);
+                    beanContext.set(CurrentCreationalContext.class, new 
CurrentCreationalContext());
+                    beanContext.addSystemInterceptor(new CdiInterceptor(bean, 
beanManager, cdiPlugin.getContexsServices()));
 
-                        EjbUtility.fireEvents((Class<Object>) implClass, bean, 
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
+                    EjbUtility.fireEvents((Class<Object>) implClass, bean, 
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
 
-                        beanContext.initIsPassivationScope();
+                    beanContext.initIsPassivationScope();
 
-                        
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(bean);
+                    
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(bean);
 
-                        Class clazz = beanContext.getBeanClass();
-                        while (clazz.isAnnotationPresent(Specializes.class)) {
-                            clazz = clazz.getSuperclass();
+                    Class clazz = beanContext.getBeanClass();
+                    while (clazz.isAnnotationPresent(Specializes.class)) {
+                        clazz = clazz.getSuperclass();
 
-                            if (clazz == null || Object.class.equals(clazz)) 
break;
+                        if (clazz == null || Object.class.equals(clazz)) break;
 
-                            final CdiEjbBean<Object> superBean = new 
CdiEjbBean<Object>(beanContext, webBeansContext, clazz);
+                        final CdiEjbBean<Object> superBean = new 
CdiEjbBean<Object>(beanContext, webBeansContext, clazz);
 
-                            EjbBeanCreatorImpl<?> ejbBeanCreator = new 
EjbBeanCreatorImpl(superBean);
+                        EjbBeanCreatorImpl<?> ejbBeanCreator = new 
EjbBeanCreatorImpl(superBean);
 
-                            //Define meta-data
-                            ejbBeanCreator.defineSerializable();
-                            ejbBeanCreator.defineStereoTypes();
-                            ejbBeanCreator.defineScopeType("Session Bean 
implementation class : " + clazz.getName() + " stereotypes must declare same 
@ScopeType annotations", false);
-                            ejbBeanCreator.defineQualifier();
-                            
ejbBeanCreator.defineName(WebBeansUtil.getManagedBeanDefaultName(clazz.getSimpleName()));
+                        //Define meta-data
+                        ejbBeanCreator.defineSerializable();
+                        ejbBeanCreator.defineStereoTypes();
+                        ejbBeanCreator.defineScopeType("Session Bean 
implementation class : " + clazz.getName() + " stereotypes must declare same 
@ScopeType annotations", false);
+                        ejbBeanCreator.defineQualifier();
+                        
ejbBeanCreator.defineName(WebBeansUtil.getManagedBeanDefaultName(clazz.getSimpleName()));
 
-                            bean.specialize(superBean);
+                        bean.specialize(superBean);
 
-                            EjbUtility.defineSpecializedData(clazz, bean);
-                        }
+                        EjbUtility.defineSpecializedData(clazz, bean);
                     }
                 }
 
@@ -280,43 +276,39 @@ public class OpenEJBLifecycle implements
                 //Validate injection Points
                 deployer.validateInjectionPoints();
 
-                if (deployEjb) {
-                    for (BeanContext beanContext : stuff.getBeanContexts()) {
-                        if (!beanContext.getComponentType().isSession() || 
beanContext.isDynamicallyImplemented()) continue;
-                        final CdiEjbBean bean = 
beanContext.get(CdiEjbBean.class);
-
-                        // The interceptor stack is empty until 
validateInjectionPoints is called as it does more than validate.
-                        final List<InterceptorData> datas = 
bean.getInterceptorStack();
-
-                        final 
List<org.apache.openejb.core.interceptor.InterceptorData> converted = new 
ArrayList<org.apache.openejb.core.interceptor.InterceptorData>();
-                        for (InterceptorData data : datas) {
-                            // todo this needs to use the code in 
InterceptorBindingBuilder that respects override rules and private methods
-                            final 
org.apache.openejb.core.interceptor.InterceptorData openejbData = 
org.apache.openejb.core.interceptor.InterceptorData.scan(data.getInterceptorClass());
-                            if (data.isDefinedInMethod()) {
-                                final Method method = 
data.getInterceptorBindingMethod();
-                                beanContext.addCdiMethodInterceptor(method, 
openejbData);
-                            } else {
-                                converted.add(openejbData);
-                            }
+                for (BeanContext beanContext : stuff.getBeanContexts()) {
+                    if (!beanContext.isCdiCompatible() || 
beanContext.isDynamicallyImplemented()) continue;
+                    final CdiEjbBean bean = beanContext.get(CdiEjbBean.class);
+
+                    // The interceptor stack is empty until 
validateInjectionPoints is called as it does more than validate.
+                    final List<InterceptorData> datas = 
bean.getInterceptorStack();
+
+                    final 
List<org.apache.openejb.core.interceptor.InterceptorData> converted = new 
ArrayList<org.apache.openejb.core.interceptor.InterceptorData>();
+                    for (InterceptorData data : datas) {
+                        // todo this needs to use the code in 
InterceptorBindingBuilder that respects override rules and private methods
+                        final 
org.apache.openejb.core.interceptor.InterceptorData openejbData = 
org.apache.openejb.core.interceptor.InterceptorData.scan(data.getInterceptorClass());
+                        if (data.isDefinedInMethod()) {
+                            final Method method = 
data.getInterceptorBindingMethod();
+                            beanContext.addCdiMethodInterceptor(method, 
openejbData);
+                        } else {
+                            converted.add(openejbData);
                         }
-
-                        beanContext.setCdiInterceptors(converted);
                     }
+
+                    beanContext.setCdiInterceptors(converted);
                 }
 
                 //Fire Event
                 deployer.fireAfterDeploymentValidationEvent();
 
-                if (deployEjb) {
-                    for (BeanContext beanContext : stuff.getBeanContexts()) {
+                for (BeanContext beanContext : stuff.getBeanContexts()) {
 
-                        final CdiEjbBean<Object> bean = 
beanContext.get(CdiEjbBean.class);;
+                    final CdiEjbBean<Object> bean = 
beanContext.get(CdiEjbBean.class);
 
-                        if (bean == null) continue;
+                    if (bean == null) continue;
 
-                        final BeanManagerImpl manager = 
webBeansContext.getBeanManagerImpl();
-                        manager.addBean(new NewCdiEjbBean<Object>(bean));
-                    }
+                    final BeanManagerImpl manager = 
webBeansContext.getBeanManagerImpl();
+                    manager.addBean(new NewCdiEjbBean<Object>(bean));
                 }
 
             } catch (Exception e1) {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonService.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonService.java?rev=1428825&r1=1428824&r2=1428825&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonService.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonService.java
 Fri Jan  4 12:54:33 2013
@@ -18,9 +18,6 @@
 
 package org.apache.openejb.cdi;
 
-import java.util.Map;
-
-import org.apache.openejb.AppContext;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.spi.SingletonService;
 

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java?rev=1428825&r1=1428824&r2=1428825&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
 Fri Jan  4 12:54:33 2013
@@ -29,7 +29,6 @@ import javax.enterprise.context.spi.Cont
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.Decorator;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
@@ -364,7 +363,7 @@ public class WebappBeanManager extends B
 
     @Override
     public ExpressionFactory wrapExpressionFactory(javax.el.ExpressionFactory 
expressionFactory) {
-        return 
super.wrapExpressionFactory(getParentBm().wrapExpressionFactory(expressionFactory));
+        return super.wrapExpressionFactory(expressionFactory);
     }
 
     public BeanManagerImpl getParentBm() {

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1428825&r1=1428824&r2=1428825&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Fri Jan  4 12:54:33 2013
@@ -1144,8 +1144,7 @@ public class TomcatWebAppBuilder impleme
 
                 if (!contextInfo.appInfo.webAppAlone) {
                     final List<BeanContext> beanContexts = 
assembler.initEjbs(classLoader, contextInfo.appInfo, appContext, injections, 
new ArrayList<BeanContext>(), webAppInfo.moduleId);
-                    appContext.getBeanContexts().addAll(beanContexts);
-                    new CdiBuilder().build(contextInfo.appInfo, appContext, 
appContext.getBeanContexts(), webContext);
+                    new CdiBuilder().build(contextInfo.appInfo, appContext, 
beanContexts, webContext);
                     assembler.startEjbs(true, beanContexts);
                 }
 


Reply via email to