Skip to content

Commit 36b9def

Browse files
committed
rebase
1 parent f4fd3bd commit 36b9def

File tree

4 files changed

+84
-81
lines changed

4 files changed

+84
-81
lines changed

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ under the License.
9696
<slf4jVersion>1.7.36</slf4jVersion>
9797
<jettyVersion>9.4.58.v20250814</jettyVersion>
9898
<jettyVersion>9.4.57.v20241219</jettyVersion>
99-
<johnzonVersion>2.0.1</johnzonVersion>
99+
<johnzonVersion>1.2.21</johnzonVersion>
100100
<glassfishVersion>2.0.1</glassfishVersion>
101101
<mockito.version>4.11.0</mockito.version>
102102
<plexus-archiver.version>4.10.1</plexus-archiver.version>
@@ -337,6 +337,7 @@ under the License.
337337
<groupId>org.apache.johnzon</groupId>
338338
<artifactId>johnzon-core</artifactId>
339339
<version>${johnzonVersion}</version>
340+
<classifier>jakarta</classifier>
340341
<scope>test</scope>
341342
</dependency>
342343
<dependency>

src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java

Lines changed: 59 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@
3737
import java.util.jar.JarFile;
3838
import java.util.stream.Stream;
3939

40-
import org.objectweb.asm.ClassReader;
41-
import org.objectweb.asm.ClassVisitor;
42-
import org.objectweb.asm.MethodVisitor;
4340
import org.apache.maven.artifact.Artifact;
4441
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
4542
import org.apache.maven.plugin.AbstractMojo;
@@ -54,6 +51,9 @@
5451
import org.codehaus.plexus.PlexusContainer;
5552
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
5653
import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
54+
import org.objectweb.asm.ClassReader;
55+
import org.objectweb.asm.ClassVisitor;
56+
import org.objectweb.asm.MethodVisitor;
5757
import org.objectweb.asm.ModuleVisitor;
5858
import org.objectweb.asm.Type;
5959

@@ -472,16 +472,16 @@ private boolean checkDependencies() throws MojoExecutionException {
472472

473473
// todo: enhance analyzer (dependency) to do it since it already visits classes
474474
// will save some time
475-
private Set<String> scanForSpiUsage(final Set<Artifact> usedDeclared,
476-
final Map<Artifact, Set<String>> usedUndeclaredWithClasses) {
475+
private Set<String> scanForSpiUsage(
476+
final Set<Artifact> usedDeclared, final Map<Artifact, Set<String>> usedUndeclaredWithClasses) {
477477
return Stream.concat(
478-
usedDeclared.stream().flatMap(this::findUsedSpi),
479-
usedUndeclaredWithClasses.keySet().stream().flatMap(this::findUsedSpi))
478+
usedDeclared.stream().flatMap(this::findUsedSpi),
479+
usedUndeclaredWithClasses.keySet().stream().flatMap(this::findUsedSpi))
480480
.collect(toSet());
481481
}
482482

483483
private Stream<String> findUsedSpi(final Artifact artifact) {
484-
try (final JarFile jar = new JarFile(artifact.getFile())) {
484+
try (JarFile jar = new JarFile(artifact.getFile())) {
485485
return list(jar.entries()).stream()
486486
.filter(entry -> entry.getName().endsWith(".class"))
487487
.flatMap(entry -> {
@@ -492,39 +492,43 @@ private Stream<String> findUsedSpi(final Artifact artifact) {
492492
return Stream.empty();
493493
}
494494
final Set<String> spi = new HashSet<>();
495-
classReader.accept(new ClassVisitor(ASM9) {
496-
@Override
497-
public MethodVisitor visitMethod(final int access,
498-
final String name,
499-
final String descriptor,
500-
final String signature,
501-
final String[] exceptions) {
502-
return new MethodVisitor(ASM9) {
503-
private Type lastType = null;
504-
495+
classReader.accept(
496+
new ClassVisitor(ASM9) {
505497
@Override
506-
public void visitLdcInsn(final Object value) {
507-
if (value instanceof Type) {
508-
lastType = (Type) value;
509-
}
498+
public MethodVisitor visitMethod(
499+
final int access,
500+
final String name,
501+
final String descriptor,
502+
final String signature,
503+
final String[] exceptions) {
504+
return new MethodVisitor(ASM9) {
505+
private Type lastType = null;
506+
507+
@Override
508+
public void visitLdcInsn(final Object value) {
509+
if (value instanceof Type) {
510+
lastType = (Type) value;
511+
}
512+
}
513+
514+
@Override
515+
public void visitMethodInsn(
516+
final int opcode,
517+
final String owner,
518+
final String name,
519+
final String descriptor,
520+
final boolean isInterface) {
521+
if (opcode == INVOKESTATIC
522+
&& Objects.equals(owner, "java/util/ServiceLoader")
523+
&& Objects.equals(name, "load")) {
524+
spi.add(lastType.getClassName());
525+
}
526+
lastType = null;
527+
}
528+
};
510529
}
511-
512-
@Override
513-
public void visitMethodInsn(final int opcode,
514-
final String owner,
515-
final String name,
516-
final String descriptor,
517-
final boolean isInterface) {
518-
if (opcode == INVOKESTATIC &&
519-
Objects.equals(owner, "java/util/ServiceLoader") &&
520-
Objects.equals(name, "load")) {
521-
spi.add(lastType.getClassName());
522-
}
523-
lastType = null;
524-
}
525-
};
526-
}
527-
}, 0);
530+
},
531+
0);
528532
return spi.stream();
529533
})
530534
.collect(toList()) // materialize before closing the jar
@@ -544,7 +548,7 @@ private void cleanupUnused(final Set<String> spi, final Set<Artifact> unusedDecl
544548
// TODO: enhance to ensure there is a single binding else just log a warning for all
545549
// and maybe even handle version?
546550
private boolean isSlf4jBinding(final Artifact artifact) {
547-
try (final JarFile file = new JarFile(artifact.getFile())) {
551+
try (JarFile file = new JarFile(artifact.getFile())) {
548552
return file.getEntry("org/slf4j/impl/StaticLoggerBinder.class") != null;
549553
} catch (final IOException e) {
550554
return false;
@@ -553,7 +557,7 @@ private boolean isSlf4jBinding(final Artifact artifact) {
553557

554558
private boolean hasUsedSPIImpl(final Set<String> usedSpi, final Artifact artifact) {
555559
final Set<String> spi;
556-
try (final JarFile file = new JarFile(artifact.getFile())) {
560+
try (JarFile file = new JarFile(artifact.getFile())) {
557561
spi = list(file.entries()).stream()
558562
.filter(it -> it.getName().startsWith("META-INF/services/") && !it.isDirectory())
559563
.map(it -> it.getName().substring("META-INF/services/".length()))
@@ -562,19 +566,21 @@ private boolean hasUsedSPIImpl(final Set<String> usedSpi, final Artifact artifac
562566
// java >= 9
563567
final JarEntry moduleEntry = file.getJarEntry("module-info.class");
564568
if (moduleEntry != null) {
565-
try (final InputStream in = file.getInputStream(moduleEntry)) {
569+
try (InputStream in = file.getInputStream(moduleEntry)) {
566570
final ClassReader cr = new ClassReader(in);
567-
cr.accept(new ClassVisitor(ASM9) {
568-
@Override
569-
public ModuleVisitor visitModule(String name, int access, String version) {
570-
return new ModuleVisitor(ASM9) {
571+
cr.accept(
572+
new ClassVisitor(ASM9) {
571573
@Override
572-
public void visitProvide(final String service, final String[] providers) {
573-
spi.add(service.replace('/', '.'));
574+
public ModuleVisitor visitModule(String name, int access, String version) {
575+
return new ModuleVisitor(ASM9) {
576+
@Override
577+
public void visitProvide(final String service, final String[] providers) {
578+
spi.add(service.replace('/', '.'));
579+
}
580+
};
574581
}
575-
};
576-
}
577-
}, 0);
582+
},
583+
0);
578584
}
579585
}
580586
} catch (final IOException e) {
@@ -693,8 +699,8 @@ private void writeScriptableOutput(Set<Artifact> artifacts) {
693699
}
694700

695701
private List<Artifact> filterDependencies(Set<Artifact> artifacts, String[] excludes) {
696-
ArtifactFilter filter = new StrictPatternExcludesArtifactFilter(excludes == null ?
697-
Collections.emptyList() :Arrays.asList(excludes));
702+
ArtifactFilter filter = new StrictPatternExcludesArtifactFilter(
703+
excludes == null ? Collections.emptyList() : Arrays.asList(excludes));
698704
List<Artifact> result = new ArrayList<>();
699705

700706
for (Iterator<Artifact> it = artifacts.iterator(); it.hasNext(); ) {

src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeIndirectDependency.java

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.analyze;
2020

21+
import java.io.IOException;
22+
import java.io.InputStream;
23+
import java.lang.reflect.Field;
24+
import java.nio.file.Files;
25+
import java.nio.file.Path;
26+
import java.nio.file.StandardCopyOption;
27+
import java.util.HashSet;
28+
2129
import jakarta.json.spi.JsonProvider;
2230
import org.apache.johnzon.core.JsonProviderImpl;
2331
import org.apache.maven.artifact.Artifact;
@@ -43,14 +51,6 @@
4351
import org.slf4j.LoggerFactory;
4452
import org.slf4j.impl.SimpleLoggerFactory;
4553

46-
import java.io.IOException;
47-
import java.io.InputStream;
48-
import java.lang.reflect.Field;
49-
import java.nio.file.Files;
50-
import java.nio.file.Path;
51-
import java.nio.file.StandardCopyOption;
52-
import java.util.HashSet;
53-
5454
import static java.util.Arrays.asList;
5555
import static org.junit.jupiter.api.Assertions.assertEquals;
5656
import static org.tomitribe.util.JarLocation.jarLocation;
@@ -69,7 +69,7 @@ void jakartaJavaxEE(@TempDir final Path work) throws Exception {
6969
final String resource = JsonpMain.class.getName().replace('.', '/') + ".class";
7070
final Path target = base.resolve(resource);
7171
Files.createDirectories(target.getParent());
72-
try (final InputStream is = Thread.currentThread()
72+
try (InputStream is = Thread.currentThread()
7373
.getContextClassLoader()
7474
.getResourceAsStream(resource)) {
7575
Files.copy(is, target, StandardCopyOption.REPLACE_EXISTING);
@@ -94,7 +94,7 @@ void slf4j(@TempDir final Path work) throws Exception {
9494
final String resource = Slf4jMain.class.getName().replace('.', '/') + ".class";
9595
final Path target = base.resolve(resource);
9696
Files.createDirectories(target.getParent());
97-
try (final InputStream is = Thread.currentThread()
97+
try (InputStream is = Thread.currentThread()
9898
.getContextClassLoader()
9999
.getResourceAsStream(resource)) {
100100
Files.copy(is, target, StandardCopyOption.REPLACE_EXISTING);
@@ -104,11 +104,13 @@ void slf4j(@TempDir final Path work) throws Exception {
104104
artifact("org.slf4j", "slf4j-simple", slf4jVersion, SimpleLoggerFactory.class)));
105105
}
106106

107-
private String exec(final Path work, final IOConsumer<Path> classesFiller, final Artifact... artifacts) throws Exception {
107+
private String exec(final Path work, final IOConsumer<Path> classesFiller, final Artifact... artifacts)
108+
throws Exception {
108109
final Path classes = Files.createDirectories(work.resolve("target/classes"));
109110
final Build build = new Build();
110111
build.setOutputDirectory(classes.toString());
111-
build.setTestOutputDirectory(Files.createDirectories(work.resolve("target/test-classes")).toString());
112+
build.setTestOutputDirectory(
113+
Files.createDirectories(work.resolve("target/test-classes")).toString());
112114

113115
final MavenProject project = new MavenProject();
114116
project.setGroupId("g");
@@ -147,18 +149,17 @@ public Log getLog() {
147149
configuration.addChild("ignoredPackagings", "pom");
148150
configuration.addChild("outputDirectory", project.getBuild().getOutputDirectory());
149151

150-
new BasicComponentConfigurator()
151-
.configureComponent(mojo, configuration, evaluator, null);
152+
new BasicComponentConfigurator().configureComponent(mojo, configuration, evaluator, null);
152153

153154
mojo.execute();
154155

155156
return log.toString().trim();
156157
}
157158

158-
private DefaultArtifact artifact(final String groupId, final String artifactId, final String slf4jVersion, final Class<?> marker) {
159+
private DefaultArtifact artifact(
160+
final String groupId, final String artifactId, final String slf4jVersion, final Class<?> marker) {
159161
final DefaultArtifact artifact = new DefaultArtifact(
160-
groupId, artifactId, slf4jVersion,
161-
"compile", "jar", "", new DefaultArtifactHandler());
162+
groupId, artifactId, slf4jVersion, "compile", "jar", "", new DefaultArtifactHandler());
162163
artifact.setFile(jarLocation(marker));
163164
return artifact;
164165
}

src/test/java/org/apache/maven/plugins/dependency/testUtils/TestLog.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.testUtils;
2020

21-
import org.apache.maven.plugin.logging.Log;
22-
2321
import java.io.PrintWriter;
2422
import java.io.StringWriter;
2523

24+
import org.apache.maven.plugin.logging.Log;
25+
2626
public class TestLog implements Log {
2727
private final StringBuilder sb = new StringBuilder();
2828

@@ -116,8 +116,7 @@ public void error(CharSequence content, Throwable error) {
116116

117117
error.printStackTrace(pWriter);
118118

119-
System.err.println(
120-
"[error] " + content.toString() + System.lineSeparator() + System.lineSeparator() + sWriter);
119+
System.err.println("[error] " + content.toString() + System.lineSeparator() + System.lineSeparator() + sWriter);
121120
}
122121

123122
/**
@@ -166,11 +165,7 @@ public boolean isErrorEnabled() {
166165
}
167166

168167
private void print(String prefix, CharSequence content) {
169-
sb.append("[")
170-
.append(prefix)
171-
.append("] ")
172-
.append(content.toString())
173-
.append(System.lineSeparator());
168+
sb.append("[").append(prefix).append("] ").append(content.toString()).append(System.lineSeparator());
174169
}
175170

176171
private void print(String prefix, Throwable error) {
@@ -205,4 +200,4 @@ public String toString() {
205200
public String getContent() {
206201
return sb.toString();
207202
}
208-
}
203+
}

0 commit comments

Comments
 (0)