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

rmannibucau pushed a commit to branch pr-459
in repository https://gitbox.apache.org/repos/asf/maven-dependency-plugin.git

commit 36b9deff3bc38534b9d5db5a946c9c2785c6c4f2
Author: Romain Manni-Bucau <rmannibu...@gmail.com>
AuthorDate: Mon Oct 6 20:51:03 2025 +0200

    rebase
---
 pom.xml                                            |   3 +-
 .../dependency/analyze/AbstractAnalyzeMojo.java    | 112 +++++++++++----------
 .../analyze/TestAnalyzeIndirectDependency.java     |  35 +++----
 .../plugins/dependency/testUtils/TestLog.java      |  15 +--
 4 files changed, 84 insertions(+), 81 deletions(-)

diff --git a/pom.xml b/pom.xml
index 92d1825e..30291e1d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -96,7 +96,7 @@ under the License.
     <slf4jVersion>1.7.36</slf4jVersion>
     <jettyVersion>9.4.58.v20250814</jettyVersion>
     <jettyVersion>9.4.57.v20241219</jettyVersion>
-    <johnzonVersion>2.0.1</johnzonVersion>
+    <johnzonVersion>1.2.21</johnzonVersion>
     <glassfishVersion>2.0.1</glassfishVersion>
     <mockito.version>4.11.0</mockito.version>
     <plexus-archiver.version>4.10.1</plexus-archiver.version>
@@ -337,6 +337,7 @@ under the License.
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
       <version>${johnzonVersion}</version>
+      <classifier>jakarta</classifier>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
index 9ffdabdf..2c39d927 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
@@ -37,9 +37,6 @@ import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.stream.Stream;
 
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodVisitor;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.plugin.AbstractMojo;
@@ -54,6 +51,9 @@ import 
org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerExce
 import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.ModuleVisitor;
 import org.objectweb.asm.Type;
 
@@ -472,16 +472,16 @@ public abstract class AbstractAnalyzeMojo extends 
AbstractMojo {
 
     // todo: enhance analyzer (dependency) to do it since it already visits 
classes
     //       will save some time
-    private Set<String> scanForSpiUsage(final Set<Artifact> usedDeclared,
-                                        final Map<Artifact, Set<String>> 
usedUndeclaredWithClasses) {
+    private Set<String> scanForSpiUsage(
+            final Set<Artifact> usedDeclared, final Map<Artifact, Set<String>> 
usedUndeclaredWithClasses) {
         return Stream.concat(
-                usedDeclared.stream().flatMap(this::findUsedSpi),
-                
usedUndeclaredWithClasses.keySet().stream().flatMap(this::findUsedSpi))
+                        usedDeclared.stream().flatMap(this::findUsedSpi),
+                        
usedUndeclaredWithClasses.keySet().stream().flatMap(this::findUsedSpi))
                 .collect(toSet());
     }
 
     private Stream<String> findUsedSpi(final Artifact artifact) {
-        try (final JarFile jar = new JarFile(artifact.getFile())) {
+        try (JarFile jar = new JarFile(artifact.getFile())) {
             return list(jar.entries()).stream()
                     .filter(entry -> entry.getName().endsWith(".class"))
                     .flatMap(entry -> {
@@ -492,39 +492,43 @@ public abstract class AbstractAnalyzeMojo extends 
AbstractMojo {
                             return Stream.empty();
                         }
                         final Set<String> spi = new HashSet<>();
-                        classReader.accept(new ClassVisitor(ASM9) {
-                            @Override
-                            public MethodVisitor visitMethod(final int access,
-                                                             final String name,
-                                                             final String 
descriptor,
-                                                             final String 
signature,
-                                                             final String[] 
exceptions) {
-                                return new MethodVisitor(ASM9) {
-                                    private Type lastType = null;
-
+                        classReader.accept(
+                                new ClassVisitor(ASM9) {
                                     @Override
-                                    public void visitLdcInsn(final Object 
value) {
-                                        if (value instanceof Type) {
-                                            lastType = (Type) value;
-                                        }
+                                    public MethodVisitor visitMethod(
+                                            final int access,
+                                            final String name,
+                                            final String descriptor,
+                                            final String signature,
+                                            final String[] exceptions) {
+                                        return new MethodVisitor(ASM9) {
+                                            private Type lastType = null;
+
+                                            @Override
+                                            public void visitLdcInsn(final 
Object value) {
+                                                if (value instanceof Type) {
+                                                    lastType = (Type) value;
+                                                }
+                                            }
+
+                                            @Override
+                                            public void visitMethodInsn(
+                                                    final int opcode,
+                                                    final String owner,
+                                                    final String name,
+                                                    final String descriptor,
+                                                    final boolean isInterface) 
{
+                                                if (opcode == INVOKESTATIC
+                                                        && 
Objects.equals(owner, "java/util/ServiceLoader")
+                                                        && 
Objects.equals(name, "load")) {
+                                                    
spi.add(lastType.getClassName());
+                                                }
+                                                lastType = null;
+                                            }
+                                        };
                                     }
-
-                                    @Override
-                                    public void visitMethodInsn(final int 
opcode,
-                                                                final String 
owner,
-                                                                final String 
name,
-                                                                final String 
descriptor,
-                                                                final boolean 
isInterface) {
-                                        if (opcode == INVOKESTATIC &&
-                                                Objects.equals(owner, 
"java/util/ServiceLoader") &&
-                                                Objects.equals(name, "load")) {
-                                            spi.add(lastType.getClassName());
-                                        }
-                                        lastType = null;
-                                    }
-                                };
-                            }
-                        }, 0);
+                                },
+                                0);
                         return spi.stream();
                     })
                     .collect(toList()) // materialize before closing the jar
@@ -544,7 +548,7 @@ public abstract class AbstractAnalyzeMojo extends 
AbstractMojo {
     // TODO: enhance to ensure there is a single binding else just log a 
warning for all
     //       and maybe even handle version?
     private boolean isSlf4jBinding(final Artifact artifact) {
-        try (final JarFile file = new JarFile(artifact.getFile())) {
+        try (JarFile file = new JarFile(artifact.getFile())) {
             return file.getEntry("org/slf4j/impl/StaticLoggerBinder.class") != 
null;
         } catch (final IOException e) {
             return false;
@@ -553,7 +557,7 @@ public abstract class AbstractAnalyzeMojo extends 
AbstractMojo {
 
     private boolean hasUsedSPIImpl(final Set<String> usedSpi, final Artifact 
artifact) {
         final Set<String> spi;
-        try (final JarFile file = new JarFile(artifact.getFile())) {
+        try (JarFile file = new JarFile(artifact.getFile())) {
             spi = list(file.entries()).stream()
                     .filter(it -> 
it.getName().startsWith("META-INF/services/") && !it.isDirectory())
                     .map(it -> 
it.getName().substring("META-INF/services/".length()))
@@ -562,19 +566,21 @@ public abstract class AbstractAnalyzeMojo extends 
AbstractMojo {
             // java >= 9
             final JarEntry moduleEntry = file.getJarEntry("module-info.class");
             if (moduleEntry != null) {
-                try (final InputStream in = file.getInputStream(moduleEntry)) {
+                try (InputStream in = file.getInputStream(moduleEntry)) {
                     final ClassReader cr = new ClassReader(in);
-                    cr.accept(new ClassVisitor(ASM9) {
-                        @Override
-                        public ModuleVisitor visitModule(String name, int 
access, String version) {
-                            return new ModuleVisitor(ASM9) {
+                    cr.accept(
+                            new ClassVisitor(ASM9) {
                                 @Override
-                                public void visitProvide(final String service, 
final String[] providers) {
-                                    spi.add(service.replace('/', '.'));
+                                public ModuleVisitor visitModule(String name, 
int access, String version) {
+                                    return new ModuleVisitor(ASM9) {
+                                        @Override
+                                        public void visitProvide(final String 
service, final String[] providers) {
+                                            spi.add(service.replace('/', '.'));
+                                        }
+                                    };
                                 }
-                            };
-                        }
-                    }, 0);
+                            },
+                            0);
                 }
             }
         } catch (final IOException e) {
@@ -693,8 +699,8 @@ public abstract class AbstractAnalyzeMojo extends 
AbstractMojo {
     }
 
     private List<Artifact> filterDependencies(Set<Artifact> artifacts, 
String[] excludes) {
-        ArtifactFilter filter = new 
StrictPatternExcludesArtifactFilter(excludes == null ?
-                Collections.emptyList() :Arrays.asList(excludes));
+        ArtifactFilter filter = new StrictPatternExcludesArtifactFilter(
+                excludes == null ? Collections.emptyList() : 
Arrays.asList(excludes));
         List<Artifact> result = new ArrayList<>();
 
         for (Iterator<Artifact> it = artifacts.iterator(); it.hasNext(); ) {
diff --git 
a/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeIndirectDependency.java
 
b/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeIndirectDependency.java
index 09f6ff78..dc2882d8 100644
--- 
a/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeIndirectDependency.java
+++ 
b/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeIndirectDependency.java
@@ -18,6 +18,14 @@
  */
 package org.apache.maven.plugins.dependency.analyze;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.util.HashSet;
+
 import jakarta.json.spi.JsonProvider;
 import org.apache.johnzon.core.JsonProviderImpl;
 import org.apache.maven.artifact.Artifact;
@@ -43,14 +51,6 @@ import org.junit.jupiter.api.io.TempDir;
 import org.slf4j.LoggerFactory;
 import org.slf4j.impl.SimpleLoggerFactory;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardCopyOption;
-import java.util.HashSet;
-
 import static java.util.Arrays.asList;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.tomitribe.util.JarLocation.jarLocation;
@@ -69,7 +69,7 @@ class TestAnalyzeIndirectDependency {
                             final String resource = 
JsonpMain.class.getName().replace('.', '/') + ".class";
                             final Path target = base.resolve(resource);
                             Files.createDirectories(target.getParent());
-                            try (final InputStream is = Thread.currentThread()
+                            try (InputStream is = Thread.currentThread()
                                     .getContextClassLoader()
                                     .getResourceAsStream(resource)) {
                                 Files.copy(is, target, 
StandardCopyOption.REPLACE_EXISTING);
@@ -94,7 +94,7 @@ class TestAnalyzeIndirectDependency {
                             final String resource = 
Slf4jMain.class.getName().replace('.', '/') + ".class";
                             final Path target = base.resolve(resource);
                             Files.createDirectories(target.getParent());
-                            try (final InputStream is = Thread.currentThread()
+                            try (InputStream is = Thread.currentThread()
                                     .getContextClassLoader()
                                     .getResourceAsStream(resource)) {
                                 Files.copy(is, target, 
StandardCopyOption.REPLACE_EXISTING);
@@ -104,11 +104,13 @@ class TestAnalyzeIndirectDependency {
                         artifact("org.slf4j", "slf4j-simple", slf4jVersion, 
SimpleLoggerFactory.class)));
     }
 
-    private String exec(final Path work, final IOConsumer<Path> classesFiller, 
final Artifact... artifacts) throws Exception {
+    private String exec(final Path work, final IOConsumer<Path> classesFiller, 
final Artifact... artifacts)
+            throws Exception {
         final Path classes = 
Files.createDirectories(work.resolve("target/classes"));
         final Build build = new Build();
         build.setOutputDirectory(classes.toString());
-        
build.setTestOutputDirectory(Files.createDirectories(work.resolve("target/test-classes")).toString());
+        build.setTestOutputDirectory(
+                
Files.createDirectories(work.resolve("target/test-classes")).toString());
 
         final MavenProject project = new MavenProject();
         project.setGroupId("g");
@@ -147,18 +149,17 @@ class TestAnalyzeIndirectDependency {
         configuration.addChild("ignoredPackagings", "pom");
         configuration.addChild("outputDirectory", 
project.getBuild().getOutputDirectory());
 
-        new BasicComponentConfigurator()
-                .configureComponent(mojo, configuration, evaluator, null);
+        new BasicComponentConfigurator().configureComponent(mojo, 
configuration, evaluator, null);
 
         mojo.execute();
 
         return log.toString().trim();
     }
 
-    private DefaultArtifact artifact(final String groupId, final String 
artifactId, final String slf4jVersion, final Class<?> marker) {
+    private DefaultArtifact artifact(
+            final String groupId, final String artifactId, final String 
slf4jVersion, final Class<?> marker) {
         final DefaultArtifact artifact = new DefaultArtifact(
-                groupId, artifactId, slf4jVersion,
-                "compile", "jar", "", new DefaultArtifactHandler());
+                groupId, artifactId, slf4jVersion, "compile", "jar", "", new 
DefaultArtifactHandler());
         artifact.setFile(jarLocation(marker));
         return artifact;
     }
diff --git 
a/src/test/java/org/apache/maven/plugins/dependency/testUtils/TestLog.java 
b/src/test/java/org/apache/maven/plugins/dependency/testUtils/TestLog.java
index 80e73223..58b58e44 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/testUtils/TestLog.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/testUtils/TestLog.java
@@ -18,11 +18,11 @@
  */
 package org.apache.maven.plugins.dependency.testUtils;
 
-import org.apache.maven.plugin.logging.Log;
-
 import java.io.PrintWriter;
 import java.io.StringWriter;
 
+import org.apache.maven.plugin.logging.Log;
+
 public class TestLog implements Log {
     private final StringBuilder sb = new StringBuilder();
 
@@ -116,8 +116,7 @@ public class TestLog implements Log {
 
         error.printStackTrace(pWriter);
 
-        System.err.println(
-                "[error] " + content.toString() + System.lineSeparator() + 
System.lineSeparator() + sWriter);
+        System.err.println("[error] " + content.toString() + 
System.lineSeparator() + System.lineSeparator() + sWriter);
     }
 
     /**
@@ -166,11 +165,7 @@ public class TestLog implements Log {
     }
 
     private void print(String prefix, CharSequence content) {
-        sb.append("[")
-                .append(prefix)
-                .append("] ")
-                .append(content.toString())
-                .append(System.lineSeparator());
+        sb.append("[").append(prefix).append("] 
").append(content.toString()).append(System.lineSeparator());
     }
 
     private void print(String prefix, Throwable error) {
@@ -205,4 +200,4 @@ public class TestLog implements Log {
     public String getContent() {
         return sb.toString();
     }
-}
\ No newline at end of file
+}

Reply via email to