[cdi-dev] [JBoss JIRA] (CDI-573) Review code of CDI class to switch to ServiceLoader

Antonin Stefanutti (JIRA) issues at jboss.org
Fri Apr 29 04:57:00 EDT 2016


    [ https://issues.jboss.org/browse/CDI-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13198888#comment-13198888 ] 

Antonin Stefanutti commented on CDI-573:
----------------------------------------

As I moved from {{2.0-EDR1}} to {{2.0-EDR2}} and the {{getCDIProvider}} method visibility changed to become private, is the following code the expected way for a client to get a reference to the container:
{code}
CDI container = StreamSupport.stream(
    ServiceLoader.load(CDIProvider.class, CDI.class.getClassLoader()).spliterator(), false)
    .findFirst()
    .map(CDIProvider::initialize)
    .orElseThrow(() -> new IllegalStateException("No CDIProvider found in the classpath!"));
{code}
Instead of {{CDI.getCDIProvider().initialize()}}?

> Review code of CDI class to switch to ServiceLoader
> ---------------------------------------------------
>
>                 Key: CDI-573
>                 URL: https://issues.jboss.org/browse/CDI-573
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Concepts
>    Affects Versions: 2.0-EDR1
>            Reporter: Antoine Sabot-Durand
>            Assignee: Antoine Sabot-Durand
>             Fix For: 2.0 (proposed)
>
>
> Right now {{CDI}} seems to mimics the JDK service loader mechanism in the the private {{findAllProviders}} method.
> In order to get rid of useless code in the API and to limit compatibility issues with JDK9 and jigsaw, I think we should change this code and use Service Loader instead of doing something similar. 



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the cdi-dev mailing list