package org.jboss.weld.environment.servlet.test.context.async;
import javax.servlet.AsyncContext;
import org.jboss.weld.test.util.Timer;
/**
* @author Martin Kouba
*/
public class AsyncRequestProcessor implements Runnable {
private final AsyncContext actx;
private final long timerValue;
private final String dispatchPath;
private final boolean useDispatch;
public AsyncRequestProcessor(AsyncContext ctx, long timerValue, boolean useDispatch, String dispatchPath) {
super();
this.actx = ctx;
this.timerValue = timerValue;
this.dispatchPath = dispatchPath;
this.useDispatch = useDispatch;
}
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
try {
if (timerValue > 0) {
// Simulate long running operation
Timer.startNew(timerValue);
}
} catch (InterruptedException e) {
throw new IllegalStateException("Interrupted");
}
// Dispatch or complete
if (useDispatch) {
if (dispatchPath != null) {
actx.dispatch(dispatchPath);
} else {
actx.dispatch();
}
} else {
actx.complete();
}
}
}