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