package org.jooby.issues; import static org.junit.Assert.assertEquals; import java.util.concurrent.atomic.AtomicInteger; import org.jooby.Results; import org.jooby.test.ServerFeature; import org.junit.Test; public class Issue376 extends ServerFeature { { before("/before", (req, rsp) -> { req.set("counter", 1); }, (req, rsp) -> { int counter = req.get("counter"); req.set("counter", counter + 1); }, (req, rsp) -> { int counter = req.get("counter"); req.set("counter", counter + 1); }); after("/after", (req, rsp, result) -> { int counter = result.get(); return Results.ok(counter + 1); }, (req, rsp, result) -> { int counter = result.get(); return Results.ok(counter + 1); }); AtomicInteger completeCounter = new AtomicInteger(0); complete("/complete", (req, rsp, cause) -> { completeCounter.incrementAndGet(); }, (req, rsp, cause) -> { completeCounter.incrementAndGet(); }, (req, rsp, cause) -> { completeCounter.incrementAndGet(); }); get("/before", req -> req.get("counter")); get("/after", req -> 1); get("/complete", req -> 1); onStop(() -> { assertEquals(3, completeCounter.get()); }); } @Test public void multipleBeforeFilter() throws Exception { request() .get("/before") .expect("3"); } @Test public void multipleAfterFilter() throws Exception { request() .get("/after") .expect("3"); } @Test public void multipleCompleteFilter() throws Exception { request() .get("/complete") .expect("1"); } }