Author: antelder
Date: Mon Jan  7 08:06:00 2008
New Revision: 609655

URL: http://svn.apache.org/viewvc?rev=609655&view=rev
Log:
Another contextpath fiddle to cope with multiple root elements

Modified:
    
incubator/tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppRequestDispatcher.java

Modified: 
incubator/tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppRequestDispatcher.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppRequestDispatcher.java?rev=609655&r1=609654&r2=609655&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppRequestDispatcher.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppRequestDispatcher.java
 Mon Jan  7 08:06:00 2008
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.host.webapp;
 
 import java.io.IOException;
+import java.util.StringTokenizer;
 
 import javax.servlet.RequestDispatcher;
 import javax.servlet.Servlet;
@@ -69,18 +70,34 @@
                 if (path.length() == 0) {
                     path = super.getPathInfo();
                 }
-                // TODO: another context path hack, shouldn't hardcode this 
"tuscany" string
-                if (servletPath.startsWith("/tuscany/")) {
-                    path = path.substring(servletPath.length()-8);
-                } else {
-                    path = path.substring(servletPath.length());
-                }
+
+                // TODO: another context path hack, revisit when context path 
is sorted out
+                path = fiddlePath(path, servletPath);
+
                 return path;
             }
         };
         return requestWrapper;
     }
-    
+
+    /**
+     * Remove any path suffix thats part of the servlet context path
+     */
+    protected String fiddlePath(String path, String servletPath) {
+        StringTokenizer st = new StringTokenizer(path, "/");
+        String root = "";
+        while (st.hasMoreTokens()){
+                String s = st.nextToken();
+                if (servletPath.endsWith((root + "/" + s))) {
+                        root += "/" + s;
+                } else {
+                        break;
+                }
+        }
+        String fiddlePath = path.substring(root.length());
+        return fiddlePath;
+    }
+
     public void forward(ServletRequest request, ServletResponse response) 
throws ServletException, IOException {
         servlet.service(createRequestWrapper(request), response);
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to