# HG changeset patch # User bpatel # Date 1471636442 25200 # Node ID 1b3c502e0bdc9a0457e7874665fee350e2ca81b2 # Parent 722c82994682a84c4f4b5d4838187830a892ac9f 8155995: Update javadoc to include module search Reviewed-by: jjg, ksrini diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Fri Aug 19 12:54:02 2016 -0700 @@ -32,6 +32,7 @@ import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.ModuleElement; import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; import javax.lang.model.util.SimpleElementVisitor9; @@ -183,6 +184,15 @@ new SimpleElementVisitor9() { @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL) + public Void visitModule(ModuleElement e, Void p) { + if (configuration.showModules) { + addDescription(e, dl, si); + configuration.moduleSearchIndex.add(si); + } + return null; + } + + @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL) public Void visitPackage(PackageElement e, Void p) { addDescription(e, dl, si); configuration.packageSearchIndex.add(si); @@ -207,6 +217,27 @@ } /** + * Add one line summary comment for the module. + * + * @param mdle the module to be documented + * @param dlTree the content tree to which the description will be added + */ + protected void addDescription(ModuleElement mdle, Content dlTree, SearchIndexItem si) { + String moduleName = utils.getSimpleName(mdle); + Content link = getModuleLink(mdle, new StringContent(moduleName)); + si.setLabel(moduleName); + si.setCategory(resources.getText("doclet.Modules")); + Content dt = HtmlTree.DT(link); + dt.addContent(" - "); + dt.addContent(contents.module_); + dt.addContent(" " + moduleName); + dlTree.addContent(dt); + Content dd = new HtmlTree(HtmlTag.DD); + addSummaryComment(mdle, dd); + dlTree.addContent(dd); + } + + /** * Add one line summary comment for the package. * * @param pkg the package to be documented @@ -214,6 +245,9 @@ */ protected void addDescription(PackageElement pkg, Content dlTree, SearchIndexItem si) { Content link = getPackageLink(pkg, new StringContent(utils.getPackageName(pkg))); + if (configuration.showModules) { + si.setContainingModule(utils.getSimpleName(utils.containingModule(pkg))); + } si.setLabel(utils.getPackageName(pkg)); si.setCategory(resources.getText("doclet.Packages")); Content dt = HtmlTree.DT(link); @@ -397,6 +431,10 @@ } protected void createSearchIndexFiles() { + if (configuration.showModules) { + createSearchIndexFile(DocPaths.MODULE_SEARCH_INDEX_JSON, DocPaths.MODULE_SEARCH_INDEX_ZIP, + configuration.moduleSearchIndex); + } createSearchIndexFile(DocPaths.PACKAGE_SEARCH_INDEX_JSON, DocPaths.PACKAGE_SEARCH_INDEX_ZIP, configuration.packageSearchIndex); createSearchIndexFile(DocPaths.TYPE_SEARCH_INDEX_JSON, DocPaths.TYPE_SEARCH_INDEX_ZIP, diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConfigurationImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConfigurationImpl.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConfigurationImpl.java Fri Aug 19 12:54:02 2016 -0700 @@ -223,6 +223,8 @@ protected List memberSearchIndex = new ArrayList<>(); + protected List moduleSearchIndex = new ArrayList<>(); + protected List packageSearchIndex = new ArrayList<>(); protected List tagSearchIndex = new ArrayList<>(); diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java Fri Aug 19 12:54:02 2016 -0700 @@ -104,6 +104,7 @@ public final Content methodSummary; public final Content methods; public final Content moduleLabel; + public final Content module_; public final Content moduleSubNavLabel; public final Content modulesLabel; public final Content navAnnotationTypeMember; @@ -216,6 +217,7 @@ methodSummary = getContent("doclet.Method_Summary"); methods = getContent("doclet.Methods"); moduleLabel = getContent("doclet.Module"); + module_ = getContent("doclet.module"); moduleSubNavLabel = getContent("doclet.Module_Sub_Nav"); modulesLabel = getContent("doclet.Modules"); navAnnotationTypeMember = getContent("doclet.navAnnotationTypeMember"); diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchIndexItem.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchIndexItem.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchIndexItem.java Fri Aug 19 12:54:02 2016 -0700 @@ -38,6 +38,7 @@ private String label = ""; private String url = ""; private String category = ""; + private String containingModule = ""; private String containingPackage = ""; private String containingClass = ""; private String holder = ""; @@ -59,6 +60,10 @@ return url; } + public void setContainingModule(String m) { + containingModule = m; + } + public void setContainingPackage(String p) { containingPackage = p; } @@ -89,10 +94,17 @@ public String toString() { StringBuilder item = new StringBuilder(""); - if (category.equals("Packages")) { + if (category.equals("Modules")) { item.append("{") .append("\"l\":\"").append(label).append("\"") .append("}"); + } else if (category.equals("Packages")) { + item.append("{"); + if (!containingModule.isEmpty()) { + item.append("\"m\":\"").append(containingModule).append("\","); + } + item.append("\"l\":\"").append(label).append("\"") + .append("}"); } else if (category.equals("Types")) { item.append("{") .append("\"p\":\"").append(containingPackage).append("\",") diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java Fri Aug 19 12:54:02 2016 -0700 @@ -28,6 +28,7 @@ import java.util.List; import javax.lang.model.element.Element; +import javax.lang.model.element.ModuleElement; import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; @@ -37,7 +38,6 @@ import com.sun.source.doctree.DocTree; import com.sun.source.doctree.IndexTree; import com.sun.tools.javac.util.DefinedBy; - import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; @@ -114,6 +114,13 @@ si.setDescription(desc); new SimpleElementVisitor9() { @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL) + public Void visitModule(ModuleElement e, Void p) { + si.setUrl(DocPaths.moduleSummary(e).getPath() + "#" + anchorName); + si.setHolder(utils.getSimpleName(element)); + return null; + } + + @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL) public Void visitPackage(PackageElement e, Void p) { si.setUrl(DocPath.forPackage(e).getPath() + "/" + DocPaths.PACKAGE_SUMMARY.getPath() + "#" + anchorName); diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/search.js --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/search.js Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/search.js Fri Aug 19 12:54:02 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -25,6 +25,7 @@ var noResult = {l: "No results found"}; var category = "category"; +var catModules = "Modules"; var catPackages = "Packages"; var catTypes = "Types"; var catMembers = "Members"; @@ -115,8 +116,12 @@ var regexp = new RegExp($.ui.autocomplete.escapeRegex(result), "i"); highlight = "$&"; var label = ""; - if (item.category === catPackages) { + if (item.category === catModules) { label = item.l.replace(regexp, highlight); + } else if (item.category === catPackages) { + label = (item.m) + ? (item.m + "/" + item.l).replace(regexp, highlight) + : item.l.replace(regexp, highlight); } else if (item.category === catTypes) { label += (item.p + "." + item.l).replace(regexp, highlight); } else if (item.category === catMembers) { @@ -152,24 +157,43 @@ delay: 100, source: function(request, response) { var result = new Array(); + var presult = new Array(); var tresult = new Array(); var mresult = new Array(); var tgresult = new Array(); var displayCount = 0; var exactMatcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term) + "$", "i"); var secondaryMatcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); - if (packageSearchIndex) { - var pCount = 0; - $.each(packageSearchIndex, function(index, item) { - item[category] = catPackages; + if (moduleSearchIndex) { + var mdleCount = 0; + $.each(moduleSearchIndex, function(index, item) { + item[category] = catModules; if (exactMatcher.test(item.l)) { result.unshift(item); - pCount++; + mdleCount++; } else if (secondaryMatcher.test(item.l)) { result.push(item); } }); - displayCount = pCount; + displayCount = mdleCount; + } + if (packageSearchIndex) { + var pCount = 0; + var pkg = ""; + $.each(packageSearchIndex, function(index, item) { + item[category] = catPackages; + pkg = (item.m) + ? (item.m + "/" + item.l) + : item.l; + if (exactMatcher.test(item.l)) { + presult.unshift(item); + pCount++; + } else if (secondaryMatcher.test(pkg)) { + presult.push(item); + } + }); + result = result.concat(presult); + displayCount = (pCount > displayCount) ? pCount : displayCount; } if (typeSearchIndex) { var tCount = 0; @@ -215,7 +239,7 @@ } displayCount = (displayCount > 500) ? displayCount : 500; var counter = function() { - var count = {Packages: 0, Types: 0, Members: 0, SearchTags: 0}; + var count = {Modules: 0, Packages: 0, Types: 0, Members: 0, SearchTags: 0}; var f = function(item) { count[item.category] += 1; return (count[item.category] <= displayCount); @@ -238,7 +262,9 @@ select: function(event, ui) { if (ui.item.l !== noResult.l) { var url = ""; - if (ui.item.category === catPackages) { + if (ui.item.category === catModules) { + url = "/" + ui.item.l + "-summary.html"; + } else if (ui.item.category === catPackages) { url = ui.item.l.replace(/\./g, '/') + "/package-summary.html"; } else if (ui.item.category === catTypes) { if (ui.item.p === "") { diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties Fri Aug 19 12:54:02 2016 -0700 @@ -62,6 +62,7 @@ doclet.Static_method_in=Static method in {0} doclet.Search_tag_in=Search tag in {0} doclet.Method_in=Method in {0} +doclet.module=module doclet.package=package doclet.MalformedURL=Malformed URL: {0} doclet.File_error=Error reading file: {0} diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js Fri Aug 19 12:54:02 2016 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2016, 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,6 +23,7 @@ * questions. */ +var moduleSearchIndex; var packageSearchIndex; var typeSearchIndex; var memberSearchIndex; @@ -36,6 +37,14 @@ } createElem(doc, tag, 'search.js'); + $.get(pathtoroot + "module-search-index.zip") + .done(function() { + JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) { + var zip = new JSZip(data); + zip.load(data); + moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText()); + }); + }); $.get(pathtoroot + "package-search-index.zip") .done(function() { JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) { diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java Fri Aug 19 12:54:02 2016 -0700 @@ -121,6 +121,12 @@ /** The name of the member search index zip file. */ public static final DocPath MEMBER_SEARCH_INDEX_ZIP = DocPath.create("member-search-index.zip"); + /** The name of the module search index file. */ + public static final DocPath MODULE_SEARCH_INDEX_JSON = DocPath.create("module-search-index.json"); + + /** The name of the module search index zipfile. */ + public static final DocPath MODULE_SEARCH_INDEX_ZIP = DocPath.create("module-search-index.zip"); + /** The name of the file for the overview frame. */ public static final DocPath OVERVIEW_FRAME = DocPath.create("overview-frame.html"); diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/IndexBuilder.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/IndexBuilder.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/IndexBuilder.java Fri Aug 19 12:54:02 2016 -0700 @@ -28,6 +28,7 @@ import java.util.*; import javax.lang.model.element.Element; +import javax.lang.model.element.ModuleElement; import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; @@ -148,6 +149,9 @@ putMembersInIndexMap(aClass); } } + if (configuration.showModules) { + addModulesToIndexMap(); + } } } @@ -190,6 +194,22 @@ } /** + * Add all the modules to index map. + */ + protected void addModulesToIndexMap() { + for (ModuleElement mdle : configuration.modules) { + String mdleName = mdle.getSimpleName().toString(); + char ch = (mdleName.length() == 0) + ? '*' + : Character.toUpperCase(mdleName.charAt(0)); + Character unicode = ch; + SortedSet list = indexmap.computeIfAbsent(unicode, + c -> new TreeSet<>(comparator)); + list.add(mdle); + } + } + + /** * Should this element be added to the index map? */ protected boolean shouldAddToIndexMap(Element element) { diff -r 722c82994682 -r 1b3c502e0bdc langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java Fri Aug 19 12:54:02 2016 -0700 @@ -380,6 +380,10 @@ return e.getKind() == METHOD; } + public boolean isModule(Element e) { + return e.getKind() == ElementKind.MODULE; + } + public boolean isPackage(Element e) { return e.getKind() == ElementKind.PACKAGE; } @@ -1726,9 +1730,10 @@ /** * Returns a Comparator for index file presentations, and are sorted as follows. - * If comparing packages then simply compare the qualified names, otherwise - * 1. sort on simple names of entities - * 2. if equal, then compare the ElementKind ex: Package, Interface etc. + * If comparing modules then simply compare the simple names, + * comparing packages then simply compare the qualified names, otherwise + * 1. if equal, then compare the ElementKind ex: Module, Package, Interface etc. + * 2. sort on simple names of entities * 3a. if equal and if the type is of ExecutableElement(Constructor, Methods), * a case insensitive comparison of parameter the type signatures * 3b. if equal, case sensitive comparison of the type signatures @@ -1739,9 +1744,10 @@ public Comparator makeIndexUseComparator() { return new Utils.ElementComparator() { /** - * Compare two given elements, if comparing two packages, return the - * comparison of FullyQualifiedName, first sort on names, then on the - * kinds, then on the parameters only if the type is an ExecutableElement, + * Compare two given elements, if comparing two modules, return the + * comparison of SimpleName, if comparing two packages, return the + * comparison of FullyQualifiedName, first sort on kinds, then on the + * names, then on the parameters only if the type is an ExecutableElement, * the parameters are compared and finally the qualified names. * * @param e1 - an element. @@ -1752,14 +1758,17 @@ @Override public int compare(Element e1, Element e2) { int result = 0; + if (isModule(e1) && isModule(e2)) { + return compareNames(e1, e2); + } if (isPackage(e1) && isPackage(e2)) { return compareFullyQualifiedNames(e1, e2); } - result = compareNames(e1, e2); + result = compareElementTypeKinds(e1, e2); if (result != 0) { return result; } - result = compareElementTypeKinds(e1, e2); + result = compareNames(e1, e2); if (result != 0) { return result; } @@ -1945,15 +1954,16 @@ final EnumMap elementKindOrder; public ElementComparator() { elementKindOrder = new EnumMap<>(ElementKind.class); - elementKindOrder.put(ElementKind.PACKAGE, 0); - elementKindOrder.put(ElementKind.CLASS, 1); - elementKindOrder.put(ElementKind.ENUM, 2); - elementKindOrder.put(ElementKind.ENUM_CONSTANT, 3); - elementKindOrder.put(ElementKind.INTERFACE, 4); - elementKindOrder.put(ElementKind.ANNOTATION_TYPE, 5); - elementKindOrder.put(ElementKind.FIELD, 6); - elementKindOrder.put(ElementKind.CONSTRUCTOR, 7); - elementKindOrder.put(ElementKind.METHOD, 8); + elementKindOrder.put(ElementKind.MODULE, 0); + elementKindOrder.put(ElementKind.PACKAGE, 1); + elementKindOrder.put(ElementKind.CLASS, 2); + elementKindOrder.put(ElementKind.ENUM, 3); + elementKindOrder.put(ElementKind.ENUM_CONSTANT, 4); + elementKindOrder.put(ElementKind.INTERFACE, 5); + elementKindOrder.put(ElementKind.ANNOTATION_TYPE, 6); + elementKindOrder.put(ElementKind.FIELD, 7); + elementKindOrder.put(ElementKind.CONSTRUCTOR, 8); + elementKindOrder.put(ElementKind.METHOD, 9); } protected int compareParameters(boolean caseSensitive, List params1, @@ -2378,6 +2388,11 @@ if (snvisitor == null) { snvisitor = new SimpleElementVisitor9() { @Override @DefinedBy(Api.LANGUAGE_MODEL) + public String visitModule(ModuleElement e, Void p) { + return e.getSimpleName().toString(); + } + + @Override @DefinedBy(Api.LANGUAGE_MODEL) public String visitType(TypeElement e, Void p) { StringBuilder sb = new StringBuilder(e.getSimpleName()); Element enclosed = e.getEnclosingElement(); @@ -2981,6 +2996,10 @@ return out; } + public ModuleElement containingModule(Element e) { + return elementUtils.getModuleOf(e); + } + public PackageElement containingPackage(Element e) { return elementUtils.getPackageOf(e); } diff -r 722c82994682 -r 1b3c502e0bdc langtools/test/jdk/javadoc/doclet/testModules/TestModules.java --- a/langtools/test/jdk/javadoc/doclet/testModules/TestModules.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/test/jdk/javadoc/doclet/testModules/TestModules.java Fri Aug 19 12:54:02 2016 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 + * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 * @summary Test modules support in javadoc. * @author bpatel * @library ../lib @@ -55,6 +55,7 @@ checkModuleClickThroughLinks(); checkModuleClickThrough(true); checkModuleFilesAndLinks(true); + checkModulesInSearch(true); } /** @@ -74,6 +75,7 @@ checkModuleClickThroughLinks(); checkModuleClickThrough(true); checkModuleFilesAndLinks(true); + checkModulesInSearch(true); } /** @@ -120,6 +122,7 @@ checkOverviewSummaryPackages(); checkModuleClickThrough(false); checkModuleFilesAndLinks(false); + checkModulesInSearch(false); } /** @@ -133,6 +136,7 @@ checkExit(Exit.OK); checkHtml5OverviewSummaryPackages(); checkModuleFilesAndLinks(false); + checkModulesInSearch(false); } /** @@ -183,13 +187,15 @@ + "\n" + "\n" + "\n" - + "
This is a test description for the module1 module.
"); + + "
This is a test description for the module1 module. Search " + + "phrase search phrase.
"); checkOutput("module2-summary.html", found, "\n" + "\n" + "\n" + "\n" - + "
This is a test description for the module2 module.
"); + + "
This is a test description for the module2 module. Search " + + "word search_word with no description.
"); } void checkNoDescription(boolean found) { @@ -216,16 +222,16 @@ + "\n" + "\n" + "\n" - + "
This is a test description for the module1 module.
\n" - + ""); + + "
This is a test description for the module1 module. Search " + + "phrase search phrase.
"); checkOutput("module2-summary.html", found, "
\n" + "\n" + "\n" + "\n" + "\n" - + "
This is a test description for the module2 module.
\n" - + "
"); + + "
This is a test description for the module2 module. Search " + + "word search_word with no description.
"); } void checkHtml5NoDescription(boolean found) { @@ -527,4 +533,27 @@ "module1-summary.html", "module-overview-frame.html"); } + + void checkModulesInSearch(boolean found) { + checkOutput("index-all.html", found, + "
\n" + + "
module1 - module module1
\n" + + "
\n" + + "
This is a test description for the module1 module.
\n" + + "
\n" + + "
module2 - module module2
\n" + + "
\n" + + "
This is a test description for the module2 module.
\n" + + "
\n" + + "
"); + checkOutput("index-all.html", found, + "
\n" + + "
" + + "search phrase - Search tag in module1
\n" + + "
with description
\n" + + "
" + + "search_word - Search tag in module2
\n" + + "
 
\n" + + "
"); } +} diff -r 722c82994682 -r 1b3c502e0bdc langtools/test/jdk/javadoc/doclet/testModules/module1/module-info.java --- a/langtools/test/jdk/javadoc/doclet/testModules/module1/module-info.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/test/jdk/javadoc/doclet/testModules/module1/module-info.java Fri Aug 19 12:54:02 2016 -0700 @@ -24,7 +24,7 @@ */ /** - * This is a test description for the module1 module. + * This is a test description for the module1 module. Search phrase {@index "search phrase" with description}. */ module module1 { requires module2; diff -r 722c82994682 -r 1b3c502e0bdc langtools/test/jdk/javadoc/doclet/testModules/module2/module-info.java --- a/langtools/test/jdk/javadoc/doclet/testModules/module2/module-info.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/test/jdk/javadoc/doclet/testModules/module2/module-info.java Fri Aug 19 12:54:02 2016 -0700 @@ -24,7 +24,7 @@ */ /** - * This is a test description for the module2 module. + * This is a test description for the module2 module. Search word {@index search_word} with no description. */ module module2 { exports testpkgmdl2; diff -r 722c82994682 -r 1b3c502e0bdc langtools/test/jdk/javadoc/doclet/testOrdering/TestOrdering.java --- a/langtools/test/jdk/javadoc/doclet/testOrdering/TestOrdering.java Fri Aug 19 16:45:22 2016 +0100 +++ b/langtools/test/jdk/javadoc/doclet/testOrdering/TestOrdering.java Fri Aug 19 12:54:02 2016 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 8039410 8042601 8042829 8049393 8050031 8155061 + * @bug 8039410 8042601 8042829 8049393 8050031 8155061 8155995 * @summary test to determine if members are ordered correctly * @author ksrini * @library ../lib/ @@ -179,10 +179,27 @@ "something() - Method in class a. - Method in class something. testList = new ArrayList<>(); testList.addAll(Arrays.asList(expectedPackageOrdering)); + for (String x : expectedEnumOrdering) { + testList.add(x.replace("REPLACE_ME", "<Unnamed>")); + for (int i = 0; i < MAX_PACKAGES; i++) { + String wpkg = "add" + i; + testList.add(wpkg + "/" + x.replace("REPLACE_ME", + wpkg)); + String dpkg = wpkg; + for (int j = 1; j < MAX_SUBPACKAGES_DEPTH; j++) { + dpkg = dpkg + "/" + "add"; + testList.add(dpkg + "/" + x.replace("REPLACE_ME", + pathToPackage(dpkg))); + } + } + } + + testList.addAll(Arrays.asList(expectedFieldOrdering)); for (String x : expectedMethodOrdering) { testList.add(x); @@ -197,21 +214,6 @@ } } - for (String x : expectedEnumOrdering) { - testList.add(x.replace("REPLACE_ME", "<Unnamed>")); - for (int i = 0; i < MAX_PACKAGES; i++) { - String wpkg = "add" + i; - testList.add(wpkg + "/" + x.replace("REPLACE_ME", wpkg)); - String dpkg = wpkg; - for (int j = 1; j < MAX_SUBPACKAGES_DEPTH; j++) { - dpkg = dpkg + "/" + "add"; - testList.add(dpkg + "/" + x.replace("REPLACE_ME", pathToPackage(dpkg))); - } - } - } - - testList.addAll(Arrays.asList(expectedFieldOrdering)); - return testList.toArray(new String[testList.size()]); }