Bug 544145 - Web Services Explorer fails to load correctly with 3.13.0
M2

Change-Id: Ica97acc6ad2e8ec564f2ec92dadb2ec07469088c
Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
diff --git a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java
index 299c6fe..e820cef 100644
--- a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java
+++ b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java
@@ -1969,6 +1969,26 @@
 	}
 
 	@Test
+	public void test_ResourceAliasNormal() throws Exception {
+		HttpService extendedHttpService = getHttpService();
+
+		extendedHttpService.registerResources("/testalias", "/org/eclipse/equinox/http/servlet/tests", null);
+
+		String actual = requestAdvisor.request("testalias/resource2.txt");
+		Assert.assertEquals("Wrong value.", "test", actual);
+	}
+
+	@Test
+	public void test_ResourceAliasSlash() throws Exception {
+		HttpService extendedHttpService = getHttpService();
+
+		extendedHttpService.registerResources("/", "/org/eclipse/equinox/http/servlet/tests", null);
+
+		String actual = requestAdvisor.request("resource2.txt");
+		Assert.assertEquals("Wrong value.", "test", actual);
+	}
+
+	@Test
 	public void test_ResourceRangeRequest_Complete() throws Exception {
 		Bundle bundle = installBundle(TEST_BUNDLE_2);
 		ServletContextHelper customSCH = new ServletContextHelper(bundle) {
diff --git a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/resource2.txt b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/resource2.txt
new file mode 100644
index 0000000..30d74d2
--- /dev/null
+++ b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/resource2.txt
@@ -0,0 +1 @@
+test
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceRuntimeImpl.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceRuntimeImpl.java
index f2e3f2b..ecd7b2c 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceRuntimeImpl.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceRuntimeImpl.java
@@ -771,15 +771,18 @@
 			throw new IllegalArgumentException("Name cannot be null"); //$NON-NLS-1$
 		}
 		String pattern = alias;
-		if (pattern.startsWith("/*.")) { //$NON-NLS-1$
+		if (pattern.startsWith(Const.SLASH_STAR_DOT)) {
 			pattern = pattern.substring(1);
 		}
-		else if (!pattern.contains("*.") && //$NON-NLS-1$
-				!pattern.endsWith(Const.SLASH_STAR) &&
-				!pattern.endsWith(Const.SLASH)) {
-			pattern += Const.SLASH_STAR;
+		// need to make sure exact matching aliases are converted to wildcard pattern matches
+		if (!pattern.endsWith(Const.SLASH_STAR) && !pattern.startsWith(Const.STAR_DOT) && !pattern.contains(Const.SLASH_STAR_DOT)) {
+			if (pattern.endsWith(Const.SLASH)) {
+				pattern = pattern + '*';
+			} else {
+				pattern = pattern + Const.SLASH_STAR;
+			}
 		}
-
+		// check the pattern against the original input
 		ContextController.checkPattern(alias);
 
 		synchronized (legacyMappings) {