package org.jooby; import java.util.concurrent.Executors; import org.jooby.test.ServerFeature; import org.junit.Test; public class HelloAsyncFeature extends ServerFeature { { executor(Executors.newSingleThreadExecutor()); Object ierr = new Object(); renderer((value, ctx) -> { if (value == ierr) { throw new IllegalStateException("/intentional err"); } }); get("/hi", deferred(() -> "hi")); get("/err/init", deferred(() -> { throw new Err(Status.SERVER_ERROR); })); get("/err/async", promise(deferred -> { throw new Err(Status.NOT_FOUND); })); get("/err/send", deferred(() -> { return ierr; })); get("/:name", deferred(req -> { return req.param("name").value(); })); } @Test public void async() throws Exception { request() .get("/hi") .expect("hi"); request() .get("/bye") .expect("bye"); request() .get("/err/init") .expect(500); request() .get("/err/async") .expect(404); request() .get("/err/send") .expect(500); } }