/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package jobs.vipr;
import java.util.concurrent.Callable;
import play.jobs.JobsPlugin;
import play.libs.F.Promise;
/**
* Helper class for calling a Callable and returning a Promise.
*/
public class CallableHelper {
public static <T> Promise<T> createPromise(final Callable<T> callable) {
final Promise<T> promise = new Promise<T>();
JobsPlugin.executor.submit(new Callable<T>() {
public T call() throws Exception {
try {
T result = callable.call();
promise.invoke(result);
return result;
}
catch (Exception t) {
promise.invokeWithException(t);
return null;
}
}
});
return promise;
}
}