Repository: cxf Updated Branches: refs/heads/3.1.x-fixes 0529afb26 -> 8967ec568
Ensuring CDI Bean<?> are always the CDI context ones. This closes #181. Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8967ec56 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8967ec56 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8967ec56 Branch: refs/heads/3.1.x-fixes Commit: 8967ec568c03e6b14a27b63698747135b82f80fc Parents: 0529afb Author: rmannibucau <[email protected]> Authored: Wed Oct 19 21:40:01 2016 +0200 Committer: reta <[email protected]> Committed: Thu Oct 20 21:54:45 2016 -0400 ---------------------------------------------------------------------- .../java/org/apache/cxf/cdi/CXFCdiServlet.java | 2 +- .../apache/cxf/cdi/JAXRSCdiResourceExtension.java | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/8967ec56/integration/cdi/src/main/java/org/apache/cxf/cdi/CXFCdiServlet.java ---------------------------------------------------------------------- diff --git a/integration/cdi/src/main/java/org/apache/cxf/cdi/CXFCdiServlet.java b/integration/cdi/src/main/java/org/apache/cxf/cdi/CXFCdiServlet.java index 389f201..7a090e5 100644 --- a/integration/cdi/src/main/java/org/apache/cxf/cdi/CXFCdiServlet.java +++ b/integration/cdi/src/main/java/org/apache/cxf/cdi/CXFCdiServlet.java @@ -51,7 +51,7 @@ public class CXFCdiServlet extends CXFNonSpringServlet { final Set< Bean< ? > > candidates = beanManager.getBeans(CdiBusBean.CXF); if (!candidates.isEmpty()) { - final Bean< ? > candidate = candidates.iterator().next(); + final Bean< ? > candidate = beanManager.resolve(candidates); bus = (Bus)beanManager.getReference(candidate, Bus.class, beanManager.createCreationalContext(candidate)); http://git-wip-us.apache.org/repos/asf/cxf/blob/8967ec56/integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java ---------------------------------------------------------------------- diff --git a/integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java b/integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java index bb397c2..0b1d926 100644 --- a/integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java +++ b/integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java @@ -54,7 +54,7 @@ import org.apache.cxf.jaxrs.utils.ResourceUtils; * Apache CXF portable CDI extension to support initialization of JAX-RS resources. */ public class JAXRSCdiResourceExtension implements Extension { - private Bean< ? > busBean; + private boolean hasBus; private Bus bus; private final List< Bean< ? > > applicationBeans = new ArrayList< Bean< ? > >(); @@ -74,16 +74,16 @@ public class JAXRSCdiResourceExtension implements Extension { featureBeans.add((Bean< ? extends Feature >)event.getBean()); } else if (CdiBusBean.CXF.equals(event.getBean().getName()) && Bus.class.isAssignableFrom(event.getBean().getBeanClass())) { - busBean = event.getBean(); + hasBus = true; } } public void load(@Observes final AfterDeploymentValidation event, final BeanManager beanManager) { + // no need of creational context, it only works for app scoped instances anyway + final Bean<?> busBean = beanManager.resolve(beanManager.getBeans(CdiBusBean.CXF)); bus = (Bus)beanManager.getReference( - busBean, - busBean.getBeanClass(), - beanManager.createCreationalContext(busBean) - ); + busBean, Bus.class, + beanManager.createCreationalContext(busBean)); for (final Bean< ? > application: applicationBeans) { final Application instance = (Application)beanManager.getReference( @@ -110,15 +110,13 @@ public class JAXRSCdiResourceExtension implements Extension { } public void injectBus(@Observes final AfterBeanDiscovery event, final BeanManager beanManager) { - if (busBean == null) { + if (!hasBus) { final AnnotatedType< ExtensionManagerBus > busAnnotatedType = beanManager.createAnnotatedType(ExtensionManagerBus.class); final InjectionTarget<ExtensionManagerBus> busInjectionTarget = beanManager.createInjectionTarget(busAnnotatedType); - - busBean = new CdiBusBean(busInjectionTarget); - event.addBean(busBean); + event.addBean(new CdiBusBean(busInjectionTarget)); } }
