From f1b8b2121600c721a8596e6df1b67e7c52de6236 Mon Sep 17 00:00:00 2001 From: Viacheslav Tykhanovskyi Date: Mon, 6 Dec 2021 10:35:34 +0100 Subject: [PATCH] Handle the situation when context class loader is null This fixes the errors when trying to load classpath references, like: Caused by: java.lang.NullPointerException at com.networknt.schema.uri.ClasspathURLStreamHandler$ClassPathURLConnection.getResourceAsStream(ClasspathURLStreamHandler.java:83) ~[amcrm-1.0-SNAPSHOT.jar:?] at com.networknt.schema.uri.ClasspathURLStreamHandler$ClassPathURLConnection.getInputStream(ClasspathURLStreamHandler.java:69) ~[amcrm-1.0-SNAPSHOT.jar:?] at java.net.URL.openStream(URL.java:1165) ~[?:?] at com.networknt.schema.uri.ClasspathURLFetcher.fetch(ClasspathURLFetcher.java:39) ~[amcrm-1.0-SNAPSHOT.jar:?] at com.networknt.schema.uri.URISchemeFetcher.fetch(URISchemeFetcher.java:50) ~[amcrm-1.0-SNAPSHOT.jar:?] at com.networknt.schema.JsonSchemaFactory.getSchema(JsonSchemaFactory.java:351) ~[amcrm-1.0-SNAPSHOT.jar:?] at com.networknt.schema.RefValidator.getRefSchema(RefValidator.java:82) ~[amcrm-1.0-SNAPSHOT.jar:?] at com.networknt.schema.RefValidator.(RefValidator.java:45) ~[amcrm-1.0-SNAPSHOT.jar:?] --- .../networknt/schema/uri/ClasspathURLStreamHandler.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/networknt/schema/uri/ClasspathURLStreamHandler.java b/src/main/java/com/networknt/schema/uri/ClasspathURLStreamHandler.java index a32da1132..dbe64975f 100644 --- a/src/main/java/com/networknt/schema/uri/ClasspathURLStreamHandler.java +++ b/src/main/java/com/networknt/schema/uri/ClasspathURLStreamHandler.java @@ -76,11 +76,14 @@ private InputStream getResourceAsStream(URL pURL) throws IOException { path = path.substring(1); } - InputStream stream; + InputStream stream = null; if (mHost != null) { stream = mHost.getClassLoader().getResourceAsStream(path); } else { - stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(path); + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + if (contextClassLoader != null) { + stream = contextClassLoader.getResourceAsStream(path); + } if (stream == null) { stream = getClass().getClassLoader().getResourceAsStream(path); } @@ -96,4 +99,4 @@ private InputStream getResourceAsStream(URL pURL) throws IOException { } -} \ No newline at end of file +}