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