package com.mozilla.grouperfish.batch.handlers;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mozilla.grouperfish.model.Fail;
import com.mozilla.grouperfish.model.Task;
/**
* Composite handler.
*
* Applies all sub-handlers synchronously, in order.
* Can be helpful to simplify things for development/testing
* (compared to pipelining).
*/
public class SequentialHandler implements TaskHandler {
private static final Logger log = LoggerFactory.getLogger(SequentialHandler.class);
private final TaskHandler[] handlers;
public SequentialHandler(final TaskHandler... handlers) {
this.handlers = handlers;
}
@Override
public Task handle(Task task) throws Fail {
for (final TaskHandler handler : handlers) {
log.debug("Task {}: starting handler: {}", task, handler.getClass().getSimpleName());
task = handler.handle(task);
}
return task;
}
}