Another fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=43683
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 13 Jun 2008 20:40:27 +0000 (20:40 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 13 Jun 2008 20:40:27 +0000 (20:40 +0000)
There was a short period where the context didn't appear in the mapper that resulted in some more 404s.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@667644 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/connector/MapperListener.java

index 545ee1e..c1e6285 100644 (file)
@@ -26,11 +26,14 @@ import javax.management.NotificationListener;
 import javax.management.ObjectInstance;
 import javax.management.ObjectName;
 
+import org.apache.catalina.core.StandardContext;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 
 
+import org.apache.tomcat.util.buf.MessageBytes;
 import org.apache.tomcat.util.http.mapper.Mapper;
+import org.apache.tomcat.util.http.mapper.MappingData;
 import org.apache.tomcat.util.modeler.Registry;
 
 import org.apache.tomcat.util.res.StringManager;
@@ -430,6 +433,19 @@ public class MapperListener
         if (contextName.equals("/")) {
             contextName = "";
         }
+
+        // Don't un-map a context that is paused
+        MessageBytes hostMB = MessageBytes.newInstance();
+        hostMB.setString(hostName);
+        MessageBytes contextMB = MessageBytes.newInstance();
+        contextMB.setString(contextName);
+        MappingData mappingData = new MappingData();
+        mapper.map(hostMB, contextMB, mappingData);
+        if (mappingData.context instanceof StandardContext &&
+                ((StandardContext)mappingData.context).getPaused()) {
+            return;
+        } 
+
         if(log.isDebugEnabled())
             log.debug(sm.getString
                   ("mapperListener.unregisterContext", contextName));