Pierre De Rop created FELIX-5967:
------------------------------------

             Summary: DM does not support java9+
                 Key: FELIX-5967
                 URL: https://issues.apache.org/jira/browse/FELIX-5967
             Project: Felix
          Issue Type: Improvement
    Affects Versions: org.apache.felix.dependencymanager-r8
            Reporter: Pierre De Rop
            Assignee: Pierre De Rop


Dependency Manager can't be built/used on java9+ (9,10,11), because of the 
following issues:

1) for configuration types, when we parse interface "default methods", the way 
we are parsing does not work in java 9+, and a patch must be applied.
See [1].

2) for dm-lambda, the way to parse the lambda parameter names for "fluent" 
service properties (which requires the -parameters javac option) does not  work 
in java 9+. 
For example, the following does not work
{code:java}
compnent(comp -> comp.impl(Foo.class).provides(FooService.class, property -> 
"service property value"));{code}
So, the "property" lambda parameter name can't be parsed in Java9+. This is 
likely because starting from java9, the -parameters option is not generating 
anymore the metadata for the lambda parameter names (see [2]).  For the moment, 
the fluent service properties willl work only using java8, but not anymore on 
java9+, and the most reasonable thing is to deprecate the usage of fluent 
service properties, meaning that instead of:
{code:java}
compnent(comp -> comp.impl(Foo.class).provides(FooService.class, property -> 
"service property value"));{code}
you then must replace by:
{code:java}
compnent(comp -> comp.impl(Foo.class).provides(FooService.class, 
"property","service property value"));{code}
So, the fluent service properties must be commented as in restriction if java9+ 
is used. No need to bump the dm-lambda bundle version, becaue it still works 
using java8.

3) the gradle version needs to be updated, and for java11 support, the 
"--no-daemon" option must be used when building.

[1]  
[https://dzone.com/articles/correct-reflective-access-to-interface-default-methods]

[2]https://bugs.openjdk.java.net/browse/JDK-8138729



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to