You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@locus.apache.org on 2000/01/08 16:09:27 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/request MapperInterceptor.java
costin 00/01/08 07:09:27
Modified: src/share/org/apache/tomcat/core Context.java
InvokerServlet.java RequestDispatcherImpl.java
ServletClassLoader.java ServletWrapper.java
src/share/org/apache/tomcat/request MapperInterceptor.java
Removed: src/share/org/apache/tomcat/core Container.java
Log:
Merged Container and Context, patched everything to work again.
Amazing, the tests are still passing.
Context will be cleaned and reorganized soon, using ContextInterceptors.
Revision Changes Path
1.16 +426 -29 jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java
Index: Context.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Context.java 2000/01/08 00:09:40 1.15
+++ Context.java 2000/01/08 15:09:26 1.16
@@ -90,7 +90,6 @@
private String description = null;
private boolean isDistributable = false;
private String engineHeader = null;
- private Container container = new Container(this);
private ClassLoader classLoader = null;
private String classPath = ""; // classpath used by the classloader.
//private Hashtable sessions = new Hashtable();
@@ -120,6 +119,18 @@
private Vector destroyInterceptors = new Vector();
private RequestSecurityProvider rsProvider =
DefaultRequestSecurityProvider.getInstance();
+
+ // from Container
+ private ServletClassLoader servletLoader;
+ private Hashtable servlets = new Hashtable();
+ private Hashtable prefixMappedServlets = new Hashtable();
+ private Hashtable extensionMappedServlets = new Hashtable();
+ private Hashtable pathMappedServlets = new Hashtable();
+ private ServletWrapper defaultServlet = null;
+ private URL servletBase = null;
+ private Vector classPaths = new Vector();
+ private Vector libPaths = new Vector();
+
public Context() {
}
@@ -252,7 +263,7 @@
public String getClassPath() {
String cp = this.classPath.trim();
String servletLoaderClassPath =
- this.container.getLoader().getClassPath();
+ this.getLoader().getClassPath();
if (servletLoaderClassPath != null &&
servletLoaderClassPath.trim().length() > 0) {
@@ -409,14 +420,14 @@
}
}
- this.container.setServletBase(servletBase);
+ this.setServletBase(servletBase);
for (int i = 0; i < Constants.Context.CLASS_PATHS.length; i++) {
- this.container.addClassPath(Constants.Context.CLASS_PATHS[i]);
+ this.addClassPath(Constants.Context.CLASS_PATHS[i]);
}
for (int i = 0; i < Constants.Context.LIB_PATHS.length; i++) {
- this.container.addLibPath(Constants.Context.LIB_PATHS[i]);
+ this.addLibPath(Constants.Context.LIB_PATHS[i]);
}
// process base configuration
@@ -476,9 +487,9 @@
// /servlet requests and explains why no servlet
// is being invoked
- this.container.addServlet(Constants.Servlet.NoInvoker.Name,
+ this.addServlet(Constants.Servlet.NoInvoker.Name,
Constants.Servlet.NoInvoker.Class);
- this.container.addMapping(Constants.Servlet.NoInvoker.Name,
+ this.addMapping(Constants.Servlet.NoInvoker.Name,
Constants.Servlet.NoInvoker.Map);
}
@@ -503,9 +514,15 @@
public void shutdown() {
// shut down container
+ Enumeration enum = servlets.keys();
- container.shutdown();
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+ ServletWrapper wrapper = (ServletWrapper)servlets.get(key);
+ servlets.remove(key);
+ wrapper.destroy();
+ }
// shut down any sessions
getSessionManager().removeSessions(this);
@@ -533,7 +550,7 @@
if (name.equals("org.apache.tomcat.jsp_classpath"))
return getClassPath();
else if(name.equals("org.apache.tomcat.classloader")) {
- return this.container.getLoader();
+ return this.getLoader();
}else {
Object o = attributes.get(name);
return attributes.get(name);
@@ -608,10 +625,6 @@
return (String)errorPages.get(errorCode);
}
- public Container getContainer() {
- return container;
- }
-
ServletContextFacade getFacade() {
return contextFacade;
}
@@ -720,17 +733,17 @@
resourceName =
((ServletDescriptor)webComponentDescriptor).getClassName();
- if (container.containsServletByName(name)) {
+ if (containsServletByName(name)) {
String msg = sm.getString("context.dd.dropServlet",
name + "(" + resourceName + ")" );
System.out.println(msg);
removeResource = true;
- container.removeServletByName(name);
+ removeServletByName(name);
}
- container.addServlet(name, resourceName, description);
+ addServlet(name, resourceName, description);
} else if (webComponentDescriptor instanceof JspDescriptor) {
resourceName =
((JspDescriptor)webComponentDescriptor).getJspFileName();
@@ -739,17 +752,17 @@
resourceName = "/" + resourceName;
}
- if (container.containsJSP(resourceName)) {
+ if (containsJSP(resourceName)) {
String msg = sm.getString("context.dd.dropServlet",
resourceName);
System.out.println(msg);
removeResource = true;
- container.removeJSP(resourceName);
+ removeJSP(resourceName);
}
- container.addJSP(name, resourceName, description);
+ addJSP(name, resourceName, description);
}
if (removeResource) {
@@ -765,7 +778,7 @@
while (e.hasMoreElements()) {
String servletName = (String)e.nextElement();
- if (container.containsServletByName(servletName)) {
+ if (containsServletByName(servletName)) {
buf.addElement(servletName);
}
}
@@ -798,9 +811,8 @@
initializationParameter.getValue());
}
- container.setServletInitParams(
- webComponentDescriptor.getCanonicalName(),
- initializationParameters);
+ setServletInitParams(webComponentDescriptor.getCanonicalName(),
+ initializationParameters);
enum = webComponentDescriptor.getUrlPatterns();
@@ -812,18 +824,18 @@
mapping = "/" + mapping;
}
- if (! container.containsServlet(mapping) &&
- ! container.containsJSP(mapping)) {
- if (container.containsMapping(mapping)) {
+ if (! containsServlet(mapping) &&
+ ! containsJSP(mapping)) {
+ if (containsMapping(mapping)) {
String msg = sm.getString("context.dd.dropMapping",
mapping);
System.out.println(msg);
- container.removeMapping(mapping);
+ removeMapping(mapping);
}
- container.addMapping(name, mapping);
+ addMapping(name, mapping);
} else {
String msg = sm.getString("context.dd.ignoreMapping",
mapping);
@@ -916,7 +928,7 @@
while (e.hasMoreElements()) {
String servletName = (String)e.nextElement();
- ServletWrapper result = container.getServletByName(servletName);
+ ServletWrapper result = getServletByName(servletName);
if(result==null)
System.out.println("Warning: we try to load an undefined servlet " + servletName);
@@ -933,4 +945,389 @@
}
}
}
+
+
+ // -------------------- From Container
+ ServletClassLoader getLoader() {
+ if(servletLoader == null) {
+ servletLoader = new ServletClassLoader(this);
+ }
+
+ return servletLoader;
+ }
+
+ public URL getServletBase() {
+ return this.servletBase;
+ }
+
+ public void setServletBase(URL servletBase) {
+ this.servletBase = servletBase;
+ }
+
+ public Enumeration getClassPaths() {
+ return this.classPaths.elements();
+ }
+
+ public void addClassPath(String path) {
+ this.classPaths.addElement(path);
+ }
+
+ public Enumeration getLibPaths() {
+ return this.libPaths.elements();
+ }
+
+ public void addLibPath(String path) {
+ this.libPaths.addElement(path);
+ }
+
+ /**
+ * Add a servlet with the given name to the container. The
+ * servlet will be loaded by the container's class loader
+ * and instantiated using the given class name.
+ */
+
+ public void addServlet(String name, String className) {
+ addServlet(name, null, className, null);
+ }
+
+ public void addServlet(String name, String className,
+ String description) {
+ addServlet(name, description, className, null);
+ }
+
+ public void addServlet(String name, Class clazz) {
+ addServlet(name, null, null, clazz);
+ }
+
+ public void addServlet(String name, Class clazz,
+ String description) {
+ addServlet(name, description, null, clazz);
+ }
+
+ public void addJSP(String name, String path) {
+ addJSP(name, null, path);
+ }
+
+ public void addJSP(String name, String path, String description) {
+ // XXX
+ // check for duplicates!
+
+ ServletWrapper wrapper = new ServletWrapper(this);
+
+ wrapper.setServletName(name);
+ wrapper.setServletDescription(description);
+ wrapper.setPath(path);
+
+ servlets.put(name, wrapper);
+ }
+
+ /** True if we have a servlet with className.
+ */
+ boolean containsServlet(String className) {
+ ServletWrapper[] sw = getServlets(className);
+
+ return (sw != null &&
+ sw.length > 0);
+ }
+
+ /** Check if we have a servlet with the specified name
+ */
+ boolean containsServletByName(String name) {
+ return (servlets.containsKey(name));
+ }
+
+ /** Remove all servlets with a specific class name
+ */
+ void removeServlet(String className) {
+ removeServlets(getServlets(className));
+ }
+
+ /** Remove the servlet with a specific name
+ */
+ void removeServletByName(String servletName) {
+ ServletWrapper wrapper=(ServletWrapper)servlets.get(servletName);
+ if( wrapper != null ) {
+ removeServlet( wrapper );
+ }
+ }
+
+ boolean containsJSP(String path) {
+ ServletWrapper[] sw = getServletsByPath(path);
+
+ return (sw != null &&
+ sw.length > 0);
+ }
+
+ void removeJSP(String path) {
+ Enumeration enum = servlets.keys();
+
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+ ServletWrapper sw = (ServletWrapper)servlets.get(key);
+
+ if (sw.getPath() != null &&
+ sw.getPath().equals(path)) {
+ removeServlet( sw );
+ }
+ }
+ }
+
+ public void setServletInitParams(String name, Hashtable initParams) {
+ ServletWrapper wrapper = (ServletWrapper)servlets.get(name);
+
+ if (wrapper != null) {
+ wrapper.setInitArgs(initParams);
+ }
+ }
+
+ /**
+ * Maps a named servlet to a particular path or extension.
+ * If the named servlet is unregistered, it will be added
+ * and subsequently mapped.
+ *
+ * Note that the order of resolution to handle a request is:
+ *
+ * exact mapped servlet (eg /catalog)
+ * prefix mapped servlets (eg /foo/bar/*)
+ * extension mapped servlets (eg *jsp)
+ * default servlet
+ *
+ */
+
+ public void addMapping(String servletName, String path) {
+ ServletWrapper sw = (ServletWrapper)servlets.get(servletName);
+
+ if (sw == null) {
+ // XXX
+ // this might be a bit aggressive
+
+ if (! servletName.startsWith("/")) {
+ addServlet(servletName, null, servletName, null);
+ } else {
+ addJSP(servletName, servletName);
+ }
+
+ sw = (ServletWrapper)servlets.get(servletName);
+ }
+
+ path = path.trim();
+
+ if (sw != null &&
+ (path.length() > 0)) {
+ if (path.startsWith("/") &&
+ path.endsWith("/*")){
+ prefixMappedServlets.put(path, sw);
+ } else if (path.startsWith("*.")) {
+ extensionMappedServlets.put(path, sw);
+ } else if (! path.equals("/")) {
+ pathMappedServlets.put(path, sw);
+ } else {
+ defaultServlet = sw;
+ }
+ }
+ }
+
+ public ServletWrapper getDefaultServlet() {
+ return defaultServlet;
+ }
+
+ public Hashtable getPathMap() {
+ return pathMappedServlets;
+ }
+
+ public Hashtable getPrefixMap() {
+ return prefixMappedServlets;
+ }
+
+ public Hashtable getExtensionMap() {
+ return extensionMappedServlets;
+ }
+
+ boolean containsMapping(String mapping) {
+ mapping = mapping.trim();
+
+ return (prefixMappedServlets.containsKey(mapping) ||
+ extensionMappedServlets.containsKey(mapping) ||
+ pathMappedServlets.containsKey(mapping));
+ }
+
+ void removeMapping(String mapping) {
+ mapping = mapping.trim();
+
+ prefixMappedServlets.remove(mapping);
+ extensionMappedServlets.remove(mapping);
+ pathMappedServlets.remove(mapping);
+ }
+
+ Request lookupServletByName(String servletName) {
+ Request lookupResult = null;
+
+ ServletWrapper wrapper = (ServletWrapper)servlets.get(servletName);
+
+ if (wrapper != null) {
+ lookupResult = new Request();
+ lookupResult.setWrapper( wrapper );
+ lookupResult.setPathInfo("");
+ }
+
+ return lookupResult;
+ }
+
+ public ServletWrapper getServletByName(String servletName) {
+ return (ServletWrapper)servlets.get(servletName);
+ }
+
+ ServletWrapper getServletAndLoadByName(String servletName) {
+ // XXX
+ // make sure that we aren't tramping over ourselves!
+ ServletWrapper wrapper = new ServletWrapper(this);
+
+ wrapper.setServletClass(servletName);
+
+ servlets.put(servletName, wrapper);
+
+ return wrapper;
+ }
+
+ ServletWrapper loadServlet(String servletClassName) {
+ // XXX
+ // check for duplicates!
+
+ // XXX
+ // maybe dispatch to addServlet?
+
+ ServletWrapper wrapper = new ServletWrapper(this);
+
+ wrapper.setServletClass(servletClassName);
+
+ servlets.put(servletClassName, wrapper);
+
+ return wrapper;
+ }
+
+ private void addServlet(String name, String description,
+ String className, Class clazz) {
+ // XXX
+ // check for duplicates!
+
+ if (servlets.get(name) != null) {
+ removeServlet(name);
+ removeServletByName(name);
+ }
+
+ ServletWrapper wrapper = new ServletWrapper(this);
+
+ wrapper.setServletName(name);
+ wrapper.setServletDescription(description);
+
+ if (className != null) {
+ wrapper.setServletClass(className);
+ }
+
+ if (clazz != null) {
+ wrapper.setServletClass(clazz);
+ }
+
+ servlets.put(name, wrapper);
+ }
+
+ private void removeServlet(ServletWrapper sw) {
+ if (prefixMappedServlets.contains(sw)) {
+ Enumeration enum = prefixMappedServlets.keys();
+
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+
+ if (prefixMappedServlets.get(key).equals(sw)) {
+ prefixMappedServlets.remove(key);
+ }
+ }
+ }
+
+ if (extensionMappedServlets.contains(sw)) {
+ Enumeration enum = extensionMappedServlets.keys();
+
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+
+ if (extensionMappedServlets.get(key).equals(sw)) {
+ extensionMappedServlets.remove(key);
+ }
+ }
+ }
+
+ if (pathMappedServlets.contains(sw)) {
+ Enumeration enum = pathMappedServlets.keys();
+
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+
+ if (pathMappedServlets.get(key).equals(sw)) {
+ pathMappedServlets.remove(key);
+ }
+ }
+ }
+
+ servlets.remove(sw.getServletName());
+ }
+
+ private void removeServlets(ServletWrapper[] sw) {
+ if (sw != null) {
+ for (int i = 0; i < sw.length; i++) {
+ removeServlet( sw[i] );
+ }
+ }
+ }
+
+ /** Return servlets with a specified class name
+ */
+ private ServletWrapper[] getServlets(String name) {
+ Vector servletWrappers = new Vector();
+ Enumeration enum = servlets.keys();
+
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+ ServletWrapper sw = (ServletWrapper)servlets.get(key);
+
+
+ if (sw.getServletClass() != null &&
+ sw.getServletClass().equals(name)) {
+ servletWrappers.addElement(sw);
+ }
+ }
+
+ ServletWrapper[] wrappers =
+ new ServletWrapper[servletWrappers.size()];
+
+ servletWrappers.copyInto((ServletWrapper[])wrappers);
+
+ return wrappers;
+ }
+
+ // XXX
+ // made package protected so that RequestMapper can have access
+
+ public ServletWrapper[] getServletsByPath(String path) {
+ Vector servletWrappers = new Vector();
+ Enumeration enum = servlets.keys();
+
+ while (enum.hasMoreElements()) {
+ String key = (String)enum.nextElement();
+ ServletWrapper sw = (ServletWrapper)servlets.get(key);
+
+ if (sw.getPath() != null &&
+ sw.getPath().equals(path)) {
+ servletWrappers.addElement(sw);
+ }
+ }
+
+ ServletWrapper[] wrappers =
+ new ServletWrapper[servletWrappers.size()];
+
+ servletWrappers.copyInto((ServletWrapper[])wrappers);
+
+ return wrappers;
+ }
+
+
}
1.4 +5 -7 jakarta-tomcat/src/share/org/apache/tomcat/core/InvokerServlet.java
Index: InvokerServlet.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/InvokerServlet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- InvokerServlet.java 1999/11/06 00:19:52 1.3
+++ InvokerServlet.java 2000/01/08 15:09:26 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/InvokerServlet.java,v 1.3 1999/11/06 00:19:52 costin Exp $
- * $Revision: 1.3 $
- * $Date: 1999/11/06 00:19:52 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/InvokerServlet.java,v 1.4 2000/01/08 15:09:26 costin Exp $
+ * $Revision: 1.4 $
+ * $Date: 2000/01/08 15:09:26 $
*
* ====================================================================
*
@@ -87,13 +87,11 @@
private StringManager sm =
StringManager.getManager(Constants.Package);
private Context context;
- private Container container;
public void init() throws ServletException {
ServletContextFacade facade =
(ServletContextFacade)getServletContext();
context = facade.getRealContext();
- container = context.getContainer();
}
public void service(HttpServletRequest request,
@@ -181,12 +179,12 @@
// try the easy one -- lookup by name
- ServletWrapper wrapper = container.getServletByName(servletName);
+ ServletWrapper wrapper = context.getServletByName(servletName);
if (wrapper == null) {
// try the more forceful approach
- wrapper = container.getServletAndLoadByName(servletName);
+ wrapper = context.getServletAndLoadByName(servletName);
}
if (wrapper == null) {
1.6 +1 -1 jakarta-tomcat/src/share/org/apache/tomcat/core/RequestDispatcherImpl.java
Index: RequestDispatcherImpl.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestDispatcherImpl.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- RequestDispatcherImpl.java 2000/01/07 19:14:11 1.5
+++ RequestDispatcherImpl.java 2000/01/08 15:09:26 1.6
@@ -231,7 +231,7 @@
void setName(String name) {
this.name = name;
this.lookupResult =
- context.getContainer().lookupServletByName(this.name);
+ context.lookupServletByName(this.name);
}
void setPath(String urlPath) {
1.4 +11 -11 jakarta-tomcat/src/share/org/apache/tomcat/core/ServletClassLoader.java
Index: ServletClassLoader.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ServletClassLoader.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ServletClassLoader.java 1999/12/05 17:02:37 1.3
+++ ServletClassLoader.java 2000/01/08 15:09:26 1.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ServletClassLoader.java,v 1.3 1999/12/05 17:02:37 harishp Exp $
- * $Revision: 1.3 $
- * $Date: 1999/12/05 17:02:37 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ServletClassLoader.java,v 1.4 2000/01/08 15:09:26 costin Exp $
+ * $Revision: 1.4 $
+ * $Date: 2000/01/08 15:09:26 $
*
* ====================================================================
*
@@ -83,16 +83,16 @@
// Please talk to harishp@eng.sun.com before making any changes.
//
class ServletClassLoader extends NetworkClassLoader {
- private Container container;
+ private Context context;
- ServletClassLoader(Container container) {
- super(container.getContext().getClassLoader());
- this.container = container;
+ ServletClassLoader(Context context) {
+ super(context.getClassLoader());
+ this.context = context;
initURLs();
}
private void initURLs() {
- URL baseURL = container.getServletBase();
+ URL baseURL = context.getServletBase();
String protocol = baseURL.getProtocol();
int port = baseURL.getPort();
String hostname = baseURL.getHost();
@@ -100,7 +100,7 @@
String basepath = baseURL.getFile();
// The classes directory...
- for(Enumeration e = container.getClassPaths();
+ for(Enumeration e = context.getClassPaths();
e.hasMoreElements(); ) {
String cpath = (String) e.nextElement();
try {
@@ -116,7 +116,7 @@
// An alternate way of figuring out the jar files should
// be specified in the spec. Probably in the deployment
// descriptor's web.xml ???
- for(Enumeration e = container.getLibPaths();
+ for(Enumeration e = context.getLibPaths();
e.hasMoreElements(); ) {
String libpath = (String) e.nextElement();
File f = new File(basepath + libpath + "/");
@@ -146,7 +146,7 @@
throws ClassNotFoundException {
// This is a bad idea. Unfortunately the class loader may
// be set on the context at any point.
- setParent(container.getContext().getClassLoader());
+ setParent(context.getClassLoader());
return super.loadClass(name, resolve);
}
1.7 +13 -15 jakarta-tomcat/src/share/org/apache/tomcat/core/ServletWrapper.java
Index: ServletWrapper.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ServletWrapper.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ServletWrapper.java 2000/01/07 19:14:12 1.6
+++ ServletWrapper.java 2000/01/08 15:09:26 1.7
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ServletWrapper.java,v 1.6 2000/01/07 19:14:12 costin Exp $
- * $Revision: 1.6 $
- * $Date: 2000/01/07 19:14:12 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ServletWrapper.java,v 1.7 2000/01/08 15:09:26 costin Exp $
+ * $Revision: 1.7 $
+ * $Date: 2000/01/08 15:09:26 $
*
* ====================================================================
*
@@ -87,7 +87,7 @@
private StringManager sm =
StringManager.getManager(Constants.Package);
- private Container container;
+ private Context context;
private String description = null;
private String servletClassName;
private Class servletClass;
@@ -100,10 +100,10 @@
private long classFileLastMod = 0;
private int serviceCount = 0;
- ServletWrapper(Container container) {
- this.container = container;
+ ServletWrapper(Context context) {
+ this.context = context;
- config = new ServletConfigImpl(container.getContext());
+ config = new ServletConfigImpl(context);
}
void setReloadable(boolean reloadable) {
@@ -181,7 +181,6 @@
try {
final Servlet sinstance = servlet;
- Context context = getContext();
handleInvocation(
context.getDestroyInterceptors().elements(),
@@ -228,11 +227,11 @@
Constants.JSP.Directive.Compile.Name + "=" +
Constants.JSP.Directive.Compile.Value;
- reqA.setRequestURI(getContext().getPath() + path);
+ reqA.setRequestURI(context.getPath() + path);
reqA.setQueryString( Constants.JSP.Directive.Compile.Name + "=" +
Constants.JSP.Directive.Compile.Value );
- request.setContext(getContext());
+ request.setContext(context);
request.updatePaths();
request.getSession(true);
@@ -252,7 +251,7 @@
throw new IllegalStateException(msg);
}
- servletClass = container.getLoader().loadServlet(this,
+ servletClass = context.getLoader().loadServlet(this,
servletClassName);
}
@@ -261,7 +260,7 @@
// String msg = sm.getString("wrapper.load.noclassname");
// throw new IllegalStateException(msg);
// }
- //Class c = container.getLoader().loadServlet(this,
+ //Class c = context.getLoader().loadServlet(this,
//servletClassName);
servlet = (Servlet)servletClass.newInstance();
@@ -271,7 +270,6 @@
try {
final Servlet sinstance = servlet;
final ServletConfigImpl servletConfig = config;
- Context context = getContext();
handleInvocation(context.getInitInterceptors().elements(),
new LifecycleInvocationHandler(context, servlet) {
@@ -286,7 +284,7 @@
}
private Context getContext() {
- return this.container.getContext();
+ return context;
}
void handleRequest(final HttpServletRequestFacade request,
@@ -295,7 +293,7 @@
// if (isReloadable) {
// long lm = servletClassFile.lastModified();
// if (lm > classFileLastMod) {
-// //container.recycle();
+// //context.recycle();
// }
// }
// make sure that only one thread goes through
1.2 +20 -20 jakarta-tomcat/src/share/org/apache/tomcat/request/MapperInterceptor.java
Index: MapperInterceptor.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/request/MapperInterceptor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MapperInterceptor.java 2000/01/07 19:14:15 1.1
+++ MapperInterceptor.java 2000/01/08 15:09:27 1.2
@@ -84,16 +84,16 @@
// no configuration
public int handleRequest(Request req) {
- Container container=req.getContext().getContainer();
+ Context context=req.getContext();
String path=req.getLookupPath();
ServletWrapper wrapper = null;
- wrapper = getMatch(container, path, req);
+ wrapper = getMatch(context, path, req);
if (wrapper == null) {
- wrapper = container.getDefaultServlet();
+ wrapper = context.getDefaultServlet();
if (wrapper == null) {
- wrapper = container.getServletByName(Constants.Servlet.Default.Name);
+ wrapper = context.getServletByName(Constants.Servlet.Default.Name);
}
String servletPath = Constants.Servlet.Default.Map;
@@ -104,7 +104,7 @@
req.setPathInfo( pathInfo );
} else {
getMapPath(wrapper, req);
- String resolvedServlet = getResolvedServlet(container, req.getMappedPath());
+ String resolvedServlet = getResolvedServlet(context, req.getMappedPath());
req.setWrapper( wrapper );
req.setResolvedServlet( resolvedServlet );
@@ -123,36 +123,36 @@
return OK;
}
- private ServletWrapper getMatch(Container container, String path, Request req) {
+ private ServletWrapper getMatch(Context context, String path, Request req) {
ServletWrapper wrapper = null;
// try an exact match
- wrapper = getPathMatch(container, path, req);
+ wrapper = getPathMatch(context, path, req);
// try a prefix match
if (wrapper == null) {
- wrapper = getPrefixMatch(container, path, req);
+ wrapper = getPrefixMatch(context, path, req);
}
// try an extension match
if (wrapper == null) {
- wrapper = getExtensionMatch(container, path, req);
+ wrapper = getExtensionMatch(context, path, req);
}
// lookup real servlet if what we're actually
// dealing with a jsp file
- wrapper = getServletForJsp(container, wrapper, req);
+ wrapper = getServletForJsp(context, wrapper, req);
return wrapper;
}
- private ServletWrapper getPathMatch(Container container, String path, Request req) {
+ private ServletWrapper getPathMatch(Context context, String path, Request req) {
ServletWrapper wrapper = null;
- wrapper = (ServletWrapper)container.getPathMap().get(path);
+ wrapper = (ServletWrapper)context.getPathMap().get(path);
if (wrapper != null) {
req.setServletPath( path );
@@ -162,14 +162,14 @@
return wrapper;
}
- private ServletWrapper getPrefixMatch(Container container, String path, Request req) {
+ private ServletWrapper getPrefixMatch(Context context, String path, Request req) {
ServletWrapper wrapper = null;
String s = path;
while (s.length() > 0) {
String suffix = (s.endsWith("/")) ? "*" : "/*";
- wrapper = (ServletWrapper)container.getPrefixMap().get(s + suffix);
+ wrapper = (ServletWrapper)context.getPrefixMap().get(s + suffix);
if (wrapper != null) {
if (s.endsWith("/")) {
@@ -204,7 +204,7 @@
return wrapper;
}
- private ServletWrapper getExtensionMatch(Container container, String path, Request req) {
+ private ServletWrapper getExtensionMatch(Context context, String path, Request req) {
ServletWrapper wrapper = null;
int i = path.lastIndexOf(".");
int j = path.lastIndexOf("/");
@@ -219,7 +219,7 @@
extension = extension.substring(0, k);
}
- wrapper = (ServletWrapper)container.getExtensionMap().get(
+ wrapper = (ServletWrapper)context.getExtensionMap().get(
"*" + extension);
if (wrapper != null) {
@@ -240,7 +240,7 @@
}
// XXX XXX XXX eliminate recursivity (costin )
- private ServletWrapper getServletForJsp(Container container, ServletWrapper wrapper, Request req) {
+ private ServletWrapper getServletForJsp(Context context, ServletWrapper wrapper, Request req) {
if (wrapper != null) {
String servletPath = req.getServletPath();
String pathInfo = req.getPathInfo();
@@ -255,7 +255,7 @@
wrapper.getPath() != null &&
wrapper.getServletClass() == null) {
req.setResourceName( wrapper.getPath() );
- wrapper = getMatch(container,
+ wrapper = getMatch(context,
wrapper.getPath() + (pathInfo == null ? "" : pathInfo),
req);
req.setMappedPath( req.getServletPath() );
@@ -306,9 +306,9 @@
req.setMappedPath( mapPath );
}
- private String getResolvedServlet(Container container, String path) {
+ private String getResolvedServlet(Context context, String path) {
String resolvedServlet = null;
- ServletWrapper[] sw = container.getServletsByPath(path);
+ ServletWrapper[] sw = context.getServletsByPath(path);
if (sw.length > 0) {
// assume one