Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java22
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;

Back to the top