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/12/20 21:38:40 UTC

tomee git commit: better webappbeanmanager.merge algo, surely to still enhance BTW + ensuring our cxf CDI beans are passivable

Repository: tomee
Updated Branches:
  refs/heads/develop 11d8b10a4 -> 7541e1329


better webappbeanmanager.merge algo, surely to still enhance BTW + ensuring our cxf CDI beans are passivable


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/7541e132
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/7541e132
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/7541e132

Branch: refs/heads/develop
Commit: 7541e1329d8bfd130fa363918e02da10568b0b27
Parents: 11d8b10
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Sat Dec 20 21:37:58 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Sat Dec 20 21:37:58 2014 +0100

----------------------------------------------------------------------
 .../apache/openejb/cdi/WebappBeanManager.java   | 20 +++++++++++++++-----
 .../openejb/server/cxf/rs/CxfRSService.java     | 10 +++++++++-
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 3 files changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/7541e132/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
index d4ba60e..05ecb9f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappBeanManager.java
@@ -46,6 +46,7 @@ import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 public class WebappBeanManager extends BeanManagerImpl {
+    private static final Annotation[] EMPTY_ANNOTATIONS = new Annotation[0];
     private static final ThreadLocal<Boolean> USE_PARENT_BM = new ThreadLocal<>();
     private final WebappWebBeansContext webappCtx;
     private final InheritedBeanFilter filter;
@@ -325,9 +326,9 @@ public class WebappBeanManager extends BeanManagerImpl {
     }
 
     private static final class InheritedBeanFilter implements Filter<Bean<?>> {
-        private final BeanManagerImpl beanManager;
+        private final WebappBeanManager beanManager;
 
-        private InheritedBeanFilter(final BeanManagerImpl beanManager) {
+        private InheritedBeanFilter(final WebappBeanManager beanManager) {
             this.beanManager = beanManager;
         }
 
@@ -337,15 +338,24 @@ public class WebappBeanManager extends BeanManagerImpl {
                 return false;
             }
             if (OwbBean.class.isInstance(bean)) {
-                if (hasBean(OwbBean.class.cast(bean).getId())) {
-                    return false;
+                final OwbBean owbBean = OwbBean.class.cast(bean);
+                if (owbBean.isPassivationCapable())
+                {
+                    if (hasBean(owbBean.getId()))
+                    {
+                        return false;
+                    }
                 }
             } else if (PassivationCapable.class.isInstance(bean)) {
                 if (hasBean(PassivationCapable.class.cast(bean).getId())) {
                     return false;
                 }
             }
-            return true;
+
+            final Set<Annotation> qualifiers = bean.getQualifiers();
+            return beanManager.getParentBm().getBeans(
+                    bean.getBeanClass(),
+                    qualifiers.isEmpty() ? EMPTY_ANNOTATIONS : qualifiers.toArray(new Annotation[qualifiers.size()])).isEmpty();
         }
 
         private boolean hasBean(final String id) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/7541e132/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
----------------------------------------------------------------------
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
index 2400798..d456a68 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
@@ -40,6 +40,7 @@ import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.PassivationCapable;
 import javax.enterprise.util.AnnotationLiteral;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -213,11 +214,12 @@ public class CxfRSService extends RESTService {
         public static final AnnotationLiteral<Context> INSTANCE = new ContextLiteral();
     }
 
-    private static class ContextBean<T> implements Bean<T> {
+    private static class ContextBean<T> implements Bean<T>, PassivationCapable {
         private final Class<T> type;
         private final Set<Type> types;
         private final Set<Annotation> qualifiers;
         private final T proxy;
+        private final String id;
 
         public ContextBean(final Class<T> type, final AbstractRestThreadLocalProxy<T> proxy) {
             this.type = type;
@@ -225,6 +227,12 @@ public class CxfRSService extends RESTService {
                 (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[]{type, Serializable.class}, new DelegateHandler(proxy));
             this.types = new HashSet<Type>(asList(Object.class, type));
             this.qualifiers = new HashSet<Annotation>(asList(ContextLiteral.INSTANCE, AnyLiteral.INSTANCE));
+            this.id = ContextBean.class.getName() + "#" + type.getName();
+        }
+
+        @Override
+        public String getId() {
+            return id;
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/tomee/blob/7541e132/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index b49e5b2..b387e6e 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -18,7 +18,7 @@
 <suite name="CDI TCK" verbose="0">
   <test name="CDI TCK">
     <classes>
-      <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.atd.AfterTypeDiscoveryTest" />
+      <class name="org.jboss.cdi.tck.tests.alternative.selection.enterprise.EnterpriseSelectedAlternative02Test" />
     </classes>
   </test>
 </suite>