Interface Filter

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

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.
Version:
2.2
Author:
Stephen Uhler (stephen.uhler@sun.com), Colin Stevens (colin.stevens@sun.com)
  • Method Summary

    Modifier and Type
    Method
    Description
    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 Details

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