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>