Skip to content

Commit 24c5695

Browse files
[HttpProblem] common validation shorthands
1 parent 859dc3b commit 24c5695

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

docs/asciidoc/problem-details.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ Don't overuse it, the problem should have meaningful `title` and `detail` when p
5757
- `HttpProblem.valueOf(StatusCode status, String title)` - with custom `title`
5858
- `HttpProblem.valueOf(StatusCode status, String title, String detail)` - with `title` and `detail`
5959

60+
and couple shorthands for the most common validation codes:
61+
62+
- `HttpProblem.badRequest(String title, String detail)` - for _400 Bad Request_
63+
- `HttpProblem.notFound(String title, String detail)` - for _404 Not Found_
64+
- `HttpProblem.unprocessableEntity(String title, String detail)` - for _422 Unprocessable Entity_
65+
- `HttpProblem.internalServerError()` - for _500 Internal Server Error_
66+
6067
`HttpProblem` extends `RuntimeException` so you can naturally throw it (as you do with exceptions):
6168

6269
.Java

jooby/src/main/java/io/jooby/problem/HttpProblem.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,54 @@ public static HttpProblem valueOf(StatusCode status) {
6767
return builder().title(status.reason()).status(status).build();
6868
}
6969

70+
public static HttpProblem badRequest(String title, String detail) {
71+
return builder()
72+
.title(title)
73+
.status(StatusCode.BAD_REQUEST)
74+
.detail(detail)
75+
.build();
76+
}
77+
78+
public static HttpProblem badRequest(String detail) {
79+
return builder()
80+
.title(StatusCode.BAD_REQUEST.reason())
81+
.status(StatusCode.BAD_REQUEST)
82+
.detail(detail)
83+
.build();
84+
}
85+
86+
public static HttpProblem notFound(String title, String detail) {
87+
return builder()
88+
.title(title)
89+
.status(StatusCode.NOT_FOUND)
90+
.detail(detail)
91+
.build();
92+
}
93+
94+
public static HttpProblem notFound(String detail) {
95+
return builder()
96+
.title(StatusCode.NOT_FOUND.reason())
97+
.status(StatusCode.NOT_FOUND)
98+
.detail(detail)
99+
.build();
100+
}
101+
102+
public static HttpProblem unprocessableEntity(String title, String detail) {
103+
return builder()
104+
.title(title)
105+
.status(StatusCode.UNPROCESSABLE_ENTITY)
106+
.detail(detail)
107+
.build();
108+
}
109+
110+
public static HttpProblem unprocessableEntity(String detail) {
111+
return builder()
112+
.title(StatusCode.UNPROCESSABLE_ENTITY.reason())
113+
.status(StatusCode.UNPROCESSABLE_ENTITY)
114+
.detail(detail)
115+
.build();
116+
}
117+
70118
public static HttpProblem internalServerError() {
71119
return builder()
72120
.title(INTERNAL_ERROR_TITLE)

0 commit comments

Comments
 (0)