You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2026/08/30 18:51:09 UTC

(maven-resolver) 01/01: Fix link label rendering and deprecated text markup in configuration page

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch fix/pr-2060-review-fixes
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git

commit 493d70f1d6814818e74398de541ff3a1480f957a
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Sun Aug 30 20:50:56 2026 +0200

    Fix link label rendering and deprecated text markup in configuration page
    
    - Fix visitLink to render node.getLabel() instead of node.getReference()
      for the display text; previously, explicit link labels like
      {@link Type custom label} would show "Type" instead of "custom label"
    - Replace Markdown emphasis (*...*) with HTML <em> for deprecated content
      in configuration.md.vm to avoid mixing Markdown and HTML markup
    - Add test case for explicit link labels
    - Add missing trailing newline to package-info.java test fixture
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
 .../org/eclipse/aether/tools/ConfigurationCollectorDoclet.java     | 7 +++++--
 maven-resolver-tools/src/main/resources/configuration.md.vm        | 2 +-
 .../org/eclipse/aether/tools/ConfigurationCollectorDocletTest.java | 7 ++++++-
 .../org/eclipse/aether/sample/SampleConfigurationKeys.java         | 3 ++-
 .../src/test/resources/org/eclipse/aether/sample/package-info.java | 2 +-
 5 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/maven-resolver-tools/src/main/java/org/eclipse/aether/tools/ConfigurationCollectorDoclet.java b/maven-resolver-tools/src/main/java/org/eclipse/aether/tools/ConfigurationCollectorDoclet.java
index 6fdb95a7c..ed64517c1 100644
--- a/maven-resolver-tools/src/main/java/org/eclipse/aether/tools/ConfigurationCollectorDoclet.java
+++ b/maven-resolver-tools/src/main/java/org/eclipse/aether/tools/ConfigurationCollectorDoclet.java
@@ -724,8 +724,11 @@ public class ConfigurationCollectorDoclet implements Doclet {
             @Override
             public String visitLink(LinkTree node, Void p) {
                 String ref = node.getReference() != null ? node.getReference().getSignature() : "";
-                String label = renderContent(DocTreePath.getPath(docTreePath, node.getReference()), mode, false);
-                String text = label == null || label.isEmpty() ? ref : label;
+                List<? extends DocTree> labelTrees = node.getLabel();
+                String label = (labelTrees != null && !labelTrees.isEmpty())
+                        ? renderContent(docTreePath, mode, false, labelTrees)
+                        : "";
+                String text = label.isEmpty() ? ref : label;
                 String rendered = node.getKind() == DocTree.Kind.LINK_PLAIN ? escape(mode, text) : renderAsCode(text);
                 if (mode == RenderMode.HTML) {
                     VariableElement referenced = resolveReferencedField(docTreePath, node);
diff --git a/maven-resolver-tools/src/main/resources/configuration.md.vm b/maven-resolver-tools/src/main/resources/configuration.md.vm
index 1c61af102..9109438d3 100644
--- a/maven-resolver-tools/src/main/resources/configuration.md.vm
+++ b/maven-resolver-tools/src/main/resources/configuration.md.vm
@@ -52,7 +52,7 @@ To modify this file, edit the template and regenerate.
 | Key | Type | Description | Default Value | Since | Supports Repo ID suffix | Source |
 | --- | --- | --- | --- | --- | --- | --- |
 #foreach($key in $keys)
-| <a id="$key.key"></a>`$key.key` | #if ($key.configurationTypeJavadocUrl) [`$key.configurationType`]($key.configurationTypeJavadocUrl) #else `$key.configurationType` #end | #if($key.deprecated) **Deprecated**. *$key.deprecated*<br/>#end$key.description | #value( $key.defaultValue ) | $key.since |  $key.supportRepoIdSuffix  | $key.configurationSource |
+| <a id="$key.key"></a>`$key.key` | #if ($key.configurationTypeJavadocUrl) [`$key.configurationType`]($key.configurationTypeJavadocUrl) #else `$key.configurationType` #end | #if($key.deprecated) **Deprecated**. <em>$key.deprecated</em><br/>#end$key.description | #value( $key.defaultValue ) | $key.since |  $key.supportRepoIdSuffix  | $key.configurationSource |
 #end
 
 #[[
diff --git a/maven-resolver-tools/src/test/java/org/eclipse/aether/tools/ConfigurationCollectorDocletTest.java b/maven-resolver-tools/src/test/java/org/eclipse/aether/tools/ConfigurationCollectorDocletTest.java
index 4c6253008..0fff2cad2 100644
--- a/maven-resolver-tools/src/test/java/org/eclipse/aether/tools/ConfigurationCollectorDocletTest.java
+++ b/maven-resolver-tools/src/test/java/org/eclipse/aether/tools/ConfigurationCollectorDocletTest.java
@@ -149,6 +149,11 @@ class ConfigurationCollectorDocletTest {
         assertTrue(enumDescription.contains("<code>SampleType#hidden()</code>"));
         assertFalse(enumDescription.contains(
                 "href=\"apidocs/" + "org/eclipse/aether/sample/SampleConfigurationKeys.SampleType.html#hidden()\""));
+        // {@link SampleType custom label text} should render the explicit label, not the reference signature
+        assertTrue(
+                enumDescription.contains(
+                        "<a href=\"apidocs/org/eclipse/aether/sample/SampleConfigurationKeys.SampleType.html\"><code>custom label text</code></a>"),
+                "expected explicit link label to be rendered, but got: " + enumDescription);
         // no @configurationRepoIdSuffix -> defaults to "No"
         assertEquals("No", enumKey.get("supportRepoIdSuffix"));
         assertEquals("Use <a href=\"#sample.enum2\"><code>#ENUM2_KEY</code></a> instead", enumKey.get("deprecated"));
@@ -182,7 +187,7 @@ class ConfigurationCollectorDocletTest {
                 markdown.contains(
                         "[`org.eclipse.aether.sample.SampleConfigurationKeys.SampleEnum`](apidocs/org/eclipse/aether/sample/SampleConfigurationKeys.SampleEnum.html)"));
         assertTrue(markdown.contains("<a href=\"#sample.string\"><code>#STRING_KEY</code></a>"));
-        assertTrue(markdown.contains("**Deprecated**. *Use <a href=\"#sample.enum2\">"));
+        assertTrue(markdown.contains("**Deprecated**. <em>Use <a href=\"#sample.enum2\">"));
     }
 
     @Test
diff --git a/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/SampleConfigurationKeys.java b/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/SampleConfigurationKeys.java
index c1a5a5991..c970fe61c 100644
--- a/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/SampleConfigurationKeys.java
+++ b/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/SampleConfigurationKeys.java
@@ -62,7 +62,8 @@ public final class SampleConfigurationKeys {
     /**
      * An enum value. See {@link #STRING_KEY}. Also see field {@link SampleType#VALUE}, method
      * {@link SampleType#convert(String)}, constructor {@link SampleType#SampleType(String)}, type {@link SampleType},
-     * package {@link org.eclipse.aether.sample}, and unavailable member {@link SampleType#hidden()}.
+     * package {@link org.eclipse.aether.sample}, unavailable member {@link SampleType#hidden()},
+     * and a link with explicit label {@link SampleType custom label text}.
      * The type is a custom enum with a default value declared as a variable referencing an enum value.
      *
      * @configurationSource {@link System#getProperty(String,String)}
diff --git a/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/package-info.java b/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/package-info.java
index 42ee58fed..58bc8bf35 100644
--- a/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/package-info.java
+++ b/maven-resolver-tools/src/test/resources/org/eclipse/aether/sample/package-info.java
@@ -21,4 +21,4 @@
  *
  * @since 2.0
  */
-package org.eclipse.aether.sample;
\ No newline at end of file
+package org.eclipse.aether.sample;