Uploaded image for project: 'CDI Specification Issues'
  1. CDI Specification Issues
  2. CDI-583

Observer resolution doesn't support Lambdas

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Obsolete
    • Icon: Major Major
    • None
    • 1.2.Final, 2.0-EDR1
    • Events
    • None

      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:

      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

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

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

              Unassigned Unassigned
              asabotdu@redhat.com Antoine Sabot-Durand (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: