Author: rmannibucau
Date: Wed May  9 21:55:51 2012
New Revision: 1336419

URL: http://svn.apache.org/viewvc?rev=1336419&view=rev
Log:
skipping ejb in a webapp of an ear for cdi is a bad idea

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1336419&r1=1336418&r2=1336419&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
 Wed May  9 21:55:51 2012
@@ -142,13 +142,14 @@ public class CdiScanner implements Scann
                 }
             }
 
+            final ClassLoader scl = ClassLoader.getSystemClassLoader();
             for (String className : beans.managedClasses) {
                 if (ejbClasses.contains(className)) continue;
                 final Class clazz = load(className, classLoader);
                 final ClassLoader clazzClassloader = clazz.getClassLoader();
                 if (clazz != null
                         && (classLoader.equals(clazzClassloader) // normal case
-                                || 
clazzClassloader.equals(CdiScanner.class.getClassLoader()))) { // can happen in 
standalone
+                                || clazzClassloader.equals(scl))) { // can 
happen in standalone
                     classes.add(clazz);
                 }
             }

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=1336419&r1=1336418&r2=1336419&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
 Wed May  9 21:55:51 2012
@@ -226,55 +226,53 @@ public class OpenEJBLifecycle implements
             //Discover classpath classes
             deployManagedBeans(scannerService.getBeanClasses(), 
stuff.getBeanContexts());
 
-            if (stuff.getWebContext() == null) { // otherwise we are in an ear 
and we already fired ejbs
-                for (BeanContext beanContext : stuff.getBeanContexts()) {
-                    if (!beanContext.getComponentType().isCdiCompatible()) 
continue;
-
-                    final Class implClass = beanContext.getManagedClass();
-
-                    //Define annotation type
-                    AnnotatedType<?> annotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
-
-                    //Fires ProcessAnnotatedType
-                    ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = 
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
-
-                    // TODO Can you really veto an EJB?
-                    //if veto() is called
-                    if (processAnnotatedEvent.isVeto()) {
-                        continue;
-                    }
+            for (BeanContext beanContext : stuff.getBeanContexts()) {
+                if (!beanContext.getComponentType().isCdiCompatible()) 
continue;
 
-                    CdiEjbBean<Object> bean = new 
CdiEjbBean<Object>(beanContext, webBeansContext);
+                final Class implClass = beanContext.getManagedClass();
 
-                    beanContext.set(CdiEjbBean.class, bean);
-                    beanContext.set(CurrentCreationalContext.class, new 
CurrentCreationalContext());
-                    beanContext.addSystemInterceptor(new CdiInterceptor(bean, 
beanManager, cdiPlugin.getContexsServices()));
+                //Define annotation type
+                AnnotatedType<?> annotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
 
-                    EjbUtility.fireEvents((Class<Object>) implClass, bean, 
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
+                //Fires ProcessAnnotatedType
+                ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = 
webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
 
-                    
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(bean);
+                // TODO Can you really veto an EJB?
+                //if veto() is called
+                if (processAnnotatedEvent.isVeto()) {
+                    continue;
+                }
 
-                    Class clazz = beanContext.getBeanClass();
-                    while (clazz.isAnnotationPresent(Specializes.class)) {
-                        clazz = clazz.getSuperclass();
+                CdiEjbBean<Object> bean = new CdiEjbBean<Object>(beanContext, 
webBeansContext);
 
-                        if (clazz == null || Object.class.equals(clazz)) break;
+                beanContext.set(CdiEjbBean.class, bean);
+                beanContext.set(CurrentCreationalContext.class, new 
CurrentCreationalContext());
+                beanContext.addSystemInterceptor(new CdiInterceptor(bean, 
beanManager, cdiPlugin.getContexsServices()));
 
-                        final CdiEjbBean<Object> superBean = new 
CdiEjbBean<Object>(beanContext, webBeansContext, clazz);
+                EjbUtility.fireEvents((Class<Object>) implClass, bean, 
(ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
 
-                        EjbBeanCreatorImpl<?> ejbBeanCreator = new 
EjbBeanCreatorImpl(superBean);
+                
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(bean);
 
-                        //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()));
+                Class clazz = beanContext.getBeanClass();
+                while (clazz.isAnnotationPresent(Specializes.class)) {
+                    clazz = clazz.getSuperclass();
 
-                        bean.specialize(superBean);
+                    if (clazz == null || Object.class.equals(clazz)) break;
 
-                        EjbUtility.defineSpecializedData(clazz, bean);
-                    }
+                    final CdiEjbBean<Object> superBean = new 
CdiEjbBean<Object>(beanContext, webBeansContext, clazz);
+
+                    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()));
+
+                    bean.specialize(superBean);
+
+                    EjbUtility.defineSpecializedData(clazz, bean);
                 }
             }
 


Reply via email to