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