@@ -261,8 +261,9 @@ public String extract( Path path )
261
261
Collections .unmodifiableMap ( availableNamedModules ),
262
262
Collections .unmodifiableMap ( availableProviders ),
263
263
requiredNamedModules ,
264
- true ,
265
- true );
264
+ true ,
265
+ true ,
266
+ request .isIncludeStatic ());
266
267
}
267
268
268
269
for ( String additionalModule : request .getAdditionalModules () )
@@ -271,8 +272,9 @@ public String extract( Path path )
271
272
Collections .unmodifiableMap ( availableNamedModules ),
272
273
Collections .unmodifiableMap ( availableProviders ),
273
274
requiredNamedModules ,
274
- request .isIncludeStatic (),
275
- true );
275
+ true ,
276
+ true ,
277
+ request .isIncludeStatic ());
276
278
}
277
279
278
280
// in case of identical module names, first one wins
@@ -400,19 +402,21 @@ private void selectRequires( JavaModuleDescriptor module,
400
402
Map <String , JavaModuleDescriptor > availableModules ,
401
403
Map <String , Set <String >> availableProviders ,
402
404
Set <String > namedModules ,
403
- boolean includeStatic ,
404
- boolean includeTransitive )
405
+ boolean isRootModule ,
406
+ boolean includeAsTransitive ,
407
+ boolean includeStatic )
405
408
{
406
409
for ( JavaModuleDescriptor .JavaRequires requires : module .requires () )
407
410
{
408
411
// includeTransitive is one level deeper compared to includeStatic
409
- if ( includeStatic || !requires .modifiers ().contains ( JavaModuleDescriptor .JavaRequires .JavaModifier .STATIC ) )
412
+ if ( isRootModule
413
+ || includeStatic
414
+ || includeAsTransitive
415
+ || !requires .modifiers ().contains ( JavaModuleDescriptor .JavaRequires .JavaModifier .STATIC )
416
+ || requires .modifiers ().contains ( JavaModuleDescriptor .JavaRequires .JavaModifier .TRANSITIVE ) )
410
417
{
411
- selectModule ( requires .name (), availableModules , availableProviders , namedModules , false , includeStatic );
412
- }
413
- else if ( includeTransitive && requires .modifiers ().contains ( JavaModuleDescriptor .JavaRequires .JavaModifier .TRANSITIVE ) )
414
- {
415
- selectModule ( requires .name (), availableModules , availableProviders , namedModules , false , includeStatic );
418
+ selectModule ( requires .name (), availableModules , availableProviders ,
419
+ namedModules , false , includeStatic , includeStatic );
416
420
}
417
421
}
418
422
@@ -426,21 +430,23 @@ else if ( includeTransitive && requires.modifiers().contains( JavaModuleDescr
426
430
427
431
if ( requiredModule != null && namedModules .add ( providerModule ) )
428
432
{
429
- selectRequires ( requiredModule , availableModules , availableProviders , namedModules , false , includeStatic );
433
+ selectRequires ( requiredModule , availableModules , availableProviders ,
434
+ namedModules , false , includeAsTransitive , includeStatic );
430
435
}
431
436
}
432
437
}
433
438
}
434
439
}
435
440
436
441
private void selectModule ( String module , Map <String , JavaModuleDescriptor > availableModules , Map <String , Set <String >> availableProviders ,
437
- Set <String > namedModules , boolean includeStatic , boolean includeTransitive )
442
+ Set <String > namedModules , boolean isRootModule , boolean includeTransitive , boolean includeStatic )
438
443
{
439
444
JavaModuleDescriptor requiredModule = availableModules .get ( module );
440
445
441
446
if ( requiredModule != null && namedModules .add ( module ) )
442
447
{
443
- selectRequires ( requiredModule , availableModules , availableProviders , namedModules , includeStatic , includeTransitive );
448
+ selectRequires ( requiredModule , availableModules , availableProviders ,
449
+ namedModules , false , includeTransitive , includeStatic );
444
450
}
445
451
}
446
452
0 commit comments