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

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


The following commit(s) were added to refs/heads/master by this push:
     new b25c800e Fix NPE when a classifier part is specified but an artifact 
classifier is null rather than empty
b25c800e is described below

commit b25c800ed72c7d25e156917f8ca67316501e5e67
Author: Ric Harris <[email protected]>
AuthorDate: Wed Jul 2 19:56:19 2025 +0100

    Fix NPE when a classifier part is specified but an artifact classifier is 
null rather than empty
---
 .../apache/maven/enforcer/rules/utils/ArtifactMatcher.java  |  8 ++++----
 .../enforcer/rules/dependency/BannedDependenciesTest.java   | 13 +++++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git 
a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
 
b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
index 74c54ec5..caf2c599 100644
--- 
a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
+++ 
b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
@@ -145,6 +145,10 @@ public final class ArtifactMatcher {
         }
 
         private boolean matches(int index, String input) {
+            // TODO: Check if this can be done better or prevented earlier.
+            if (input == null) {
+                input = "";
+            }
             //          return matches(parts[index], input);
             if (partsRegex[index] == null) {
                 String regex = parts[index]
@@ -157,10 +161,6 @@ public final class ArtifactMatcher {
                         .replace("(", "\\(")
                         .replace(")", "\\)");
 
-                // TODO: Check if this can be done better or prevented earlier.
-                if (input == null) {
-                    input = "";
-                }
                 partsRegex[index] = java.util.regex.Pattern.compile(regex);
             }
             return partsRegex[index].matcher(input).matches();
diff --git 
a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java
 
b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java
index 1f453161..e0ecf8ae 100644
--- 
a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java
+++ 
b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/dependency/BannedDependenciesTest.java
@@ -57,6 +57,19 @@ class BannedDependenciesTest {
     @InjectMocks
     private BannedDependencies rule;
 
+    @Test
+    void excludesDoNotUseTransitiveDependenciesNullSafe() throws Exception {
+        when(session.getCurrentProject()).thenReturn(project);
+        
when(project.getDependencyArtifacts()).thenReturn(ARTIFACT_STUB_FACTORY.getTypedArtifacts());
+
+        rule.setSearchTransitive(false);
+        rule.setExcludes(Collections.singletonList("g:b:*:*:compile:*"));
+
+        assertThatCode(rule::execute)
+                .isInstanceOf(EnforcerRuleException.class)
+                .hasMessageContaining("g:b:jar:1.0 <--- banned via the 
exclude/include list");
+    }
+
     @Test
     void excludesDoNotUseTransitiveDependencies() throws Exception {
         when(session.getCurrentProject()).thenReturn(project);

Reply via email to