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