package com.framsticks.util.dispatching; import com.framsticks.util.FramsticksException; public class DispatchingFuture extends FutureHandler { protected final Dispatcher dispatcher; protected final FutureHandler future; /** * @param dispatcher * @param future */ public DispatchingFuture(Dispatcher dispatcher, FutureHandler future) { this.dispatcher = dispatcher; this.future = future; } @Override public void handle(final FramsticksException exception) { Dispatching.dispatchIfNotActive(dispatcher, new RunAt(ThrowExceptionHandler.getInstance()) { @Override protected void runAt() { future.handle(exception); } }); } @Override protected void result(final T result) { Dispatching.dispatchIfNotActive(dispatcher, new RunAt(future) { @Override protected void runAt() { future.pass(result); } }); } public static FutureHandler create(Dispatcher dispatcher, FutureHandler future) { return new DispatchingFuture(dispatcher, future); } }