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

hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-artifact-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 74bfb03  use ArtifactHandlerManager to avoid null ArtifactHandlers
74bfb03 is described below

commit 74bfb0318cc6451b82d9e30457c0a5dcdf09d39c
Author: HervĂ© Boutemy <[email protected]>
AuthorDate: Sun Nov 14 16:07:15 2021 +0100

    use ArtifactHandlerManager to avoid null ArtifactHandlers
---
 .../plugins/artifact/buildinfo/AbstractBuildinfoMojo.java |  6 +++++-
 .../maven/plugins/artifact/buildinfo/BuildInfoWriter.java | 12 ++++++++++--
 .../maven/plugins/artifact/buildinfo/CompareMojo.java     | 15 ++++++++++++---
 .../artifact/buildinfo/ReferenceBuildinfoUtil.java        |  9 +++++++--
 4 files changed, 34 insertions(+), 8 deletions(-)

diff --git 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
index 07ed000..ebc6e5d 100644
--- 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.artifact.buildinfo;
 
 import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -120,6 +121,9 @@ public abstract class AbstractBuildinfoMojo
     @Component
     private ToolchainManager toolchainManager;
 
+    @Component
+    protected ArtifactHandlerManager artifactHandlerManager;
+
     @Override
     public void execute()
         throws MojoExecutionException
@@ -217,7 +221,7 @@ public abstract class AbstractBuildinfoMojo
         try ( PrintWriter p = new PrintWriter( new BufferedWriter(
                 new OutputStreamWriter( new FileOutputStream( buildinfoFile ), 
StandardCharsets.UTF_8 ) ) ) )
         {
-            BuildInfoWriter bi = new BuildInfoWriter( getLog(), p, mono );
+            BuildInfoWriter bi = new BuildInfoWriter( getLog(), p, mono, 
artifactHandlerManager );
             bi.setIgnoreJavadoc( ignoreJavadoc );
             bi.setIgnore( ignore );
             bi.setToolchain( getToolchain() );
diff --git 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
index 4269831..77e1ce3 100644
--- 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
+++ 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/BuildInfoWriter.java
@@ -29,6 +29,7 @@ import java.util.Set;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
@@ -43,17 +44,19 @@ class BuildInfoWriter
     private final Log log;
     private final PrintWriter p;
     private final boolean mono;
+    private final ArtifactHandlerManager artifactHandlerManager;
     private final Map<Artifact, String> artifacts = new LinkedHashMap<>();
     private int projectCount = -1;
     private boolean ignoreJavadoc = true;
     private Set<String> ignore;
     private Toolchain toolchain;
 
-    BuildInfoWriter( Log log, PrintWriter p, boolean mono )
+    BuildInfoWriter( Log log, PrintWriter p, boolean mono, 
ArtifactHandlerManager artifactHandlerManager )
     {
         this.log = log;
         this.p = p;
         this.mono = mono;
+        this.artifactHandlerManager = artifactHandlerManager;
     }
 
     void printHeader( MavenProject project, MavenProject aggregate, boolean 
reproducible )
@@ -173,7 +176,7 @@ class BuildInfoWriter
 
         int n = 0;
         artifacts.put( new DefaultArtifact( project.getGroupId(), 
project.getArtifactId(), project.getVersion(), null,
-                                            "pom", "", null ),
+                                            "pom", "", 
artifactHandlerManager.getArtifactHandler( "pom" ) ),
                        prefix + n );
         printFile( prefix + n++, project.getFile(), project.getArtifactId() + 
'-' + project.getVersion() + ".pom" );
 
@@ -214,6 +217,11 @@ class BuildInfoWriter
         File artifactFile = artifact.getFile();
         if ( artifactFile.isDirectory() )
         {
+            if ( "pom".equals( artifact.getType() ) )
+            {
+                // ignore .pom files: they should not be treated as Artifacts
+                return;
+            }
             // edge case found in a distribution module with default packaging 
and skip set for
             // m-jar-p: should use pom packaging instead
             throw new MojoExecutionException( "Artifact " + artifact.getId() + 
" points to a directory: "
diff --git 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
index 055fdb5..42a754d 100644
--- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
+++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/CompareMojo.java
@@ -130,8 +130,8 @@ public class CompareMojo
     {
         RemoteRepository repo = createReferenceRepo();
 
-        ReferenceBuildinfoUtil rmb = new ReferenceBuildinfoUtil( getLog(), 
referenceDir, artifacts,
-                                                                       
artifactFactory, repoSystem, repoSession );
+        ReferenceBuildinfoUtil rmb = new ReferenceBuildinfoUtil( getLog(), 
referenceDir, artifacts, artifactFactory,
+                                                                 repoSystem, 
repoSession, artifactHandlerManager );
 
         return rmb.downloadOrCreateReferenceBuildinfo( repo, project, 
buildinfoFile, mono );
     }
@@ -261,6 +261,12 @@ public class CompareMojo
         // notice: actual file name may have been defined in pom
         // reference file name is taken from repository format
         File reference = new File( referenceDir, getRepositoryFilename( a ) );
+        if ( ( actual == null ) || ( reference == null ) )
+        {
+            return "missing file for " + a.getId() + " reference = "
+                + ( reference == null ? "null" : relative( reference ) ) + " 
actual = "
+                + ( actual == null ? "null" : relative( actual ) );
+        }
         return "diffoscope " + relative( reference ) + " " + relative( actual 
);
     }
 
@@ -272,7 +278,10 @@ public class CompareMojo
 
     private String relative( File file )
     {
-        return file.getPath().substring( 
getExecutionRoot().getBasedir().getPath().length() + 1 );
+        File basedir = getExecutionRoot().getBasedir();
+        int length = basedir.getPath().length();
+        String path = file.getPath();
+        return path.substring( length + 1 );
     }
 
     private static String findPrefix( Properties reference, String 
actualFilename )
diff --git 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
index c67e357..1203922 100644
--- 
a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
+++ 
b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/ReferenceBuildinfoUtil.java
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.artifact.buildinfo;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.logging.Log;
@@ -88,9 +89,12 @@ class ReferenceBuildinfoUtil
 
     private final RepositorySystemSession repoSession;
 
+    private final ArtifactHandlerManager artifactHandlerManager;
+
     ReferenceBuildinfoUtil( Log log, File referenceDir, Map<Artifact, String> 
artifacts,
                                       ArtifactFactory artifactFactory, 
RepositorySystem repoSystem,
-                                      RepositorySystemSession repoSession )
+                                      RepositorySystemSession repoSession,
+                                      ArtifactHandlerManager 
artifactHandlerManager )
     {
         this.log = log;
         this.referenceDir = referenceDir;
@@ -98,6 +102,7 @@ class ReferenceBuildinfoUtil
         this.artifactFactory = artifactFactory;
         this.repoSystem = repoSystem;
         this.repoSession = repoSession;
+        this.artifactHandlerManager = artifactHandlerManager;
     }
 
     File downloadOrCreateReferenceBuildinfo( RemoteRepository repo, 
MavenProject project, File buildinfoFile,
@@ -149,7 +154,7 @@ class ReferenceBuildinfoUtil
                 new PrintWriter( new BufferedWriter( new OutputStreamWriter( 
new FileOutputStream( referenceBuildinfo ),
                                                                              
StandardCharsets.UTF_8 ) ) ) )
             {
-                BuildInfoWriter bi = new BuildInfoWriter( log, p, mono );
+                BuildInfoWriter bi = new BuildInfoWriter( log, p, mono, 
artifactHandlerManager );
 
                 if ( javaVersion != null || osName != null )
                 {

Reply via email to