Skip to content

Commit a85f6cb

Browse files
committed
8265613: False positives for "Related Packages"
Reviewed-by: jjg
1 parent 6e5026a commit a85f6cb

File tree

2 files changed

+38
-34
lines changed

2 files changed

+38
-34
lines changed

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ private List<PackageElement> findRelatedPackages() {
322322
String pkgPrefix = lastdot > 0 ? pkgName.substring(0, lastdot) : null;
323323
List<PackageElement> packages = new ArrayList<>(
324324
filterPackages(p -> p.getQualifiedName().toString().equals(pkgPrefix)));
325+
boolean hasSuperPackage = !packages.isEmpty();
325326

326327
// add subpackages unless there are very many of them
327328
Pattern subPattern = Pattern.compile(pkgName.replace(".", "\\.") + "\\.\\w+");
@@ -331,8 +332,9 @@ private List<PackageElement> findRelatedPackages() {
331332
packages.addAll(subpackages);
332333
}
333334

334-
// only add sibling packages if we are beneath threshold, and number of siblings is beneath threshold as well
335-
if (pkgPrefix != null && packages.size() <= MAX_SIBLING_PACKAGES) {
335+
// only add sibling packages if there is a non-empty super package, we are beneath threshold,
336+
// and number of siblings is beneath threshold as well
337+
if (hasSuperPackage && pkgPrefix != null && packages.size() <= MAX_SIBLING_PACKAGES) {
336338
Pattern siblingPattern = Pattern.compile(pkgPrefix.replace(".", "\\.") + "\\.\\w+");
337339

338340
List<PackageElement> siblings = filterPackages(

test/langtools/jdk/javadoc/doclet/testRelatedPackages/TestRelatedPackages.java

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
/*
2525
* @test
26-
* @bug 8260388
26+
* @bug 8260388 8265613
2727
* @summary Listing (sub)packages at package level of API documentation
2828
* @library /tools/lib ../../lib
2929
* @modules jdk.javadoc/jdk.javadoc.internal.tool
@@ -52,95 +52,97 @@ public static void main(String... args) throws Exception {
5252
@Test
5353
public void testRelatedPackages(Path base) throws Exception {
5454
Path src = base.resolve("src-packages");
55-
tb.writeFile(src.resolve("p1/package-info.java"), "package p1;\n");
56-
tb.writeFile(src.resolve("p1/s1/A.java"), "package p1.s1; public class A {}\n");
57-
tb.writeFile(src.resolve("p1/s2/package-info.java"), "package p1.s1;\n");
58-
tb.writeFile(src.resolve("p1/s3/B.java"), "package p1.s3; public class B {}\n");
59-
tb.writeFile(src.resolve("p1/s3/t1/package-info.java"), "package p1.s3.t1;\n");
60-
tb.writeFile(src.resolve("p1/s3/t2/C.java"), "package p1.s3.t2; public class C {}\n");
55+
tb.writeFile(src.resolve("t/p1/package-info.java"), "package t.p1;\n");
56+
tb.writeFile(src.resolve("t/p1/s1/A.java"), "package t.p1.s1; public class A {}\n");
57+
tb.writeFile(src.resolve("t/p1/s2/package-info.java"), "package t.p1.s1;\n");
58+
tb.writeFile(src.resolve("t/p1/s3/B.java"), "package t.p1.s3; public class B {}\n");
59+
tb.writeFile(src.resolve("t/p1/s3/t1/package-info.java"), "package t.p1.s3.t1;\n");
60+
tb.writeFile(src.resolve("t/p1/s3/t2/C.java"), "package t.p1.s3.t2; public class C {}\n");
61+
tb.writeFile(src.resolve("t/p2/X.java"), "package t.p2; public class X {}\n");
6162

6263
javadoc("-d", "out-packages",
6364
"-sourcepath", src.toString(),
64-
"-subpackages", "p1");
65+
"-subpackages", "t.p1:t.p2");
6566
checkExit(Exit.OK);
66-
checkOutput("p1/package-summary.html", true,
67+
checkOutput("t/p1/package-summary.html", true,
6768
"""
6869
<div class="caption"><span>Related Packages</span></div>
6970
<div class="summary-table two-column-summary">
7071
<div class="table-header col-first">Package</div>
7172
<div class="table-header col-last">Description</div>
72-
<div class="col-first even-row-color"><a href="s1/package-summary.html">p1.s1</a></div>
73+
<div class="col-first even-row-color"><a href="s1/package-summary.html">t.p1.s1</a></div>
7374
<div class="col-last even-row-color">&nbsp;</div>
74-
<div class="col-first odd-row-color"><a href="s2/package-summary.html">p1.s2</a></div>
75+
<div class="col-first odd-row-color"><a href="s2/package-summary.html">t.p1.s2</a></div>
7576
<div class="col-last odd-row-color">&nbsp;</div>
76-
<div class="col-first even-row-color"><a href="s3/package-summary.html">p1.s3</a></div>
77+
<div class="col-first even-row-color"><a href="s3/package-summary.html">t.p1.s3</a></div>
7778
<div class="col-last even-row-color">&nbsp;</div>
7879
</div>""");
79-
checkOutput("p1/s1/package-summary.html", true,
80+
checkOutput("t/p1/s1/package-summary.html", true,
8081
"""
8182
<div class="caption"><span>Related Packages</span></div>
8283
<div class="summary-table two-column-summary">
8384
<div class="table-header col-first">Package</div>
8485
<div class="table-header col-last">Description</div>
85-
<div class="col-first even-row-color"><a href="../package-summary.html">p1</a></div>
86+
<div class="col-first even-row-color"><a href="../package-summary.html">t.p1</a></div>
8687
<div class="col-last even-row-color">&nbsp;</div>
87-
<div class="col-first odd-row-color"><a href="../s2/package-summary.html">p1.s2</a></div>
88+
<div class="col-first odd-row-color"><a href="../s2/package-summary.html">t.p1.s2</a></div>
8889
<div class="col-last odd-row-color">&nbsp;</div>
89-
<div class="col-first even-row-color"><a href="../s3/package-summary.html">p1.s3</a></div>
90+
<div class="col-first even-row-color"><a href="../s3/package-summary.html">t.p1.s3</a></div>
9091
<div class="col-last even-row-color">&nbsp;</div>
9192
</div>""");
92-
checkOutput("p1/s2/package-summary.html", true,
93+
checkOutput("t/p1/s2/package-summary.html", true,
9394
"""
9495
<div class="caption"><span>Related Packages</span></div>
9596
<div class="summary-table two-column-summary">
9697
<div class="table-header col-first">Package</div>
9798
<div class="table-header col-last">Description</div>
98-
<div class="col-first even-row-color"><a href="../package-summary.html">p1</a></div>
99+
<div class="col-first even-row-color"><a href="../package-summary.html">t.p1</a></div>
99100
<div class="col-last even-row-color">&nbsp;</div>
100-
<div class="col-first odd-row-color"><a href="../s1/package-summary.html">p1.s1</a></div>
101+
<div class="col-first odd-row-color"><a href="../s1/package-summary.html">t.p1.s1</a></div>
101102
<div class="col-last odd-row-color">&nbsp;</div>
102-
<div class="col-first even-row-color"><a href="../s3/package-summary.html">p1.s3</a></div>
103+
<div class="col-first even-row-color"><a href="../s3/package-summary.html">t.p1.s3</a></div>
103104
<div class="col-last even-row-color">&nbsp;</div>
104105
</div>""");
105-
checkOutput("p1/s3/package-summary.html", true,
106+
checkOutput("t/p1/s3/package-summary.html", true,
106107
"""
107108
<div class="caption"><span>Related Packages</span></div>
108109
<div class="summary-table two-column-summary">
109110
<div class="table-header col-first">Package</div>
110111
<div class="table-header col-last">Description</div>
111-
<div class="col-first even-row-color"><a href="../package-summary.html">p1</a></div>
112+
<div class="col-first even-row-color"><a href="../package-summary.html">t.p1</a></div>
112113
<div class="col-last even-row-color">&nbsp;</div>
113-
<div class="col-first odd-row-color"><a href="t1/package-summary.html">p1.s3.t1</a></div>
114+
<div class="col-first odd-row-color"><a href="t1/package-summary.html">t.p1.s3.t1</a></div>
114115
<div class="col-last odd-row-color">&nbsp;</div>
115-
<div class="col-first even-row-color"><a href="t2/package-summary.html">p1.s3.t2</a></div>
116+
<div class="col-first even-row-color"><a href="t2/package-summary.html">t.p1.s3.t2</a></div>
116117
<div class="col-last even-row-color">&nbsp;</div>
117-
<div class="col-first odd-row-color"><a href="../s1/package-summary.html">p1.s1</a></div>
118+
<div class="col-first odd-row-color"><a href="../s1/package-summary.html">t.p1.s1</a></div>
118119
<div class="col-last odd-row-color">&nbsp;</div>
119-
<div class="col-first even-row-color"><a href="../s2/package-summary.html">p1.s2</a></div>
120+
<div class="col-first even-row-color"><a href="../s2/package-summary.html">t.p1.s2</a></div>
120121
<div class="col-last even-row-color">&nbsp;</div>
121122
</div>""");
122-
checkOutput("p1/s3/t1/package-summary.html", true,
123+
checkOutput("t/p1/s3/t1/package-summary.html", true,
123124
"""
124125
<div class="caption"><span>Related Packages</span></div>
125126
<div class="summary-table two-column-summary">
126127
<div class="table-header col-first">Package</div>
127128
<div class="table-header col-last">Description</div>
128-
<div class="col-first even-row-color"><a href="../package-summary.html">p1.s3</a></div>
129+
<div class="col-first even-row-color"><a href="../package-summary.html">t.p1.s3</a></div>
129130
<div class="col-last even-row-color">&nbsp;</div>
130-
<div class="col-first odd-row-color"><a href="../t2/package-summary.html">p1.s3.t2</a></div>
131+
<div class="col-first odd-row-color"><a href="../t2/package-summary.html">t.p1.s3.t2</a></div>
131132
<div class="col-last odd-row-color">&nbsp;</div>
132133
</div>""");
133-
checkOutput("p1/s3/t2/package-summary.html", true,
134+
checkOutput("t/p1/s3/t2/package-summary.html", true,
134135
"""
135136
<div class="caption"><span>Related Packages</span></div>
136137
<div class="summary-table two-column-summary">
137138
<div class="table-header col-first">Package</div>
138139
<div class="table-header col-last">Description</div>
139-
<div class="col-first even-row-color"><a href="../package-summary.html">p1.s3</a></div>
140+
<div class="col-first even-row-color"><a href="../package-summary.html">t.p1.s3</a></div>
140141
<div class="col-last even-row-color">&nbsp;</div>
141-
<div class="col-first odd-row-color"><a href="../t1/package-summary.html">p1.s3.t1</a></div>
142+
<div class="col-first odd-row-color"><a href="../t1/package-summary.html">t.p1.s3.t1</a></div>
142143
<div class="col-last odd-row-color">&nbsp;</div>
143144
</div>""");
145+
checkOutput("t/p2/package-summary.html", false, "Related Packages");
144146
}
145147

146148
@Test

0 commit comments

Comments
 (0)