8196201: Generate pages to list all classes and all packages in javadoc output
Reviewed-by: jjg
This commit is contained in:
parent
e8cf273121
commit
7c66a1d6a2
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2018, 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
|
||||
@ -437,8 +437,20 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
createSearchIndexFile(DocPaths.MODULE_SEARCH_INDEX_JSON, DocPaths.MODULE_SEARCH_INDEX_ZIP,
|
||||
DocPaths.MODULE_SEARCH_INDEX_JS, configuration.moduleSearchIndex, "moduleSearchIndex");
|
||||
}
|
||||
if (!configuration.packages.isEmpty()) {
|
||||
SearchIndexItem si = new SearchIndexItem();
|
||||
si.setCategory(resources.getText("doclet.Packages"));
|
||||
si.setLabel(configuration.getText("doclet.All_Packages"));
|
||||
si.setUrl(DocPaths.ALLPACKAGES_INDEX.getPath());
|
||||
configuration.packageSearchIndex.add(si);
|
||||
}
|
||||
createSearchIndexFile(DocPaths.PACKAGE_SEARCH_INDEX_JSON, DocPaths.PACKAGE_SEARCH_INDEX_ZIP,
|
||||
DocPaths.PACKAGE_SEARCH_INDEX_JS, configuration.packageSearchIndex, "packageSearchIndex");
|
||||
SearchIndexItem si = new SearchIndexItem();
|
||||
si.setCategory(resources.getText("doclet.Types"));
|
||||
si.setLabel(configuration.getText("doclet.All_Classes"));
|
||||
si.setUrl(DocPaths.ALLCLASSES_INDEX.getPath());
|
||||
configuration.typeSearchIndex.add(si);
|
||||
createSearchIndexFile(DocPaths.TYPE_SEARCH_INDEX_JSON, DocPaths.TYPE_SEARCH_INDEX_ZIP,
|
||||
DocPaths.TYPE_SEARCH_INDEX_JS, configuration.typeSearchIndex, "typeSearchIndex");
|
||||
createSearchIndexFile(DocPaths.MEMBER_SEARCH_INDEX_JSON, DocPaths.MEMBER_SEARCH_INDEX_ZIP,
|
||||
|
@ -0,0 +1,207 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 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
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
package jdk.javadoc.internal.doclets.formats.html;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.TypeElement;
|
||||
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
|
||||
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.Navigation;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
|
||||
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;
|
||||
import jdk.javadoc.internal.doclets.toolkit.util.IndexBuilder;
|
||||
|
||||
/**
|
||||
* Generate the file with list of all the classes in this run.
|
||||
*/
|
||||
public class AllClassesIndexWriter extends HtmlDocletWriter {
|
||||
|
||||
/**
|
||||
* Index of all the classes.
|
||||
*/
|
||||
protected IndexBuilder indexbuilder;
|
||||
|
||||
/**
|
||||
* The HTML tree for main tag.
|
||||
*/
|
||||
protected HtmlTree mainTree = HtmlTree.MAIN();
|
||||
|
||||
private final Navigation navBar;
|
||||
|
||||
/**
|
||||
* Construct AllClassesFrameWriter object. Also initializes the indexbuilder variable in this
|
||||
* class.
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @param filename Path to the file which is getting generated.
|
||||
* @param indexbuilder Unicode based Index from {@link IndexBuilder}
|
||||
*/
|
||||
public AllClassesIndexWriter(HtmlConfiguration configuration,
|
||||
DocPath filename, IndexBuilder indexbuilder) {
|
||||
super(configuration, filename);
|
||||
this.indexbuilder = indexbuilder;
|
||||
this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.ALLCLASSES, path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create AllClassesIndexWriter object.
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @param indexBuilder IndexBuilder object for all classes index.
|
||||
* @throws DocFileIOException
|
||||
*/
|
||||
public static void generate(HtmlConfiguration configuration,
|
||||
IndexBuilder indexBuilder) throws DocFileIOException {
|
||||
generate(configuration, indexBuilder, DocPaths.ALLCLASSES_INDEX);
|
||||
}
|
||||
|
||||
private static void generate(HtmlConfiguration configuration, IndexBuilder indexBuilder,
|
||||
DocPath fileName) throws DocFileIOException {
|
||||
AllClassesIndexWriter allClassGen = new AllClassesIndexWriter(configuration,
|
||||
fileName, indexBuilder);
|
||||
allClassGen.buildAllClassesFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Print all the classes in the file.
|
||||
*/
|
||||
protected void buildAllClassesFile() throws DocFileIOException {
|
||||
String label = configuration.getText("doclet.All_Classes");
|
||||
HtmlTree bodyTree = getBody(true, getWindowTitle(label));
|
||||
HtmlTree htmlTree = (configuration.allowTag(HtmlTag.HEADER))
|
||||
? HtmlTree.HEADER()
|
||||
: bodyTree;
|
||||
addTop(htmlTree);
|
||||
navBar.setUserHeader(getUserHeaderFooter(true));
|
||||
htmlTree.addContent(navBar.getContent(true));
|
||||
if (configuration.allowTag(HtmlTag.HEADER)) {
|
||||
bodyTree.addContent(htmlTree);
|
||||
}
|
||||
Content allClassesContent = new ContentBuilder();
|
||||
addContents(allClassesContent);
|
||||
if (configuration.allowTag(HtmlTag.MAIN)) {
|
||||
mainTree.addContent(allClassesContent);
|
||||
bodyTree.addContent(mainTree);
|
||||
} else {
|
||||
bodyTree.addContent(allClassesContent);
|
||||
}
|
||||
Content tree = (configuration.allowTag(HtmlTag.FOOTER))
|
||||
? HtmlTree.FOOTER()
|
||||
: bodyTree;
|
||||
navBar.setUserFooter(getUserHeaderFooter(false));
|
||||
tree.addContent(navBar.getContent(false));
|
||||
addBottom(tree);
|
||||
if (configuration.allowTag(HtmlTag.FOOTER)) {
|
||||
bodyTree.addContent(tree);
|
||||
}
|
||||
printHtmlDocument(null, true, bodyTree);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add all types to the content tree.
|
||||
*
|
||||
* @param content HtmlTree content to which the links will be added
|
||||
*/
|
||||
protected void addContents(Content content) {
|
||||
Table table = new Table(configuration.htmlVersion, HtmlStyle.typeSummary)
|
||||
.setSummary(resources.classTableSummary)
|
||||
.setHeader(new TableHeader(contents.classLabel, contents.descriptionLabel))
|
||||
.setRowScopeColumn(1)
|
||||
.setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast)
|
||||
.setDefaultTab(resources.getText("doclet.All_Classes"))
|
||||
.addTab(resources.interfaceSummary, utils::isInterface)
|
||||
.addTab(resources.classSummary, e -> utils.isOrdinaryClass((TypeElement)e))
|
||||
.addTab(resources.enumSummary, utils::isEnum)
|
||||
.addTab(resources.exceptionSummary, e -> utils.isException((TypeElement)e))
|
||||
.addTab(resources.errorSummary, e -> utils.isError((TypeElement)e))
|
||||
.addTab(resources.annotationTypeSummary, utils::isAnnotationType)
|
||||
.setTabScript(i -> "show(" + i + ");")
|
||||
.setUseTBody(false)
|
||||
.setPutIdFirst(true);
|
||||
for (Character unicode : indexbuilder.index()) {
|
||||
for (Element element : indexbuilder.getMemberList(unicode)) {
|
||||
TypeElement typeElement = (TypeElement) element;
|
||||
if (!utils.isCoreClass(typeElement)) {
|
||||
continue;
|
||||
}
|
||||
addTableRow(table, typeElement);
|
||||
}
|
||||
}
|
||||
Content titleContent = contents.allClassesLabel;
|
||||
Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
|
||||
HtmlStyle.title, titleContent);
|
||||
Content headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading);
|
||||
content.addContent(headerDiv);
|
||||
if (!table.isEmpty()) {
|
||||
HtmlTree li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
|
||||
HtmlTree ul = HtmlTree.UL(HtmlStyle.blockList, li);
|
||||
HtmlTree div = new HtmlTree(HtmlTag.DIV);
|
||||
div.setStyle(HtmlStyle.allClassesContainer);
|
||||
div.addContent(ul);
|
||||
content.addContent(div);
|
||||
if (table.needsScript()) {
|
||||
getMainBodyScript().append(table.getScript());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add table row.
|
||||
*
|
||||
* @param table the table to which the row will be added
|
||||
* @param klass the type to be added to the table
|
||||
*/
|
||||
protected void addTableRow(Table table, TypeElement klass) {
|
||||
List<Content> rowContents = new ArrayList<>();
|
||||
Content classLink = getLink(new LinkInfoImpl(
|
||||
configuration, LinkInfoImpl.Kind.INDEX, klass));
|
||||
ContentBuilder description = new ContentBuilder();
|
||||
if (utils.isDeprecated(klass)) {
|
||||
description.addContent(getDeprecatedPhrase(klass));
|
||||
List<? extends DocTree> tags = utils.getDeprecatedTrees(klass);
|
||||
if (!tags.isEmpty()) {
|
||||
addSummaryDeprecatedComment(klass, tags.get(0), description);
|
||||
}
|
||||
} else {
|
||||
addSummaryComment(klass, description);
|
||||
}
|
||||
rowContents.add(classLink);
|
||||
rowContents.add(description);
|
||||
table.addRow(klass, rowContents);
|
||||
}
|
||||
}
|
@ -0,0 +1,146 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 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
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
package jdk.javadoc.internal.doclets.formats.html;
|
||||
|
||||
import javax.lang.model.element.PackageElement;
|
||||
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
|
||||
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.Navigation;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
|
||||
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
|
||||
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;
|
||||
|
||||
/**
|
||||
* Generate the file with list of all the packages in this run.
|
||||
*/
|
||||
public class AllPackagesIndexWriter extends HtmlDocletWriter {
|
||||
|
||||
/**
|
||||
* The HTML tree for main tag.
|
||||
*/
|
||||
protected HtmlTree mainTree = HtmlTree.MAIN();
|
||||
|
||||
private final Navigation navBar;
|
||||
|
||||
/**
|
||||
* Construct AllPackagesIndexWriter object.
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @param filename Path to the file which is getting generated.
|
||||
*/
|
||||
public AllPackagesIndexWriter(HtmlConfiguration configuration, DocPath filename) {
|
||||
super(configuration, filename);
|
||||
this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.ALLPACKAGES, path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create AllPackagesIndexWriter object.
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @throws DocFileIOException
|
||||
*/
|
||||
public static void generate(HtmlConfiguration configuration) throws DocFileIOException {
|
||||
generate(configuration, DocPaths.ALLPACKAGES_INDEX);
|
||||
}
|
||||
|
||||
private static void generate(HtmlConfiguration configuration, DocPath fileName) throws DocFileIOException {
|
||||
AllPackagesIndexWriter allPkgGen = new AllPackagesIndexWriter(configuration, fileName);
|
||||
allPkgGen.buildAllPackagesFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Print all the packages in the file.
|
||||
*/
|
||||
protected void buildAllPackagesFile() throws DocFileIOException {
|
||||
String label = configuration.getText("doclet.All_Packages");
|
||||
HtmlTree bodyTree = getBody(true, getWindowTitle(label));
|
||||
HtmlTree htmlTree = (configuration.allowTag(HtmlTag.HEADER))
|
||||
? HtmlTree.HEADER()
|
||||
: bodyTree;
|
||||
addTop(htmlTree);
|
||||
navBar.setUserHeader(getUserHeaderFooter(true));
|
||||
htmlTree.addContent(navBar.getContent(true));
|
||||
if (configuration.allowTag(HtmlTag.HEADER)) {
|
||||
bodyTree.addContent(htmlTree);
|
||||
}
|
||||
HtmlTree div = new HtmlTree(HtmlTag.DIV);
|
||||
div.setStyle(HtmlStyle.allPackagesContainer);
|
||||
addPackages(div);
|
||||
Content titleContent = contents.allPackagesLabel;
|
||||
Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
|
||||
HtmlStyle.title, titleContent);
|
||||
Content headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading);
|
||||
if (configuration.allowTag(HtmlTag.MAIN)) {
|
||||
mainTree.addContent(headerDiv);
|
||||
mainTree.addContent(div);
|
||||
bodyTree.addContent(mainTree);
|
||||
} else {
|
||||
bodyTree.addContent(headerDiv);
|
||||
bodyTree.addContent(div);
|
||||
}
|
||||
Content tree = (configuration.allowTag(HtmlTag.FOOTER))
|
||||
? HtmlTree.FOOTER()
|
||||
: bodyTree;
|
||||
navBar.setUserFooter(getUserHeaderFooter(false));
|
||||
tree.addContent(navBar.getContent(false));
|
||||
addBottom(tree);
|
||||
if (configuration.allowTag(HtmlTag.FOOTER)) {
|
||||
bodyTree.addContent(tree);
|
||||
}
|
||||
printHtmlDocument(null, true, bodyTree);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add all the packages to the content tree.
|
||||
*
|
||||
* @param content HtmlTree content to which the links will be added
|
||||
*/
|
||||
protected void addPackages(Content content) {
|
||||
Table table = new Table(configuration.htmlVersion, HtmlStyle.packagesSummary)
|
||||
.setSummary(resources.packageTableSummary)
|
||||
.setCaption(getTableCaption(new StringContent(resources.packageSummary)))
|
||||
.setHeader(new TableHeader(contents.packageLabel, contents.descriptionLabel))
|
||||
.setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast);
|
||||
for (PackageElement pkg : configuration.packages) {
|
||||
if (!(configuration.nodeprecated && utils.isDeprecated(pkg))) {
|
||||
Content packageLinkContent = getPackageLink(pkg, getPackageName(pkg));
|
||||
Content summaryContent = new ContentBuilder();
|
||||
addSummaryComment(pkg, summaryContent);
|
||||
table.addRow(pkg, packageLinkContent, summaryContent);
|
||||
}
|
||||
}
|
||||
HtmlTree li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
|
||||
content.addContent(HtmlTree.UL(HtmlStyle.blockList, li));
|
||||
}
|
||||
}
|
@ -146,6 +146,11 @@ public class HtmlDoclet extends AbstractDoclet {
|
||||
} else {
|
||||
SingleIndexWriter.generate(configuration, indexbuilder);
|
||||
}
|
||||
AllClassesIndexWriter.generate(configuration,
|
||||
new IndexBuilder(configuration, nodeprecated, true));
|
||||
if (!configuration.packages.isEmpty()) {
|
||||
AllPackagesIndexWriter.generate(configuration);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(configuration.nodeprecatedlist || nodeprecated)) {
|
||||
|
@ -266,7 +266,6 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
.addTab(resources.getText("doclet.Default_Methods"), utils::isDefault)
|
||||
.addTab(resources.getText("doclet.Deprecated_Methods"),
|
||||
e -> utils.isDeprecated(e) || utils.isDeprecated(typeElement))
|
||||
.setTabScriptVariable("methods")
|
||||
.setTabScript(i -> "show(" + i + ");")
|
||||
.setUseTBody(false)
|
||||
.setPutIdFirst(true);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2018, 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
|
||||
@ -131,8 +131,7 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
|
||||
.setHeader(header)
|
||||
.setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast)
|
||||
.setDefaultTab(resources.getText("doclet.All_Modules"))
|
||||
.setTabScriptVariable("groups")
|
||||
.setTabScript(i -> "showGroups(" + i + ");")
|
||||
.setTabScript(i -> "show(" + i + ");")
|
||||
.setTabId(i -> (i == 0) ? "t0" : ("t" + (1 << (i - 1))));
|
||||
|
||||
// add the tabs in command-line order
|
||||
|
@ -622,8 +622,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|
||||
.addTab(resources.getText("doclet.Exported_Packages_Summary"), this::isExported)
|
||||
.addTab(resources.getText("doclet.Opened_Packages_Summary"), this::isOpened)
|
||||
.addTab(resources.getText("doclet.Concealed_Packages_Summary"), this::isConcealed)
|
||||
.setTabScript(i -> String.format("showPkgs(%d);", i))
|
||||
.setTabScriptVariable("packages");
|
||||
.setTabScript(i -> String.format("show(%d);", i));
|
||||
|
||||
// Determine whether to show the "Exported To" and "Opened To" columns,
|
||||
// based on whether such columns would provide "useful" info.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2018, 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
|
||||
@ -113,8 +113,7 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
.setHeader(getPackageTableHeader())
|
||||
.setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast)
|
||||
.setDefaultTab(resources.getText("doclet.All_Packages"))
|
||||
.setTabScriptVariable("groups")
|
||||
.setTabScript(i -> "showGroups(" + i + ");")
|
||||
.setTabScript(i -> "show(" + i + ");")
|
||||
.setTabId(i -> (i == 0) ? "t0" : ("t" + (1 << (i - 1))));
|
||||
|
||||
// add the tabs in command-line order
|
||||
|
@ -195,13 +195,9 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
public void addInterfaceSummary(SortedSet<TypeElement> interfaces, Content summaryContentTree) {
|
||||
String label = resources.getText("doclet.Interface_Summary");
|
||||
String tableSummary = resources.getText("doclet.Member_Table_Summary",
|
||||
resources.getText("doclet.Interface_Summary"),
|
||||
resources.getText("doclet.interfaces"));
|
||||
TableHeader tableHeader= new TableHeader(contents.interfaceLabel, contents.descriptionLabel);
|
||||
|
||||
addClassesSummary(interfaces, label, tableSummary, tableHeader, summaryContentTree);
|
||||
addClassesSummary(interfaces, resources.interfaceSummary, resources.interfaceTableSummary,
|
||||
tableHeader, summaryContentTree);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -209,13 +205,9 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
public void addClassSummary(SortedSet<TypeElement> classes, Content summaryContentTree) {
|
||||
String label = resources.getText("doclet.Class_Summary");
|
||||
String tableSummary = resources.getText("doclet.Member_Table_Summary",
|
||||
resources.getText("doclet.Class_Summary"),
|
||||
resources.getText("doclet.classes"));
|
||||
TableHeader tableHeader= new TableHeader(contents.classLabel, contents.descriptionLabel);
|
||||
|
||||
addClassesSummary(classes, label, tableSummary, tableHeader, summaryContentTree);
|
||||
addClassesSummary(classes, resources.classSummary, resources.classTableSummary,
|
||||
tableHeader, summaryContentTree);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -223,13 +215,9 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
public void addEnumSummary(SortedSet<TypeElement> enums, Content summaryContentTree) {
|
||||
String label = resources.getText("doclet.Enum_Summary");
|
||||
String tableSummary = resources.getText("doclet.Member_Table_Summary",
|
||||
resources.getText("doclet.Enum_Summary"),
|
||||
resources.getText("doclet.enums"));
|
||||
TableHeader tableHeader= new TableHeader(contents.enum_, contents.descriptionLabel);
|
||||
|
||||
addClassesSummary(enums, label, tableSummary, tableHeader, summaryContentTree);
|
||||
addClassesSummary(enums, resources.enumSummary, resources.enumTableSummary,
|
||||
tableHeader, summaryContentTree);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -237,13 +225,9 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
public void addExceptionSummary(SortedSet<TypeElement> exceptions, Content summaryContentTree) {
|
||||
String label = resources.getText("doclet.Exception_Summary");
|
||||
String tableSummary = resources.getText("doclet.Member_Table_Summary",
|
||||
resources.getText("doclet.Exception_Summary"),
|
||||
resources.getText("doclet.exceptions"));
|
||||
TableHeader tableHeader= new TableHeader(contents.exception, contents.descriptionLabel);
|
||||
|
||||
addClassesSummary(exceptions, label, tableSummary, tableHeader, summaryContentTree);
|
||||
addClassesSummary(exceptions, resources.exceptionSummary, resources.exceptionTableSummary,
|
||||
tableHeader, summaryContentTree);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -251,13 +235,9 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
public void addErrorSummary(SortedSet<TypeElement> errors, Content summaryContentTree) {
|
||||
String label = resources.getText("doclet.Error_Summary");
|
||||
String tableSummary = resources.getText("doclet.Member_Table_Summary",
|
||||
resources.getText("doclet.Error_Summary"),
|
||||
resources.getText("doclet.errors"));
|
||||
TableHeader tableHeader= new TableHeader(contents.error, contents.descriptionLabel);
|
||||
|
||||
addClassesSummary(errors, label, tableSummary, tableHeader, summaryContentTree);
|
||||
addClassesSummary(errors, resources.errorSummary, resources.errorTableSummary,
|
||||
tableHeader, summaryContentTree);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -265,13 +245,9 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
@Override
|
||||
public void addAnnotationTypeSummary(SortedSet<TypeElement> annoTypes, Content summaryContentTree) {
|
||||
String label = resources.getText("doclet.Annotation_Types_Summary");
|
||||
String tableSummary = resources.getText("doclet.Member_Table_Summary",
|
||||
resources.getText("doclet.Annotation_Types_Summary"),
|
||||
resources.getText("doclet.annotationtypes"));
|
||||
TableHeader tableHeader= new TableHeader(contents.annotationType, contents.descriptionLabel);
|
||||
|
||||
addClassesSummary(annoTypes, label, tableSummary, tableHeader, summaryContentTree);
|
||||
addClassesSummary(annoTypes, resources.annotationTypeSummary, resources.annotationTypeTableSummary,
|
||||
tableHeader, summaryContentTree);
|
||||
}
|
||||
|
||||
public void addClassesSummary(SortedSet<TypeElement> classes, String label,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2018, 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
|
||||
@ -103,13 +103,21 @@ public class SearchIndexItem {
|
||||
if (!containingModule.isEmpty()) {
|
||||
item.append("\"m\":\"").append(containingModule).append("\",");
|
||||
}
|
||||
item.append("\"l\":\"").append(label).append("\"")
|
||||
.append("}");
|
||||
item.append("\"l\":\"").append(label).append("\"");
|
||||
if (!url.equals("")) {
|
||||
item.append(",\"url\":\"").append(url).append("\"");
|
||||
}
|
||||
item.append("}");
|
||||
} else if (category.equals("Types")) {
|
||||
item.append("{")
|
||||
.append("\"p\":\"").append(containingPackage).append("\",")
|
||||
.append("\"l\":\"").append(label).append("\"")
|
||||
.append("}");
|
||||
item.append("{");
|
||||
if (!containingPackage.equals("")) {
|
||||
item.append("\"p\":\"").append(containingPackage).append("\",");
|
||||
}
|
||||
item.append("\"l\":\"").append(label).append("\"");
|
||||
if (!url.equals("")) {
|
||||
item.append(",\"url\":\"").append(url).append("\"");
|
||||
}
|
||||
item.append("}");
|
||||
} else if (category.equals("Members")) {
|
||||
item.append("{")
|
||||
.append("\"p\":\"").append(containingPackage).append("\",")
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2018, 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
|
||||
@ -147,5 +147,13 @@ public class SingleIndexWriter extends AbstractIndexWriter {
|
||||
new StringContent(unicode)));
|
||||
contentTree.addContent(Contents.SPACE);
|
||||
}
|
||||
contentTree.addContent(new HtmlTree(HtmlTag.BR));
|
||||
contentTree.addContent(links.createLink(DocPaths.ALLCLASSES_INDEX,
|
||||
contents.allClassesLabel));
|
||||
if (!configuration.packages.isEmpty()) {
|
||||
contentTree.addContent(Contents.SPACE);
|
||||
contentTree.addContent(links.createLink(DocPaths.ALLPACKAGES_INDEX,
|
||||
contents.allPackagesLabel));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -167,5 +167,13 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
new StringContent(indexElements.get(i).toString())));
|
||||
contentTree.addContent(Contents.SPACE);
|
||||
}
|
||||
contentTree.addContent(new HtmlTree(HtmlTag.BR));
|
||||
contentTree.addContent(links.createLink(pathToRoot.resolve(DocPaths.ALLCLASSES_INDEX),
|
||||
contents.allClassesLabel));
|
||||
if (!configuration.packages.isEmpty()) {
|
||||
contentTree.addContent(Contents.SPACE);
|
||||
contentTree.addContent(links.createLink(pathToRoot.resolve(DocPaths.ALLPACKAGES_INDEX),
|
||||
contents.allPackagesLabel));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2010, 2018, 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
|
||||
@ -38,6 +38,8 @@ package jdk.javadoc.internal.doclets.formats.html.markup;
|
||||
public enum HtmlStyle {
|
||||
aboutLanguage,
|
||||
activeTableTab,
|
||||
allClassesContainer,
|
||||
allPackagesContainer,
|
||||
altColor,
|
||||
bar,
|
||||
block,
|
||||
|
@ -89,6 +89,8 @@ public class Navigation {
|
||||
+ "//-->\n");
|
||||
|
||||
public enum PageMode {
|
||||
ALLCLASSES,
|
||||
ALLPACKAGES,
|
||||
CLASS,
|
||||
CONSTANTVALUES,
|
||||
DEPRECATED,
|
||||
@ -378,6 +380,8 @@ public class Navigation {
|
||||
addHelpLink(tree);
|
||||
}
|
||||
break;
|
||||
case ALLCLASSES:
|
||||
case ALLPACKAGES:
|
||||
case CONSTANTVALUES:
|
||||
case SERIALIZEDFORM:
|
||||
addOverviewLink(tree);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, 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
|
||||
@ -72,7 +72,6 @@ public class Table {
|
||||
private HtmlStyle tabStyle = HtmlStyle.tableTab;
|
||||
private HtmlStyle tabEnd = HtmlStyle.tabEnd;
|
||||
private IntFunction<String> tabScript;
|
||||
private String tabScriptVariable;
|
||||
private Function<Integer, String> tabId = (i -> "t" + i);
|
||||
private TableHeader header;
|
||||
private List<HtmlStyle> columnStyles;
|
||||
@ -182,17 +181,6 @@ public class Table {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the name of the JavaScript variable used to contain the data for each tab.
|
||||
*
|
||||
* @param name the name
|
||||
* @return this object
|
||||
*/
|
||||
public Table setTabScriptVariable(String name) {
|
||||
tabScriptVariable = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the name of the styles used to display the tabs.
|
||||
*
|
||||
@ -537,7 +525,7 @@ public class Table {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
// Add the variable defining the bitmask for each row
|
||||
sb.append("var ").append(tabScriptVariable).append(" = {");
|
||||
sb.append("var data").append(" = {");
|
||||
int rowIndex = 0;
|
||||
for (int mask : bodyRowMasks) {
|
||||
if (rowIndex > 0) {
|
||||
|
@ -47,15 +47,17 @@ function getURLPrefix(ui) {
|
||||
var slash = "/";
|
||||
if (ui.item.category === catModules) {
|
||||
return ui.item.l + slash;
|
||||
} else if (ui.item.category === catPackages) {
|
||||
} else if (ui.item.category === catPackages && ui.item.m) {
|
||||
return ui.item.m + slash;
|
||||
} else if (ui.item.category === catTypes || ui.item.category === catMembers) {
|
||||
} else if ((ui.item.category === catTypes && ui.item.p) || ui.item.category === catMembers) {
|
||||
$.each(packageSearchIndex, function(index, item) {
|
||||
if (ui.item.p == item.l) {
|
||||
urlPrefix = item.m + slash;
|
||||
}
|
||||
});
|
||||
return urlPrefix;
|
||||
} else {
|
||||
return urlPrefix;
|
||||
}
|
||||
}
|
||||
return urlPrefix;
|
||||
@ -116,7 +118,9 @@ $.widget("custom.catcomplete", $.ui.autocomplete, {
|
||||
? getHighlightedText(item.m + "/" + item.l)
|
||||
: getHighlightedText(item.l);
|
||||
} else if (item.category === catTypes) {
|
||||
label = getHighlightedText(item.p + "." + item.l);
|
||||
label = (item.p)
|
||||
? getHighlightedText(item.p + "." + item.l)
|
||||
: getHighlightedText(item.l);
|
||||
} else if (item.category === catMembers) {
|
||||
label = getHighlightedText(item.p + "." + (item.c + "." + item.l));
|
||||
} else if (item.category === catSearchTags) {
|
||||
@ -306,9 +310,15 @@ $(function() {
|
||||
url = ui.item.l + "-summary.html";
|
||||
}
|
||||
} else if (ui.item.category === catPackages) {
|
||||
if (ui.item.url) {
|
||||
url = ui.item.url;
|
||||
} else {
|
||||
url += ui.item.l.replace(/\./g, '/') + "/package-summary.html";
|
||||
}
|
||||
} else if (ui.item.category === catTypes) {
|
||||
if (ui.item.p === "<Unnamed>") {
|
||||
if (ui.item.url) {
|
||||
url = ui.item.url;
|
||||
} else if (ui.item.p === "<Unnamed>") {
|
||||
url += ui.item.l + ".html";
|
||||
} else {
|
||||
url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html";
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2018, 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
|
||||
@ -39,9 +39,23 @@ import java.util.ResourceBundle;
|
||||
* HTML doclet.
|
||||
*/
|
||||
public class Resources {
|
||||
public final String annotationTypeSummary;
|
||||
public final String annotationTypeTableSummary;
|
||||
public final String classSummary;
|
||||
public final String classTableSummary;
|
||||
private final BaseConfiguration configuration;
|
||||
private final String commonBundleName;
|
||||
private final String docletBundleName;
|
||||
public final String enumSummary;
|
||||
public final String enumTableSummary;
|
||||
public final String errorSummary;
|
||||
public final String errorTableSummary;
|
||||
public final String exceptionSummary;
|
||||
public final String exceptionTableSummary;
|
||||
public final String interfaceSummary;
|
||||
public final String interfaceTableSummary;
|
||||
public final String packageSummary;
|
||||
public final String packageTableSummary;
|
||||
|
||||
protected ResourceBundle commonBundle;
|
||||
protected ResourceBundle docletBundle;
|
||||
@ -62,6 +76,27 @@ public class Resources {
|
||||
this.configuration = configuration;
|
||||
this.commonBundleName = commonBundleName;
|
||||
this.docletBundleName = docletBundleName;
|
||||
this.annotationTypeSummary = getText("doclet.Annotation_Types_Summary");
|
||||
this.annotationTypeTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.annotationTypeSummary, getText("doclet.annotationtypes"));
|
||||
this.classSummary = getText("doclet.Class_Summary");
|
||||
this.classTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.classSummary, getText("doclet.classes"));
|
||||
this.enumSummary = getText("doclet.Enum_Summary");
|
||||
this.enumTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.enumSummary, getText("doclet.enums"));
|
||||
this.errorSummary = getText("doclet.Error_Summary");
|
||||
this.errorTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.errorSummary, getText("doclet.errors"));
|
||||
this.exceptionSummary = getText("doclet.Exception_Summary");
|
||||
this.exceptionTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.exceptionSummary, getText("doclet.exceptions"));
|
||||
this.interfaceSummary = getText("doclet.Interface_Summary");
|
||||
this.interfaceTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.interfaceSummary, getText("doclet.interfaces"));
|
||||
this.packageSummary = getText("doclet.Package_Summary");
|
||||
this.packageTableSummary = getText("doclet.Member_Table_Summary",
|
||||
this.packageSummary, getText("doclet.packages"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2018, 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
|
||||
@ -104,12 +104,11 @@ function createElem(doc, tag, path) {
|
||||
scriptElement.parentNode.insertBefore(script, scriptElement);
|
||||
}
|
||||
|
||||
function show(type)
|
||||
{
|
||||
function show(type) {
|
||||
count = 0;
|
||||
for (var key in methods) {
|
||||
for (var key in data) {
|
||||
var row = document.getElementById(key);
|
||||
if ((methods[key] & type) !== 0) {
|
||||
if ((data[key] & type) !== 0) {
|
||||
row.style.display = '';
|
||||
row.className = (count++ % 2) ? rowColor : altColor;
|
||||
}
|
||||
@ -119,38 +118,7 @@ function show(type)
|
||||
updateTabs(type);
|
||||
}
|
||||
|
||||
function showPkgs(type)
|
||||
{
|
||||
count = 0;
|
||||
for (var key in packages) {
|
||||
var row = document.getElementById(key);
|
||||
if ((packages[key] & type) !== 0) {
|
||||
row.style.display = '';
|
||||
row.className = (count++ % 2) ? rowColor : altColor;
|
||||
}
|
||||
else
|
||||
row.style.display = 'none';
|
||||
}
|
||||
updatePkgsTabs(type);
|
||||
}
|
||||
|
||||
function showGroups(type)
|
||||
{
|
||||
count = 0;
|
||||
for (var key in groups) {
|
||||
var row = document.getElementById(key);
|
||||
if ((groups[key] & type) !== 0) {
|
||||
row.style.display = '';
|
||||
row.className = (count++ % 2) ? rowColor : altColor;
|
||||
}
|
||||
else
|
||||
row.style.display = 'none';
|
||||
}
|
||||
updateGroupsTabs(type);
|
||||
}
|
||||
|
||||
function updateTabs(type)
|
||||
{
|
||||
function updateTabs(type) {
|
||||
for (var value in tabs) {
|
||||
var sNode = document.getElementById(tabs[value][0]);
|
||||
var spanNode = sNode.firstChild;
|
||||
@ -165,40 +133,7 @@ function updateTabs(type)
|
||||
}
|
||||
}
|
||||
|
||||
function updateModuleFrame(pFrame, cFrame)
|
||||
{
|
||||
function updateModuleFrame(pFrame, cFrame) {
|
||||
top.packageFrame.location = pFrame;
|
||||
top.classFrame.location = cFrame;
|
||||
}
|
||||
|
||||
function updatePkgsTabs(type)
|
||||
{
|
||||
for (var value in tabs) {
|
||||
var sNode = document.getElementById(tabs[value][0]);
|
||||
var spanNode = sNode.firstChild;
|
||||
if (value == type) {
|
||||
sNode.className = activeTableTab;
|
||||
spanNode.innerHTML = tabs[value][1];
|
||||
}
|
||||
else {
|
||||
sNode.className = tableTab;
|
||||
spanNode.innerHTML = "<a href=\"javascript:showPkgs(" + value + ");\">" + tabs[value][1] + "</a>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateGroupsTabs(type)
|
||||
{
|
||||
for (var value in tabs) {
|
||||
var sNode = document.getElementById(tabs[value][0]);
|
||||
var spanNode = sNode.firstChild;
|
||||
if (value == type) {
|
||||
sNode.className = activeTableTab;
|
||||
spanNode.innerHTML = tabs[value][1];
|
||||
}
|
||||
else {
|
||||
sNode.className = tableTab;
|
||||
spanNode.innerHTML = "<a href=\"javascript:showGroups(" + value + ");\">" + tabs[value][1] + "</a>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -311,7 +311,8 @@ ul.blockList li.blockList h2 {
|
||||
/*
|
||||
* Styles for page layout containers.
|
||||
*/
|
||||
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
|
||||
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
|
||||
.allClassesContainer, .allPackagesContainer {
|
||||
clear:both;
|
||||
padding:10px 20px;
|
||||
position:relative;
|
||||
@ -480,7 +481,7 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
|
||||
height:16px;
|
||||
}
|
||||
.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
|
||||
.overviewSummary caption span.activeTableTab span {
|
||||
.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
|
||||
white-space:nowrap;
|
||||
padding-top:5px;
|
||||
padding-left:12px;
|
||||
@ -492,7 +493,7 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
|
||||
height:16px;
|
||||
}
|
||||
.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
|
||||
.overviewSummary caption span.tableTab span {
|
||||
.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
|
||||
white-space:nowrap;
|
||||
padding-top:5px;
|
||||
padding-left:12px;
|
||||
@ -505,7 +506,8 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
|
||||
}
|
||||
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
|
||||
.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
|
||||
.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab {
|
||||
.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
|
||||
.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
|
||||
padding-top:0px;
|
||||
padding-left:0px;
|
||||
padding-right:0px;
|
||||
@ -523,7 +525,7 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
|
||||
background-color:#F8981D;
|
||||
}
|
||||
.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
|
||||
.overviewSummary .activeTableTab .tabEnd {
|
||||
.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
|
||||
display:none;
|
||||
width:5px;
|
||||
margin-right:3px;
|
||||
@ -532,7 +534,7 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
|
||||
background-color:#F8981D;
|
||||
}
|
||||
.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
|
||||
.overviewSummary .tableTab .tabEnd {
|
||||
.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
|
||||
display:none;
|
||||
width:5px;
|
||||
margin-right:3px;
|
||||
@ -585,7 +587,7 @@ td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedI
|
||||
.providesSummary td.colFirst, .providesSummary th.colFirst,
|
||||
.memberSummary td.colFirst, .memberSummary th.colFirst,
|
||||
.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
|
||||
.typeSummary td.colFirst {
|
||||
.typeSummary td.colFirst, .typeSummary th.colFirst {
|
||||
vertical-align:top;
|
||||
}
|
||||
.packagesSummary th.colLast, .packagesSummary td.colLast {
|
||||
@ -597,7 +599,9 @@ th.colFirst a:link, th.colFirst a:visited,
|
||||
th.colSecond a:link, th.colSecond a:visited,
|
||||
th.colConstructorName a:link, th.colConstructorName a:visited,
|
||||
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
|
||||
.constantValuesContainer td a:link, .constantValuesContainer td a:visited {
|
||||
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
|
||||
.allClassesContainer td a:link, .allClassesContainer td a:visited,
|
||||
.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
|
||||
font-weight:bold;
|
||||
}
|
||||
.tableSubHeadingColor {
|
||||
|
@ -57,6 +57,12 @@ public class DocPaths {
|
||||
/** The name of the file for all classes, using frames. */
|
||||
public static final DocPath ALLCLASSES_FRAME = DocPath.create("allclasses-frame.html");
|
||||
|
||||
/** The name of the file for all classes index. */
|
||||
public static final DocPath ALLCLASSES_INDEX = DocPath.create("allclasses-index.html");
|
||||
|
||||
/** The name of the file for all packages index. */
|
||||
public static final DocPath ALLPACKAGES_INDEX = DocPath.create("allpackages-index.html");
|
||||
|
||||
/** The name of the file for all classes, without using frames. */
|
||||
public static final DocPath ALLCLASSES_NOFRAME = DocPath.create("allclasses-noframe.html");
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 2018, 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
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8190003
|
||||
* @bug 8190003 8196201
|
||||
* @summary Special characters in group names should be escaped
|
||||
* @library /tools/lib ../lib
|
||||
* @modules jdk.javadoc/jdk.javadoc.internal.tool
|
||||
@ -64,7 +64,7 @@ public class TestGroupName extends JavadocTester {
|
||||
checkExit(Exit.OK);
|
||||
|
||||
checkOutput("overview-summary.html", true,
|
||||
"<span><a href=\"javascript:showGroups(1);\">abc < & > def</a></span>",
|
||||
"<span><a href=\"javascript:show(1);\">abc < & > def</a></span>",
|
||||
",\"abc < & > def\"],");
|
||||
}
|
||||
|
||||
@ -97,7 +97,7 @@ public class TestGroupName extends JavadocTester {
|
||||
checkExit(Exit.OK);
|
||||
|
||||
checkOutput("overview-summary.html", true,
|
||||
"<span><a href=\"javascript:showGroups(1);\">abc < & > def</a></span>",
|
||||
"<span><a href=\"javascript:show(1);\">abc < & > def</a></span>",
|
||||
",\"abc < & > def\"],");
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8002304 8024096 8193671
|
||||
* @bug 8002304 8024096 8193671 8196201
|
||||
* @summary Test for various method type tabs in the method summary table
|
||||
* @author Bhavesh Patel
|
||||
* @library ../lib
|
||||
@ -47,7 +47,7 @@ public class TestMethodTypes extends JavadocTester {
|
||||
checkExit(Exit.OK);
|
||||
|
||||
checkOutput("pkg1/A.html", true,
|
||||
"var methods = {",
|
||||
"var data = {",
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All "
|
||||
+ "Methods</span><span class=\"tabEnd\"> </span></span>"
|
||||
+ "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
|
||||
@ -62,7 +62,7 @@ public class TestMethodTypes extends JavadocTester {
|
||||
"<tr id=\"i0\" class=\"altColor\">");
|
||||
|
||||
checkOutput("pkg1/B.html", true,
|
||||
"var methods = {\"i0\":6,\"i1\":18,\"i2\":18,\"i3\":1,\"i4\":1,"
|
||||
"var data = {\"i0\":6,\"i1\":18,\"i2\":18,\"i3\":1,\"i4\":1,"
|
||||
+ "\"i5\":6,\"i6\":6,\"i7\":6,\"i8\":6};\n",
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Methods</span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span><span id=\"t1\" class=\"tableTab\">"
|
||||
@ -76,7 +76,7 @@ public class TestMethodTypes extends JavadocTester {
|
||||
+ "<span class=\"tabEnd\"> </span></span></caption>\n");
|
||||
|
||||
checkOutput("pkg1/D.html", true,
|
||||
"var methods = {",
|
||||
"var data = {",
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All "
|
||||
+ "Methods</span><span class=\"tabEnd\"> </span></span>"
|
||||
+ "<span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8178070
|
||||
* @bug 8178070 8196201
|
||||
* @summary Test packages table in module summary pages
|
||||
* @library /tools/lib ../lib
|
||||
* @modules jdk.compiler/com.sun.tools.javac.api
|
||||
@ -419,17 +419,17 @@ public class TestModulePackages extends JavadocTester {
|
||||
+ "<span class=\"tabEnd\"> </span></span>");
|
||||
if (kindSet.contains(TabKind.EXPORTS)) {
|
||||
sb.append("<span id=\"t1\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
|
||||
+ "<span><a href=\"javascript:show(1);\">Exports</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span>");
|
||||
}
|
||||
if (kindSet.contains(TabKind.OPENS)) {
|
||||
sb.append("<span id=\"t2\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:showPkgs(2);\">Opens</a></span>"
|
||||
+ "<span><a href=\"javascript:show(2);\">Opens</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span>");
|
||||
}
|
||||
if (kindSet.contains(TabKind.CONCEALED)) {
|
||||
sb.append("<span id=\"t3\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:showPkgs(4);\">Concealed</a></span>"
|
||||
+ "<a href=\"javascript:show(4);\">Concealed</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span>");
|
||||
}
|
||||
sb.append("</caption>");
|
||||
|
@ -26,7 +26,7 @@
|
||||
* @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
|
||||
* 8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218
|
||||
* 8175823 8166306 8178043 8181622 8183511 8169819 8074407 8183037 8191464
|
||||
8164407 8192007 8182765 8196200
|
||||
8164407 8192007 8182765 8196200 8196201
|
||||
* @summary Test modules support in javadoc.
|
||||
* @author bpatel
|
||||
* @library ../lib
|
||||
@ -64,6 +64,7 @@ public class TestModules extends JavadocTester {
|
||||
checkModuleFilesAndLinks(true);
|
||||
checkModulesInSearch(true);
|
||||
checkOverviewFrame(true);
|
||||
checkAllPkgsAllClasses(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -88,6 +89,7 @@ public class TestModules extends JavadocTester {
|
||||
checkModuleFilesAndLinks(true);
|
||||
checkModulesInSearch(true);
|
||||
checkOverviewFrame(true);
|
||||
checkAllPkgsAllClasses(true);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1086,8 +1088,7 @@ public class TestModules extends JavadocTester {
|
||||
+ "onclick=\"updateModuleFrame('moduleB/module-type-frame.html','moduleB/module-summary.html');"
|
||||
+ "\">moduleB</a></li>");
|
||||
checkOutput("script.js", true,
|
||||
"function updateModuleFrame(pFrame, cFrame)\n"
|
||||
+ "{\n"
|
||||
"function updateModuleFrame(pFrame, cFrame) {\n"
|
||||
+ " top.packageFrame.location = pFrame;\n"
|
||||
+ " top.classFrame.location = cFrame;\n"
|
||||
+ "}");
|
||||
@ -1332,8 +1333,8 @@ public class TestModules extends JavadocTester {
|
||||
+ "<td class=\"colSecond\">All Modules</td>\n"
|
||||
+ "<td class=\"colLast\"> </td>",
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\"> </span></span>"
|
||||
+ "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(1);\">Exports</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(4);\">"
|
||||
+ "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">Exports</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
|
||||
+ "Concealed</a></span><span class=\"tabEnd\"> </span></span></caption>",
|
||||
"<th class=\"colFirst\" scope=\"row\"><a href=\"concealedpkgmdlA/package-summary.html\">concealedpkgmdlA</a></th>\n"
|
||||
+ "<td class=\"colSecond\">None</td>\n"
|
||||
@ -1359,8 +1360,8 @@ public class TestModules extends JavadocTester {
|
||||
+ "<td class=\"colLast\"> <br>(<span class=\"implementationLabel\">Implementation(s):</span> <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\"> </span></span><span id=\"t1\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:showPkgs(1);\">Exports</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:showPkgs(2);\">Opens</a></span><span class=\"tabEnd\"> </span></span></caption>");
|
||||
+ "<a href=\"javascript:show(1);\">Exports</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:show(2);\">Opens</a></span><span class=\"tabEnd\"> </span></span></caption>");
|
||||
checkOutput("moduleC/module-summary.html", found,
|
||||
"<caption><span>Exports</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
@ -1444,12 +1445,12 @@ public class TestModules extends JavadocTester {
|
||||
"<div class=\"contentContainer\">\n"
|
||||
+ "<table class=\"overviewSummary\">\n"
|
||||
+ "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span class=\"tabEnd\"> "
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
|
||||
+ "Module Group A</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:showGroups(2);\">Module Group B & C</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:showGroups(4);\">"
|
||||
+ "<span><a href=\"javascript:show(2);\">Module Group B & C</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
|
||||
+ "Other Modules</a></span><span class=\"tabEnd\"> </span></span></caption>",
|
||||
"var groups = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n"
|
||||
"var data = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n"
|
||||
+ "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"Module Group A\"],2:[\"t2\",\"Module Group B & C\"],4:[\"t4\",\"Other Modules\"]};\n"
|
||||
+ "var altColor = \"altColor\";\n"
|
||||
+ "var rowColor = \"rowColor\";\n"
|
||||
@ -1466,12 +1467,12 @@ public class TestModules extends JavadocTester {
|
||||
"<div class=\"contentContainer\">\n"
|
||||
+ "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n"
|
||||
+ "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span class=\"tabEnd\"> "
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
|
||||
+ "Module Group A</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:showGroups(2);\">Module Group B & C</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:showGroups(4);\">"
|
||||
+ "<span><a href=\"javascript:show(2);\">Module Group B & C</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(4);\">"
|
||||
+ "Other Modules</a></span><span class=\"tabEnd\"> </span></span></caption>",
|
||||
"var groups = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n"
|
||||
"var data = {\"i0\":1,\"i1\":2,\"i2\":2,\"i3\":4};\n"
|
||||
+ "var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"Module Group A\"],2:[\"t2\",\"Module Group B & C\"],4:[\"t4\",\"Other Modules\"]};\n"
|
||||
+ "var altColor = \"altColor\";\n"
|
||||
+ "var rowColor = \"rowColor\";\n"
|
||||
@ -1487,22 +1488,22 @@ public class TestModules extends JavadocTester {
|
||||
checkOutput("overview-summary.html", true,
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span "
|
||||
+ "class=\"tabEnd\"> </span></span><span id=\"t1\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:showGroups(1);\">B Group</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:showGroups(2);\">"
|
||||
+ "<a href=\"javascript:show(1);\">B Group</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
|
||||
+ "C Group</a></span><span class=\"tabEnd\"> </span></span><span id=\"t4\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:showGroups(4);\">A Group</a></span><span class=\"tabEnd\"> </span>"
|
||||
+ "</span><span id=\"t8\" class=\"tableTab\"><span><a href=\"javascript:showGroups(8);\">Other Modules"
|
||||
+ "<span><a href=\"javascript:show(4);\">A Group</a></span><span class=\"tabEnd\"> </span>"
|
||||
+ "</span><span id=\"t8\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Other Modules"
|
||||
+ "</a></span><span class=\"tabEnd\"> </span></span></caption>",
|
||||
"var tabs = {65535:[\"t0\",\"All Modules\"],1:[\"t1\",\"B Group\"],2:[\"t2\",\"C Group\"],"
|
||||
+ "4:[\"t4\",\"A Group\"],8:[\"t8\",\"Other Modules\"]};");
|
||||
checkOutput("overview-summary.html", false,
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Modules</span><span "
|
||||
+ "class=\"tabEnd\"> </span></span><span id=\"t1\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:showGroups(1);\">A Group</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:showGroups(2);\">"
|
||||
+ "<a href=\"javascript:show(1);\">A Group</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
|
||||
+ "B Group</a></span><span class=\"tabEnd\"> </span></span><span id=\"t4\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:showGroups(4);\">C Group</a></span><span class=\"tabEnd\"> </span>"
|
||||
+ "</span><span id=\"t8\" class=\"tableTab\"><span><a href=\"javascript:showGroups(8);\">Other Modules"
|
||||
+ "<span><a href=\"javascript:show(4);\">C Group</a></span><span class=\"tabEnd\"> </span>"
|
||||
+ "</span><span id=\"t8\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">Other Modules"
|
||||
+ "</a></span><span class=\"tabEnd\"> </span></span></caption>",
|
||||
"Java SE Modules");
|
||||
}
|
||||
@ -1515,11 +1516,11 @@ public class TestModules extends JavadocTester {
|
||||
+ "<div class=\"contentContainer\">\n"
|
||||
+ "<table class=\"overviewSummary\">\n"
|
||||
+ "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\"> "
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
|
||||
+ "Package Group 0</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" "
|
||||
+ "class=\"tableTab\"><span><a href=\"javascript:showGroups(2);\">Package Group 1</a></span>"
|
||||
+ "class=\"tableTab\"><span><a href=\"javascript:show(2);\">Package Group 1</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span></caption>",
|
||||
"var groups = {\"i0\":1,\"i1\":2};\n"
|
||||
"var data = {\"i0\":1,\"i1\":2};\n"
|
||||
+ "var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Package Group 0\"],2:[\"t2\",\"Package Group 1\"]};\n"
|
||||
+ "var altColor = \"altColor\";\n"
|
||||
+ "var rowColor = \"rowColor\";\n"
|
||||
@ -1535,9 +1536,9 @@ public class TestModules extends JavadocTester {
|
||||
+ "<div class=\"contentContainer\">\n"
|
||||
+ "<table class=\"overviewSummary\" summary=\"Package Summary table, listing packages, and an explanation\">\n"
|
||||
+ "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\"> "
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showGroups(1);\">"
|
||||
+ "</span></span><span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:show(1);\">"
|
||||
+ "Package Group 0</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" "
|
||||
+ "class=\"tableTab\"><span><a href=\"javascript:showGroups(2);\">Package Group 1</a></span>"
|
||||
+ "class=\"tableTab\"><span><a href=\"javascript:show(2);\">Package Group 1</a></span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span></caption>");
|
||||
}
|
||||
|
||||
@ -1545,8 +1546,8 @@ public class TestModules extends JavadocTester {
|
||||
checkOutput("overview-summary.html", true,
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span "
|
||||
+ "class=\"tabEnd\"> </span></span><span id=\"t1\" class=\"tableTab\"><span>"
|
||||
+ "<a href=\"javascript:showGroups(1);\">Z Group</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:showGroups(2);\">"
|
||||
+ "<a href=\"javascript:show(1);\">Z Group</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
|
||||
+ "A Group</a></span><span class=\"tabEnd\"> </span></span></caption>",
|
||||
"var tabs = {65535:[\"t0\",\"All Packages\"],1:[\"t1\",\"Z Group\"],2:[\"t2\",\"A Group\"]};");
|
||||
}
|
||||
@ -1613,4 +1614,38 @@ public class TestModules extends JavadocTester {
|
||||
"<a href=\"https://docs.oracle.com/javase/9/docs/api/java.base/module-summary.html?is-external=true\" "
|
||||
+ "class=\"externalLink\"><code>Link to java.base module</code></a>");
|
||||
}
|
||||
|
||||
void checkAllPkgsAllClasses(boolean found) {
|
||||
checkOutput("allclasses-index.html", true,
|
||||
"<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Classes</span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span><span id=\"t2\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:show(2);\">Class Summary</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">"
|
||||
+ "Annotation Types Summary</a></span><span class=\"tabEnd\"> </span></span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>");
|
||||
checkOutput("allpackages-index.html", true,
|
||||
"<caption><span>Package Summary</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>\n");
|
||||
checkOutput("allclasses-index.html", found,
|
||||
"<table class=\"typeSummary\">\n");
|
||||
checkOutput("allpackages-index.html", found,
|
||||
"<table class=\"packagesSummary\">\n");
|
||||
checkOutput("allclasses-index.html", !found,
|
||||
"<table class=\"typeSummary\" summary=\"Class Summary table, listing classes, and an explanation\">");
|
||||
checkOutput("allpackages-index.html", !found,
|
||||
"<table class=\"packagesSummary\" summary=\"Package Summary table, listing packages, and an explanation\">");
|
||||
checkOutput("type-search-index.js", true,
|
||||
"{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}");
|
||||
checkOutput("package-search-index.js", true,
|
||||
"{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}");
|
||||
checkOutput("index-all.html", true,
|
||||
"<br><a href=\"allclasses-index.html\">All Classes</a> "
|
||||
+ "<a href=\"allpackages-index.html\">All Packages</a>");
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4492643 4689286
|
||||
* @bug 4492643 4689286 8196201
|
||||
* @summary Test that a package page is properly generated when a .java file
|
||||
* passed to Javadoc. Also test that the proper package links are generated
|
||||
* when single or multiple packages are documented.
|
||||
@ -82,5 +82,26 @@ public class TestPackagePage extends JavadocTester {
|
||||
"<li>Package</li>");
|
||||
checkOutput("help-doc.html", true,
|
||||
"<li>Package</li>");
|
||||
checkOutput("allclasses-index.html", true,
|
||||
"<table class=\"typeSummary\">\n"
|
||||
+ "<caption><span>Class Summary</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>\n");
|
||||
checkOutput("allpackages-index.html", true,
|
||||
"<table class=\"packagesSummary\">\n"
|
||||
+ "<caption><span>Package Summary</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>\n");
|
||||
checkOutput("type-search-index.js", true,
|
||||
"{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}");
|
||||
checkOutput("package-search-index.js", true,
|
||||
"{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}");
|
||||
checkOutput("index-all.html", true,
|
||||
"<br><a href=\"allclasses-index.html\">All Classes</a> "
|
||||
+ "<a href=\"allpackages-index.html\">All Packages</a>");
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test
|
||||
* @bug 8141492 8071982 8141636 8147890 8166175 8168965 8176794 8175218 8147881
|
||||
* 8181622 8182263 8074407 8187521 8198522 8182765 8199278
|
||||
* 8181622 8182263 8074407 8187521 8198522 8182765 8199278 8196201
|
||||
* @summary Test the search feature of javadoc.
|
||||
* @author bpatel
|
||||
* @library ../lib
|
||||
@ -50,13 +50,13 @@ public class TestSearch extends JavadocTester {
|
||||
checkJqueryAndImageFiles(true);
|
||||
checkSearchJS();
|
||||
checkFiles(false,
|
||||
"package-search-index.zip",
|
||||
"tag-search-index.zip",
|
||||
"package-search-index.js",
|
||||
"tag-search-index.js");
|
||||
checkFiles(true,
|
||||
"package-search-index.zip",
|
||||
"member-search-index.zip",
|
||||
"type-search-index.zip",
|
||||
"package-search-index.js",
|
||||
"member-search-index.js",
|
||||
"type-search-index.js");
|
||||
}
|
||||
@ -75,6 +75,7 @@ public class TestSearch extends JavadocTester {
|
||||
checkSingleIndexSearchTagDuplication();
|
||||
checkJqueryAndImageFiles(true);
|
||||
checkSearchJS();
|
||||
checkAllPkgsAllClasses();
|
||||
checkFiles(true,
|
||||
"member-search-index.zip",
|
||||
"package-search-index.zip",
|
||||
@ -154,7 +155,9 @@ public class TestSearch extends JavadocTester {
|
||||
"package-search-index.js",
|
||||
"tag-search-index.js",
|
||||
"type-search-index.js",
|
||||
"index-all.html");
|
||||
"index-all.html",
|
||||
"allpackages-index.html",
|
||||
"allclasses-index.html");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -471,7 +474,9 @@ public class TestSearch extends JavadocTester {
|
||||
"<dt><span class=\"searchTagLink\"><a href=\"../pkg2/TestError.html#SearchTagDeprecatedMethod\">"
|
||||
+ "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>",
|
||||
"<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#SingleWord\">"
|
||||
+ "SingleWord</a></span> - Search tag in pkg</dt>");
|
||||
+ "SingleWord</a></span> - Search tag in pkg</dt>",
|
||||
"<br><a href=\"../allclasses-index.html\">All Classes</a> "
|
||||
+ "<a href=\"../allpackages-index.html\">All Packages</a>");
|
||||
checkOutput("index-files/index-10.html", true,
|
||||
"<dt><span class=\"searchTagLink\"><a href=\"../pkg/package-summary.html#phrasewithspaces\">"
|
||||
+ "phrase with spaces</a></span> - Search tag in pkg</dt>",
|
||||
@ -628,15 +633,17 @@ public class TestSearch extends JavadocTester {
|
||||
+ " var slash = \"/\";\n"
|
||||
+ " if (ui.item.category === catModules) {\n"
|
||||
+ " return ui.item.l + slash;\n"
|
||||
+ " } else if (ui.item.category === catPackages) {\n"
|
||||
+ " } else if (ui.item.category === catPackages && ui.item.m) {\n"
|
||||
+ " return ui.item.m + slash;\n"
|
||||
+ " } else if (ui.item.category === catTypes || ui.item.category === catMembers) {\n"
|
||||
+ " } else if ((ui.item.category === catTypes && ui.item.p) || ui.item.category === catMembers) {\n"
|
||||
+ " $.each(packageSearchIndex, function(index, item) {\n"
|
||||
+ " if (ui.item.p == item.l) {\n"
|
||||
+ " urlPrefix = item.m + slash;\n"
|
||||
+ " }\n"
|
||||
+ " });\n"
|
||||
+ " return urlPrefix;\n"
|
||||
+ " } else {\n"
|
||||
+ " return urlPrefix;\n"
|
||||
+ " }\n"
|
||||
+ " }\n"
|
||||
+ " return urlPrefix;\n"
|
||||
@ -673,4 +680,41 @@ public class TestSearch extends JavadocTester {
|
||||
+ "SearchTagDeprecatedMethod</a></span> - Search tag in pkg2.TestError</dt>\n"
|
||||
+ "<dd>with description</dd>");
|
||||
}
|
||||
|
||||
void checkAllPkgsAllClasses() {
|
||||
checkOutput("allclasses-index.html", true,
|
||||
"<table class=\"typeSummary\">\n"
|
||||
+ "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Classes</span>"
|
||||
+ "<span class=\"tabEnd\"> </span></span><span id=\"t1\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:show(1);\">Interface Summary</a></span><span class=\"tabEnd\">"
|
||||
+ " </span></span><span id=\"t2\" class=\"tableTab\"><span><a href=\"javascript:show(2);\">"
|
||||
+ "Class Summary</a></span><span class=\"tabEnd\"> </span></span><span id=\"t3\" class=\"tableTab\">"
|
||||
+ "<span><a href=\"javascript:show(4);\">Enum Summary</a></span><span class=\"tabEnd\"> "
|
||||
+ "</span></span><span id=\"t4\" class=\"tableTab\"><span><a href=\"javascript:show(8);\">"
|
||||
+ "Exception Summary</a></span><span class=\"tabEnd\"> </span></span>"
|
||||
+ "<span id=\"t5\" class=\"tableTab\"><span><a href=\"javascript:show(16);\">"
|
||||
+ "Error Summary</a></span><span class=\"tabEnd\"> </span></span>"
|
||||
+ "<span id=\"t6\" class=\"tableTab\"><span><a href=\"javascript:show(32);\">Annotation Types Summary"
|
||||
+ "</a></span><span class=\"tabEnd\"> </span></span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>",
|
||||
"var data = {\"i0\":32,\"i1\":2,\"i2\":4,\"i3\":2,\"i4\":2,\"i5\":1,\"i6\":2,\"i7\":32,"
|
||||
+ "\"i8\":2,\"i9\":4,\"i10\":16,\"i11\":16,\"i12\":8,\"i13\":8,\"i14\":1,\"i15\":2};");
|
||||
checkOutput("allpackages-index.html", true,
|
||||
"<table class=\"packagesSummary\">\n"
|
||||
+ "<caption><span>Package Summary</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>\n");
|
||||
checkOutput("type-search-index.js", true,
|
||||
"{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}");
|
||||
checkOutput("package-search-index.js", true,
|
||||
"{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}");
|
||||
checkOutput("index-all.html", true,
|
||||
"<br><a href=\"allclasses-index.html\">All Classes</a> "
|
||||
+ "<a href=\"allpackages-index.html\">All Packages</a>");
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* @test
|
||||
* @bug 4494033 7028815 7052425 8007338 8023608 8008164 8016549 8072461 8154261 8162363 8160196 8151743 8177417
|
||||
* 8175218 8176452 8181215 8182263 8183511 8169819 8183037 8185369 8182765
|
||||
* 8175218 8176452 8181215 8182263 8183511 8169819 8183037 8185369 8182765 8196201
|
||||
* @summary Run tests on doclet stylesheet.
|
||||
* @author jamieh
|
||||
* @library ../lib
|
||||
@ -106,7 +106,7 @@ public class TestStylesheet extends JavadocTester {
|
||||
+ " height:16px;\n"
|
||||
+ "}",
|
||||
".memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,\n"
|
||||
+ ".overviewSummary caption span.activeTableTab span {\n"
|
||||
+ ".overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {\n"
|
||||
+ " white-space:nowrap;\n"
|
||||
+ " padding-top:5px;\n"
|
||||
+ " padding-left:12px;\n"
|
||||
@ -118,7 +118,7 @@ public class TestStylesheet extends JavadocTester {
|
||||
+ " height:16px;\n"
|
||||
+ "}",
|
||||
".memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,\n"
|
||||
+ ".overviewSummary caption span.tableTab span {\n"
|
||||
+ ".overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {\n"
|
||||
+ " white-space:nowrap;\n"
|
||||
+ " padding-top:5px;\n"
|
||||
+ " padding-left:12px;\n"
|
||||
@ -137,7 +137,7 @@ public class TestStylesheet extends JavadocTester {
|
||||
+ ".providesSummary td.colFirst, .providesSummary th.colFirst,\n"
|
||||
+ ".memberSummary td.colFirst, .memberSummary th.colFirst,\n"
|
||||
+ ".memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,\n"
|
||||
+ ".typeSummary td.colFirst {\n"
|
||||
+ ".typeSummary td.colFirst, .typeSummary th.colFirst {\n"
|
||||
+ " vertical-align:top;\n"
|
||||
+ "}",
|
||||
".overviewSummary td, .memberSummary td, .typeSummary td,\n"
|
||||
@ -148,7 +148,8 @@ public class TestStylesheet extends JavadocTester {
|
||||
+ "}",
|
||||
".memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,\n"
|
||||
+ ".packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,\n"
|
||||
+ ".overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab {\n"
|
||||
+ ".overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,\n"
|
||||
+ ".typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {\n"
|
||||
+ " padding-top:0px;\n"
|
||||
+ " padding-left:0px;\n"
|
||||
+ " padding-right:0px;\n"
|
||||
@ -180,7 +181,9 @@ public class TestStylesheet extends JavadocTester {
|
||||
+ "th.colSecond a:link, th.colSecond a:visited,\n"
|
||||
+ "th.colConstructorName a:link, th.colConstructorName a:visited,\n"
|
||||
+ "th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited, \n"
|
||||
+ ".constantValuesContainer td a:link, .constantValuesContainer td a:visited {\n"
|
||||
+ ".constantValuesContainer td a:link, .constantValuesContainer td a:visited, \n"
|
||||
+ ".allClassesContainer td a:link, .allClassesContainer td a:visited, \n"
|
||||
+ ".allPackagesContainer td a:link, .allPackagesContainer td a:visited {\n"
|
||||
+ " font-weight:bold;\n"
|
||||
+ "}",
|
||||
".deprecationBlock {\n"
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, 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
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4904075 4774450 5015144 8043698
|
||||
* @bug 4904075 4774450 5015144 8043698 8196201
|
||||
* @summary Reference unnamed package as "Unnamed", not empty string.
|
||||
* Generate a package summary for the unnamed package.
|
||||
* @author jamieh
|
||||
@ -64,6 +64,48 @@ public class TestUnnamedPackage extends JavadocTester {
|
||||
checkOutput("C.html", true,
|
||||
"<a href=\"package-summary.html\">");
|
||||
|
||||
checkOutput("allclasses-index.html", true,
|
||||
"<table class=\"typeSummary\">\n"
|
||||
+ "<caption><span>Class Summary</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Class</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>\n"
|
||||
+ "<tr id=\"i0\" class=\"altColor\">\n"
|
||||
+ "<td class=\"colFirst\"><a href=\"C.html\" title=\"class in <Unnamed>\">C</a></td>\n"
|
||||
+ "<th class=\"colLast\" scope=\"row\">\n"
|
||||
+ "<div class=\"block\">This is a class in the unnamed package.</div>\n"
|
||||
+ "</th>\n"
|
||||
+ "</tr>\n"
|
||||
+ "</table>");
|
||||
|
||||
checkOutput("allpackages-index.html", true,
|
||||
"<table class=\"packagesSummary\">\n"
|
||||
+ "<caption><span>Package Summary</span><span class=\"tabEnd\"> </span></caption>\n"
|
||||
+ "<tr>\n"
|
||||
+ "<th class=\"colFirst\" scope=\"col\">Package</th>\n"
|
||||
+ "<th class=\"colLast\" scope=\"col\">Description</th>\n"
|
||||
+ "</tr>\n"
|
||||
+ "<tbody>\n"
|
||||
+ "<tr class=\"altColor\">\n"
|
||||
+ "<th class=\"colFirst\" scope=\"row\"><a href=\"package-summary.html\"><Unnamed></a></th>\n"
|
||||
+ "<td class=\"colLast\">\n"
|
||||
+ "<div class=\"block\">This is a package comment for the unnamed package.</div>\n"
|
||||
+ "</td>\n"
|
||||
+ "</tr>\n"
|
||||
+ "</tbody>\n"
|
||||
+ "</table>");
|
||||
|
||||
checkOutput("type-search-index.js", true,
|
||||
"{\"l\":\"All Classes\",\"url\":\"allclasses-index.html\"}");
|
||||
|
||||
checkOutput("package-search-index.js", true,
|
||||
"{\"l\":\"All Packages\",\"url\":\"allpackages-index.html\"}");
|
||||
|
||||
checkOutput("index-all.html", true,
|
||||
"<br><a href=\"allclasses-index.html\">All Classes</a> "
|
||||
+ "<a href=\"allpackages-index.html\">All Packages</a>");
|
||||
|
||||
checkOutput(Output.OUT, false,
|
||||
"BadSource");
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2018, 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
|
||||
@ -191,7 +191,9 @@ class APITest {
|
||||
*/
|
||||
protected static Set<String> standardExpectFiles = new HashSet<>(Arrays.asList(
|
||||
"allclasses-frame.html",
|
||||
"allclasses-index.html",
|
||||
"allclasses-noframe.html",
|
||||
"allpackages-index.html",
|
||||
"constant-values.html",
|
||||
"deprecated-list.html",
|
||||
"help-doc.html",
|
||||
@ -245,7 +247,8 @@ class APITest {
|
||||
|
||||
protected static Set<String> noIndexFiles = standardExpectFiles.stream()
|
||||
.filter(s -> !s.startsWith("jquery") && !s.startsWith("resources") && !s.endsWith("zip")
|
||||
&& !s.equals("index-all.html") && !s.equals("search.js") && !s.endsWith("-search-index.js"))
|
||||
&& !s.equals("index-all.html") && !s.equals("search.js") && !s.endsWith("-search-index.js")
|
||||
&& !s.equals("allclasses-index.html") && !s.equals("allpackages-index.html"))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2018, 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
|
||||
@ -191,7 +191,9 @@ class APITest {
|
||||
*/
|
||||
protected static Set<String> standardExpectFiles = new HashSet<>(Arrays.asList(
|
||||
"allclasses-frame.html",
|
||||
"allclasses-index.html",
|
||||
"allclasses-noframe.html",
|
||||
"allpackages-index.html",
|
||||
"constant-values.html",
|
||||
"deprecated-list.html",
|
||||
"help-doc.html",
|
||||
@ -245,7 +247,8 @@ class APITest {
|
||||
|
||||
protected static Set<String> noIndexFiles = standardExpectFiles.stream()
|
||||
.filter(s -> !s.startsWith("jquery") && !s.startsWith("resources") && !s.endsWith("zip")
|
||||
&& !s.equals("index-all.html") && !s.equals("search.js") && !s.endsWith("-search-index.js"))
|
||||
&& !s.equals("index-all.html") && !s.equals("search.js") && !s.endsWith("-search-index.js")
|
||||
&& !s.equals("allclasses-index.html") && !s.equals("allpackages-index.html"))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user