DelegatingSessionProcessor.java from Tea Stats at Krugle
Show DelegatingSessionProcessor.java syntax highlighted
package net.time4tea.webstats.process;
import net.time4tea.webstats.session.Session;
import net.time4tea.webstats.util.Bug;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
/**
* Originally richja 14-Jan-2007
*/
public class DelegatingSessionProcessor implements Processor<Session> {
List<Processor<Session>> visitors = new ArrayList<Processor<Session>>();
private Logger log = Logger.getLogger(DelegatingSessionProcessor.class);
public DelegatingSessionProcessor() {
}
public DelegatingSessionProcessor(List<Processor<Session>> visitors) {
this.visitors = visitors;
}
public void then(Processor<Session> processor) {
visitors.add(processor);
}
public boolean process(Session session) {
try {
boolean shouldContinue = true;
for (Processor<Session> sessionProcessor : visitors) {
shouldContinue &= sessionProcessor.process(session);
if (!shouldContinue) {
log.debug("Early exit from " + sessionProcessor + " for " + session);
return true;
}
}
return true;
}
catch (Exception e) {
throw new Bug("Unexpected exception", e);
}
}
}
See more files for this project here