Author: fmeschbe
Date: Tue Jan 27 20:06:00 2009
New Revision: 738209
URL: http://svn.apache.org/viewvc?rev=738209&view=rev
Log:
SLING-736 Hardwire the SlingMainServlet to the root (/) and ensure
the proper setting of the pathInfo and the servletPath
Modified:
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
Modified:
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java?rev=738209&r1=738208&r2=738209&view=diff
==============================================================================
---
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
(original)
+++
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
Tue Jan 27 20:06:00 2009
@@ -59,12 +59,20 @@
SlingHttpServletRequest {
private final RequestData requestData;
+ private final String pathInfo;
private String responseContentType;
public SlingHttpServletRequestImpl(RequestData requestData,
HttpServletRequest servletRequest) {
super(servletRequest);
this.requestData = requestData;
+
+ // prepare the pathInfo property
+ String pathInfo = servletRequest.getServletPath();
+ if (servletRequest.getPathInfo() != null) {
+ pathInfo = pathInfo.concat(servletRequest.getPathInfo());
+ }
+ this.pathInfo = pathInfo;
}
/**
@@ -273,6 +281,25 @@
}
/**
+ * Always returns the empty string since the actual servlet registered with
+ * the servlet container (the HttpService actually) is registered as if
+ * the servlet path is "/*".
+ */
+ @Override
+ public String getServletPath() {
+ return "";
+ }
+
+ /**
+ * Returns the part of the request URL without the leading servlet context
+ * path.
+ */
+ @Override
+ public String getPathInfo() {
+ return pathInfo;
+ }
+
+ /**
* A <code>UserPrincipal</code> ...
*/
private static class UserPrincipal implements Principal, Serializable {
Modified:
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java?rev=738209&r1=738208&r2=738209&view=diff
==============================================================================
---
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
(original)
+++
incubator/sling/trunk/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java
Tue Jan 27 20:06:00 2009
@@ -87,7 +87,6 @@
* The <code>SlingMainServlet</code> TODO
*
* @scr.component immediate="true" metatype="no"
- * @scr.property name="sling.root" value="/" private="true"
* @scr.property name="service.vendor" value="The Apache Software Foundation"
* @scr.property name="service.description" value="Sling Servlet"
* @scr.reference name="Filter" interface="javax.servlet.Filter"
@@ -100,6 +99,12 @@
private static final Logger log =
LoggerFactory.getLogger(SlingMainServlet.class);
/**
+ * The registration path for the SlingMainServlet is hard wired to always
+ * be the root, aka "<code>/</code>" (value is "/").
+ */
+ private static final String SLING_ROOT = "/";
+
+ /**
* The name of the product to report in the {...@link #getServerInfo()}
method
* (value is "ApacheSling").
*/
@@ -150,8 +155,6 @@
private SlingFilterChainHelper innerFilterChain = new
SlingFilterChainHelper();
- private String slingRoot;
-
private SlingAuthenticator slingAuthenticator;
private static final String INCLUDE_COUNTER =
"Sling.ScriptHelper.include.counter";
@@ -610,15 +613,6 @@
configuration.put(String.valueOf(key), componentConfig.get(key));
}
- // get the web manager root path
- Object wmr = configuration.get("sling.root");
- this.slingRoot = (wmr instanceof String) ? (String) wmr : null;
- if (this.slingRoot == null) {
- this.slingRoot = "/";
- } else if (!this.slingRoot.startsWith("/")) {
- this.slingRoot = "/" + this.slingRoot;
- }
-
// ensure the servlet name
if (!(configuration.get("servlet-name") instanceof String)) {
configuration.put("servlet-name", PRODUCT_NAME + " "
@@ -633,8 +627,8 @@
try {
Dictionary<String, String> servletConfig =
toStringConfig(configuration);
- this.httpService.registerServlet(this.slingRoot, this,
- servletConfig, this);
+ this.httpService.registerServlet(SLING_ROOT, this, servletConfig,
+ this);
log.info("{} ready to serve requests", this.getServerInfo());
@@ -669,7 +663,7 @@
protected void deactivate(ComponentContext componentContext) {
// first of all, we have to unregister
- httpService.unregister(this.slingRoot);
+ httpService.unregister(SLING_ROOT);
destroyFilters(innerFilterChain);
destroyFilters(requestFilterChain);