From 0485fdf2f36673e4fbf697ccdf2ee1e6d82506ce Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 21 Dec 2022 14:51:28 -0600 Subject: [PATCH] Fixing FileID.getFileName when dealing with opaque URIs --- .../main/java/org/eclipse/jetty/util/FileID.java | 16 +++++++++++++++- .../java/org/eclipse/jetty/util/FileIDTest.java | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FileID.java b/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FileID.java index 0a05ee26214..094ca20cf2e 100644 --- a/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FileID.java +++ b/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FileID.java @@ -55,7 +55,21 @@ public class FileID { if (uri == null) return ""; - String path = uri.getPath(); + if (uri.isOpaque()) + { + return getFileName(uri.getSchemeSpecificPart()); + } + return getFileName(uri.getPath()); + } + + /** + * Get the last segment of a String path returning it as the filename + * + * @param path the string path to look for the filename + * @return The last segment of the path + */ + public static String getFileName(String path) + { if (path == null || "/".equals(path)) return ""; int idx = path.lastIndexOf('/'); diff --git a/jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FileIDTest.java b/jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FileIDTest.java index 3d8d4fa173e..a5c9f523a98 100644 --- a/jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FileIDTest.java +++ b/jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FileIDTest.java @@ -106,6 +106,7 @@ public class FileIDTest Arguments.of(URI.create("file:zed/"), ""), Arguments.of(URI.create("file:///path/to/test.txt"), "test.txt"), Arguments.of(URI.create("file:///path/to/dir/"), ""), + Arguments.of(URI.create("jar:file:///home/user/libs/jetty-server-12.jar!/org/eclipse/jetty/server/jetty-dir.css"), "jetty-dir.css"), Arguments.of(URI.create("http://eclipse.org/jetty/"), ""), Arguments.of(URI.create("http://eclipse.org/jetty/index.html"), "index.html"), Arguments.of(URI.create("http://eclipse.org/jetty/docs.html?query=val#anchor"), "docs.html")