sunlabs.brazil.filter
Interface Filter

All Superinterfaces:
Handler
All Known Implementing Classes:
CookieFilter, CopyContentFilter, EmailTemplate, ExecFilter, HighlightFilter, HistoryFilter, MD5Filter, PhoneFilter, PlainFilter, ReFilter, ReplaceFilter, SessionFilter, TclFilter, TemplateFilter, UrlMapFilter, UrlSessionFilter, VelocityFilter

public interface Filter
extends Handler

The Filter interface is used by the FilterHandler to examine and dynamically rewrite the contents of web pages obtained from some source before returning that page to the client.

A chain of filters can be established in the manner of a pipeline. The FilterHandler sends the output of a Filter to the input of the next Filter.

The init and respond methods inherited from the Handler interface are called as for ordinary handlers:

Handler.init(sunlabs.brazil.server.Server, java.lang.String)
is called when the server starts, to obtain run-time configuration information.
Handler.respond(sunlabs.brazil.server.Request)
is called when the request comes in, before the request is sent to the wrapped handler. This method returns true to indicate that the request has been completely handled by this Filter, and no further processing filtering takes place.


Method Summary
 byte[] filter(Request request, MimeHeaders headers, byte[] content)
          Filters the content generated by the wrapped Handler.
 boolean shouldFilter(Request request, MimeHeaders headers)
          Gives this Filter the chance to examine the HTTP response headers from the wrapped Handler, before the content has been retrieved.
 
Methods inherited from interface sunlabs.brazil.server.Handler
init, respond
 

Method Detail

shouldFilter

boolean shouldFilter(Request request,
                     MimeHeaders headers)
Gives this Filter the chance to examine the HTTP response headers from the wrapped Handler, before the content has been retrieved.

If this Filter does want to examine and possibly rewrite the content, it should return true; once the content is available, the filter method will be invoked. For instance, if this Filter is only interested in rewriting "text/html" pages, it should return false if the "Content-Type" is "image/jpeg". If all filters return false for the shouldFilter method, the FilterHandler can switch to a more effient mechanism of delivering content to the client.

The MIME headers may also be modified by this Filter, for instance, to change the "Content-Type" of a web page. The "Content-Length" will automatically be computed.

Parameters:
request - The in-progress HTTP request.
headers - The MIME headers generated by the wrapped Handler.
Returns:
true if this filter would like to examine and possibly rewrite the content, false otherwise.

filter

byte[] filter(Request request,
              MimeHeaders headers,
              byte[] content)
Filters the content generated by the wrapped Handler. The content may be arbitrarily rewritten by this method.

The MIME headers may also be modified by this Filter, for instance, to change the "Content-Type" of a web page. The "Content-Length" will automatically be computed by the FilterHandler.

Parameters:
request - The finished HTTP request.
headers - The MIME headers generated by the Handler.
content - The output from the Handler that this Filter may rewrite.
Returns:
The rewritten content. The Filter may return the original content unchanged. The Filter may return null to indicate that the FilterHandler should stop processing the request and should not return any content to the client.

Version Kenai-svn-r24, Generated 08/18/09
Copyright (c) 2001-2009, Sun Microsystems.