Author: markt
Date: Tue Aug  7 20:01:34 2012
New Revision: 1370482

URL: http://svn.apache.org/viewvc?rev=1370482&view=rev
Log:
More Mapper clean-up.
Remove the per Context Mappers

Modified:
    tomcat/trunk/java/org/apache/catalina/Context.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
    tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
    tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
    tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/Context.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Context.java?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Context.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Context.java Tue Aug  7 20:01:34 2012
@@ -35,7 +35,6 @@ import org.apache.catalina.deploy.Filter
 import org.apache.catalina.deploy.LoginConfig;
 import org.apache.catalina.deploy.NamingResources;
 import org.apache.catalina.deploy.SecurityConstraint;
-import org.apache.catalina.mapper.Mapper;
 import org.apache.tomcat.JarScanner;
 
 /**
@@ -413,12 +412,6 @@ public interface Context extends Contain
 
 
     /**
-     * Get the request dispatcher mapper.
-     */
-    public Mapper getMapper();
-
-
-    /**
      * Return the naming resources associated with this web application.
      */
     public NamingResources getNamingResources();

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Tue Aug  
7 20:01:34 2012
@@ -120,6 +120,7 @@ public class ApplicationContext
     public ApplicationContext(StandardContext context) {
         super();
         this.context = context;
+        this.service = ((Engine) context.getParent().getParent()).getService();
 
         // Populate session tracking modes
         populateSessionTrackingModes();
@@ -149,10 +150,17 @@ public class ApplicationContext
 
 
     /**
+     * The Service instance with which we are associated.
+     */
+    private final Service service;
+
+
+    /**
      * Empty String collection to serve as the basis for empty enumerations.
      */
     private static final List<String> emptyString = Collections.emptyList();
 
+
     /**
      * Empty Servlet collection to serve as the basis for empty enumerations.
      */
@@ -454,7 +462,7 @@ public class ApplicationContext
                 semicolon = -1;
             }
             uriCC.append(normalizedPath, 0, semicolon > 0 ? semicolon : pos);
-            context.getMapper().map(uriMB, mappingData);
+            service.getMapper().map(context, uriMB, mappingData);
             if (mappingData.wrapper == null) {
                 return (null);
             }

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Aug  7 
20:01:34 2012
@@ -433,13 +433,6 @@ public class StandardContext extends Con
 
 
     /**
-     * The mapper associated with this context.
-     */
-    private org.apache.catalina.mapper.Mapper mapper =
-        new org.apache.catalina.mapper.Mapper();
-
-
-    /**
      * The Manager implementation with which this Container is associated.
      */
     protected Manager manager = null;
@@ -2061,15 +2054,6 @@ public class StandardContext extends Con
 
 
     /**
-     * Get the mapper associated with the context.
-     */
-    @Override
-    public org.apache.catalina.mapper.Mapper getMapper() {
-        return (mapper);
-    }
-
-
-    /**
      * Return the naming resources associated with this web application.
      */
     @Override
@@ -3248,19 +3232,13 @@ public class StandardContext extends Con
                 // Don't allow more than one servlet on the same pattern
                 Wrapper wrapper = (Wrapper) findChild(name2);
                 wrapper.removeMapping(decodedPattern);
-                mapper.removeWrapper(decodedPattern);
             }
             servletMappings.put(decodedPattern, name);
         }
         Wrapper wrapper = (Wrapper) findChild(name);
         wrapper.addMapping(decodedPattern);
 
-        // Update context mapper
-        mapper.addWrapper(decodedPattern, wrapper, jspWildCard,
-                resourceOnlyServlets.contains(name));
-
         fireContainerEvent("addServletMapping", decodedPattern);
-
     }
 
 
@@ -3280,7 +3258,6 @@ public class StandardContext extends Con
             watchedResources = results;
         }
         fireContainerEvent("addWatchedResource", name);
-
     }
 
 
@@ -4308,9 +4285,7 @@ public class StandardContext extends Con
         if( wrapper != null ) {
             wrapper.removeMapping(pattern);
         }
-        mapper.removeWrapper(pattern);
         fireContainerEvent("removeServletMapping", pattern);
-
     }
 
 
@@ -5260,9 +5235,6 @@ public class StandardContext extends Con
             getServletContext().setAttribute
                 (Globals.RESOURCES_ATTR, getResources());
 
-        // Initialize associated mapper
-        mapper.setContext(getPath(), welcomeFiles, getResources());
-
         // Binding thread
         oldCCL = bindThread();
 

Modified: tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java Tue Aug  7 
20:01:34 2012
@@ -14,9 +14,11 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-
 package org.apache.catalina.mapper;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
 
@@ -54,15 +56,17 @@ public final class Mapper {
      */
     protected String defaultHostName = null;
 
+
     /**
-     * Context associated with this wrapper, used for wrapper mapping.
+     * Mapping from Context object to Context version to support
+     * RequestDispatcher mappings.
      */
-    protected final ContextVersion context = new ContextVersion();
+    protected Map<Object, ContextVersion> contextObjectToContextVersionMap =
+            new ConcurrentHashMap<>();
 
 
     // --------------------------------------------------------- Public Methods
 
-
     /**
      * Set default host.
      *
@@ -172,20 +176,6 @@ public final class Mapper {
 
 
     /**
-     * Set context, used for wrapper mapping (request dispatcher).
-     *
-     * @param welcomeResources Welcome files defined for this context
-     * @param resources Static resources of the context
-     */
-    public void setContext(String path, String[] welcomeResources,
-                           javax.naming.Context resources) {
-        context.path = path;
-        context.welcomeResources = welcomeResources;
-        context.resources = resources;
-    }
-
-
-    /**
      * Add a new Context to an existing Host.
      *
      * @param hostName Virtual host name this context belongs to
@@ -243,6 +233,8 @@ public final class Mapper {
                 newContextVersion.resources = resources;
                 if (insertMap(contextVersions, newContextVersions, 
newContextVersion)) {
                     mappedContext.versions = newContextVersions;
+                    contextObjectToContextVersionMap.put(
+                            context, newContextVersion);
                 }
             }
         }
@@ -253,12 +245,16 @@ public final class Mapper {
     /**
      * Remove a context from an existing host.
      *
-     * @param hostName Virtual host name this context belongs to
-     * @param path Context path
-     * @param version Context version
+     * @param object    The actual context
+     * @param hostName  Virtual host name this context belongs to
+     * @param path      Context path
+     * @param version   Context version
      */
-    public void removeContextVersion(String hostName, String path,
-            String version) {
+    public void removeContextVersion(Object object, String hostName,
+            String path, String version) {
+
+        contextObjectToContextVersionMap.remove(object);
+
         Host[] hosts = this.hosts;
         int pos = find(hosts, hostName);
         if (pos < 0) {
@@ -340,12 +336,6 @@ public final class Mapper {
     }
 
 
-    public void addWrapper(String path, Object wrapper, boolean jspWildCard,
-            boolean resourceOnly) {
-        addWrapper(context, path, wrapper, jspWildCard, resourceOnly);
-    }
-
-
     /**
      * Adds a wrapper to the given context.
      *
@@ -412,16 +402,6 @@ public final class Mapper {
 
 
     /**
-     * Remove a wrapper from the context associated with this wrapper.
-     *
-     * @param path Wrapper mapping
-     */
-    public void removeWrapper(String path) {
-        removeWrapper(context, path);
-    }
-
-
-    /**
      * Remove a wrapper from an existing context.
      *
      * @param hostName Virtual host name this wrapper belongs to
@@ -688,13 +668,15 @@ public final class Mapper {
      * @param mappingData This structure will contain the result of the mapping
      *                    operation
      */
-    public void map(MessageBytes uri, MappingData mappingData)
-        throws Exception {
+    public void map(Object context, MessageBytes uri,
+            MappingData mappingData) throws Exception {
 
+        ContextVersion contextVersion =
+                contextObjectToContextVersionMap.get(context);
         uri.toChars();
         CharChunk uricc = uri.getCharChunk();
         uricc.setLimit(-1);
-        internalMapWrapper(context, uricc, mappingData);
+        internalMapWrapper(contextVersion, uricc, mappingData);
 
     }
 

Modified: tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java Tue Aug  7 
20:01:34 2012
@@ -389,7 +389,7 @@ public class MapperListener extends Life
                     contextPath, service));
         }
 
-        mapper.removeContextVersion(hostName, contextPath,
+        mapper.removeContextVersion(context, hostName, contextPath,
                 context.getWebappVersion());
     }
 

Modified: tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java Tue Aug  7 
20:01:34 2012
@@ -54,7 +54,6 @@ import org.apache.catalina.deploy.Filter
 import org.apache.catalina.deploy.LoginConfig;
 import org.apache.catalina.deploy.NamingResources;
 import org.apache.catalina.deploy.SecurityConstraint;
-import org.apache.catalina.mapper.Mapper;
 import org.apache.catalina.util.ContextName;
 import org.apache.catalina.util.LifecycleMBeanBase;
 import org.apache.juli.logging.Log;
@@ -388,9 +387,6 @@ public class FailedContext extends Lifec
     public void setLoginConfig(LoginConfig config) { /* NO-OP */ }
 
     @Override
-    public Mapper getMapper() { return null; }
-
-    @Override
     public NamingResources getNamingResources() { return null; }
     @Override
     public void setNamingResources(NamingResources namingResources) { /* NO-OP 
*/ }

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1370482&r1=1370481&r2=1370482&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Aug  7 20:01:34 2012
@@ -87,6 +87,11 @@
         This means there is now only ever one Mapper per Service rather than
         possibly multiple identically configured Mapper obejcts. (markt)
       </scode>
+      <scode>
+        Remove the per Context Mapper objects and use the Mapper from the
+        Service. This removes the need to maintain two copies of the mappings
+        for Servlets and Filters. (markt)
+      </scode>
     </changelog>
   </subsection>
   <subsection name="Coyote">



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to