luehe       2004/04/07 14:34:12

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardContext.java
  Log:
  When the webapp specific JspServlet inherits the mappings from the
  global JspServlet, we need to wipe out the wrapper corresponding to
  the global JspServlet from the mapper (by calling
  StandardContext.addServletMapping() instead of
  StandardWrapper.addMapping())
  
  Revision  Changes    Path
  1.125     +20 -14    
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- StandardContext.java      7 Apr 2004 02:27:47 -0000       1.124
  +++ StandardContext.java      7 Apr 2004 21:34:12 -0000       1.125
  @@ -1731,26 +1731,22 @@
        */
       public void addChild(Container child) {
   
  +        // Global JspServlet
  +        Wrapper oldJspServlet = null;
  +
           if (!(child instanceof Wrapper)) {
               throw new IllegalArgumentException
                   (sm.getString("standardContext.notWrapper"));
           }
   
           Wrapper wrapper = (Wrapper) child;
  +        boolean isJspServlet = "jsp".equals(child.getName());
   
  -        /*
  -         * Allow webapp to override JspServlet inherited from global web.xml.
  -         * The webapp-specific JspServlet inherits all the mappings specified
  -         * in the global web.xml, and may add additional ones.
  -         */
  -        if ("jsp".equals(wrapper.getName())) {
  -            Wrapper jspServlet = (Wrapper) findChild("jsp");
  -            if (jspServlet != null) {
  -                String[] jspMappings = jspServlet.findMappings();
  -                for (int i=0; jspMappings!=null && i<jspMappings.length; i++) {
  -                    wrapper.addMapping(jspMappings[i]);
  -                }
  -                removeChild(jspServlet);
  +        // Allow webapp to override JspServlet inherited from global web.xml.
  +        if (isJspServlet) {
  +            oldJspServlet = (Wrapper) findChild("jsp");
  +            if (oldJspServlet != null) {
  +                removeChild(oldJspServlet);
               }
           }
   
  @@ -1768,6 +1764,16 @@
   
           super.addChild(child);
   
  +        if (isJspServlet && oldJspServlet != null) {
  +            /*
  +             * The webapp-specific JspServlet inherits all the mappings
  +             * specified in the global web.xml, and may add additional ones.
  +             */
  +            String[] jspMappings = oldJspServlet.findMappings();
  +            for (int i=0; jspMappings!=null && i<jspMappings.length; i++) {
  +                addServletMapping(jspMappings[i], child.getName());
  +            }
  +        }
       }
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to