You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2001/01/23 03:53:04 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves AccessLogValve.java CertificatesValve.java RemoteAddrValve.java RemoteHostValve.java RequestDumperValve.java RequestFilterValve.java ValveBase.java

craigmcc    01/01/22 18:53:04

  Modified:    catalina/src/share/org/apache/catalina/authenticator
                        AuthenticatorBase.java SingleSignOn.java
               catalina/src/share/org/apache/catalina/valves
                        AccessLogValve.java CertificatesValve.java
                        RemoteAddrValve.java RemoteHostValve.java
                        RequestDumperValve.java RequestFilterValve.java
                        ValveBase.java
  Log:
  Fourth of four commits for the Valves API changes.
  
  Update all existing Valve implementations to reflect the new API changes.
  
  Revision  Changes    Path
  1.7       +20 -17    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/AuthenticatorBase.java
  
  Index: AuthenticatorBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/AuthenticatorBase.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AuthenticatorBase.java	2000/12/16 01:42:46	1.6
  +++ AuthenticatorBase.java	2001/01/23 02:53:02	1.7
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/AuthenticatorBase.java,v 1.6 2000/12/16 01:42:46 craigmcc Exp $
  - * $Revision: 1.6 $
  - * $Date: 2000/12/16 01:42:46 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/AuthenticatorBase.java,v 1.7 2001/01/23 02:53:02 craigmcc Exp $
  + * $Revision: 1.7 $
  + * $Date: 2001/01/23 02:53:02 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -92,6 +92,7 @@
   import org.apache.catalina.Response;
   import org.apache.catalina.Session;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.deploy.LoginConfig;
   import org.apache.catalina.deploy.SecurityConstraint;
   import org.apache.catalina.util.LifecycleSupport;
  @@ -116,7 +117,7 @@
    * requests.  Requests of any other type will simply be passed through.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.6 $ $Date: 2000/12/16 01:42:46 $
  + * @version $Revision: 1.7 $ $Date: 2001/01/23 02:53:02 $
    */
   
   
  @@ -393,22 +394,25 @@
        *
        * @param request Request to be processed
        * @param response Response to be processed
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if thrown by a processing element
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
   	throws IOException, ServletException {
   
   	// If this is not an HTTP request, do nothing
   	if (!(request instanceof HttpRequest) ||
               !(response instanceof HttpResponse)) {
  -	    invokeNext(request, response);
  +	    context.invokeNext(request, response);
   	    return;
   	}
   	if (!(request.getRequest() instanceof HttpServletRequest) ||
   	    !(response.getResponse() instanceof HttpServletResponse)) {
  -	    invokeNext(request, response);
  +	    context.invokeNext(request, response);
   	    return;
   	}
   	HttpRequest hrequest = (HttpRequest) request;
  @@ -417,7 +421,7 @@
   	    log("Security checking request " +
   		((HttpServletRequest) request.getRequest()).getMethod() + " " +
   		((HttpServletRequest) request.getRequest()).getRequestURI());
  -	LoginConfig config = context.getLoginConfig();
  +	LoginConfig config = this.context.getLoginConfig();
   
           // Have we got a cached authenticated Principal to record?
           if (cache) {
  @@ -443,7 +447,7 @@
   	// Special handling for form-based logins to deal with the case
   	// where the login form (and therefore the "j_security_check" URI
   	// to which it submits) might be outside the secured area
  -	String contextPath = context.getPath();
  +	String contextPath = this.context.getPath();
   	String requestURI =
   	    ((HttpServletRequest) request.getRequest()).getRequestURI();
   	if (requestURI.startsWith(contextPath) &&
  @@ -461,7 +465,7 @@
   	    (!Constants.FORM_METHOD.equals(config.getAuthMethod())) */ ) {
   	    if (debug >= 1)
   	        log(" Not subject to any constraint");
  -	    invokeNext(request, response);
  +	    context.invokeNext(request, response);
   	    return;
   	}
   	if ((debug >= 1) && (constraint != null))
  @@ -498,7 +502,7 @@
   	// Any and all specified constraints have been satisfied
   	if (debug >= 1)
   	    log(" Successfully passed all security constraints");
  -	invokeNext(request, response);
  +	context.invokeNext(request, response);
   
       }
   
  @@ -952,13 +956,12 @@
                   parent = parent.getParent();
                   continue;
               }
  -            Valve valve = ((Pipeline) parent).findValves();
  -            while ((sso == null) && (valve != null)) {
  -                if (valve instanceof SingleSignOn) {
  -                    sso = (SingleSignOn) valve;
  +            Valve valves[] = ((Pipeline) parent).getValves();
  +            for (int i = 0; i < valves.length; i++) {
  +                if (valves[i] instanceof SingleSignOn) {
  +                    sso = (SingleSignOn) valves[i];
                       break;
                   }
  -                valve = valve.getNext();
               }
               if (sso == null)
                   parent = parent.getParent();
  
  
  
  1.4       +14 -10    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java
  
  Index: SingleSignOn.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SingleSignOn.java	2000/12/17 01:05:39	1.3
  +++ SingleSignOn.java	2001/01/23 02:53:03	1.4
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java,v 1.3 2000/12/17 01:05:39 craigmcc Exp $
  - * $Revision: 1.3 $
  - * $Date: 2000/12/17 01:05:39 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java,v 1.4 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.4 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -77,6 +77,7 @@
   import org.apache.catalina.Logger;
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.valves.ValveBase;
   import org.apache.catalina.util.StringManager;
   
  @@ -99,7 +100,7 @@
    * </ul>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.3 $ $Date: 2000/12/17 01:05:39 $
  + * @version $Revision: 1.4 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public class SingleSignOn
  @@ -179,17 +180,20 @@
        *
        * @param request The servlet request we are processing
        * @param response The servlet response we are creating
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
           throws IOException, ServletException {
   
           // If this is not an HTTP request and response, just pass them on
           if (!(request instanceof HttpRequest) ||
               !(response instanceof HttpResponse)) {
  -            invokeNext(request, response);
  +            context.invokeNext(request, response);
               return;
           }
   
  @@ -202,7 +206,7 @@
               if (debug >= 1)
                   log(" Principal '" + hreq.getUserPrincipal().getName() +
                       "' has already been authenticated");
  -            invokeNext(request, response);
  +            context.invokeNext(request, response);
               return;
           }
   
  @@ -222,7 +226,7 @@
           if (cookie == null) {
               if (debug >= 1)
                   log(" SSO cookie is not present");
  -            invokeNext(request, response);
  +            context.invokeNext(request, response);
               return;
           }
   
  @@ -243,7 +247,7 @@
           }
   
           // Invoke the next Valve in our pipeline
  -        invokeNext(request, response);
  +        context.invokeNext(request, response);
   
       }
   
  
  
  
  1.4       +17 -13    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/AccessLogValve.java
  
  Index: AccessLogValve.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/AccessLogValve.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AccessLogValve.java	2001/01/11 03:51:53	1.3
  +++ AccessLogValve.java	2001/01/23 02:53:03	1.4
  @@ -3,7 +3,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -80,20 +80,21 @@
   import org.apache.catalina.LifecycleListener;
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.util.LifecycleSupport;
   import org.apache.catalina.util.StringManager;
   
   
   /**
  - * Implementation of the <b>Valve</b> interface that generates a web server
  + * <p>Implementation of the <b>Valve</b> interface that generates a web server
    * access log with the detailed line contents matching a configurable pattern.
    * The syntax of the available patterns is similar to that supported by the
    * Apache <code>mod_log_config</code> module.  As an additional feature,
  - * automatic rollover of log files when the date changes is also supported.
  - * <p>
  - * Patterns for the logged message may include constant text or any of the
  + * automatic rollover of log files when the date changes is also supported.</p>
  + *
  + * <p>Patterns for the logged message may include constant text or any of the
    * following replacement strings, for which the corresponding information
  - * from the specified Response is substituted:
  + * from the specified Response is substituted:</p>
    * <ul>
    * <li><b>%a</b> - Remote IP address
    * <li><b>%A</b> - Local IP address
  @@ -114,18 +115,18 @@
    * <li><b>%U</b> - Requested URL path
    * <li><b>%v</b> - Local server name
    * </ul>
  - * In addition, the caller can specify one of the following aliases for
  - * commonly utilized patterns:
  + * <p>In addition, the caller can specify one of the following aliases for
  + * commonly utilized patterns:</p>
    * <ul>
    * <li><b>common</b> - <code>%h %l %u %t "%r" %s %b</code>
    * </ul>
    *
  - * <b>FIXME</b> - Improve the parsing so that things like <code>%{xxx}i</code>
  - * can be implemented.
  + * <p><b>FIXME</b> - Improve the parsing so that things like
  + * <code>%{xxx}i</code> can be implemented.</p>
    *
    * @author Craig R. McClanahan
    * @author Jason Brittain
  - * @version $Revision: 1.3 $ $Date: 2001/01/11 03:51:53 $
  + * @version $Revision: 1.4 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public final class AccessLogValve
  @@ -403,15 +404,18 @@
        *
        * @param request Request being processed
        * @param response Response being processed
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error has occurred
        * @exception ServletException if a servlet error has occurred
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
   	throws IOException, ServletException {
   
   	// Pass this request on to the next valve in our pipeline
  -	invokeNext(request, response);
  +	context.invokeNext(request, response);
   
           Date date = getDate();
           StringBuffer result = new StringBuffer();
  
  
  
  1.6       +15 -11    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/CertificatesValve.java
  
  Index: CertificatesValve.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/CertificatesValve.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CertificatesValve.java	2000/10/31 23:53:29	1.5
  +++ CertificatesValve.java	2001/01/23 02:53:03	1.6
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/CertificatesValve.java,v 1.5 2000/10/31 23:53:29 craigmcc Exp $
  - * $Revision: 1.5 $
  - * $Date: 2000/10/31 23:53:29 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/CertificatesValve.java,v 1.6 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.6 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -83,6 +83,7 @@
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.connector.RequestWrapper;
   import org.apache.catalina.deploy.LoginConfig;
   import org.apache.catalina.util.LifecycleSupport;
  @@ -90,8 +91,8 @@
   
   
   /**
  - * Implementation of a Valve that deals with SSL client certificates, as
  - * follows:
  + * <p>Implementation of a Valve that deals with SSL client certificates, as
  + * follows:</p>
    * <ul>
    * <li>If this request was not received on an SSL socket, simply pass it
    *     on unmodified.</li>
  @@ -107,11 +108,11 @@
    *         as request attributes.</li>
    * </ul>
    *
  - * The above tasks have been combined into a single Valve to minimize the
  - * amount of code that has to check for the existence of JSSE classes.
  + * <p>The above tasks have been combined into a single Valve to minimize the
  + * amount of code that has to check for the existence of JSSE classes.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.5 $ $Date: 2000/10/31 23:53:29 $
  + * @version $Revision: 1.6 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public final class CertificatesValve
  @@ -217,11 +218,14 @@
        *
        * @param request The servlet request to be processed
        * @param response The servlet response to be created
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
   	throws IOException, ServletException {
   
           // Identify the underlying request if this request was wrapped
  @@ -239,7 +243,7 @@
           expose(request, actual);
   
           // Invoke the next Valve in our Pipeline
  -        invokeNext(request, response);
  +        context.invokeNext(request, response);
   
       }
   
  
  
  
  1.2       +10 -6     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteAddrValve.java
  
  Index: RemoteAddrValve.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteAddrValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RemoteAddrValve.java	2000/08/11 17:03:15	1.1
  +++ RemoteAddrValve.java	2001/01/23 02:53:03	1.2
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteAddrValve.java,v 1.1 2000/08/11 17:03:15 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/11 17:03:15 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteAddrValve.java,v 1.2 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -69,6 +69,7 @@
   import javax.servlet.ServletException;
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
  +import org.apache.catalina.ValveContext;
   
   
   /**
  @@ -76,7 +77,7 @@
    * based on the string representation of the remote client's IP address.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2000/08/11 17:03:15 $
  + * @version $Revision: 1.2 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public final class RemoteAddrValve
  @@ -117,15 +118,18 @@
        *
        * @param request The servlet request to be processed
        * @param response The servlet response to be created
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
   	throws IOException, ServletException {
   
   	process(request.getRequest().getRemoteAddr(),
  -		request, response);
  +		request, response, context);
   
       }
   
  
  
  
  1.2       +11 -7     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteHostValve.java
  
  Index: RemoteHostValve.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteHostValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RemoteHostValve.java	2000/08/11 17:03:15	1.1
  +++ RemoteHostValve.java	2001/01/23 02:53:03	1.2
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteHostValve.java,v 1.1 2000/08/11 17:03:15 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/11 17:03:15 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RemoteHostValve.java,v 1.2 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -69,6 +69,7 @@
   import javax.servlet.ServletException;
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
  +import org.apache.catalina.ValveContext;
   
   
   /**
  @@ -76,7 +77,7 @@
    * based on the string representation of the remote client's IP address.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2000/08/11 17:03:15 $
  + * @version $Revision: 1.2 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public final class RemoteHostValve
  @@ -90,7 +91,7 @@
        * The descriptive information related to this implementation.
        */
       private static final String info =
  -	"org.apache.catalina.valves.RemoteAddrValve/1.0";
  +	"org.apache.catalina.valves.RemoteHostValve/1.0";
   
   
       // ------------------------------------------------------------- Properties
  @@ -117,15 +118,18 @@
        *
        * @param request The servlet request to be processed
        * @param response The servlet response to be created
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
   	throws IOException, ServletException {
   
   	process(request.getRequest().getRemoteHost(),
  -		request, response);
  +		request, response, context);
   
       }
   
  
  
  
  1.2       +16 -12    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestDumperValve.java
  
  Index: RequestDumperValve.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestDumperValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RequestDumperValve.java	2000/12/17 01:02:44	1.1
  +++ RequestDumperValve.java	2001/01/23 02:53:03	1.2
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestDumperValve.java,v 1.1 2000/12/17 01:02:44 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/12/17 01:02:44 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestDumperValve.java,v 1.2 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -82,21 +82,22 @@
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.connector.HttpResponseWrapper;
   import org.apache.catalina.util.StringManager;
   
   
   /**
  - * Implementation of a Valve that logs interesting contents from the
  + * <p>Implementation of a Valve that logs interesting contents from the
    * specified Request (before processing) and the corresponding Response
    * (after processing).  It is especially useful in debugging problems
  - * related to headers and cookies.
  - * <p>
  - * This Valve may be attached to any Container, depending on the granularity
  - * of the logging you wish to perform.
  + * related to headers and cookies.</p>
    *
  + * <p>This Valve may be attached to any Container, depending on the granularity
  + * of the logging you wish to perform.</p>
  + *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2000/12/17 01:02:44 $
  + * @version $Revision: 1.2 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public class RequestDumperValve
  @@ -142,17 +143,20 @@
        *
        * @param request The servlet request to be processed
        * @param response The servlet response to be created
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public void invoke(Request request, Response response)
  +    public void invoke(Request request, Response response,
  +                       ValveContext context)
   	throws IOException, ServletException {
   
           // Skip logging for non-HTTP requests and responses
           if (!(request instanceof HttpRequest) ||
               !(response instanceof HttpResponse)) {
  -            invokeNext(request, response);
  +            context.invokeNext(request, response);
               return;
           }
           HttpRequest hrequest = (HttpRequest) request;
  @@ -212,7 +216,7 @@
           log("---------------------------------------------------------------");
   
           // Perform the request
  -        invokeNext(request, response);
  +        context.invokeNext(request, response);
   
           // Log post-service information
           log("---------------------------------------------------------------");
  
  
  
  1.2       +16 -16    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestFilterValve.java
  
  Index: RequestFilterValve.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestFilterValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RequestFilterValve.java	2000/08/11 17:03:15	1.1
  +++ RequestFilterValve.java	2001/01/23 02:53:03	1.2
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestFilterValve.java,v 1.1 2000/08/11 17:03:15 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/11 17:03:15 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/RequestFilterValve.java,v 1.2 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -77,6 +77,7 @@
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.util.StringManager;
   
   
  @@ -111,7 +112,7 @@
    * of the filtering you wish to perform.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2000/08/11 17:03:15 $
  + * @version $Revision: 1.2 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public abstract class RequestFilterValve
  @@ -233,11 +234,14 @@
        *
        * @param request The servlet request to be processed
        * @param response The servlet response to be created
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public abstract void invoke(Request request, Response response)
  +    public abstract void invoke(Request request, Response response,
  +                                ValveContext context)
   	throws IOException, ServletException;
   
   
  @@ -291,20 +295,17 @@
        * @param property The request property on which to filter
        * @param request The servlet request to be processed
        * @param response The servlet response to be processed
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
       protected void process(String property,
  -			   Request request, Response response)
  +			   Request request, Response response,
  +                           ValveContext context)
   	throws IOException, ServletException {
   
  -	// Validate our current state
  -	Valve next = getNext();
  -	if (next == null)
  -	    throw new IllegalStateException
  -		(sm.getString("requestFilterValve.next"));
  -
   	// Check the deny patterns, if any
   	for (int i = 0; i < denies.length; i++) {
   	    if (denies[i].match(property)) {
  @@ -320,17 +321,16 @@
   	// Check the allow patterns, if any
   	for (int i = 0; i < allows.length; i++) {
   	    if (allows[i].match(property)) {
  -		next.invoke(request, response);
  +		context.invokeNext(request, response);
   		return;
   	    }
   	}
   
   	// Allow if denies specified but not allows
   	if ((denies.length > 0) && (allows.length == 0)) {
  -	    next.invoke(request, response);
  +	    context.invokeNext(request, response);
   	    return;
   	}
  -
   
   	// Deny this request
   	ServletResponse sres = response.getResponse();
  
  
  
  1.2       +12 -87    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ValveBase.java
  
  Index: ValveBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ValveBase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ValveBase.java	2000/08/11 17:03:15	1.1
  +++ ValveBase.java	2001/01/23 02:53:03	1.2
  @@ -1,13 +1,13 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ValveBase.java,v 1.1 2000/08/11 17:03:15 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/11 17:03:15 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ValveBase.java,v 1.2 2001/01/23 02:53:03 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/01/23 02:53:03 $
    *
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  + * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights 
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -67,10 +67,12 @@
   
   import java.io.IOException;
   import javax.servlet.ServletException;
  +import org.apache.catalina.Contained;
   import org.apache.catalina.Container;
   import org.apache.catalina.Request;
   import org.apache.catalina.Response;
   import org.apache.catalina.Valve;
  +import org.apache.catalina.ValveContext;
   import org.apache.catalina.util.StringManager;
   
   
  @@ -82,11 +84,11 @@
    * management and lifecycle support.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2000/08/11 17:03:15 $
  + * @version $Revision: 1.2 $ $Date: 2001/01/23 02:53:03 $
    */
   
   public abstract class ValveBase
  -    implements Valve {
  +    implements Contained, Valve {
   
   
       //------------------------------------------------------ Instance Variables
  @@ -107,18 +109,6 @@
   
   
       /**
  -     * The next Valve in the pipeline this Valve is a component of.
  -     */
  -    protected Valve next = null;
  -
  -
  -    /**
  -     * The previous Valve in the pipeline this Valve is a component of.
  -     */
  -    protected Valve previous = null;
  -
  -
  -    /**
        * The string manager for this package.
        */
       protected final static StringManager sm =
  @@ -160,52 +150,6 @@
       }
   
   
  -    /**
  -     * Return the next Valve in this pipeline, or <code>null</code> if this
  -     * is the last Valve in the pipeline.
  -     */
  -    public Valve getNext() {
  -
  -	return (next);
  -
  -    }
  -
  -
  -    /**
  -     * Set the Valve that follows this one in the pipeline it is part of.
  -     *
  -     * @param valve The new next valve
  -     */
  -    public void setNext(Valve valve) {
  -
  -	this.next = valve;
  -
  -    }
  -
  -
  -    /**
  -     * Return the previous Valve in this pipeline, or <code>null</code> if
  -     * this is the first Valve in the pipeline.
  -     */
  -    public Valve getPrevious() {
  -
  -	return (previous);
  -
  -    }
  -
  -
  -    /**
  -     * Set the Valve that preceeds this one in the pipeline it is part of.
  -     *
  -     * @param valve The previous valve
  -     */
  -    public void setPrevious(Valve valve) {
  -
  -	this.previous = valve;
  -
  -    }
  -
  -
       //---------------------------------------------------------- Public Methods
   
   
  @@ -217,34 +161,15 @@
        *
        * @param request The servlet request to be processed
        * @param response The servlet response to be created
  +     * @param context The valve context used to invoke the next valve
  +     *  in the current processing pipeline
        *
        * @exception IOException if an input/output error occurs
        * @exception ServletException if a servlet error occurs
        */
  -    public abstract void invoke(Request request, Response response)
  +    public abstract void invoke(Request request, Response response,
  +                                ValveContext context)
   	throws IOException, ServletException;
  -
  -
  -    /**
  -     * Invoke the next Valve in our pipeline, or complain if there is no such
  -     * Valve remaining.
  -     *
  -     * @param request The servlet request to be processed
  -     * @param response The servlet response to be created
  -     *
  -     * @exception IOException if an input/output error occurs
  -     * @exception ServletException if a servlet error occurs
  -     */
  -    public void invokeNext(Request request, Response response)
  -	throws IOException, ServletException {
  -
  -	if (getNext() != null)
  -	    getNext().invoke(request, response);
  -	else
  -	    throw new IllegalStateException
  -		(sm.getString("valveBase.noNext"));
  -
  -    }
   
   
   }