Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Auge2014-09-23 01:53:10 +0000
committerRaymond Auge2014-09-23 01:55:03 +0000
commit6c0d1a872ba6d474eebf20eaebd3342972bb7a50 (patch)
treec65fcec7ddb9a5859844efcb252e229e8fa79509
parent8a6cbd3d093934968ef7bbf78c7a36151a6f1423 (diff)
downloadrt.equinox.bundles-6c0d1a872ba6d474eebf20eaebd3342972bb7a50.tar.gz
rt.equinox.bundles-6c0d1a872ba6d474eebf20eaebd3342972bb7a50.tar.xz
rt.equinox.bundles-6c0d1a872ba6d474eebf20eaebd3342972bb7a50.zip
implement an internal legacy matching flag
- old spec matching is different from new spec matching - when using old API, support old matching style Signed-off-by: Raymond Auge <raymond.auge@liferay.com>
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java5
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/context/ContextController.java12
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextResourceTrackerCustomizer.java2
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextServletTrackerCustomizer.java2
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/EndpointRegistration.java11
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ResourceRegistration.java7
-rw-r--r--bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ServletRegistration.java4
7 files changed, 26 insertions, 17 deletions
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java
index a9e63a17f..5011f7518 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/HttpServiceImpl.java
@@ -181,7 +181,8 @@ public class HttpServiceImpl implements HttpService, ExtendedHttpService {
ResourceRegistration resourceRegistration =
contextController.addResourceRegistration(
- patterns, prefix, legacyServiceIdGenerator.decrementAndGet());
+ patterns, prefix, legacyServiceIdGenerator.decrementAndGet(),
+ false);
for (String pattern : patterns) {
contextRegistrations.put(pattern, resourceRegistration);
@@ -248,7 +249,7 @@ public class HttpServiceImpl implements HttpService, ExtendedHttpService {
ServletRegistration servletRegistration =
contextController.addServletRegistration(
servlet, asyncSupported, errorPages, initparams, patterns,
- legacyServiceIdGenerator.decrementAndGet(), name);
+ legacyServiceIdGenerator.decrementAndGet(), name, false);
if (patterns != null) {
for (String pattern : patterns) {
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/context/ContextController.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/context/ContextController.java
index d23596d1d..c1c21464e 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/context/ContextController.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/context/ContextController.java
@@ -255,11 +255,11 @@ public class ContextController {
}
return addResourceRegistration(
- new String[] {pattern}, prefix, serviceId);
+ new String[] {pattern}, prefix, serviceId, true);
}
public ResourceRegistration addResourceRegistration(
- String[] patterns, String prefix, long serviceId) {
+ String[] patterns, String prefix, long serviceId, boolean legacyMatching) {
checkShutdown();
@@ -290,7 +290,7 @@ public class ContextController {
ServletContext servletContext = createServletContext(
bundle, curServletContextHelper);
ResourceRegistration resourceRegistration = new ResourceRegistration(
- servlet, resourceDTO, curServletContextHelper, this);
+ servlet, resourceDTO, curServletContextHelper, this, legacyMatching);
ServletConfig servletConfig = new ServletConfigImpl(
resourceRegistration.getName(), new HashMap<String, String>(),
servletContext);
@@ -333,13 +333,13 @@ public class ContextController {
return addServletRegistration(
servlet, false, Const.EMPTY_ARRAY,
new UMDictionaryMap<String, String>(initparams),
- new String[] {pattern}, serviceId, servletName);
+ new String[] {pattern}, serviceId, servletName, true);
}
public ServletRegistration addServletRegistration(
Servlet servlet, boolean asyncSupported, String[] errorPages,
Map<String, String> initparams, String[] patterns, long serviceId,
- String servletName)
+ String servletName, boolean legacyMatching)
throws ServletException {
checkShutdown();
@@ -408,7 +408,7 @@ public class ContextController {
ServletContext servletContext = createServletContext(
bundle, curServletContextHelper);
ServletRegistration servletRegistration = new ServletRegistration(
- servlet, servletDTO, errorPageDTO, curServletContextHelper, this);
+ servlet, servletDTO, errorPageDTO, curServletContextHelper, this, legacyMatching);
ServletConfig servletConfig = new ServletConfigImpl(
servletName, initparams, servletContext);
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextResourceTrackerCustomizer.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextResourceTrackerCustomizer.java
index 930987716..f3b7d16d8 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextResourceTrackerCustomizer.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextResourceTrackerCustomizer.java
@@ -64,7 +64,7 @@ public class ContextResourceTrackerCustomizer
HttpWhiteboardConstants.HTTP_WHITEBOARD_RESOURCE_PREFIX);
return contextController.addResourceRegistration(
- patterns, prefix, serviceId.longValue());
+ patterns, prefix, serviceId.longValue(), false);
}
@Override
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextServletTrackerCustomizer.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextServletTrackerCustomizer.java
index 222ec3add..0d849dff4 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextServletTrackerCustomizer.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/customizer/ContextServletTrackerCustomizer.java
@@ -86,7 +86,7 @@ public class ContextServletTrackerCustomizer
try {
return contextController.addServletRegistration(
servlet, asyncSupported, errorPages, initParams, patterns,
- serviceId.longValue(), servletName);
+ serviceId.longValue(), servletName, false);
}
catch (ServletException se) {
httpServiceRuntime.log(se.getMessage(), se);
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/EndpointRegistration.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/EndpointRegistration.java
index ec3e74dde..b8175ecca 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/EndpointRegistration.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/EndpointRegistration.java
@@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.equinox.http.servlet.internal.context.ContextController;
import org.eclipse.equinox.http.servlet.internal.servlet.Match;
+import org.eclipse.equinox.http.servlet.internal.util.Const;
import org.osgi.dto.DTO;
import org.osgi.service.http.context.ServletContextHelper;
@@ -29,15 +30,17 @@ public abstract class EndpointRegistration<D extends DTO>
private ServletContextHelper servletContextHelper; //The context used during the registration of the servlet
private ContextController contextController;
private ClassLoader classLoader;
+ private boolean legacyMatching;
public EndpointRegistration(
Servlet servlet, D d, ServletContextHelper servletContextHelper,
- ContextController contextController) {
+ ContextController contextController, boolean legacyMatching) {
super(servlet, d);
this.servletContextHelper = servletContextHelper;
this.contextController = contextController;
+ this.legacyMatching = legacyMatching;
classLoader = contextController.getClassLoader();
}
@@ -127,6 +130,12 @@ public abstract class EndpointRegistration<D extends DTO>
}
for (String pattern : patterns) {
+ if (legacyMatching && (match == Match.REGEX) &&
+ !pattern.endsWith(Const.SLASH_STAR)) {
+
+ pattern += Const.SLASH_STAR;
+ }
+
if (doMatch(pattern, servletPath, pathInfo, extension, match)) {
return pattern;
}
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ResourceRegistration.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ResourceRegistration.java
index 91ea6f0fd..ce01ff43f 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ResourceRegistration.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ResourceRegistration.java
@@ -11,9 +11,8 @@
package org.eclipse.equinox.http.servlet.internal.registration;
-import org.eclipse.equinox.http.servlet.internal.context.ContextController;
-
import javax.servlet.Servlet;
+import org.eclipse.equinox.http.servlet.internal.context.ContextController;
import org.osgi.service.http.context.ServletContextHelper;
import org.osgi.service.http.runtime.dto.ResourceDTO;
/**
@@ -24,9 +23,9 @@ public class ResourceRegistration extends EndpointRegistration<ResourceDTO> {
public ResourceRegistration(
Servlet servlet, ResourceDTO resourceDTO,
ServletContextHelper servletContextHelper,
- ContextController contextController) {
+ ContextController contextController, boolean legacyMatching) {
- super(servlet, resourceDTO, servletContextHelper, contextController);
+ super(servlet, resourceDTO, servletContextHelper, contextController, legacyMatching);
name = servlet.getClass().getName().concat("#").concat(getD().prefix); //$NON-NLS-1$
}
diff --git a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ServletRegistration.java b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ServletRegistration.java
index 580a4f674..a05832110 100644
--- a/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ServletRegistration.java
+++ b/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/registration/ServletRegistration.java
@@ -25,9 +25,9 @@ public class ServletRegistration extends EndpointRegistration<ServletDTO> {
public ServletRegistration(
Servlet servlet, ServletDTO servletDTO, ErrorPageDTO errorPageDTO,
ServletContextHelper servletContextHelper,
- ContextController contextController) {
+ ContextController contextController, boolean legacyMatching) {
- super(servlet, servletDTO, servletContextHelper, contextController);
+ super(servlet, servletDTO, servletContextHelper, contextController, legacyMatching);
this.errorPageDTO = errorPageDTO;
}

Back to the top