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
TheFilter
interface is used by theFilterHandler
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 aFilter
to the input of the nextFilter
.The
init
andrespond
methods inherited from theHandler
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
All Methods Instance Methods Abstract Methods Modifier and Type Method Description byte[]
filter(Request request, MimeHeaders headers, byte[] content)
Filters the content generated by the wrappedHandler
.boolean
shouldFilter(Request request, MimeHeaders headers)
Gives thisFilter
the chance to examine the HTTP response headers from the wrappedHandler
, before the content has been retrieved.
-
-
-
Method Detail
-
shouldFilter
boolean shouldFilter(Request request, MimeHeaders headers)
Gives thisFilter
the chance to examine the HTTP response headers from the wrappedHandler
, before the content has been retrieved.If this
Filter
does want to examine and possibly rewrite the content, it should returntrue
; once the content is available, thefilter
method will be invoked. For instance, if thisFilter
is only interested in rewriting "text/html" pages, it should returnfalse
if the "Content-Type" is "image/jpeg". If all filters returnfalse
for theshouldFilter
method, theFilterHandler
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 wrappedHandler
.- 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 wrappedHandler
. 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 theFilterHandler
.- Parameters:
request
- The finished HTTP request.headers
- The MIME headers generated by theHandler
.content
- The output from theHandler
that thisFilter
may rewrite.- Returns:
- The rewritten content. The
Filter
may return the originalcontent
unchanged. TheFilter
may returnnull
to indicate that theFilterHandler
should stop processing the request and should not return any content to the client.
-
-