tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Cyrille Le Clerc <clecl...@apache.org>
Subject Re: Proposal : port mod_expires in java as ExpiresFilter Servlet Filter
Date Fri, 16 Apr 2010 08:12:44 GMT
   Hello Christopher,

   I imagine the project crew has been very busy these days. Do you
have feedbacks on the adaptations and explanations I did ? Is there
anything I could iterate on ?

   To rephrase my previous email :

* I reduced the number of comparison against 'nulls' as you suggested.
I did this introducing a method
'isEligibleToExpirationHeaderGeneration(request)' with several
intermediate 'return' statements ; I found it easier to code than to
use nested if/else statements.

* The reason why I introduced the complexity of trapping the
'onStartWriteResponseBody' event is that I tried my best to implement
in ExpiresFilter the same behavior as in Apache Httpd mod_expires.

   Cyrille

On Mon, Mar 29, 2010 at 8:32 PM, Cyrille Le Clerc <cleclerc@apache.org> wrote:
>
> Thanks for your fast feedbacks Christopher,
>
> I updated the patch proposed on Bugzilla 48998 to include your advice
> to limit the number of null checks. The implementation I found is
> slightly different than your proposal but the idea remain the same.
> Please note that I only modified the patch and not yet
> ExpiresFilter.java on the google-code project as my priority is the
> Tomcat proposal.
>
> Regarding the simplification of generating expiration headers just
> after 'response.setContentType()' is called rather than after the
> first write in the response body, I didn't follow this way because
> applications could add/set 'Cache-Control' and/or 'Expires' header
> after invoking  'response.setContentType()'.
>
> My understanding is that the filter must work after
> 'setContentType()', 'set/addHeader("Cache-Control", ...)' and
> 'set/addHeader("Expires", ...)' have been called but we don't know
> which ones will be called and in which order they will be called.
> This is the reason why I unfortunately added the complexity to trap
> the 'onStartWriteResponseBody' event.
>
> Cyrille
>
> On Mon, Mar 29, 2010 at 3:20 PM, Christopher Schultz
> <chris@christopherschultz.net> wrote:
> >
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Cyrille,
> >
> > On 3/26/2010 12:43 PM, Cyrille Le Clerc wrote:
> > > I have proposed with bugzilla 48998 a port of Apache mod_expires in
> > > Java as ExpiresFilter Servlet Filter.
> >
> > Cool.
> >
> > > I detailed a standalone version of this filter on
> > > http://code.google.com/p/xebia-france/wiki/ExpiresFilter . Moreover, I
> > > tried my best to provide very detailed javadocs and docs (in filter.html).
> > >
> > > The proposed contribution is slightly different than the standalone
> > > one because it uses Tomcat logging, few Servlet 3 enhancements and
> > > Tomcat engine in the test cases.
> >
> > I read-through your code on code.google.com and I can see a couple areas
> > where I think improvements might be made:
> >
> > - - In getExpirationDate, you check for the local 'configuration' being
> > null several times in a row. In each case, the configuration may be set
> > given a different 'level' of configuration. If the configuration gets
> > set, several checks must still be made to see if it is null. You could
> > mail out early and avoid some of these checks like this:
> >
> > if(configuration == null) {
> >  configuration = ...;
> >
> >  if(configuration == null) {
> >    // try another strategy
> >    configuration = ...;
> >
> >    if(configuration == null) {
> >       ...
> >    }
> >  }
> > }
> >
> > I think can save a bit of CPU time without much in the way of code
> > complexity.
> >
> > - - You might be able to wrap the Response class and check for the setting
> > of the Content-Type header, instead of wrapping the response in order to
> > intercept the first buffer flush to the client. Do you think that would
> > work? It certainly would remove a lot of complexity from your code.
> >
> > - -chris
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.10 (MingW32)
> > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> >
> > iEYEARECAAYFAkuwqQwACgkQ9CaO5/Lv0PDdwgCgrSHwmgUTDWybmk6/G1+AqNzY
> > kCQAn0zVrQBARihaoQkfBJRtKYkjvsjs
> > =kBWG
> > -----END PGP SIGNATURE-----
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: users-help@tomcat.apache.org
> >

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message