You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/09/09 20:23:34 UTC
svn commit: r1623865 - in /tomee/tomee/trunk:
arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/
container/openejb-core/src/main/java/org/apache/openejb/cdi/
Author: rmannibucau
Date: Tue Sep 9 18:23:33 2014
New Revision: 1623865
URL: http://svn.apache.org/r1623865
Log:
owb 2
Modified:
tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java?rev=1623865&r1=1623864&r2=1623865&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/ear/EarTest.java Tue Sep 9 18:23:33 2014
@@ -44,7 +44,6 @@ import java.net.URL;
/**
* @version $Rev$ $Date$
*/
-@SuppressWarnings("UseOfSystemOutOrSystemErr")
@RunWith(Arquillian.class)
public class EarTest {
@@ -56,7 +55,6 @@ public class EarTest {
final JavaArchive ejbJar = ShrinkWrap.create(JavaArchive.class, "beans.jar");
ejbJar.addClass(Bean.class);
- ejbJar.addClass(EarTest.class);
final WebArchive webapp = ShrinkWrap.create(WebArchive.class, "green.war").addClass(Hello.class);
System.out.println(webapp.toString(true));
@@ -65,9 +63,6 @@ public class EarTest {
final EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "red.ear").addAsModule(ejbJar).addAsModule(webapp);
ear.addAsLibraries(JarLocation.jarLocation(Test.class));
- System.out.println(ear.toString(true));
- System.out.println();
-
return ear;
}
@@ -79,7 +74,6 @@ public class EarTest {
System.out.println(servlet.toExternalForm());
final String slurp = IO.slurp(servlet);
Assert.assertEquals(Test.class.getName(), slurp);
- System.out.println(slurp);
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java?rev=1623865&r1=1623864&r2=1623865&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java Tue Sep 9 18:23:33 2014
@@ -25,7 +25,6 @@ import org.apache.openejb.OpenEJBRuntime
import org.apache.openejb.core.ivm.IntraVmProxy;
import org.apache.openejb.util.proxy.ProxyManager;
import org.apache.webbeans.component.AbstractOwbBean;
-import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.component.ProducerFieldBean;
import org.apache.webbeans.component.ProducerMethodBean;
@@ -286,17 +285,17 @@ public class CdiPlugin extends AbstractO
final Set<ObserverMethod<?>> observerMethods;
if (bean.isEnabled()) {
- observerMethods = new ObserverMethodsBuilder<T, InjectionTargetBean<T>>(webBeansContext, bean.getAnnotatedType()).defineObserverMethods(bean);
+ observerMethods = new ObserverMethodsBuilder<T>(webBeansContext, bean.getAnnotatedType()).defineObserverMethods(bean);
} else {
- observerMethods = new HashSet<ObserverMethod<?>>();
+ observerMethods = new HashSet<>();
}
final WebBeansUtil webBeansUtil = webBeansContext.getWebBeansUtil();
- final Set<ProducerMethodBean<?>> producerMethods = new ProducerMethodBeansBuilder(bean.getWebBeansContext(), bean.getAnnotatedType()).defineProducerMethods(bean);
final Set<ProducerFieldBean<?>> producerFields = new ProducerFieldBeansBuilder(bean.getWebBeansContext(), bean.getAnnotatedType()).defineProducerFields(bean);
+ final Set<ProducerMethodBean<?>> producerMethods = new ProducerMethodBeansBuilder(bean.getWebBeansContext(), bean.getAnnotatedType()).defineProducerMethods(bean, producerFields);
- final Map<ProducerMethodBean<?>, AnnotatedMethod<?>> annotatedMethods = new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
+ final Map<ProducerMethodBean<?>, AnnotatedMethod<?>> annotatedMethods = new HashMap<>();
for (final ProducerMethodBean<?> producerMethod : producerMethods) {
final AnnotatedMethod<?> method = webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(producerMethod.getCreatorMethod(), annotatedType);
webBeansUtil.inspectErrorStack("There are errors that are added by ProcessProducer event observers for "
@@ -305,7 +304,7 @@ public class CdiPlugin extends AbstractO
annotatedMethods.put(producerMethod, method);
}
- final Map<ProducerFieldBean<?>, AnnotatedField<?>> annotatedFields = new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
+ final Map<ProducerFieldBean<?>, AnnotatedField<?>> annotatedFields = new HashMap<>();
for (final ProducerFieldBean<?> producerField : producerFields) {
webBeansUtil.inspectErrorStack("There are errors that are added by ProcessProducer event observers for"
+ " ProducerFields. Look at logs for further details");
@@ -316,7 +315,7 @@ public class CdiPlugin extends AbstractO
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(producerField.getBeanClass())));
}
- final Map<ObserverMethod<?>, AnnotatedMethod<?>> observerMethodsMap = new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
+ final Map<ObserverMethod<?>, AnnotatedMethod<?>> observerMethodsMap = new HashMap<>();
for (final ObserverMethod<?> observerMethod : observerMethods) {
final ObserverMethodImpl<?> impl = (ObserverMethodImpl<?>) observerMethod;
final AnnotatedMethod<?> method = impl.getObserverMethod();
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java?rev=1623865&r1=1623864&r2=1623865&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java Tue Sep 9 18:23:33 2014
@@ -20,6 +20,7 @@ package org.apache.openejb.cdi;
import org.apache.openejb.util.reflection.Reflections;
import org.apache.webbeans.component.BuiltInOwbBean;
import org.apache.webbeans.component.ExtensionBean;
+import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.event.EventMetadataImpl;
@@ -35,6 +36,7 @@ import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.PassivationCapable;
import java.lang.annotation.Annotation;
import java.util.HashSet;
import java.util.Iterator;
@@ -43,6 +45,7 @@ import java.util.concurrent.CopyOnWriteA
public class WebappBeanManager extends BeanManagerImpl {
private final WebappWebBeansContext webappCtx;
+ private final InheritedBeanFilter filter;
private Set<Bean<?>> deploymentBeans;
private boolean started/* = false*/;
@@ -51,6 +54,7 @@ public class WebappBeanManager extends B
webappCtx = ctx;
deploymentBeans = super.getBeans(); // use the parent one while starting
Reflections.set(this, "injectionResolver", new WebAppInjectionResolver(ctx));
+ filter = new InheritedBeanFilter(this);
}
@Override
@@ -65,7 +69,7 @@ public class WebappBeanManager extends B
@Override
public <T> Set<ObserverMethod<? super T>> resolveObserverMethods(final T event, final EventMetadataImpl metadata) {
final Class<?> eventClass = event.getClass();
- final Set<ObserverMethod<? super T>> set = new HashSet<ObserverMethod<? super T>>();
+ final Set<ObserverMethod<? super T>> set = new HashSet<>();
set.addAll(getNotificationManager().resolveObservers(event, metadata, false));
if (isEvent(eventClass)) {
@@ -241,9 +245,9 @@ public class WebappBeanManager extends B
// probably not yet merged (afterStart())
// so reuse parent beans
// this can happen for validations
- return new IteratorSet<Bean<?>>(
- new MultipleIterator<Bean<?>>(
- InheritedBeanFilter.INSTANCE,
+ return new IteratorSet<>(
+ new MultipleIterator<>(
+ filter,
deploymentBeans.iterator(),
getParentBm().getComponents().iterator()));
}
@@ -271,9 +275,9 @@ public class WebappBeanManager extends B
}
private Set<Bean<?>> mergeBeans() {
- final Set<Bean<?>> allBeans = new CopyOnWriteArraySet<Bean<?>>(); // override parent one with a "webapp" bean list
+ final Set<Bean<?>> allBeans = new CopyOnWriteArraySet<>(); // override parent one with a "webapp" bean list
for (final Bean<?> bean : getParentBm().getBeans()) {
- if (InheritedBeanFilter.INSTANCE.accept(bean)) {
+ if (filter.accept(bean)) {
allBeans.add(bean);
}
}
@@ -285,8 +289,9 @@ public class WebappBeanManager extends B
// no-op
}
- private static boolean isEvent(final Class<?> eventClass) {
- return !WebBeansUtil.isDefaultExtensionBeanEventType(eventClass) && !WebBeansUtil.isExtensionEventType(eventClass);
+ private boolean isEvent(final Class<?> eventClass) {
+ return !WebBeansUtil.isDefaultExtensionBeanEventType(eventClass)
+ && !webappCtx.getWebBeansUtil().isContainerEventType(eventClass);
}
private interface Filter<A> {
@@ -294,15 +299,31 @@ public class WebappBeanManager extends B
}
private static final class InheritedBeanFilter implements Filter<Bean<?>> {
- private static final InheritedBeanFilter INSTANCE = new InheritedBeanFilter();
+ private final BeanManagerImpl beanManager;
- private InheritedBeanFilter() {
- // no-op
+ private InheritedBeanFilter(final BeanManagerImpl beanManager) {
+ this.beanManager = beanManager;
}
@Override
public boolean accept(final Bean<?> bean) {
- return !BuiltInOwbBean.class.isInstance(bean) && !ExtensionBean.class.isInstance(bean);
+ if (BuiltInOwbBean.class.isInstance(bean) || ExtensionBean.class.isInstance(bean)) {
+ return false;
+ }
+ if (OwbBean.class.isInstance(bean)) {
+ if (hasBean(OwbBean.class.cast(bean).getId())) {
+ return false;
+ }
+ } else if (PassivationCapable.class.isInstance(bean)) {
+ if (hasBean(PassivationCapable.class.cast(bean).getId())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean hasBean(final String id) {
+ return beanManager.getPassivationCapableBean(id) != null;
}
}