Trying to send custom error message when item not found. ifNotNull
case correct generate required response. But ifNull
not generate required response (Always the response is empty with status code 200)
AuthorService.java
public Uni<Author> findByName(String name) {
return authorRepo.findByName(name);
}
Resource.java
@GET
@Path("/{name}")
public Uni<Response> get(@PathParam("name") String name) {
return authorService.findByName(name)
.onItem().ifNotNull().transform(t -> new ResponseBodyDTO("success", true, t))
.onItem().transform(t -> Response.ok(t).build())
.onItem().ifNull().switchTo(() -> Uni.createFrom().item(new ResponseBodyDTO("fail", false, null))
.onItem().transform(t -> Response.status(Response.Status.NOT_FOUND).entity(t).build()));
}