package org.aksw.jena_sparql_api.web.utils;
import javax.ws.rs.container.AsyncResponse;
/**
* A simple wrapper for a runnable that cancels the response should the
* provided delegate fail
*
* @author raven
*
*/
public class RunnableAsyncResponseSafe
implements Runnable {
private AsyncResponse asyncResponse;
private Runnable delegate;
public RunnableAsyncResponseSafe(AsyncResponse asyncResponse, Runnable delegate) {
this.asyncResponse = asyncResponse;
this.delegate = delegate;
}
@Override
public void run() {
try {
delegate.run();
} catch(Exception e) {
asyncResponse.cancel();
throw new RuntimeException(e);
}
}
}