cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rmannibucau <...@git.apache.org>
Subject [GitHub] cxf pull request #181: ensuring CDI Bean<?> are always the CDI context ones
Date Thu, 20 Oct 2016 12:34:21 GMT
Github user rmannibucau commented on a diff in the pull request:

    https://github.com/apache/cxf/pull/181#discussion_r84271592
  
    --- Diff: integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java
---
    @@ -74,16 +74,16 @@
                 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(
    --- End diff --
    
    There is nothing in the spec about Bean<?> stability (equals/hashCode). OpenWebBeans
wraps all user beans (added through addBean(userBean)). For that reason capturing the bean
(collect) can give you the wrong reference. Then if you use this one and not the CDI context
one (from resolve) then you get 2 different Bean and therefore 2 different instances.
    
    So concretely you should not use a bean not coming from the bean manager to be safe.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message