You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by go...@hyperreal.org on 1999/11/01 03:42:32 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/core Constants.java Context.java RequestMapper.java

gonzo       99/10/31 18:42:30

  Modified:    src/share/org/apache/tomcat/core Tag: TOMCAT_J2EE_10F_102199
                        Constants.java Context.java RequestMapper.java
  Log:
  add "resolved servlet" attribute hook [javax.servlet.resolved] - j2ee
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.2.2.2   +7 -3      jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- Constants.java	1999/10/28 01:04:18	1.2.2.1
  +++ Constants.java	1999/11/01 02:42:18	1.2.2.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java,v 1.2.2.1 1999/10/28 01:04:18 gonzo Exp $
  - * $Revision: 1.2.2.1 $
  - * $Date: 1999/10/28 01:04:18 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java,v 1.2.2.2 1999/11/01 02:42:18 gonzo Exp $
  + * $Revision: 1.2.2.2 $
  + * $Date: 1999/11/01 02:42:18 $
    *
    * ====================================================================
    *
  @@ -171,6 +171,8 @@
       }
   
       public static class JSP {
  +        public static final String NAME = "jsp";
  +
           public static class Directive {
               public static class Compile {
                   public static final String Name = "jsp_precompile";
  @@ -196,6 +198,8 @@
               "javax.servlet.error.exception_type";
           public static final String ERROR_MESSAGE =
               "javax.servlet.error.message";
  +        public static final String RESOLVED_SERVLET =
  +            "javax.servlet.resolved";
       }
   
       public static class Locale {
  
  
  
  1.5.2.4   +10 -3     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.5.2.3
  retrieving revision 1.5.2.4
  diff -u -r1.5.2.3 -r1.5.2.4
  --- Context.java	1999/10/30 05:36:21	1.5.2.3
  +++ Context.java	1999/11/01 02:42:20	1.5.2.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v 1.5.2.3 1999/10/30 05:36:21 gonzo Exp $
  - * $Revision: 1.5.2.3 $
  - * $Date: 1999/10/30 05:36:21 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v 1.5.2.4 1999/11/01 02:42:20 gonzo Exp $
  + * $Revision: 1.5.2.4 $
  + * $Date: 1999/11/01 02:42:20 $
    *
    * ====================================================================
    *
  @@ -634,6 +634,13 @@
   	
   	request.setServletPath(result.getServletPath());
   	request.setPathInfo(result.getPathInfo());
  +
  +        if (result.getMappedPath() != null) {
  +            request.setAttribute(Constants.Attribute.RESOLVED_SERVLET,
  +                result.getMappedPath());
  +        } else {
  +            request.removeAttribute(Constants.Attribute.RESOLVED_SERVLET);
  +        }
   
   	result.getWrapper().handleRequest(request.getFacade(),
               response.getFacade());
  
  
  
  1.2.2.2   +79 -32    jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java
  
  Index: RequestMapper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java,v
  retrieving revision 1.2.2.1
  retrieving revision 1.2.2.2
  diff -u -r1.2.2.1 -r1.2.2.2
  --- RequestMapper.java	1999/10/22 02:20:14	1.2.2.1
  +++ RequestMapper.java	1999/11/01 02:42:23	1.2.2.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java,v 1.2.2.1 1999/10/22 02:20:14 gonzo Exp $
  - * $Revision: 1.2.2.1 $
  - * $Date: 1999/10/22 02:20:14 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java,v 1.2.2.2 1999/11/01 02:42:23 gonzo Exp $
  + * $Revision: 1.2.2.2 $
  + * $Date: 1999/11/01 02:42:23 $
    *
    * ====================================================================
    *
  @@ -80,6 +80,7 @@
       private String servletPath = null;
       private String mapPath = null;
       private String pathInfo = null;
  +    private String resourceName = null;
   
       RequestMapper() {
       }
  @@ -101,9 +102,11 @@
   	ServletWrapper wrapper = getMatch(path);
   
   	if (wrapper != null) {
  -	    lookupResult = new LookupResult(wrapper,
  -	        this.servletPath, this.mapPath, this.pathInfo);
  -	}
  +            this.mapPath = getMapPath(wrapper);
  +
  +            lookupResult = new LookupResult(wrapper,
  +                this.servletPath, this.mapPath, this.pathInfo);
  +        }
   
   	return lookupResult;
       }
  @@ -129,33 +132,8 @@
   
   	// lookup real servlet if what we're actually
   	// dealing with a jsp file
  -
  -	if (wrapper != null) {
  -	    String servletPath = this.servletPath;
  -	    String pathInfo = this.pathInfo;
  -	    boolean stillSearching = true;
  -	    int counter = 0;
  -
  -            while (stillSearching) {
  -                if (wrapper != null &&
  -                    wrapper.getPath() != null &&
  -		    wrapper.getServletClass() == null) {
  -		    wrapper = getMatch(wrapper.getPath() +
  -                        (pathInfo == null ? "" : pathInfo));
  -		    this.mapPath = this.servletPath;
  -
  -                    if (stillSearching &&
  -		        ++counter > Constants.RequestURIMatchRecursion) {
  -		        stillSearching = false;
  -		    }
  -		} else {
  -		  stillSearching = false;
  -		}
  -	    }
   
  -	    this.servletPath = servletPath;
  -	    this.pathInfo = pathInfo;
  -	}
  +        wrapper = getResolvedServlet(wrapper);
   
   	return wrapper;
       }
  @@ -247,5 +225,74 @@
   	}
   
   	return wrapper;
  +    }
  +
  +    private ServletWrapper getResolvedServlet(ServletWrapper wrapper) {
  +        if (wrapper != null) {
  +            String servletPath = this.servletPath;
  +            String pathInfo = this.pathInfo;
  +            boolean stillSearching = true;
  +            int counter = 0;
  +
  +            this.resourceName = this.servletPath;
  +
  +            while (stillSearching) {
  +                if (wrapper.getPath() != null &&
  +                    wrapper.getServletClass() == null) {
  +                        this.resourceName = wrapper.getPath();
  +                        wrapper = getMatch(wrapper.getPath() +
  +                            (pathInfo == null ? "" : pathInfo));
  +                        this.mapPath = this.servletPath;
  +
  +                        if (stillSearching &&
  +                            ++counter > Constants.RequestURIMatchRecursion) {
  +                            stillSearching = false;
  +                        }
  +                } else {
  +                    stillSearching = false;
  +                }
  +            }
  +
  +            this.servletPath = servletPath;
  +            this.pathInfo = pathInfo;
  +        }
  +
  +        return wrapper;
  +    }
  +
  +    private String getMapPath(ServletWrapper wrapper) {
  +        String mapPath = this.mapPath;
  +
  +        // XXX
  +        // this is added to make available the destination
  +        // resource be it a servlet or jsp file - could be
  +        // cleaned up a bit (wobbly)
  +        if (this.servletPath.equals(Constants.Servlet.Invoker.Map) &&
  +            this.pathInfo != null) {
  +            String s = this.pathInfo;
  +
  +            if (this.pathInfo.startsWith("/")) {
  +                s = this.pathInfo.substring(1);
  +            }
  +
  +            int i = s.indexOf("/");
  +
  +            if (i > -1) {
  +                s = s.substring(0, i);
  +            }
  +
  +            mapPath = "/" + s;
  +        } else if (mapPath == null &&
  +            this.resourceName != null) {
  +            // XXX
  +            // hack to differentiate amongst a mapped servlet and a jsp
  +            if (! wrapper.getServletName().equals(Constants.JSP.NAME)) {
  +                mapPath = "/" + wrapper.getServletClass();
  +            } else {
  +                mapPath = this.resourceName;
  +            }
  +        }
  +
  +        return mapPath;
       }
   }