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

kwin pushed a commit to branch feature/improve-javadoc-link-validation
in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git

commit 7cb7b485a0937d93347ac4cdc0037e62acf86884
Author: Konrad Windszus <[email protected]>
AuthorDate: Wed Oct 26 14:31:33 2022 +0200

    [MPLUGIN-433] Improve javadoc link validation and allow to disable it
---
 .../maven/plugin/plugin/report_old/PluginReport.java      | 15 ++++++++++++++-
 .../maven/tools/plugin/generator/PluginXdocGenerator.java |  9 ++++++---
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git 
a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java
 
b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java
index bc34746d..de607f09 100644
--- 
a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java
+++ 
b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java
@@ -218,6 +218,18 @@ public class PluginReport
                 readonly = true )
     private File enhancedPluginXmlFile;
 
+    /**
+     * In case the internal javadoc site has not been generated (e.g. when 
using an aggregator javadoc report)
+     * link validation needs to be disabled by setting this value to {@code 
true}.
+     * This might have the drawback that some links being generated in the 
report are broken in case not all
+     * parameter types and javadoc link references are resolvable through the 
sites being given to 
+     * {@link DescriptorGeneratorMojo}.
+     * 
+     * @since 3.7.0
+     */
+    @Parameter
+    private boolean disableInternalJavadocLinkValidation;
+
     /**
      * {@inheritDoc}
      */
@@ -324,7 +336,8 @@ public class PluginReport
             File outputDir = outputDirectory;
             outputDir.mkdirs();
 
-            PluginXdocGenerator generator = new PluginXdocGenerator( 
getProject(), locale, getReportOutputDirectory() );
+            PluginXdocGenerator generator = new PluginXdocGenerator( 
getProject(), locale, getReportOutputDirectory(),
+                                                                     
disableInternalJavadocLinkValidation );
             PluginToolsRequest pluginToolsRequest = new 
DefaultPluginToolsRequest( getProject(), pluginDescriptor );
             generator.execute( outputDir, pluginToolsRequest );
         }
diff --git 
a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
 
b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
index c13a1790..2694ad08 100644
--- 
a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
+++ 
b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
@@ -68,6 +68,8 @@ public class PluginXdocGenerator
      */
     private final File reportOutputDirectory;
 
+    private final boolean disableInternalJavadocLinkValidation;
+
     /**
      * Default constructor using <code>Locale.ENGLISH</code> as locale.
      * Used only in test cases.
@@ -84,14 +86,14 @@ public class PluginXdocGenerator
      */
     public PluginXdocGenerator( MavenProject project )
     {
-        this( project, Locale.ENGLISH, new File( "" ).getAbsoluteFile() );
+        this( project, Locale.ENGLISH, new File( "" ).getAbsoluteFile(), false 
);
     }
 
     /**
      * @param project not null.
      * @param locale  not null wanted locale.
      */
-    public PluginXdocGenerator( MavenProject project, Locale locale, File 
reportOutputDirectory )
+    public PluginXdocGenerator( MavenProject project, Locale locale, File 
reportOutputDirectory, boolean disableInternalJavadocLinkValidation )
     {
         this.project = project;
         if ( locale == null )
@@ -103,6 +105,7 @@ public class PluginXdocGenerator
             this.locale = locale;
         }
         this.reportOutputDirectory = reportOutputDirectory;
+        this.disableInternalJavadocLinkValidation = 
disableInternalJavadocLinkValidation;
     }
 
 
@@ -616,7 +619,7 @@ public class PluginXdocGenerator
                 // check if link is valid
                 URI javadocUrl = enhancedParameter.getTypeJavadocUrl();
                 if ( javadocUrl.isAbsolute() 
-                     || JavadocLinkGenerator.isLinkValid( javadocUrl, 
reportOutputDirectory.toPath() ) )
+                     || !disableInternalJavadocLinkValidation && 
JavadocLinkGenerator.isLinkValid( javadocUrl, reportOutputDirectory.toPath() ) )
                 {
                     return format( 
"pluginxdoc.mojodescriptor.parameter.type_link",
                                    new Object[] { escapeXml( typeValue ), 
enhancedParameter.getTypeJavadocUrl() } );

Reply via email to