8168965: search items are not listed in any sensible order
Reviewed-by: jjg, ksrini
This commit is contained in:
parent
e05d91747c
commit
a55e3cd16b
langtools
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources
test/jdk/javadoc/doclet/testSearch
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -169,11 +169,42 @@ $(function() {
|
||||
var tresult = new Array();
|
||||
var mresult = new Array();
|
||||
var tgresult = new Array();
|
||||
var secondaryresult = new Array();
|
||||
var displayCount = 0;
|
||||
var exactMatcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term) + "$", "i");
|
||||
camelCaseRegexp = ($.ui.autocomplete.escapeRegex(request.term)).split(/(?=[A-Z])/).join("([a-z0-9_$]*?)");
|
||||
var camelCaseMatcher = new RegExp("^" + camelCaseRegexp);
|
||||
secondaryMatcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
|
||||
|
||||
// Return the nested innermost name from the specified object
|
||||
function nestedName(e) {
|
||||
return e.l.substring(e.l.lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
// Sort array items by short name (as opposed to fully qualified name).
|
||||
// Additionally, sort by the nested type name, when present,
|
||||
// as opposed to top level short name.
|
||||
function sortAndConcatResults(a1, a2) {
|
||||
var sortingKey;
|
||||
var sortArray = function(e1, e2) {
|
||||
var l = sortingKey(e1);
|
||||
var m = sortingKey(e2);
|
||||
if (l < m)
|
||||
return -1;
|
||||
if (l > m)
|
||||
return 1;
|
||||
return 0;
|
||||
};
|
||||
sortingKey = function(e) {
|
||||
return nestedName(e).toUpperCase();
|
||||
};
|
||||
a1.sort(sortArray);
|
||||
a2.sort(sortArray);
|
||||
a1 = a1.concat(a2);
|
||||
a2.length = 0;
|
||||
return a1;
|
||||
}
|
||||
|
||||
if (moduleSearchIndex) {
|
||||
var mdleCount = 0;
|
||||
$.each(moduleSearchIndex, function(index, item) {
|
||||
@ -184,10 +215,11 @@ $(function() {
|
||||
} else if (camelCaseMatcher.test(item.l)) {
|
||||
result.unshift(item);
|
||||
} else if (secondaryMatcher.test(item.l)) {
|
||||
result.push(item);
|
||||
secondaryresult.push(item);
|
||||
}
|
||||
});
|
||||
displayCount = mdleCount;
|
||||
result = sortAndConcatResults(result, secondaryresult);
|
||||
}
|
||||
if (packageSearchIndex) {
|
||||
var pCount = 0;
|
||||
@ -197,48 +229,51 @@ $(function() {
|
||||
pkg = (item.m)
|
||||
? (item.m + "/" + item.l)
|
||||
: item.l;
|
||||
if (exactMatcher.test(item.l)) {
|
||||
var s = nestedName(item);
|
||||
if (exactMatcher.test(s)) {
|
||||
presult.unshift(item);
|
||||
pCount++;
|
||||
} else if (camelCaseMatcher.test(pkg)) {
|
||||
presult.unshift(item);
|
||||
} else if (secondaryMatcher.test(pkg)) {
|
||||
presult.push(item);
|
||||
secondaryresult.push(item);
|
||||
}
|
||||
});
|
||||
result = result.concat(presult);
|
||||
result = result.concat(sortAndConcatResults(presult, secondaryresult));
|
||||
displayCount = (pCount > displayCount) ? pCount : displayCount;
|
||||
}
|
||||
if (typeSearchIndex) {
|
||||
var tCount = 0;
|
||||
$.each(typeSearchIndex, function(index, item) {
|
||||
item[category] = catTypes;
|
||||
if (exactMatcher.test(item.l)) {
|
||||
var s = nestedName(item);
|
||||
if (exactMatcher.test(s)) {
|
||||
tresult.unshift(item);
|
||||
tCount++;
|
||||
} else if (camelCaseMatcher.test(item.l)) {
|
||||
} else if (camelCaseMatcher.test(s)) {
|
||||
tresult.unshift(item);
|
||||
} else if (secondaryMatcher.test(item.p + "." + item.l)) {
|
||||
tresult.push(item);
|
||||
secondaryresult.push(item);
|
||||
}
|
||||
});
|
||||
result = result.concat(tresult);
|
||||
result = result.concat(sortAndConcatResults(tresult, secondaryresult));
|
||||
displayCount = (tCount > displayCount) ? tCount : displayCount;
|
||||
}
|
||||
if (memberSearchIndex) {
|
||||
var mCount = 0;
|
||||
$.each(memberSearchIndex, function(index, item) {
|
||||
item[category] = catMembers;
|
||||
if (exactMatcher.test(item.l)) {
|
||||
var s = nestedName(item);
|
||||
if (exactMatcher.test(s)) {
|
||||
mresult.unshift(item);
|
||||
mCount++;
|
||||
} else if (camelCaseMatcher.test(item.l)) {
|
||||
} else if (camelCaseMatcher.test(s)) {
|
||||
mresult.unshift(item);
|
||||
} else if (secondaryMatcher.test(item.c + "." + item.l)) {
|
||||
mresult.push(item);
|
||||
secondaryresult.push(item);
|
||||
}
|
||||
});
|
||||
result = result.concat(mresult);
|
||||
result = result.concat(sortAndConcatResults(mresult, secondaryresult));
|
||||
displayCount = (mCount > displayCount) ? mCount : displayCount;
|
||||
}
|
||||
if (tagSearchIndex) {
|
||||
@ -249,10 +284,10 @@ $(function() {
|
||||
tgresult.unshift(item);
|
||||
tgCount++;
|
||||
} else if (secondaryMatcher.test(item.l)) {
|
||||
tgresult.push(item);
|
||||
secondaryresult.push(item);
|
||||
}
|
||||
});
|
||||
result = result.concat(tgresult);
|
||||
result = result.concat(sortAndConcatResults(tgresult, secondaryresult));
|
||||
displayCount = (tgCount > displayCount) ? tgCount : displayCount;
|
||||
}
|
||||
displayCount = (displayCount > 500) ? displayCount : 500;
|
||||
@ -312,4 +347,4 @@ $(function() {
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8141492 8071982 8141636 8147890 8166175
|
||||
* @bug 8141492 8071982 8141636 8147890 8166175 8168965
|
||||
* @summary Test the search feature of javadoc.
|
||||
* @author bpatel
|
||||
* @library ../lib
|
||||
@ -486,6 +486,9 @@ public class TestSearch extends JavadocTester {
|
||||
checkOutput("search.js", true,
|
||||
"camelCaseRegexp = ($.ui.autocomplete.escapeRegex(request.term)).split(/(?=[A-Z])/).join(\"([a-z0-9_$]*?)\");",
|
||||
"var camelCaseMatcher = new RegExp(\"^\" + camelCaseRegexp);",
|
||||
"camelCaseMatcher.test(item.l)");
|
||||
"camelCaseMatcher.test(item.l)",
|
||||
"var secondaryresult = new Array();",
|
||||
"function nestedName(e) {",
|
||||
"function sortAndConcatResults(a1, a2) {");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user