You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2026/09/08 14:26:45 UTC

(maven-shared-io) 01/02: Fix null context class loader handling

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

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

commit 0674862474efdf593f449b069046d4a196f1e0a0
Author: Aayush Tiwari <aa...@gmail.com>
AuthorDate: Sun Jul 5 20:27:03 2026 +0530

    Fix null context class loader handling
---
 .../io/location/ClasspathResourceLocatorStrategy.java   |  2 +-
 .../location/ClasspathResourceLocatorStrategyTest.java  | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategy.java b/src/main/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategy.java
index aace0b6..a0a5562 100644
--- a/src/main/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategy.java
+++ b/src/main/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategy.java
@@ -55,7 +55,7 @@ public class ClasspathResourceLocatorStrategy implements LocatorStrategy {
     public Location resolve(String locationSpecification, MessageHolder messageHolder) {
         ClassLoader cloader = Thread.currentThread().getContextClassLoader();
 
-        URL resource = cloader.getResource(locationSpecification);
+        URL resource = cloader != null ? cloader.getResource(locationSpecification) : null;
 
         Location location = null;
 
diff --git a/src/test/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategyTest.java b/src/test/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategyTest.java
index fd18b0b..d4fb3ad 100644
--- a/src/test/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategyTest.java
+++ b/src/test/java/org/apache/maven/shared/io/location/ClasspathResourceLocatorStrategyTest.java
@@ -47,6 +47,23 @@ class ClasspathResourceLocatorStrategyTest {
         assertEquals(1, mh.size());
     }
 
+    @Test
+    void shouldFailToResolveWhenContextClassLoaderIsNull() {
+        Thread thread = Thread.currentThread();
+        ClassLoader contextClassLoader = thread.getContextClassLoader();
+        MessageHolder mh = new DefaultMessageHolder();
+
+        try {
+            thread.setContextClassLoader(null);
+            Location location = new ClasspathResourceLocatorStrategy().resolve("META-INF/maven/test.properties", mh);
+
+            assertNull(location);
+            assertEquals(1, mh.size());
+        } finally {
+            thread.setContextClassLoader(contextClassLoader);
+        }
+    }
+
     @Test
     void shouldResolveExistingClasspathResourceWithoutPrecedingSlash() {
         MessageHolder mh = new DefaultMessageHolder();