Skip to content
This repository was archived by the owner on Mar 3, 2026. It is now read-only.

Commit 49b524c

Browse files
committed
support multiples error handler jooby-project#107
Today, only one error handler is allowed. After this change multiples error handler will be allowed: ```java err((req, rsp, err) -> { if (...) { rsp.send(...); } }); err((req, rsp, err) -> { if (...) { rsp.send(...); } }); ``` Err handlers are executed in the order they were provided (like routes, parser and renderer), the first err handler that send an output wins!
1 parent 916d2ae commit 49b524c

File tree

19 files changed

+263
-288
lines changed

19 files changed

+263
-288
lines changed

coverage-report/src/test/java/org/jooby/ErrDefaultHandlerFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public void err() throws Exception {
1818
.get("/")
1919
.expect(400)
2020
.startsWith(
21-
"<!doctype html><html>\n" +
21+
"<!doctype html>\n<html>\n" +
2222
"<head>\n" +
2323
"<meta charset=\"UTF-8\">\n" +
2424
"<style>\n" +

coverage-report/src/test/java/org/jooby/ErrDefaultStatusCodeFeature.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ public class ErrDefaultStatusCodeFeature extends ServerFeature {
99

1010
{
1111
get("/IllegalArgumentException", (req, rsp) -> {
12-
throw new IllegalArgumentException();
12+
throw new IllegalArgumentException("intentional err");
1313
});
1414

1515
get("/NoSuchElementException", (req, rsp) -> {
16-
throw new NoSuchElementException();
16+
throw new NoSuchElementException("intentional err");
1717
});
1818

1919
get("/Err", (req, rsp) -> {
20-
throw new Err(Status.BAD_REQUEST);
20+
throw new Err(Status.BAD_REQUEST, "intentional err");
2121
});
2222

2323
get("/NullPointerException", (req, rsp) -> {
24-
throw new NullPointerException();
24+
throw new NullPointerException("intentional err");
2525
});
2626

2727
get("/NotAcceptable", (req, rsp) -> {

coverage-report/src/test/java/org/jooby/ErrHandlerFeature.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertTrue;
55

6-
import org.jooby.Status;
76
import org.jooby.test.ServerFeature;
87
import org.junit.Test;
98

@@ -15,7 +14,7 @@ public class ErrHandlerFeature extends ServerFeature {
1514
});
1615

1716
err((req, rsp, ex) -> {
18-
assertTrue(ex instanceof IllegalArgumentException);
17+
assertTrue(ex.getCause() instanceof IllegalArgumentException);
1918
assertEquals(Status.BAD_REQUEST, rsp.status().get());
2019
rsp.send("err...");
2120
});

coverage-report/src/test/java/org/jooby/RendererDefOrderFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ public class RendererDefOrderFeature extends ServerFeature {
2323
public void order() throws Exception {
2424
request()
2525
.get("/renderer/order")
26-
.expect("[byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, toString()]");
26+
.expect("[byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, default.err, toString()]");
2727
}
2828
}

coverage-report/src/test/java/org/jooby/RendererOrder2Feature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public String toString() {
3737

3838
@Override
3939
public void render(final Object object, final Context ctx) throws Exception {
40-
assertEquals("[r2, r1, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, toString()]",
40+
assertEquals("[r2, r1, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, default.err, toString()]",
4141
ctx.toString());
4242
}
4343

@@ -67,6 +67,6 @@ public String toString() {
6767
public void order() throws Exception {
6868
request()
6969
.get("/renderer/order")
70-
.expect("[r2, r1, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, toString()]");
70+
.expect("[r2, r1, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, default.err, toString()]");
7171
}
7272
}

coverage-report/src/test/java/org/jooby/RendererOrderFeature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class RendererOrderFeature extends ServerFeature {
2222

2323
@Override
2424
public void render(final Object object, final Context ctx) throws Exception {
25-
assertEquals("[r1, r2, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, toString()]",
25+
assertEquals("[r1, r2, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, default.err, toString()]",
2626
ctx.toString());
2727
}
2828

@@ -67,6 +67,6 @@ public String toString() {
6767
public void order() throws Exception {
6868
request()
6969
.get("/renderer/order")
70-
.expect("[r1, r2, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, toString()]");
70+
.expect("[r1, r2, r3, byte[], ByteBuffer, File, CharBuffer, InputStream, Reader, FileChannel, default.err, toString()]");
7171
}
7272
}

coverage-report/src/test/java/org/jooby/ViewWithExplicitEngineFeature.java renamed to coverage-report/src/test/java/org/jooby/TwoViewEngineFeature.java

File renamed without changes.

coverage-report/src/test/java/org/jooby/ftl/FtlAccessFeature.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

coverage-report/src/test/java/org/jooby/hbs/HbsAccessFeature.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

coverage-report/src/test/java/org/jooby/issues/Issue73.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ public class Issue73 extends ServerFeature {
1111

1212
get("/issue73", req -> req.require(Config.class).getString("missing"));
1313

14-
err((req, rsp, cause) -> {
15-
rsp.send(cause.getClass().getName());
14+
err((req, rsp, err) -> {
15+
rsp.send(err.getCause().getClass().getName());
1616
});
1717
}
1818

0 commit comments

Comments
 (0)