From 597649d4aa941730e8bc53387f6ae8a22b6078ea Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Thu, 22 Nov 2012 15:41:01 +1100 Subject: [PATCH] 394719 remove regex from classpath matching --- .../jetty/webapp/ClasspathPattern.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java index 63ec5b4ca76..f6bd679f1c3 100644 --- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java +++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java @@ -189,16 +189,24 @@ public class ClasspathPattern if (_entries != null) { name = name.replace('/','.'); - name = name.replaceFirst("^[.]+",""); - name = name.replaceAll("\\$.*$",""); - + + int startIndex = 0; + + while(startIndex < name.length() && name.charAt(startIndex) == '.') { + startIndex++; + } + + int dollar = name.indexOf("$"); + + int endIndex = dollar != -1 ? dollar : name.length(); + for (Entry entry : _entries) { if (entry != null) { if (entry.partial) { - if (name.startsWith(entry.classpath)) + if (name.regionMatches(startIndex, entry.classpath, 0, entry.classpath.length())) { result = entry.result; break; @@ -206,7 +214,9 @@ public class ClasspathPattern } else { - if (name.equals(entry.classpath)) + int regionLength = endIndex-startIndex; + if (regionLength == entry.classpath.length() + && name.regionMatches(startIndex, entry.classpath, 0, regionLength)) { result = entry.result; break;