tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From antel...@apache.org
Subject svn commit: r829733 - /tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
Date Mon, 26 Oct 2009 09:11:58 GMT
Author: antelder
Date: Mon Oct 26 09:11:58 2009
New Revision: 829733

URL: http://svn.apache.org/viewvc?rev=829733&view=rev
Log:
Update to re-register servlets if the servelt host context path is updated. Thats necessary
of servlets are registered before the context path is initialized, which can happene when
extensions register servlets during startup

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

Modified: tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java?rev=829733&r1=829732&r2=829733&view=diff
==============================================================================
--- tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
(original)
+++ tuscany/java/sca/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
Mon Oct 26 09:11:58 2009
@@ -25,8 +25,10 @@
 import java.net.URI;
 import java.net.URL;
 import java.net.UnknownHostException;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
 
@@ -229,6 +231,8 @@
     @SuppressWarnings("unchecked")
     public void initContextPath(ServletConfig config) {
         
+        String oldContextPath = contextPath;
+        
         if (Collections.list(config.getInitParameterNames()).contains("contextPath")) {
             contextPath = config.getInitParameter("contextPath");
         } else {
@@ -245,6 +249,22 @@
         }
 
         logger.info("ContextPath: " + contextPath);
+
+        // if the context path changes after some servlets have been registered then
+        // need to reregister them (this can happen if extensions start before webapp init)
+        if (!oldContextPath.endsWith(contextPath)) {
+            List<String> oldServletURIs = new ArrayList<String>();
+            for (String oldServletURI : servlets.keySet()) {
+                if (oldServletURI.startsWith(oldContextPath)) {
+                    oldServletURIs.add(oldServletURI);
+                }
+            }
+            for (String oldURI : oldServletURIs) {
+                String ns = contextPath + "/" + oldURI.substring(oldContextPath.length());
+                servlets.put(ns, servlets.remove(oldURI));
+            }
+        }
+        
     }    
     
     void destroy() {



Mime
View raw message