package org.jooby.issues; import static org.junit.Assert.assertNotEquals; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import org.jooby.Deferred; import org.jooby.test.ServerFeature; import org.junit.Test; import com.google.inject.Key; import com.google.inject.name.Names; public class Issue488c extends ServerFeature { { executor("ste"); use((env, conf, binder) -> { binder.bind(Key.get(Executor.class, Names.named("ste"))) .toInstance(Executors.newSingleThreadExecutor()); }); get("/488", req -> { return new Deferred(deferred -> { deferred.resolve(deferred.callerThread() + ":" + Thread.currentThread().getName()); }); }); get("/488/promise", promise((req, deferred) -> { deferred.resolve(deferred.callerThread() + ":" + Thread.currentThread().getName()); })); } @Test public void deferredWithExecutorReference() throws Exception { request() .get("/488") .expect(rsp -> { String[] threads = rsp.split(":"); assertNotEquals(threads[0], threads[1]); }); request() .get("/488/promise") .expect(rsp -> { String[] threads = rsp.split(":"); assertNotEquals(threads[0], threads[1]); }); } }