--- old/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java 2018-02-02 13:16:25.900184068 -0800 +++ new/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlConfiguration.java 2018-02-02 13:16:25.536168129 -0800 @@ -210,6 +210,12 @@ public HtmlVersion htmlVersion = null; /** + * Flag to enable/disable use of module directories when generating docs for modules + * Default: on (module directories are enabled). + */ + public boolean useModuleDirectories = true; + + /** * Collected set of doclint options */ public Map doclintOpts = new LinkedHashMap<>(); @@ -245,6 +251,8 @@ protected final Messages messages; + protected DocPaths docPaths; + /** * Creates an object to hold the configuration for a doclet. * @@ -357,6 +365,7 @@ } } } + docPaths = new DocPaths(utils, useModuleDirectories); setCreateOverview(); setTopFile(docEnv); workArounds.initDocLint(doclintOpts.values(), tagletManager.getCustomTagNames(), @@ -406,15 +415,15 @@ topFile = DocPaths.overviewSummary(frames); } else { if (showModules) { - topFile = DocPath.empty.resolve(DocPaths.moduleSummary(modules.first())); + topFile = DocPath.empty.resolve(docPaths.moduleSummary(modules.first())); } else if (packages.size() == 1 && packages.first().isUnnamed()) { List classes = new ArrayList<>(getIncludedTypeElements()); if (!classes.isEmpty()) { TypeElement te = getValidClass(classes); - topFile = DocPath.forClass(utils, te); + topFile = docPaths.forClass(te); } } else if (!packages.isEmpty()) { - topFile = DocPath.forPackage(packages.first()).resolve(DocPaths.PACKAGE_SUMMARY); + topFile = docPaths.forPackage(packages.first()).resolve(DocPaths.PACKAGE_SUMMARY); } } } @@ -837,6 +846,13 @@ } return true; } + }, + new XOption(resources, "--no-module-directories") { + @Override + public boolean process(String option, List args) { + useModuleDirectories = false; + return true; + } } }; Set oset = new TreeSet<>();