Wednesday, March 11, 2009

Filter Pattern

package com.filter;

import java.util.Iterator;
import java.util.Vector;

public class FilterChain {
// filter chain
private Vector myFilters = new Vector();

// Creates new FilterChain
public FilterChain() {
// plug-in default filter services for example
// only. This would typically be done in the
// FilterManager, but is done here for example
// purposes
addFilter(new DebugFilter());
addFilter(new LoginFilter());
addFilter(new AuditFilter());
}

public void processFilter(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException,
java.io.IOException {
Filter filter;

// apply filters
Iterator filters = myFilters.iterator();
while (filters.hasNext())
{
filter = (Filter)filters.next();
// pass request & response through various
// filters
filter.execute(request, response);
}
}

public void addFilter(Filter filter) {
myFilters.add(filter);
}
}

===============================================================
/*
* Created on Oct 13, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.filter;


/**
* @author tzg136
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class FilterManager {
public void processFilter(Filter target,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException,
java.io.IOException {
FilterChain filterChain = new FilterChain();

// The filter manager builds the filter chain here
// if necessary

// Pipe request through Filter Chain
filterChain.processFilter(request, response);

//process target resource
target.execute(request, response);

}
}

No comments: