diff options
Diffstat (limited to 'jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java')
-rw-r--r-- | jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java | 22 |
1 files changed, 16 insertions, 6 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 63ec5b4ca7..dea26aeed8 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 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2012 Mort Bay Consulting Pty. Ltd. +// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 @@ -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; |