tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Remy Maucherat <r...@betaversion.org>
Subject Re: [PROPOSAL] Tomcat 4.0-beta API Change: Valve APIs
Date Fri, 19 Jan 2001 21:23:58 GMT
Quoting "Craig R. McClanahan" <Craig.McClanahan@eng.sun.com>:

> THE PROPOSED DESIGN PATTERN:
> 
> This is an adaptation of the pattern that Peter Donald proposed
> yesterday, to be
> slightly more aligned with the Filter API:
> 
>     public interface Valve {    <-- similar to javax.servlet.Filter
>         public Container getContainer();    <-- Many valves need this
>         public void setContainer(Container container);
>         public void invoke(Request request, Response response,
>             Pipeline pipeline) throws IOException, ServletException
>     }
> 
> and the typical usage pattern in invoke() would be
> 
>     ... preprocess the request ...
>     pipeline.invoke(request, response);
>     ... postprocess the response ...
> 
> where the pipeline would manage the details of where the current request
> is in
> the set of Valves to be processed, handles the "falling off the end"
> problem,
> and so on.
> 
> IMPACT OF CHANGE:
> 
> The following changes would be required inside the Tomcat 4.0 source
> repository
> (I would be willing to undertake this, if the proposal is approved,
> unless some
> other committer would like to volunteer instead):
> 
> * Rewrite the existing Pipeline and Valve interfaces
> 
> * Create standard Pipeline implementation class(es) that
>   can be used by all containers, including support for pooling
>   if that approach is selected.
> 
> * Modify all existing Container and Valve implementations to
>   utilize the new APIs.  In most cases, these changes would
>   be simplifications in the common ContainerBase and ValveBase
>   classes, although each individual Valve would need to have
>   its invoke() method signature and the way it invokes the next
>   Valve in the pipline updated to the new APIs
> 
> * Release of a second beta that incorporates this change, to allow
>   regression testing and make sure nothing got broken along the way.
> 
> * After completion, forward port to the 4.1 repository to maintain
>   compatibility.
> 
> 
> RECOMMENDATION:
> 
> I recommend that we do this change, and do it in 4.0 (rather than
> waiting for
> 4.1).  The revised design pattern is cleaner and easier for Valve
> implementors,
> and doing this in 4.0 would avoid an incompatible API change between 4.0
> and
> 4.1.
> 
> What do you think?

+1.
Forget about my other email : this one clarified everything.

Remy

Mime
View raw message