From ae4f9f6fa841d1b56a8b3714864ff41558c59752 Mon Sep 17 00:00:00 2001 From: gregw Date: Wed, 28 Oct 2020 23:23:11 +0100 Subject: [PATCH] Fixes #5521 ResourceCollection NPE Revert adding paths ending in / as jar:file resource needs them --- .../docs/programming/server/http/HTTPServerDocs.java | 4 ++-- .../org/eclipse/jetty/webapp/MetaInfConfiguration.java | 4 ++-- .../java/org/eclipse/jetty/webapp/WebAppContext.java | 2 +- .../org/eclipse/jetty/webapp/WebInfConfiguration.java | 10 +++++----- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java b/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java index 26a4b255a0dd..89e21d7e027e 100644 --- a/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java +++ b/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java @@ -658,8 +658,8 @@ public void multipleResourcesHandler() throws Exception // For multiple directories, use ResourceCollection. ResourceCollection directories = new ResourceCollection(); - directories.addPath("/path/to/static/resources"); - directories.addPath("/another/path/to/static/resources"); + directories.addPath("/path/to/static/resources/"); + directories.addPath("/another/path/to/static/resources/"); handler.setBaseResource(directories); // end::multipleResourcesHandler[] diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java index 41519cf50ecf..422df3c47a01 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java @@ -766,7 +766,7 @@ protected List findWebInfLibJars(WebAppContext context) return null; List jarResources = new ArrayList(); - Resource webInfLib = webInf.addPath("lib"); + Resource webInfLib = webInf.addPath("/lib"); if (webInfLib.exists() && webInfLib.isDirectory()) { String[] files = webInfLib.list(); @@ -834,7 +834,7 @@ protected Resource findWebInfClassesDir(WebAppContext context) if (webInf != null && webInf.isDirectory()) { // Look for classes directory - Resource classes = webInf.addPath("classes"); + Resource classes = webInf.addPath("classes/"); if (classes.exists()) return classes; } diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java index da9ab6e3ccf0..b2a6e553a4f8 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java @@ -834,7 +834,7 @@ public Resource getWebInf() throws IOException return null; // Iw there a WEB-INF directory? - Resource webInf = super.getBaseResource().addPath("WEB-INF"); + Resource webInf = super.getBaseResource().addPath("WEB-INF/"); if (!webInf.exists() || !webInf.isDirectory()) return null; diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java index 5ee2406420c5..09999ab56d9e 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java @@ -70,12 +70,12 @@ public void configure(WebAppContext context) throws Exception if (webInf != null && webInf.isDirectory() && context.getClassLoader() instanceof WebAppClassLoader) { // Look for classes directory - Resource classes = webInf.addPath("classes"); + Resource classes = webInf.addPath("classes/"); if (classes.exists()) ((WebAppClassLoader)context.getClassLoader()).addClassPath(classes); // Look for jars - Resource lib = webInf.addPath("lib"); + Resource lib = webInf.addPath("lib/"); if (lib.exists() || lib.isDirectory()) ((WebAppClassLoader)context.getClassLoader()).addJars(lib); } @@ -413,13 +413,13 @@ public void unpack(WebAppContext context) throws IOException // Do we need to extract WEB-INF/lib? if (context.isCopyWebInf() && !context.isCopyWebDir()) { - Resource webInf = webApp.addPath("WEB-INF"); + Resource webInf = webApp.addPath("WEB-INF/"); File extractedWebInfDir = new File(context.getTempDirectory(), "webinf"); if (extractedWebInfDir.exists()) IO.delete(extractedWebInfDir); extractedWebInfDir.mkdir(); - Resource webInfLib = webInf.addPath("lib"); + Resource webInfLib = webInf.addPath("lib/"); File webInfDir = new File(extractedWebInfDir, "WEB-INF"); webInfDir.mkdir(); @@ -435,7 +435,7 @@ public void unpack(WebAppContext context) throws IOException webInfLib.copyTo(webInfLibDir); } - Resource webInfClasses = webInf.addPath("classes"); + Resource webInfClasses = webInf.addPath("classes/"); if (webInfClasses.exists()) { File webInfClassesDir = new File(webInfDir, "classes");