From 0a3809f0be94c92c2c46f00fe5ff981afdd55cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20Walln=C3=B6fer?= Date: Wed, 26 Nov 2025 14:07:06 +0000 Subject: [PATCH] 8369531: Wrong tooltip used in external class links Reviewed-by: liach --- .../formats/html/HtmlDocletWriter.java | 7 +- .../doclets/formats/html/HtmlLinkFactory.java | 4 +- .../doclets/formats/html/markup/Links.java | 4 +- .../html/resources/standard.properties | 1 - .../html/resources/standard_de.properties | 1 - .../html/resources/standard_ja.properties | 1 - .../html/resources/standard_zh_CN.properties | 1 - .../TestClassCrossReferences.java | 39 ++++---- .../TestDocRootInlineTag.java | 6 +- .../TestExternalOverriddenMethod.java | 18 ++-- .../TestGenericTypeLink.java | 91 +++++++++---------- .../doclet/testLinkOption/TestLinkOption.java | 41 ++++----- .../TestLinkOptionWithAutomaticModule.java | 8 +- .../TestLinkOptionWithModule.java | 14 +-- .../testLinkOption/TestRedirectLinks.java | 9 +- .../testLinkPlatform/TestLinkPlatform.java | 40 ++++---- .../TestLinkTagletWithModule.java | 23 ++--- .../testMarkdown/TestMarkdownLinks.java | 12 +-- .../doclet/testModules/TestModules.java | 4 +- .../doclet/testPreview/TestPreview.java | 6 +- .../testSeeTag/TestSeeTagWithModule.java | 22 ++--- .../testSnippetTag/TestSnippetMarkup.java | 2 +- .../testTitleInHref/TestTitleInHref.java | 2 +- 23 files changed, 171 insertions(+), 185 deletions(-) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java index 6896b86279f..1f2c4d97dd3 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java @@ -908,12 +908,13 @@ public abstract class HtmlDocletWriter { * @param refMemName the name of the member being referenced. This should * be null or empty string if no member is being referenced. * @param label the label for the external link. + * @param title the title for the link * @param style optional style for the link. * @param code true if the label should be code font. * @return the link */ public Content getCrossClassLink(TypeElement classElement, String refMemName, - Content label, HtmlStyle style, boolean code) { + Content label, String title, HtmlStyle style, boolean code) { if (classElement != null) { String className = utils.getSimpleName(classElement); PackageElement packageElement = utils.containingPackage(classElement); @@ -931,9 +932,7 @@ public abstract class HtmlDocletWriter { DocLink link = configuration.extern.getExternalLink(packageElement, pathToRoot, className + ".html", refMemName); return links.createLink(link, - (label == null) || label.isEmpty() ? defaultLabel : label, style, - resources.getText("doclet.Href_Class_Or_Interface_Title", - getLocalizedPackageName(packageElement)), true); + (label == null) || label.isEmpty() ? defaultLabel : label, style, title, true); } } return null; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java index 4dbbd5e172a..cb8b3dbfd40 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java @@ -305,7 +305,7 @@ public class HtmlLinkFactory { } else { Content crossLink = m_writer.getCrossClassLink( typeElement, linkInfo.getFragment(), - label, linkInfo.getStyle(), true); + label, linkInfo.getTitle(), linkInfo.getStyle(), true); if (crossLink != null) { link.add(crossLink); addSuperscript(link, flags, null, typeElement, previewTarget, restrictedTarget); @@ -361,7 +361,7 @@ public class HtmlLinkFactory { if (fileName != null) { return m_writer.links.createLink(fileName.fragment(id.name()), label); } else if (typeElement != null) { - return (m_writer.getCrossClassLink(typeElement, id.name(), label, null, false)); + return (m_writer.getCrossClassLink(typeElement, id.name(), label, null, null, false)); } else { return label; } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java index 0af29135654..285ab260e0e 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2025, 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 @@ -197,7 +197,7 @@ public class Links { if (style != null) { l.setStyle(style); } - if (title != null && title.length() != 0) { + if (title != null && !title.isEmpty()) { l.put(HtmlAttr.TITLE, title); } if (isExternal) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties index df3c2fc3a53..4366295477b 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties @@ -51,7 +51,6 @@ doclet.Href_Annotation_Interface_Title=annotation interface in {0} doclet.Href_Enum_Title=enum in {0} doclet.Href_Enum_Class_Title=enum class in {0} doclet.Href_Type_Param_Title=type parameter in {0} -doclet.Href_Class_Or_Interface_Title=class or interface in {0} doclet.Summary=Summary: doclet.Detail=Detail: doclet.Module_Sub_Nav=Module: diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties index 2669aa9bdc0..4cbb4b97774 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties @@ -51,7 +51,6 @@ doclet.Href_Annotation_Interface_Title=Annotationsschnittstelle in {0} doclet.Href_Enum_Title=Enum in {0} doclet.Href_Enum_Class_Title=Enum-Klasse in {0} doclet.Href_Type_Param_Title=Typparameter in {0} -doclet.Href_Class_Or_Interface_Title=Klasse oder Schnittstelle in {0} doclet.Summary=Übersicht: doclet.Detail=Details: doclet.Module_Sub_Nav=Modul: diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties index 1694dc980bc..2151b3f4a2e 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties @@ -51,7 +51,6 @@ doclet.Href_Annotation_Interface_Title={0}内の注釈インタフェース doclet.Href_Enum_Title={0}内の列挙型 doclet.Href_Enum_Class_Title={0}の列挙クラス doclet.Href_Type_Param_Title={0}内の型パラメータ -doclet.Href_Class_Or_Interface_Title={0}内のクラスまたはインタフェース doclet.Summary=概要: doclet.Detail=詳細: doclet.Module_Sub_Nav=モジュール: diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties index 8881171351e..66620d158bb 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties @@ -51,7 +51,6 @@ doclet.Href_Annotation_Interface_Title={0} 中的批注接口 doclet.Href_Enum_Title={0}中的枚举 doclet.Href_Enum_Class_Title={0} 中的枚举类 doclet.Href_Type_Param_Title={0}中的类型参数 -doclet.Href_Class_Or_Interface_Title={0}中的类或接口 doclet.Summary=概要: doclet.Detail=详细资料: doclet.Module_Sub_Nav=模块: diff --git a/test/langtools/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java b/test/langtools/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java index 982e38dafaa..1e9461454f7 100644 --- a/test/langtools/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java +++ b/test/langtools/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, 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 @@ -24,6 +24,7 @@ /* * @test * @bug 4652655 4857717 8025633 8026567 8071982 8164407 8182765 8205593 8240169 + * 8369531 * @summary This test verifies that class cross references work properly. * @library ../../lib * @modules jdk.javadoc/jdk.javadoc.internal.tool @@ -58,18 +59,18 @@ public class TestClassCrossReferences extends JavadocTester { "Link to math package""", "Link to AttributeContext inn\ - erclass""", + javax/swing/text/AbstractDocument.AttributeContext.html" title="interface in jav\ + ax.swing.text" class="external-link">Link to AttributeContext innerclass""", "Link to external class BigDecimal""", + java/math/BigDecimal.html" title="class in java.math" class="external-link">Link to external class BigDecimal""", "Link to external member gcd""", + java/math/BigInteger.html#gcd-java.math.BigInteger-" class="external-link">Link to external member gcd""", "Link to external member URI""", + javax/tools/SimpleJavaFileObject.html#uri" class="external-link">Link to e\ + xternal member URI""", """
Overrides:
@@ -95,18 +96,18 @@ public class TestClassCrossReferences extends JavadocTester { "Link to math package""", "Link to AttributeContext inn\ - erclass""", + javax/swing/text/AbstractDocument.AttributeContext.html" title="interface in jav\ + ax.swing.text" class="external-link">Link to AttributeContext innerclass""", "Link to external class BigDecimal""", + java/math/BigDecimal.html" title="class in java.math" class="external-link">Link to external class BigDecimal""", "Link to external member gcd""", + java/math/BigInteger.html#gcd-java.math.BigInteger-" class="external-link">Link to external member gcd""", "Link to external member URI""", + javax/tools/SimpleJavaFileObject.html#uri" class="external-link">Link to e\ + xternal member URI""", """
Overrides:
diff --git a/test/langtools/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java b/test/langtools/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java index 04d1e0f14db..a1f97282c50 100644 --- a/test/langtools/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java +++ b/test/langtools/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2025, 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 @@ -57,11 +57,11 @@ public class TestDocRootInlineTag extends JavadocTester { checkOutput("TestDocRootTag.html", true, "File""", + /java/io/File.html" title="class in java.io" class="external-link">File""", """ index""", "Second File Link""", + /java/io/File.html" title="class in java.io" class="external-link">Second File Link""", "The value of @docRoot is \"./\""); checkOutput("index-all.html", true, diff --git a/test/langtools/jdk/javadoc/doclet/testExternalOverriddenMethod/TestExternalOverriddenMethod.java b/test/langtools/jdk/javadoc/doclet/testExternalOverriddenMethod/TestExternalOverriddenMethod.java index 889b2edd1b5..7fd5c054f89 100644 --- a/test/langtools/jdk/javadoc/doclet/testExternalOverriddenMethod/TestExternalOverriddenMethod.java +++ b/test/langtools/jdk/javadoc/doclet/testExternalOverriddenMethod/TestExternalOverriddenMethod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2025, 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 4857717 8025633 8026567 8164407 8182765 8205593 + * @bug 4857717 8025633 8026567 8164407 8182765 8205593 8369531 * @summary Test to make sure that externally overridden and implemented methods * are documented properly. The method should still include "implements" or * "overrides" documentation even though the method is external. @@ -56,15 +56,17 @@ public class TestExternalOverriddenMethod extends JavadocTester { """
Overrides:
read in class FilterReader
""", + /java/io/FilterReader.html#read--" class="external-link">read in \ + class Filter\ + Reader""", """
Specified by:
readInt in interface DataInput
""" + /java/io/DataInput.html#readInt--" class="external-link">readInt \ + in interface DataI\ + nput""" ); } } diff --git a/test/langtools/jdk/javadoc/doclet/testGenericTypeLink/TestGenericTypeLink.java b/test/langtools/jdk/javadoc/doclet/testGenericTypeLink/TestGenericTypeLink.java index b6317a1e581..72554ef34fe 100644 --- a/test/langtools/jdk/javadoc/doclet/testGenericTypeLink/TestGenericTypeLink.java +++ b/test/langtools/jdk/javadoc/doclet/testGenericTypeLink/TestGenericTypeLink.java @@ -23,7 +23,7 @@ /* * @test - * @bug 8177280 8262992 8259499 8307377 8352249 + * @bug 8177280 8262992 8259499 8307377 8352249 8369531 * @summary see and link tag syntax should allow generic types * @library ../../lib * @modules jdk.javadoc/jdk.javadoc.internal.tool @@ -53,13 +53,13 @@ public class TestGenericTypeLink extends JavadocTester { checkOutput("pkg1/A.html", true, """
List<\ - ;String> - List<? extends CharSequence> + ist.html" title="interface in java.util" class="external-link">List<String> + List<? extends CharSequence> someMethod(ArrayList<Integer>\ ;, int) otherMethod(Map<String, Stri\ @@ -72,20 +72,19 @@ public class TestGenericTypeLink extends JavadocTester {
"""); @@ -148,10 +145,10 @@ public class TestGenericTypeLink extends JavadocTester { /a>
Here's a generic link: A<Object, \ - RuntimeExcepti\ - on>.Inner"""); + html" title="class in java.lang" class="external-link">Object, RuntimeException>.Inner"""); } /** diff --git a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java index a645ef31dec..d13e6617247 100644 --- a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java +++ b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java @@ -24,7 +24,7 @@ /* * @test * @bug 4720957 5020118 8026567 8038976 8184969 8164407 8182765 8205593 - * 8216497 + * 8216497 8369531 * @summary Test to make sure that -link and -linkoffline link to * right files, and URLs with and without trailing slash are accepted. * @library ../../lib @@ -73,8 +73,8 @@ public class TestLinkOption extends JavadocTester { checkOutput("pkg/C.html", true, "Link to String Class""", + java/lang/String.html" title="class in java.lang" class="external-link">Li\ + nk to String Class""", //Make sure the parameters are formatted properly when the -link option is used. """ (int p1, @@ -84,20 +84,20 @@ public class TestLinkOption extends JavadocTester { (int p1, int p2, Object p3)"""); + java/lang/Object.html" title="class in java.lang" class="external-link">Object p3)"""); checkOutput("pkg/B.html", true, """
A method with html tag the method getSystemClassLoader() \ - as the parent class loader.
""", + java/lang/ClassLoader.html#getSystemClassLoader--" class="external-link"><\ + b>getSystemClassLoader() as the parent class loader.
""", """
is equivalent to invoking createTempFile(prefix, s\ uffix, null).
""", "Link-Plain to String Class""", + java/lang/String.html" title="class in java.lang" class="external-link">Link-Pla\ + in to String Class""", "getSystemClassLoader()", "createTempFile(prefix, suffix, null)", """ @@ -121,8 +121,8 @@ public class TestLinkOption extends JavadocTester {
public abstract class StringBuilderChild extends Object
""" + java/lang/Object.html" title="class in java.lang" class="external-link">Object""" ); // Generate the documentation using -linkoffline and a relative path as the first parameter. @@ -137,7 +137,7 @@ public class TestLinkOption extends JavadocTester { checkOutput("pkg2/C2.html", true, """ This is a link to Class C.""" + /pkg/C.html" title="class in pkg" class="external-link">Class C.""" ); String out3 = "out3"; @@ -168,12 +168,12 @@ public class TestLinkOption extends JavadocTester { extends java.lang.Object
+ link to mylib.lang.StringBuilderChild\ + . """ ); @@ -193,12 +193,11 @@ public class TestLinkOption extends JavadocTester { extends java.lang.Object + link to mylib.lang.StringBuilderChild. """ ); diff --git a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithAutomaticModule.java b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithAutomaticModule.java index fb31822d0e9..3f1682946b3 100644 --- a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithAutomaticModule.java +++ b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithAutomaticModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2025, 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,7 +104,7 @@ public class TestLinkOptionWithAutomaticModule extends JavadocTester { checkExit(Exit.OK); checkOutput("p/MyClass.html", true, """ - extends LibClass"""); } @@ -129,7 +129,7 @@ public class TestLinkOptionWithAutomaticModule extends JavadocTester { checkExit(Exit.OK); checkOutput("my.module/p/MyClass.html", true, """ - extends LibClass"""); } @@ -154,7 +154,7 @@ public class TestLinkOptionWithAutomaticModule extends JavadocTester { checkExit(Exit.OK); checkOutput("my.module/p/MyClass.html", true, """ - extends LibClass"""); } } diff --git a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithModule.java b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithModule.java index 113cde3c60d..f2f095b255b 100644 --- a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithModule.java +++ b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOptionWithModule.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2025, 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 @@ -79,7 +79,7 @@ public class TestLinkOptionWithModule extends JavadocTester { checkExit(Exit.OK); checkOutput("com.ex2/com/ex2/B.html", true, """ - A"""); + A"""); } @Test @@ -98,7 +98,7 @@ public class TestLinkOptionWithModule extends JavadocTester { checkExit(Exit.OK); checkOutput("com/ex2/B.html", true, """ - A"""); + A"""); } @Test @@ -121,7 +121,7 @@ public class TestLinkOptionWithModule extends JavadocTester { + "in ../out3a/ are in the unnamed module"); checkOutput("com.ex2/com/ex2/B.html", true, """ - A"""); + A"""); } @Test @@ -143,7 +143,7 @@ public class TestLinkOptionWithModule extends JavadocTester { + "in ../out4a/ are in named modules"); checkOutput("com/ex2/B.html", true, """ - A"""); + A"""); } @Test @@ -167,7 +167,7 @@ public class TestLinkOptionWithModule extends JavadocTester { + "in ../out5a/ are in the unnamed module"); checkOutput("com.ex2/com/ex2/B.html", true, """ - A"""); + A"""); } @Test @@ -193,7 +193,7 @@ public class TestLinkOptionWithModule extends JavadocTester { + "in ../out6a/ are in named modules"); checkOutput("com/ex2/B.html", true, """ - A"""); + A"""); } void initModulesAndPackages() throws Exception{ diff --git a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestRedirectLinks.java b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestRedirectLinks.java index 3c51b938396..2a415141229 100644 --- a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestRedirectLinks.java +++ b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestRedirectLinks.java @@ -162,11 +162,12 @@ public class TestRedirectLinks extends JavadocTester { checkExit(Exit.OK); checkOutput("pkg/B.html", true, "Link-Plain to String Class"""); checkOutput("pkg/C.html", true, "Object"""); + /java.base/java/lang/Object.html" title="class in java.lang" class=\ + "external-link">Object"""); } private Path libApi = Path.of("libApi"); @@ -272,10 +273,10 @@ public class TestRedirectLinks extends JavadocTester { "warning: URL " + oldURL + "/element-list was redirected to " + newURL + "/element-list"); checkOutput("mC/p5/C5.html", true, "extends C1"""); + /mA/p1/C1.html" title="class in p1" class="external-link">C1"""); checkOutput("mC/p6/C6.html", true, "C4"""); + /mB/p4/C4.html" title="class in p4" class="external-link">C4"""); } finally { if (oldServer != null) { out.println("Stopping old server on " + oldServer.getAddress()); diff --git a/test/langtools/jdk/javadoc/doclet/testLinkPlatform/TestLinkPlatform.java b/test/langtools/jdk/javadoc/doclet/testLinkPlatform/TestLinkPlatform.java index 5c22d6abb6d..5b2a751a295 100644 --- a/test/langtools/jdk/javadoc/doclet/testLinkPlatform/TestLinkPlatform.java +++ b/test/langtools/jdk/javadoc/doclet/testLinkPlatform/TestLinkPlatform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2025, 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 8216497 8297437 + * @bug 8216497 8297437 8369531 * @summary javadoc should auto-link to platform classes * @library /tools/lib ../../lib * @modules @@ -106,15 +106,15 @@ public class TestLinkPlatform extends JavadocTester { if (version <= 9) { checkOutput("p/q/A.html", true, "", - "", - ""); + "", + "", + ""); } else { checkOutput("p/q/A.html", true, "", - "", - ""); + "", + "", + ""); } } } @@ -136,15 +136,15 @@ public class TestLinkPlatform extends JavadocTester { if (version <= 9) { checkOutput("p/q/A.html", true, "", - "", - ""); + "", + "", + ""); } else { checkOutput("p/q/A.html", true, "", - "", - ""); + "", + "", + ""); } } } @@ -166,15 +166,15 @@ public class TestLinkPlatform extends JavadocTester { if (version <= 9) { checkOutput("p/q/A.html", true, "", - "", - ""); + "", + "", + ""); } else { checkOutput("p/q/A.html", true, "", - "", - ""); + "", + "", + ""); } } } diff --git a/test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTagletWithModule.java b/test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTagletWithModule.java index b10c746bde4..1b30fe365a4 100644 --- a/test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTagletWithModule.java +++ b/test/langtools/jdk/javadoc/doclet/testLinkTaglet/TestLinkTagletWithModule.java @@ -107,20 +107,15 @@ public class TestLinkTagletWithModule extends JavadocTester { + Lib + class link + Lib.method(String) """); } @@ -164,9 +159,9 @@ public class TestLinkTagletWithModule extends JavadocTester { """); diff --git a/test/langtools/jdk/javadoc/doclet/testMarkdown/TestMarkdownLinks.java b/test/langtools/jdk/javadoc/doclet/testMarkdown/TestMarkdownLinks.java index 7bfb17d6864..76fa87f4fff 100644 --- a/test/langtools/jdk/javadoc/doclet/testMarkdown/TestMarkdownLinks.java +++ b/test/langtools/jdk/javadoc/doclet/testMarkdown/TestMarkdownLinks.java @@ -245,19 +245,19 @@ public class TestMarkdownLinks extends JavadocTester { "/api/java.base/java/util/package-summary.html\" class=\"external-link\">java.util", "class String", + "/api/java.base/java/lang/String.html\" title=\"class in java.lang\" class=\"external-link\">String", "interface Runnable", + "/api/java.base/java/lang/Runnable.html\" title=\"interface in java.lang\" class=\"external-link\">Runnable", "a field String.CASE_INSENSITIVE_ORDER", + "/api/java.base/java/lang/String.html#CASE_INSENSITIVE_ORDER\" class=\"external-link\">String.CASE_INSENSITIVE_ORDER", "a constructor String()", + "/api/java.base/java/lang/String.html#%3Cinit%3E()\" class=\"external-link\">String()", "a method String.chars()"); + "/api/java.base/java/lang/String.html#chars()\" class=\"external-link\">String.chars()"); } /// Test the ability to include array elements in method signatures for @@ -346,4 +346,4 @@ public class TestMarkdownLinks extends JavadocTester { """); } -} \ No newline at end of file +} diff --git a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java index 5f140cc2c03..33a7249b596 100644 --- a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java +++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java @@ -1331,8 +1331,8 @@ public class TestModules extends JavadocTester { checkOutput("moduleB/testpkg3mdlB/package-summary.html", true, """ Link to \ - String Class"""); + ml" title="class in java.lang" class="external-link">Link to String Class<\ + /code>"""); checkOutput("moduleB/testpkg3mdlB/package-summary.html", true, """ TestPreviewDeclaration"); checkOutput("m/pkg/TestPreviewAPIUse.html", true, - "CorePREVIEW"); checkOutput("m/pkg/DocAnnotation.html", true, "public @interface DocAnnotation"); @@ -254,7 +254,7 @@ public class TestPreview extends JavadocTester { checkOutput("api2/api/API.html", true, "

test()

", "

testNoPreviewInSig()

", - "title=\"class or interface in java.util\" class=\"external-link\">List<List<APIPREVIEW>"); checkOutput("api2/api/API2.html", true, diff --git a/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTagWithModule.java b/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTagWithModule.java index 810db378394..9c4c4da70e3 100644 --- a/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTagWithModule.java +++ b/test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTagWithModule.java @@ -113,19 +113,15 @@ public class TestSeeTagWithModule extends JavadocTester {
  • m1
  • m1
  • m1/com.m1.lib
  • -
  • Lib
  • -
  • Lib.method(String)
  • -
  • Lib.method(String)
  • +
  • Lib
  • +
  • Lib.method(String)
  • +
  • Lib.method(String)
  • m2
  • m2
  • m2/com.m2.lib
  • -
  • Lib
  • -
  • Lib.method(String)
  • -
  • Lib.method(String)
  • +
  • Lib
  • +
  • Lib.method(String)
  • +
  • Lib.method(String)
  • """); } @@ -175,9 +171,9 @@ public class TestSeeTagWithModule extends JavadocTester {
  • com.ex1
  • com.ex1
  • com.ex1/com.ex1
  • -
  • A
  • -
  • A.m()
  • -
  • A.m()
  • +
  • A
  • +
  • A.m()
  • +
  • A.m()
  • com.ex2
  • com.ex2
  • """); diff --git a/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java b/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java index be60a114040..c8b91dcba67 100644 --- a/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java +++ b/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetMarkup.java @@ -1123,7 +1123,7 @@ First line // @highlight : } String output = fileManager.getFileString(DOCUMENTATION_OUTPUT, "A.html"); // use the [^<>] regex to select HTML elements that immediately enclose "content" - Matcher m = Pattern.compile("(?is)(]*\" title=\"[^<>]*\" class=\"[^<>]*\">)" + Matcher m = Pattern.compile("(?is)(]*\" class=\"[^<>]*\">)" + LABEL_PLACEHOLDER + "()").matcher(output); if (!m.find()) { throw new IOException(output); diff --git a/test/langtools/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java b/test/langtools/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java index 98ffc9e99a4..70a77fad5a7 100644 --- a/test/langtools/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java +++ b/test/langtools/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java @@ -59,7 +59,7 @@ public class TestTitleInHref extends JavadocTester { """, //Test to make sure that the title shows up in cross link shows up "\ + /java/io/File.html" title="class in java.io" class="external-link">\ This is a cross link to class File"""); } }