sunlabs.brazil.filter

Interface Filter

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
is called when the server starts, to obtain run-time configuration information.
Handler
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.

Version: 2.2

Author: Stephen Uhler (stephen.uhler@sun.com) Colin Stevens (colin.stevens@sun.com)

Method Summary
byte[]filter(Request request, MimeHeaders headers, byte[] content)
Filters the content generated by the wrapped Handler.
booleanshouldFilter(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.

Method Detail

filter

public 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.

shouldFilter

public 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.