langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ElementsTable.java
changeset 41633 eec0f5b0465f
parent 41451 a847c7aa25a7
child 42407 f3702cff2933
child 42261 bb52b5514ad5
equal deleted inserted replaced
41632:c599331f6040 41633:eec0f5b0465f
   585         }
   585         }
   586         return result;
   586         return result;
   587     }
   587     }
   588 
   588 
   589     private Set<PackageElement> computeModulePackages() throws ToolException {
   589     private Set<PackageElement> computeModulePackages() throws ToolException {
   590         final AccessKind accessValue = accessFilter.getAccessValue(ElementKind.PACKAGE);
   590         AccessKind accessValue = accessFilter.getAccessValue(ElementKind.PACKAGE);
   591         final boolean documentAllModulePackages = (accessValue == AccessKind.PACKAGE ||
   591         final boolean documentAllModulePackages = (accessValue == AccessKind.PACKAGE ||
   592                 accessValue == AccessKind.PRIVATE);
   592                 accessValue == AccessKind.PRIVATE);
   593 
   593 
       
   594         accessValue = accessFilter.getAccessValue(ElementKind.MODULE);
       
   595         final boolean moduleDetailedMode = (accessValue == AccessKind.PACKAGE ||
       
   596                 accessValue == AccessKind.PRIVATE);
   594         Set<PackageElement> expandedModulePackages = new LinkedHashSet<>();
   597         Set<PackageElement> expandedModulePackages = new LinkedHashSet<>();
   595 
   598 
   596         for (ModuleElement mdle : specifiedModuleElements) {
   599         for (ModuleElement mdle : specifiedModuleElements) {
   597             // add all exported packages belonging to a specified module
   600             if (documentAllModulePackages) { // include all packages
   598             if (specifiedModuleElements.contains(mdle)) {
   601                 List<PackageElement> packages = ElementFilter.packagesIn(mdle.getEnclosedElements());
       
   602                 expandedModulePackages.addAll(packages);
       
   603                 expandedModulePackages.addAll(getAllModulePackages(mdle));
       
   604             } else { // selectively include required packages
   599                 List<ExportsDirective> exports = ElementFilter.exportsIn(mdle.getDirectives());
   605                 List<ExportsDirective> exports = ElementFilter.exportsIn(mdle.getDirectives());
   600                 for (ExportsDirective export : exports) {
   606                 for (ExportsDirective export : exports) {
   601                     expandedModulePackages.add(export.getPackage());
   607                     // add if fully exported or add qualified exports only if desired
       
   608                     if (export.getTargetModules() == null
       
   609                             || documentAllModulePackages || moduleDetailedMode) {
       
   610                         expandedModulePackages.add(export.getPackage());
       
   611                     }
   602                 }
   612                 }
   603             }
   613             }
   604 
   614 
   605             // add all packages specified on the command line
   615             // add all packages specified on the command line
   606             // belonging to this module
   616             // belonging to this module
   610                             modpkg.packageName);
   620                             modpkg.packageName);
   611                     if (pkg != null) {
   621                     if (pkg != null) {
   612                         expandedModulePackages.add(pkg);
   622                         expandedModulePackages.add(pkg);
   613                     }
   623                     }
   614                 }
   624                 }
   615             }
       
   616 
       
   617             if (!documentAllModulePackages) {
       
   618                 List<ExportsDirective> exports = ElementFilter.exportsIn(mdle.getDirectives());
       
   619                 // check exported packages
       
   620                 for (ExportsDirective export : exports) {
       
   621                     List<? extends ModuleElement> targetModules = export.getTargetModules();
       
   622                     if (targetModules == null) { // no qualified exports, add 'em all
       
   623                         expandedModulePackages.add(export.getPackage());
       
   624                     } else { // qualified export, add only if target module is being considered
       
   625                         for (ModuleElement target : targetModules) {
       
   626                             if (specifiedModuleElements.contains(target)) {
       
   627                                 expandedModulePackages.add(export.getPackage());
       
   628                             }
       
   629                         }
       
   630                     }
       
   631                 }
       
   632             } else { // add all exported and module private packages
       
   633                 List<PackageElement> packages = ElementFilter.packagesIn(mdle.getEnclosedElements());
       
   634                 expandedModulePackages.addAll(packages);
       
   635                 expandedModulePackages.addAll(getAllModulePackages(mdle));
       
   636             }
   625             }
   637         }
   626         }
   638         return expandedModulePackages;
   627         return expandedModulePackages;
   639     }
   628     }
   640 
   629 
   666         specifiedTypeElements.forEach((klass) -> {
   655         specifiedTypeElements.forEach((klass) -> {
   667             ModuleElement mdle = toolEnv.elements.getModuleOf(klass);
   656             ModuleElement mdle = toolEnv.elements.getModuleOf(klass);
   668             if (!mdle.isUnnamed())
   657             if (!mdle.isUnnamed())
   669                 imodules.add(mdle);
   658                 imodules.add(mdle);
   670             PackageElement pkg = toolEnv.elements.getPackageOf(klass);
   659             PackageElement pkg = toolEnv.elements.getPackageOf(klass);
   671             if (!pkg.isUnnamed())
   660             ipackages.add(pkg);
   672                 ipackages.add(pkg);
       
   673             addAllClasses(iclasses, klass, true);
   661             addAllClasses(iclasses, klass, true);
   674         });
   662         });
   675 
   663 
   676         // all done, freeze the collections
   664         // all done, freeze the collections
   677         includedModuleElements = Collections.unmodifiableSet(imodules);
   665         includedModuleElements = Collections.unmodifiableSet(imodules);