8201396: fix broken links generated by javadoc doclet
Reviewed-by: ksrini
This commit is contained in:
parent
6d2a538736
commit
e371d95422
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets
formats/html
toolkit/util
test/langtools/jdk/javadoc/doclet/testModuleDirs
@ -40,6 +40,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
|
||||
|
||||
/**
|
||||
@ -100,8 +101,11 @@ public class ModuleFrameWriter extends HtmlDocletWriter {
|
||||
HtmlTree htmlTree = (configuration.allowTag(HtmlTag.MAIN))
|
||||
? HtmlTree.MAIN()
|
||||
: body;
|
||||
DocPath moduleSummary = configuration.useModuleDirectories
|
||||
? DocPaths.DOT_DOT.resolve(configuration.docPaths.moduleSummary(moduleElement))
|
||||
: configuration.docPaths.moduleSummary(moduleElement);
|
||||
Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, HtmlStyle.bar,
|
||||
mdlgen.links.createLink(configuration.docPaths.moduleSummary(moduleElement), mdlLabel, "", "classFrame"));
|
||||
mdlgen.links.createLink(moduleSummary, mdlLabel, "", "classFrame"));
|
||||
htmlTree.addContent(heading);
|
||||
HtmlTree div = new HtmlTree(HtmlTag.DIV);
|
||||
div.setStyle(HtmlStyle.indexContainer);
|
||||
|
1
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexFrameWriter.java
1
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexFrameWriter.java
@ -36,7 +36,6 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
|
@ -37,7 +37,6 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.toolkit.Content;
|
||||
@ -189,7 +188,10 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all classes link should be added
|
||||
*/
|
||||
protected void addAllClassesLink(Content ul) {
|
||||
Content linkContent = links.createLink(DocPaths.ALLCLASSES_FRAME,
|
||||
DocPath allClassesFrame = configuration.useModuleDirectories
|
||||
? DocPaths.DOT_DOT.resolve(DocPaths.ALLCLASSES_FRAME)
|
||||
: DocPaths.ALLCLASSES_FRAME;
|
||||
Content linkContent = links.createLink(allClassesFrame,
|
||||
contents.allClassesLabel, "", "packageFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
@ -202,7 +204,10 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all packages link should be added
|
||||
*/
|
||||
protected void addAllPackagesLink(Content ul) {
|
||||
Content linkContent = links.createLink(DocPaths.OVERVIEW_FRAME,
|
||||
DocPath overviewFrame = configuration.useModuleDirectories
|
||||
? DocPaths.DOT_DOT.resolve(DocPaths.OVERVIEW_FRAME)
|
||||
: DocPaths.OVERVIEW_FRAME;
|
||||
Content linkContent = links.createLink(overviewFrame,
|
||||
contents.allPackagesLabel, "", "packageListFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
@ -215,7 +220,10 @@ public class ModulePackageIndexFrameWriter extends AbstractModuleIndexWriter {
|
||||
* @param ul the Content object to which the all modules link should be added
|
||||
*/
|
||||
protected void addAllModulesLink(Content ul) {
|
||||
Content linkContent = links.createLink(DocPaths.MODULE_OVERVIEW_FRAME,
|
||||
DocPath moduleOverviewFrame = configuration.useModuleDirectories
|
||||
? DocPaths.DOT_DOT.resolve(DocPaths.MODULE_OVERVIEW_FRAME)
|
||||
: DocPaths.MODULE_OVERVIEW_FRAME;
|
||||
Content linkContent = links.createLink(moduleOverviewFrame,
|
||||
contents.allModulesLabel, "", "packageListFrame");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
ul.addContent(li);
|
||||
|
@ -30,10 +30,6 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.lang.model.element.ModuleElement;
|
||||
import javax.lang.model.element.PackageElement;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
|
||||
/**
|
||||
* Abstraction for immutable relative paths.
|
||||
* Paths always use '/' as a separator, and never begin or end with '/'.
|
||||
|
@ -49,6 +49,8 @@ public class DocPaths {
|
||||
moduleSeparator = useModuleDirectories ? "/module-" : "-";
|
||||
}
|
||||
|
||||
public static final DocPath DOT_DOT = DocPath.create("..");
|
||||
|
||||
/** The name of the file for all classes, without using frames, when --no-frames is specified. */
|
||||
public static final DocPath ALLCLASSES = DocPath.create("allclasses.html");
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8195795
|
||||
* @bug 8195795 8201396
|
||||
* @summary test the use of module directories in output,
|
||||
* and the --no-module-directories option
|
||||
* @modules jdk.javadoc/jdk.javadoc.internal.api
|
||||
@ -71,46 +71,85 @@ public class TestModuleDirs extends JavadocTester {
|
||||
@Test
|
||||
public void testNoModuleDirs(Path base) throws IOException {
|
||||
Path src = base.resolve("src");
|
||||
new ModuleBuilder(tb, "m")
|
||||
.classes("package p; public class A {}")
|
||||
.exports("p")
|
||||
new ModuleBuilder(tb, "ma")
|
||||
.classes("package pa; public class A {}")
|
||||
.exports("pa")
|
||||
.write(src);
|
||||
new ModuleBuilder(tb, "mb")
|
||||
.classes("package pb; public class B {}")
|
||||
.exports("pb")
|
||||
.write(src);
|
||||
|
||||
javadoc("-d", base.resolve("api").toString(),
|
||||
"-quiet",
|
||||
"--module-source-path", src.toString(),
|
||||
"--no-module-directories",
|
||||
"--module", "m");
|
||||
"--module", "ma,mb");
|
||||
|
||||
checkExit(Exit.OK);
|
||||
checkFiles(true,
|
||||
"m-summary.html",
|
||||
"p/package-summary.html");
|
||||
"ma-frame.html",
|
||||
"ma-summary.html",
|
||||
"pa/package-summary.html");
|
||||
checkFiles(false,
|
||||
"m/module-summary.html",
|
||||
"m/p/package-summary.html");
|
||||
"ma/module-frame.html",
|
||||
"ma/module-summary.html",
|
||||
"ma/pa/package-summary.html");
|
||||
checkOutput("ma-frame.html", true,
|
||||
"<ul>\n"
|
||||
+ "<li><a href=\"allclasses-frame.html\" target=\"packageFrame\">All Classes</a></li>\n"
|
||||
+ "<li><a href=\"overview-frame.html\" target=\"packageListFrame\">All Packages</a></li>\n"
|
||||
+ "<li><a href=\"module-overview-frame.html\" target=\"packageListFrame\">All Modules</a></li>\n"
|
||||
+ "</ul>\n");
|
||||
checkOutput("ma-summary.html", true,
|
||||
"<ul class=\"navList\" id=\"allclasses_navbar_top\">\n"
|
||||
+ "<li><a href=\"allclasses-noframe.html\">All Classes</a></li>\n"
|
||||
+ "</ul>\n");
|
||||
checkOutput("pa/package-summary.html", true,
|
||||
"<li><a href=\"../deprecated-list.html\">Deprecated</a></li>\n"
|
||||
+ "<li><a href=\"../index-all.html\">Index</a></li>");
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModuleDirs(Path base) throws IOException {
|
||||
Path src = base.resolve("src");
|
||||
new ModuleBuilder(tb, "m")
|
||||
.classes("package p; public class A {}")
|
||||
.exports("p")
|
||||
new ModuleBuilder(tb, "ma")
|
||||
.classes("package pa; public class A {}")
|
||||
.exports("pa")
|
||||
.write(src);
|
||||
new ModuleBuilder(tb, "mb")
|
||||
.classes("package pb; public class B {}")
|
||||
.exports("pb")
|
||||
.write(src);
|
||||
|
||||
javadoc("-d", base.resolve("api").toString(),
|
||||
"-quiet",
|
||||
"--module-source-path", src.toString(),
|
||||
"--module", "m");
|
||||
"--module", "ma,mb");
|
||||
|
||||
checkExit(Exit.OK);
|
||||
checkFiles(false,
|
||||
"m-summary.html",
|
||||
"p/package-summary.html");
|
||||
"ma-frame.html",
|
||||
"ma-summary.html",
|
||||
"pa/package-summary.html");
|
||||
checkFiles(true,
|
||||
"m/module-summary.html",
|
||||
"m/p/package-summary.html");
|
||||
"ma/module-frame.html",
|
||||
"ma/module-summary.html",
|
||||
"ma/pa/package-summary.html");
|
||||
checkOutput("ma/module-frame.html", true,
|
||||
"<ul>\n"
|
||||
+ "<li><a href=\"../allclasses-frame.html\" target=\"packageFrame\">All Classes</a></li>\n"
|
||||
+ "<li><a href=\"../overview-frame.html\" target=\"packageListFrame\">All Packages</a></li>\n"
|
||||
+ "<li><a href=\"../module-overview-frame.html\" target=\"packageListFrame\">All Modules</a></li>\n"
|
||||
+ "</ul>\n");
|
||||
checkOutput("ma/module-summary.html", true,
|
||||
"<ul class=\"navList\" id=\"allclasses_navbar_top\">\n"
|
||||
+ "<li><a href=\"../allclasses-noframe.html\">All Classes</a></li>\n"
|
||||
+ "</ul>\n");
|
||||
checkOutput("ma/pa/package-summary.html", true,
|
||||
"<li><a href=\"../../deprecated-list.html\">Deprecated</a></li>\n"
|
||||
+ "<li><a href=\"../../index-all.html\">Index</a></li>");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user