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...
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)