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: [email protected]
For additional commands, e-mail: [email protected]