[
https://issues.jboss.org/browse/CDI-583?page=com.atlassian.jira.plugin.sy...
]
Antoine Sabot-Durand commented on CDI-583:
------------------------------------------
As discussed in WELD-2108, we should consider adding to the event types, the type defined
at Event injection point to satisfy this use case.
But this should be done carefully to see if it doesn't add any regression to event
behaviour.
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: 1.2.Final, 2.0-EDR1
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)