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

Reply via email to