X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fapi%2FChatBackendControllerAdvice.java;h=6ff108ec429647825e730b655b9fa9c37b8b0317;hb=22c15a299f38649686d2677731aeb349e51224a5;hp=d164fb5ad4b06d0aff45bfcbdc097e0827bf0f31;hpb=f0113ff34d7a4147ce54116680b611061244f39a;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerAdvice.java b/src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerAdvice.java index d164fb5a..6ff108ec 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerAdvice.java +++ b/src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendControllerAdvice.java @@ -18,6 +18,36 @@ public class ChatBackendControllerAdvice @Value("${server.context-path:/}") String contextPath; + @ExceptionHandler(UnknownChatroomException.class) + public final ProblemDetail handleException( + UnknownChatroomException e, + ServerWebExchange exchange, + UriComponentsBuilder uriComponentsBuilder) + { + final HttpStatus status = HttpStatus.NOT_FOUND; + ProblemDetail problem = ProblemDetail.forStatus(status); + + problem.setProperty("timestamp", new Date()); + + problem.setProperty("requestId", exchange.getRequest().getId()); + + problem.setType(uriComponentsBuilder.replacePath(contextPath).path("/problem/unknown-chatroom").build().toUri()); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(status.getReasonPhrase()); + stringBuilder.append(" - "); + stringBuilder.append(e.getMessage()); + problem.setTitle(stringBuilder.toString()); + + stringBuilder.setLength(0); + stringBuilder.append("Chatroom unknown: "); + stringBuilder.append(e.getChatroomId()); + problem.setDetail(stringBuilder.toString()); + + problem.setProperty("chatroomId", e.getChatroomId()); + + return problem; + } + @ExceptionHandler(MessageMutationException.class) public final ProblemDetail handleException( MessageMutationException e, @@ -40,15 +70,15 @@ public class ChatBackendControllerAdvice stringBuilder.setLength(0); stringBuilder.append("The existing message with user="); - stringBuilder.append(e.getExisting().getUser()); + stringBuilder.append(e.getExisting().getUsername()); stringBuilder.append(" and id="); stringBuilder.append(e.getExisting().getId()); stringBuilder.append(" cannot be mutated!"); problem.setDetail(stringBuilder.toString()); - problem.setProperty("mutatedMessage", e.getMutated()); + problem.setProperty("mutatedMessage", MessageTo.from(e.getMutated())); - problem.setProperty("existingMessage", e.getExisting()); + problem.setProperty("existingMessage", MessageTo.from(e.getExisting())); return problem; }