[cdi-dev] [JBoss JIRA] (CDI-583) Observer resolution doesn't support Lambdas

Antoine Sabot-Durand (JIRA) issues at jboss.org
Fri Feb 12 08:56:00 EST 2016


Antoine Sabot-Durand created CDI-583:
----------------------------------------

             Summary: Observer resolution doesn't support Lambdas
                 Key: CDI-583
                 URL: https://issues.jboss.org/browse/CDI-583
             Project: CDI Specification Issues
          Issue Type: Bug
          Components: Events
    Affects Versions: 2.0-EDR1, 1.2.Final
            Reporter: Antoine Sabot-Durand


As stated in various discussion on JDK8, lambda expressions don't allow to retrieve parameter types by reflection.

See:
http://jdk8-dev.openjdk.java.narkive.com/bSPiKxap/jdk-8-lambda-reflection-issues

As section 10.1 of the spec states:

bq. The event types of the event include all superclasses and interfaces of the runtime class of the event object.

In case of a lambda payload, observer resolution will fails when respecting the rule above since parameter type won't be retrieve from the lambda.

For instance the following code

{code}
    @Inject
    Event<Supplier<String>> stringSupplierEvent;
...
    Supplier<String> stringSupplier = () -> "Hello world";
    stringSupplierEvent.fire(stringSupplier);
{code}

will triggers an observer for {{Supplier}} but not an observer for {{Supplier<String>}}.






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


More information about the cdi-dev mailing list