- private Mono<String> handleAgentCallError(Throwable t, DmaapRequestMessage dmaapRequestMessage) {
- logger.debug("Agent call failed: " + t.getMessage());
- return sendDmaapResponse(t.toString(), dmaapRequestMessage, HttpStatus.NOT_FOUND) //
- .flatMap(s -> Mono.empty());
+ private Mono<ResponseEntity<String>> handleAgentCallError(Throwable error,
+ DmaapRequestMessage dmaapRequestMessage) {
+ logger.debug("Agent call failed: {}", error.getMessage());
+ HttpStatus status = HttpStatus.INTERNAL_SERVER_ERROR;
+ String errorMessage = error.getMessage();
+ if (error instanceof WebClientResponseException) {
+ WebClientResponseException exception = (WebClientResponseException) error;
+ status = exception.getStatusCode();
+ errorMessage = exception.getResponseBodyAsString();
+ } else if (error instanceof ServiceException) {
+ status = HttpStatus.BAD_REQUEST;
+ errorMessage = error.getMessage();
+ } else if (!(error instanceof WebClientException)) {
+ logger.warn("Unexpected exception ", error);
+ }
+ return sendDmaapResponse(errorMessage, dmaapRequestMessage, status) //
+ .flatMap(notUsed -> Mono.empty());