On Thu, 29 Sep 2022 16:05:44 GMT, Matthias Baesken <mbaes...@openjdk.org> wrote:

>> We noticed that with certain jar file input, jdeps runs into the following 
>> exception, this happens with jdk11, 17 and 20.
>> 
>> jdeps.exe --multi-release 11 --module-path . --inverse --package 
>> com.sap.nw.performance.supa.client test.jar
>> 
>> Inverse transitive dependences matching packages 
>> [com.sap.nw.performance.supa.client]
>> Exception in thread "main" java.util.NoSuchElementException: No value present
>>         at java.base/java.util.Optional.get(Optional.java:148)
>>         at 
>> jdk.jdeps/com.sun.tools.jdeps.InverseDepsAnalyzer.lambda$inverseDependences$2(InverseDepsAnalyzer.java:150)
>>         at 
>> java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
>>         at 
>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>>         at 
>> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>>         at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>>         at 
>> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>>         at 
>> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>>         at 
>> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>> 
>> So an additional  check might be a good idea.
>
> Matthias Baesken has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   adjust check, add test

src/jdk.jdeps/share/classes/com/sun/tools/jdeps/InverseDepsAnalyzer.java line 
150:

> 148:                         // filter "requires static" if the module is not 
> resolved in the configuration
> 149:                         .filter(req -> 
> !req.modifiers().contains(Requires.Modifier.STATIC)
> 150:                         || 
> configuration.findModule(req.name()).isPresent())

Nit: indent further to the right for readability (maybe 16 spaces)

test/langtools/tools/jdeps/optionalDependency/OptionalDependencyError.java line 
43:

> 41: import static org.testng.Assert.assertTrue;
> 42: 
> 43: public class OptionalDependencyError {

I'd rename the test to `OptionalDependencyTest` since it's not expecting an 
error.

test/langtools/tools/jdeps/optionalDependency/OptionalDependencyError.java line 
73:

> 71:      */
> 72:     @Test
> 73:     public void noOptionalDependencyError() {

This test case verifies when m3 is resolved in the configuration.   I suggest 
to rename this to `optionalDependenceResolved`.  Please also add the comment 
something like


/*
 * Test if a requires static dependence is resolved in the configuration.
 */


can you add one more test case that m3 is not resolved 
`optinalDependenceNotResolved`?

-------------

PR: https://git.openjdk.org/jdk/pull/10300

Reply via email to