|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.sitemesh.webapp.contentfilter.ContentBufferingFilter
public abstract class ContentBufferingFilter
Abstract Filter implementation that writes the main content
of a response to a temporary buffer where it can then be post-processed
before being served.
Subclasses should:
Selector to the constructor: Which provides rules for
selecting which requests this filter should be applied to.
For a basic implementation, use BasicSelector.postProcess(String, CharBuffer, HttpServletRequest, HttpServletResponse, ResponseMetaData):
Perform the actual post processing of the content that was buffered.This primitive example creates a Filter that will intercept responses with a MIME type of text/plain, and replace all occurrences of the word 'sheep' with 'cheese'. Yes, it's pointless, but should illustrate usage.
public class SheepToCheeseFilter extends ContentBufferingFilter {
public SheepToCheeseFilter() {
super(new BasicSelector("text/plain"));
}
public boolean postProcess(String contentType, CharBuffer buffer,
HttpServletRequest request, HttpServletResponse response) {
String text = buffer.toString();
if (!text.contains("sheep")) {
// If no modification is required, returning false will signal
// ContentBufferingFilter to write the original buffer back out.
return false;
}
text = text.replaceAll("sheep", "cheese");
response.getWriter().print(text);
return true;
}
}
| Constructor Summary | |
|---|---|
protected |
ContentBufferingFilter(Selector selector)
|
| Method Summary | |
|---|---|
protected void |
bufferAndPostProcess(javax.servlet.FilterChain filterChain,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Selector selector)
Apply next filter/servlet to the buffer, post process the response and send to the real response. |
void |
destroy()
|
void |
doFilter(javax.servlet.ServletRequest servletRequest,
javax.servlet.ServletResponse servletResponse,
javax.servlet.FilterChain filterChain)
|
protected ContainerTweaks |
getContainerTweaks()
|
protected javax.servlet.FilterConfig |
getFilterConfig()
|
void |
init(javax.servlet.FilterConfig filterConfig)
|
protected ContainerTweaks |
initContainerTweaks()
|
protected abstract boolean |
postProcess(String contentType,
CharBuffer buffer,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
ResponseMetaData responseMetaData)
|
protected javax.servlet.http.HttpServletRequest |
wrapRequest(javax.servlet.http.HttpServletRequest request)
Override to wrap the HttpServletRequest sent to the end point to be buffered. |
protected void |
writeOriginal(javax.servlet.http.HttpServletResponse response,
CharBuffer buffer,
HttpServletResponseBuffer responseBuffer)
Write out the original unmodified buffer. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected ContentBufferingFilter(Selector selector)
| Method Detail |
|---|
protected abstract boolean postProcess(String contentType,
CharBuffer buffer,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
ResponseMetaData responseMetaData)
throws IOException,
javax.servlet.ServletException
IOException
javax.servlet.ServletException
public void init(javax.servlet.FilterConfig filterConfig)
throws javax.servlet.ServletException
init in interface javax.servlet.Filterjavax.servlet.ServletExceptionpublic void destroy()
destroy in interface javax.servlet.Filterprotected ContainerTweaks initContainerTweaks()
protected javax.servlet.FilterConfig getFilterConfig()
protected ContainerTweaks getContainerTweaks()
public void doFilter(javax.servlet.ServletRequest servletRequest,
javax.servlet.ServletResponse servletResponse,
javax.servlet.FilterChain filterChain)
throws IOException,
javax.servlet.ServletException
doFilter in interface javax.servlet.FilterIOException
javax.servlet.ServletException
protected void bufferAndPostProcess(javax.servlet.FilterChain filterChain,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Selector selector)
throws IOException,
javax.servlet.ServletException
IOException
javax.servlet.ServletException
protected void writeOriginal(javax.servlet.http.HttpServletResponse response,
CharBuffer buffer,
HttpServletResponseBuffer responseBuffer)
throws IOException
IOExceptionprotected javax.servlet.http.HttpServletRequest wrapRequest(javax.servlet.http.HttpServletRequest request)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||