8177562: Small updates to module summary page

Reviewed-by: bpatel, ksrini
This commit is contained in:
Jonathan Gibbons 2017-04-04 14:02:03 -07:00
parent 3977b2c530
commit 3fd763e24f
7 changed files with 109 additions and 109 deletions

View File

@ -130,6 +130,7 @@ public class Contents {
public final Content nextPackageLabel;
public final Content noFramesLabel;
public final Content noScriptMessage;
public final Content openModuleLabel;
public final Content overridesLabel;
public final Content overviewLabel;
public final Content packageHierarchies;
@ -244,6 +245,7 @@ public class Contents {
nextPackageLabel = getNonBreakContent("doclet.Next_Package");
noFramesLabel = getNonBreakContent("doclet.No_Frames");
noScriptMessage = getContent("doclet.No_Script_Message");
openModuleLabel = getContent("doclet.Open_Module");
overridesLabel = getContent("doclet.Overrides");
overviewLabel = getContent("doclet.Overview");
packageHierarchies = getContent("doclet.Package_Hierarchies");

View File

@ -98,19 +98,19 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
= new TreeMap<>(utils.makeModuleComparator());
/**
* Map of additional modules and modifiers, transitive closure, required by this module.
* Map of indirect modules and modifiers, transitive closure, required by this module.
*/
private final Map<ModuleElement, Content> additionalModules
private final Map<ModuleElement, Content> indirectModules
= new TreeMap<>(utils.makeModuleComparator());
/**
* Map of packages exported by this module and the modules it's been exported to.
* Map of packages exported by this module and the modules it has been exported to.
*/
private final Map<PackageElement, SortedSet<ModuleElement>> exportedPackages
= new TreeMap<>(utils.makePackageComparator());
/**
* Map of opened packages by this module and the modules it's been opened to.
* Map of opened packages by this module and the modules it has been opened to.
*/
private final Map<PackageElement, SortedSet<ModuleElement>> openedPackages
= new TreeMap<>(utils.makePackageComparator());
@ -121,15 +121,15 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
private final SortedSet<PackageElement> concealedPackages = new TreeSet<>(utils.makePackageComparator());
/**
* Map of additional modules (transitive closure) and its exported packages.
* Map of indirect modules (transitive closure) and their exported packages.
*/
private final Map<ModuleElement, SortedSet<PackageElement>> additionalPackages
private final Map<ModuleElement, SortedSet<PackageElement>> indirectPackages
= new TreeMap<>(utils.makeModuleComparator());
/**
* Map of additional modules (transitive closure) and its open packages.
* Map of indirect modules (transitive closure) and their open packages.
*/
private final Map<ModuleElement, SortedSet<PackageElement>> additionalOpenPackages
private final Map<ModuleElement, SortedSet<PackageElement>> indirectOpenPackages
= new TreeMap<>(utils.makeModuleComparator());
/**
@ -212,8 +212,10 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
Content annotationContent = new HtmlTree(HtmlTag.P);
addAnnotationInfo(mdle, annotationContent);
div.addContent(annotationContent);
Content label = mdle.isOpen() && (configuration.docEnv.getModuleMode() == ModuleMode.ALL)
? contents.openModuleLabel : contents.moduleLabel;
Content tHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
HtmlStyle.title, contents.moduleLabel);
HtmlStyle.title, label);
tHeading.addContent(Contents.SPACE);
Content moduleHead = new RawHtml(heading);
tHeading.addContent(moduleHead);
@ -264,12 +266,12 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
CommentHelper ch = utils.getCommentHelper(mdle);
// Get module dependencies using the module's transitive closure.
Map<ModuleElement, String> dependentModules = utils.getDependentModules(mdle);
// Add all dependent modules to additional modules set. We will remove the modules,
// listed using the requires directive, from this set to come up with the table of additional
// Add all dependent modules to indirect modules set. We will remove the modules,
// listed using the requires directive, from this set to come up with the table of indirect
// required modules.
dependentModules.forEach((module, mod) -> {
if (shouldDocument(module)) {
additionalModules.put(module, new StringContent(mod));
indirectModules.put(module, new StringContent(mod));
}
});
(ElementFilter.requiresIn(mdle.getDirectives())).forEach((directive) -> {
@ -278,11 +280,11 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
if (moduleMode == ModuleMode.ALL || directive.isTransitive()) {
requires.put(m, new StringContent(utils.getModifiers(directive)));
} else {
// For api mode, just keep the public requires in dependentModules for display of
// additional packages in the "Packages" section.
// For api mode, just keep the public requires in dependentModules for display of
// indirect packages in the "Packages" section.
dependentModules.remove(m);
}
additionalModules.remove(m);
}
indirectModules.remove(m);
}
});
@ -320,7 +322,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
mdleList.addAll(targetMdles);
}
// Qualified opens should not be displayed in the api mode. So if mdleList is empty,
// it's opened to all modules and hence can be added.
// it is opened to all modules and hence can be added.
if (moduleMode == ModuleMode.ALL || mdleList.isEmpty()) {
openedPackages.put(p, mdleList);
}
@ -331,7 +333,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
concealedPackages.removeAll(exportedPackages.keySet());
concealedPackages.removeAll(openedPackages.keySet());
// Get all the exported and opened packages, for the transitive closure of the module, to be displayed in
// the additional packages tables.
// the indirect packages tables.
dependentModules.forEach((module, mod) -> {
SortedSet<PackageElement> pkgList = new TreeSet<>(utils.makePackageComparator());
(ElementFilter.exportsIn(module.getDirectives())).forEach((directive) -> {
@ -343,7 +345,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
// If none of the transitive modules have exported packages to be displayed, we should not be
// displaying the table and so it should not be added to the map.
if (!pkgList.isEmpty()) {
additionalPackages.put(module, pkgList);
indirectPackages.put(module, pkgList);
}
SortedSet<PackageElement> openPkgList = new TreeSet<>(utils.makePackageComparator());
(ElementFilter.opensIn(module.getDirectives())).forEach((directive) -> {
@ -355,7 +357,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
// If none of the transitive modules have opened packages to be displayed, we should not be
// displaying the table and so it should not be added to the map.
if (!openPkgList.isEmpty()) {
additionalOpenPackages.put(module, openPkgList);
indirectOpenPackages.put(module, openPkgList);
}
});
// Get all the services listed as uses directive.
@ -471,31 +473,31 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
* {@inheritDoc}
*/
public void addModulesSummary(Content summaryContentTree) {
if (display(requires) || display(additionalModules)) {
if (display(requires) || display(indirectModules)) {
HtmlTree li = new HtmlTree(HtmlTag.LI);
li.addStyle(HtmlStyle.blockList);
addSummaryHeader(HtmlConstants.START_OF_MODULES_SUMMARY, SectionName.MODULES,
contents.navModules, li);
if (display(requires)) {
String text = configuration.getText("doclet.Requires_Summary");
String tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Requires_Summary"),
configuration.getText("doclet.modules"));
String text = configuration.getText("doclet.Requires_Summary");
String tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Requires_Summary"),
configuration.getText("doclet.modules"));
Content table = getTableHeader(text, tableSummary, HtmlStyle.requiresSummary, requiresTableHeader);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addModulesList(requires, tbody);
table.addContent(tbody);
li.addContent(table);
}
// Display additional modules table in both "api" and "all" mode.
if (display(additionalModules)) {
String amrText = configuration.getText("doclet.Additional_Modules_Required_Summary");
// Display indirect modules table in both "api" and "all" mode.
if (display(indirectModules)) {
String amrText = configuration.getText("doclet.Indirect_Requires_Summary");
String amrTableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Additional_Modules_Required_Summary"),
configuration.getText("doclet.Indirect_Requires_Summary"),
configuration.getText("doclet.modules"));
Content amrTable = getTableHeader(amrText, amrTableSummary, HtmlStyle.requiresSummary, requiresTableHeader);
Content amrTbody = new HtmlTree(HtmlTag.TBODY);
addModulesList(additionalModules, amrTbody);
addModulesList(indirectModules, amrTbody);
amrTable.addContent(amrTbody);
li.addContent(amrTable);
}
@ -530,7 +532,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
public void addPackagesSummary(Content summaryContentTree) {
if (display(exportedPackages) || display(openedPackages) || display(concealedPackages)
|| display(additionalPackages) || display(additionalOpenPackages)) {
|| display(indirectPackages) || display(indirectOpenPackages)) {
HtmlTree li = new HtmlTree(HtmlTag.LI);
li.addStyle(HtmlStyle.blockList);
addSummaryHeader(HtmlConstants.START_OF_PACKAGES_SUMMARY, SectionName.PACKAGES,
@ -541,29 +543,29 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
if (display(exportedPackages) || display(openedPackages) || display(concealedPackages)) {
addPackageSummary(tableSummary, li);
}
if (display(additionalPackages)) {
String aepText = configuration.getText("doclet.Additional_Exported_Packages_Summary");
String aepTableSummary = configuration.getText("doclet.Additional_Packages_Table_Summary",
configuration.getText("doclet.Additional_Exported_Packages_Summary"),
if (display(indirectPackages)) {
String aepText = configuration.getText("doclet.Indirect_Exports_Summary");
String aepTableSummary = configuration.getText("doclet.Indirect_Packages_Table_Summary",
configuration.getText("doclet.Indirect_Exports_Summary"),
configuration.getText("doclet.modules"),
configuration.getText("doclet.packages"));
Content aepTable = getTableHeader(aepText, aepTableSummary, HtmlStyle.packagesSummary,
additionalPackagesTableHeader);
indirectPackagesTableHeader);
Content aepTbody = new HtmlTree(HtmlTag.TBODY);
addAdditionalPackages(aepTbody, additionalPackages);
addIndirectPackages(aepTbody, indirectPackages);
aepTable.addContent(aepTbody);
li.addContent(aepTable);
}
if (display(additionalOpenPackages)) {
String aopText = configuration.getText("doclet.Additional_Opened_Packages_Summary");
String aopTableSummary = configuration.getText("doclet.Additional_Packages_Table_Summary",
configuration.getText("doclet.Additional_Opened_Packages_Summary"),
if (display(indirectOpenPackages)) {
String aopText = configuration.getText("doclet.Indirect_Opens_Summary");
String aopTableSummary = configuration.getText("doclet.Indirect_Packages_Table_Summary",
configuration.getText("doclet.Indirect_Opens_Summary"),
configuration.getText("doclet.modules"),
configuration.getText("doclet.packages"));
Content aopTable = getTableHeader(aopText, aopTableSummary, HtmlStyle.packagesSummary,
additionalPackagesTableHeader);
indirectPackagesTableHeader);
Content aopTbody = new HtmlTree(HtmlTag.TBODY);
addAdditionalPackages(aopTbody, additionalOpenPackages);
addIndirectPackages(aopTbody, indirectOpenPackages);
aopTable.addContent(aopTbody);
li.addContent(aopTable);
}
@ -734,14 +736,14 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
}
/**
* Add the additional packages for the module being documented.
* Add the indirect packages for the module being documented.
*
* @param tbody the content tree to which the table will be added
* @param ap additional packages to be added
* @param ip indirect packages to be added
*/
public void addAdditionalPackages(Content tbody, Map<ModuleElement, SortedSet<PackageElement>> ap) {
public void addIndirectPackages(Content tbody, Map<ModuleElement, SortedSet<PackageElement>> ip) {
boolean altColor = true;
for (Map.Entry<ModuleElement, SortedSet<PackageElement>> entry : ap.entrySet()) {
for (Map.Entry<ModuleElement, SortedSet<PackageElement>> entry : ip.entrySet()) {
ModuleElement m = entry.getKey();
SortedSet<PackageElement> pkgList = entry.getValue();
Content moduleLinkContent = getModuleLink(m, new StringContent(m.getQualifiedName()));
@ -773,19 +775,6 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
contents.navServices, li);
String text;
String tableSummary;
if (display(uses)) {
text = configuration.getText("doclet.Uses_Summary");
tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Uses_Summary"),
configuration.getText("doclet.types"));
Content table = getTableHeader(text, tableSummary, HtmlStyle.usesSummary, usesTableHeader);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addUsesList(tbody);
if (!tbody.isEmpty()) {
table.addContent(tbody);
li.addContent(table);
}
}
if (display(provides)) {
text = configuration.getText("doclet.Provides_Summary");
tableSummary = configuration.getText("doclet.Member_Table_Summary",
@ -799,6 +788,19 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
li.addContent(table);
}
}
if (display(uses)) {
text = configuration.getText("doclet.Uses_Summary");
tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Uses_Summary"),
configuration.getText("doclet.types"));
Content table = getTableHeader(text, tableSummary, HtmlStyle.usesSummary, usesTableHeader);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addUsesList(tbody);
if (!tbody.isEmpty()) {
table.addContent(tbody);
li.addContent(table);
}
}
HtmlTree ul = HtmlTree.UL(HtmlStyle.blockList, li);
summaryContentTree.addContent(ul);
}
@ -975,12 +977,12 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
? getHyperLink(SectionName.MODULE_DESCRIPTION, contents.navModuleDescription)
: contents.navModuleDescription);
addNavGap(liNav);
liNav.addContent((display(requires) || display(additionalModules))
liNav.addContent((display(requires) || display(indirectModules))
? getHyperLink(SectionName.MODULES, contents.navModules)
: contents.navModules);
addNavGap(liNav);
liNav.addContent((display(exportedPackages) || display(openedPackages) || display(concealedPackages)
|| display(additionalPackages) || display(additionalOpenPackages))
|| display(indirectPackages) || display(indirectOpenPackages))
? getHyperLink(SectionName.PACKAGES, contents.navPackages)
: contents.navPackages);
addNavGap(liNav);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -36,7 +36,6 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
import jdk.javadoc.internal.doclets.toolkit.util.ModulePackageTypes;
import jdk.javadoc.internal.doclets.toolkit.util.TableTabTypes;
@ -88,7 +87,7 @@ public class HtmlWriter {
/**
* Header for tables displaying modules and exported packages.
*/
protected final List<String> additionalPackagesTableHeader;
protected final List<String> indirectPackagesTableHeader;
/**
* Header for tables displaying types and description.
@ -136,18 +135,18 @@ public class HtmlWriter {
packageTableHeader.add(resources.getText("doclet.Package"));
packageTableHeader.add(resources.getText("doclet.Description"));
requiresTableHeader = new ArrayList<>();
requiresTableHeader.add(resources.getText("doclet.Modifier"));
requiresTableHeader.add(resources.getText("doclet.Modifier"));
requiresTableHeader.add(resources.getText("doclet.Module"));
requiresTableHeader.add(resources.getText("doclet.Description"));
exportedPackagesTableHeader = new ArrayList<>();
exportedPackagesTableHeader.add(resources.getText("doclet.Package"));
if (configuration.docEnv.getModuleMode() == ModuleMode.ALL) {
exportedPackagesTableHeader.add(resources.getText("doclet.Module"));
exportedPackagesTableHeader.add(resources.getText("doclet.Module"));
}
exportedPackagesTableHeader.add(resources.getText("doclet.Description"));
additionalPackagesTableHeader = new ArrayList<>();
additionalPackagesTableHeader.add(resources.getText("doclet.Module"));
additionalPackagesTableHeader.add(resources.getText("doclet.Packages"));
indirectPackagesTableHeader = new ArrayList<>();
indirectPackagesTableHeader.add(resources.getText("doclet.From"));
indirectPackagesTableHeader.add(resources.getText("doclet.Packages"));
usesTableHeader = new ArrayList<>();
usesTableHeader.add(resources.getText("doclet.Type"));
usesTableHeader.add(resources.getText("doclet.Description"));

View File

@ -6,6 +6,7 @@ doclet.Window_Overview_Summary=Overview
doclet.Element=Element
doclet.Package=Package
doclet.Module=Module
doclet.Open_Module=Open Module
doclet.All_Packages=All Packages
doclet.All_Modules=All Modules
doclet.None=None

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -33,8 +33,8 @@
<ModuleDescription/>
<ModuleTags/>
<Summary>
<ModulesSummary/>
<PackagesSummary/>
<ModulesSummary/>
<ServicesSummary/>
</Summary>
</Content>

View File

@ -86,12 +86,13 @@ doclet.tag_misuse=Tag {0} cannot be used in {1} documentation. It can only be u
doclet.javafx_tag_misuse=Tags @propertyGetter, @propertySetter and @propertyDescription can only be used in JavaFX properties getters and setters.
doclet.Package_Summary=Package Summary
doclet.Requires_Summary=Requires
doclet.Additional_Modules_Required_Summary=Additional Modules Required
doclet.Additional_Exported_Packages_Summary=Additional Exported Packages
doclet.Additional_Opened_Packages_Summary=Additional Opened Packages
doclet.Exported_Packages_Summary=Exported Packages
doclet.Opened_Packages_Summary=Opened Packages
doclet.Concealed_Packages_Summary=Concealed Packages
doclet.Indirect_Requires_Summary=Indirect Requires
doclet.Indirect_Exports_Summary=Indirect Exports
doclet.Indirect_Opens_Summary=Indirect Opens
doclet.Exported_Packages_Summary=Exports
doclet.Opened_Packages_Summary=Opens
doclet.Concealed_Packages_Summary=Concealed
doclet.From=From
doclet.Packages_Summary=Packages
doclet.Uses_Summary=Uses
doclet.Provides_Summary=Provides
@ -160,7 +161,7 @@ doclet.Property_Detail=Property Detail
doclet.Method_Detail=Method Detail
doclet.Constructor_Detail=Constructor Detail
doclet.Deprecated=Deprecated.
doclet.DeprecatedForRemoval=Deprecated, for removal: This API element is subject to removal in a future version.
doclet.DeprecatedForRemoval=Deprecated, for removal: This API element is subject to removal in a future version.
doclet.Hidden=Hidden
doclet.Groupname_already_used=In -group option, groupname already used: {0}
doclet.value_tag_invalid_reference={0} (referenced by @value tag) is an unknown reference.
@ -171,7 +172,7 @@ doclet.in={0} in {1}
doclet.Use_Table_Summary=Use table, listing {0}, and an explanation
doclet.Constants_Table_Summary={0} table, listing constant fields, and values
doclet.Member_Table_Summary={0} table, listing {1}, and an explanation
doclet.Additional_Packages_Table_Summary={0} table, listing {1}, and {2}
doclet.Indirect_Packages_Table_Summary={0} table, listing {1}, and {2}
doclet.fields=fields
doclet.Fields=Fields
doclet.properties=properties

View File

@ -24,7 +24,7 @@
/*
* @test
* @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
* 8168766 8168688 8162674 8160196 8175799 8174974 8176778
* 8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562
* @summary Test modules support in javadoc.
* @author bpatel
* @library ../lib
@ -311,7 +311,7 @@ public class TestModules extends JavadocTester {
+ "<li class=\"blockList\">\n"
+ "<ul class=\"blockList\">\n"
+ "<li class=\"blockList\">\n"
+ "<!-- ============ MODULES SUMMARY =========== -->");
+ "<!-- ============ PACKAGES SUMMARY =========== -->");
checkOutput("moduleB-summary.html", found,
"<div class=\"contentContainer\">\n"
+ "<ul class=\"blockList\">\n"
@ -372,7 +372,7 @@ public class TestModules extends JavadocTester {
+ "<li class=\"blockList\">\n"
+ "<ul class=\"blockList\">\n"
+ "<li class=\"blockList\">\n"
+ "<!-- ============ MODULES SUMMARY =========== -->");
+ "<!-- ============ PACKAGES SUMMARY =========== -->");
checkOutput("moduleB-summary.html", found,
"<div class=\"contentContainer\">\n"
+ "<ul class=\"blockList\">\n"
@ -595,7 +595,7 @@ public class TestModules extends JavadocTester {
+ "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterface2InModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterface2InModuleB</a></th>\n"
+ "<td class=\"colLast\">&nbsp;</td>\n"
+ "</tr>",
"<caption><span>Opened Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
"<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<tr>\n"
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
@ -730,17 +730,12 @@ public class TestModules extends JavadocTester {
checkOutput("moduleA-summary.html", true,
"<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a href=\"#modules.summary\">"
+ "Modules</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;Services</li>",
"<td class=\"colFirst\">transitive</td>\n"
+ "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
+ "<td class=\"colLast\">\n"
+ "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
+ "</td>",
"<table class=\"packagesSummary\" summary=\"Additional Exported Packages table, listing modules, and packages\">\n"
+ "<caption><span>Additional Exported Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>",
"<table class=\"packagesSummary\" summary=\"Additional Opened Packages table, listing modules, and packages\">\n"
+ "<caption><span>Additional Opened Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
"<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
+ "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
"<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n"
+ "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<tr>\n"
+ "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
+ "<th class=\"colFirst\" scope=\"col\">From</th>\n"
+ "<th class=\"colLast\" scope=\"col\">Packages</th>\n"
+ "</tr>\n",
"<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
@ -751,15 +746,15 @@ public class TestModules extends JavadocTester {
checkOutput("moduletags-summary.html", true,
"<li><a href=\"#module.description\">Description</a>&nbsp;|&nbsp;<a href=\"#modules.summary\">Modules"
+ "</a>&nbsp;|&nbsp;<a href=\"#packages.summary\">Packages</a>&nbsp;|&nbsp;Services</li>",
"<table class=\"requiresSummary\" summary=\"Additional Modules Required table, listing modules, and an explanation\">\n"
+ "<caption><span>Additional Modules Required</span><span class=\"tabEnd\">&nbsp;</span></caption>",
"<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
+ "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>",
"<td class=\"colFirst\">transitive</td>\n"
+ "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
+ "<td class=\"colLast\">\n"
+ "<div class=\"block\">This is a test description for the moduleB module.</div>\n"
+ "</td>",
"<table class=\"packagesSummary\" summary=\"Additional Exported Packages table, listing modules, and packages\">\n"
+ "<caption><span>Additional Exported Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>",
"<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n"
+ "<caption><span>Indirect Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>",
"<td class=\"colFirst\">transitive static</td>\n"
+ "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n"
+ "<td class=\"colLast\">\n"
@ -771,16 +766,16 @@ public class TestModules extends JavadocTester {
+ "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
+ "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
+ "<th class=\"colLast\" scope=\"col\">Description</th>",
"<table class=\"requiresSummary\" summary=\"Additional Modules Required table, listing modules, and an explanation\">\n"
+ "<caption><span>Additional Modules Required</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
"<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n"
+ "<caption><span>Indirect Requires</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<tr>\n"
+ "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n"
+ "<th class=\"colSecond\" scope=\"col\">Module</th>\n"
+ "<th class=\"colLast\" scope=\"col\">Description</th>",
"<table class=\"packagesSummary\" summary=\"Additional Opened Packages table, listing modules, and packages\">\n"
+ "<caption><span>Additional Opened Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
"<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n"
+ "<caption><span>Indirect Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<tr>\n"
+ "<th class=\"colFirst\" scope=\"col\">Module</th>\n"
+ "<th class=\"colFirst\" scope=\"col\">From</th>\n"
+ "<th class=\"colLast\" scope=\"col\">Packages</th>\n"
+ "</tr>\n",
"<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n"
@ -797,7 +792,7 @@ public class TestModules extends JavadocTester {
"<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n"
+ "<td class=\"colLast\">&nbsp;</td>",
"<table class=\"packagesSummary\" summary=\"Packages table, listing packages, and an explanation\">\n"
+ "<caption><span>Opened Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<caption><span>Opens</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<tr>\n"
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
@ -830,9 +825,9 @@ public class TestModules extends JavadocTester {
+ "<td class=\"colSecond\">All Modules</td>\n"
+ "<td class=\"colLast\">&nbsp;</td>",
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;</span></span>"
+ "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(1);\">Exported Packages</a></span>"
+ "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
+ "<span class=\"tabEnd\">&nbsp;</span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(4);\">"
+ "Concealed Packages</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
+ "Concealed</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>",
"<th class=\"colFirst\" scope=\"row\"><a href=\"concealedpkgmdlA/package-summary.html\">concealedpkgmdlA</a></th>\n"
+ "<td class=\"colSecond\">None</td>\n"
+ "<td class=\"colLast\">&nbsp;</td>");
@ -854,10 +849,10 @@ public class TestModules extends JavadocTester {
+ "<td class=\"colLast\">&nbsp;<br>(<span class=\"implementationLabel\">Implementation(s):</span>&nbsp;<a href=\"testpkgmdlB/TestClassInModuleB.html\" "
+ "title=\"class in testpkgmdlB\">TestClassInModuleB</a>)</td>",
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t1\" class=\"tableTab\"><span>"
+ "<a href=\"javascript:showPkgs(1);\">Exported Packages</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span>"
+ "<a href=\"javascript:showPkgs(2);\">Opened Packages</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>");
+ "<a href=\"javascript:showPkgs(1);\">Exports</a></span><span class=\"tabEnd\">&nbsp;</span></span><span id=\"t2\" class=\"tableTab\"><span>"
+ "<a href=\"javascript:showPkgs(2);\">Opens</a></span><span class=\"tabEnd\">&nbsp;</span></span></caption>");
checkOutput("moduleC-summary.html", found,
"<caption><span>Exported Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
"<caption><span>Exports</span><span class=\"tabEnd\">&nbsp;</span></caption>\n"
+ "<tr>\n"
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
+ "<th class=\"colSecond\" scope=\"col\">Module</th>\n"