package com.revolsys.swing.parallel; import java.util.concurrent.Callable; import com.revolsys.parallel.AbstractRunnable; import com.revolsys.util.Exceptions; /** * <p>A {@link Runnable} wrapper for a {@link Callable}. The result of the {@link Callable} can * be obtained using the {@link #getResult()} method.</p> * * <p>NOTE: This class is designed to be used for a single invocation only.</p> * * @param <T> The type of the result. */ public class RunnableCallable<T> extends AbstractRunnable { /** The callable to invoke. */ private final Callable<T> callable; /** The result value returned by the callable. */ private T result; public RunnableCallable(final Callable<T> callable) { this.callable = callable; } /** * Get the result value returned by the callable. * * @return The result value returned by the callable. */ public T getResult() { return this.result; } @Override public void runDo() { try { this.result = this.callable.call(); } catch (final Exception e) { Exceptions.throwUncheckedException(e); } } }