Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/asciidoc/problem-details.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,13 @@ Don't overuse it, the problem should have meaningful `title` and `detail` when p
- `HttpProblem.valueOf(StatusCode status, String title)` - with custom `title`
- `HttpProblem.valueOf(StatusCode status, String title, String detail)` - with `title` and `detail`

and couple shorthands for the most common validation codes:

- `HttpProblem.badRequest(String title, String detail)` - for _400 Bad Request_
Comment thread
kliushnichenko marked this conversation as resolved.
Outdated
- `HttpProblem.notFound(String title, String detail)` - for _404 Not Found_
- `HttpProblem.unprocessableEntity(String title, String detail)` - for _422 Unprocessable Entity_
- `HttpProblem.internalServerError()` - for _500 Internal Server Error_

`HttpProblem` extends `RuntimeException` so you can naturally throw it (as you do with exceptions):

.Java
Expand Down
48 changes: 48 additions & 0 deletions jooby/src/main/java/io/jooby/problem/HttpProblem.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,54 @@ public static HttpProblem valueOf(StatusCode status) {
return builder().title(status.reason()).status(status).build();
}

public static HttpProblem badRequest(String title, String detail) {
Comment thread
kliushnichenko marked this conversation as resolved.
return builder()
.title(title)
.status(StatusCode.BAD_REQUEST)
.detail(detail)
.build();
}

public static HttpProblem badRequest(String detail) {
return builder()
.title(StatusCode.BAD_REQUEST.reason())
.status(StatusCode.BAD_REQUEST)
.detail(detail)
.build();
}

public static HttpProblem notFound(String title, String detail) {
return builder()
.title(title)
.status(StatusCode.NOT_FOUND)
.detail(detail)
.build();
}

public static HttpProblem notFound(String detail) {
return builder()
.title(StatusCode.NOT_FOUND.reason())
.status(StatusCode.NOT_FOUND)
.detail(detail)
.build();
}

public static HttpProblem unprocessableEntity(String title, String detail) {
return builder()
.title(title)
.status(StatusCode.UNPROCESSABLE_ENTITY)
.detail(detail)
.build();
}

public static HttpProblem unprocessableEntity(String detail) {
return builder()
.title(StatusCode.UNPROCESSABLE_ENTITY.reason())
.status(StatusCode.UNPROCESSABLE_ENTITY)
.detail(detail)
.build();
}

public static HttpProblem internalServerError() {
return builder()
.title(INTERNAL_ERROR_TITLE)
Expand Down