/** * Helper method that returns {@link Throwable#getMessage()} for all other exceptions * except for {@link JsonProcessingException}, for which {@code getOriginalMessage()} is * returned instead. * Method is used to avoid accidentally including trailing location information twice * in message when wrapping exceptions. * * @since 2.9.7 */ public static String exceptionMessage(Throwable t) { if (t instanceof JsonProcessingException) { return ((JsonProcessingException) t).getOriginalMessage(); } return t.getMessage(); }
@Override public Response toResponse(JsonProcessingException exception) { /* * If the error is in the JSON generation or an invalid definition, it's a server error. */ if (exception instanceof JsonGenerationException || exception instanceof InvalidDefinitionException) { return super.toResponse(exception); // LoggingExceptionMapper will log exception } /* * Otherwise, it's those pesky users. */ logger.debug("Unable to process JSON", exception); final String message = exception.getOriginalMessage(); final ErrorMessage errorMessage = new ErrorMessage(Response.Status.BAD_REQUEST.getStatusCode(), "Unable to process JSON", showDetails ? message : null); return Response.status(Response.Status.BAD_REQUEST) .type(MediaType.APPLICATION_JSON_TYPE) .entity(errorMessage) .build(); } }
private Flux<TokenBuffer> endOfInput() { this.inputFeeder.endOfInput(); try { return parseTokenBufferFlux(); } catch (JsonProcessingException ex) { return Flux.error(new DecodingException( "JSON decoding error: " + ex.getOriginalMessage(), ex)); } catch (IOException ex) { return Flux.error(ex); } }
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) throws IOException { try { if (inputMessage instanceof MappingJacksonInputMessage) { Class<?> deserializationView = ((MappingJacksonInputMessage) inputMessage).getDeserializationView(); if (deserializationView != null) { return this.objectMapper.readerWithView(deserializationView).forType(javaType). readValue(inputMessage.getBody()); } } return this.objectMapper.readValue(inputMessage.getBody(), javaType); } catch (InvalidDefinitionException ex) { throw new HttpMessageConversionException("Type definition error: " + ex.getType(), ex); } catch (JsonProcessingException ex) { throw new HttpMessageNotReadableException("JSON parse error: " + ex.getOriginalMessage(), ex, inputMessage); } }
throw new EncodingException("JSON encoding error: " + ex.getOriginalMessage(), ex);
private Flux<TokenBuffer> endOfInput() { this.inputFeeder.endOfInput(); try { return parseTokenBufferFlux(); } catch (JsonProcessingException ex) { return Flux.error(new DecodingException( "JSON decoding error: " + ex.getOriginalMessage(), ex)); } catch (IOException ex) { return Flux.error(ex); } }
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) throws IOException { try { if (inputMessage instanceof MappingJacksonInputMessage) { Class<?> deserializationView = ((MappingJacksonInputMessage) inputMessage).getDeserializationView(); if (deserializationView != null) { return this.objectMapper.readerWithView(deserializationView).forType(javaType). readValue(inputMessage.getBody()); } } return this.objectMapper.readValue(inputMessage.getBody(), javaType); } catch (InvalidDefinitionException ex) { throw new HttpMessageConversionException("Type definition error: " + ex.getType(), ex); } catch (JsonProcessingException ex) { throw new HttpMessageNotReadableException("JSON parse error: " + ex.getOriginalMessage(), ex, inputMessage); } }
return Mono.error(new DecodingException("JSON decoding error: " + ex.getOriginalMessage(), ex));
private Flux<TokenBuffer> tokenize(DataBuffer dataBuffer) { byte[] bytes = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(bytes); DataBufferUtils.release(dataBuffer); try { this.inputFeeder.feedInput(bytes, 0, bytes.length); return parseTokenBufferFlux(); } catch (JsonProcessingException ex) { return Flux.error(new DecodingException( "JSON decoding error: " + ex.getOriginalMessage(), ex)); } catch (IOException ex) { return Flux.error(ex); } }
throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getOriginalMessage(), ex);
throw new DecodingException("JSON decoding error: " + ex.getOriginalMessage(), ex);
throw new EncodingException("JSON encoding error: " + ex.getOriginalMessage(), ex);
private Flux<TokenBuffer> tokenize(DataBuffer dataBuffer) { byte[] bytes = new byte[dataBuffer.readableByteCount()]; dataBuffer.read(bytes); DataBufferUtils.release(dataBuffer); try { this.inputFeeder.feedInput(bytes, 0, bytes.length); return parseTokenBufferFlux(); } catch (JsonProcessingException ex) { return Flux.error(new DecodingException( "JSON decoding error: " + ex.getOriginalMessage(), ex)); } catch (IOException ex) { return Flux.error(ex); } }
throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getOriginalMessage(), ex);
returnError(request, "JSON couldn't parsed: " + e.getOriginalMessage(), BAD_REQUEST); return; } catch (IOException e) {
@Override public Response toResponse(JsonProcessingException e) { return Response .status(Response.Status.BAD_REQUEST) .type(MediaType.APPLICATION_JSON_TYPE) .entity(new ErrorEntity(e.getOriginalMessage(), HttpStatusCode.BAD_REQUEST_400)) .build(); } }
@Override public Response toResponse(JsonProcessingException e) { return Response .status(Response.Status.BAD_REQUEST) .type(MediaType.APPLICATION_JSON_TYPE) .entity(new ErrorEntity(e.getOriginalMessage(), HttpStatusCode.BAD_REQUEST_400)) .build(); } }
private static YamlParserException toErr(String msg, JsonProcessingException jpe) { JsonLocation loc = jpe.getLocation(); String originalMsg = jpe.getOriginalMessage(); return new YamlParserException(msg + " @ " + loc + ". " + originalMsg); } }
private static StyleConfiguration readConfig(ObjectReader reader, StyleResource config) { try (InputStream is = config.openStream()) { return reader.readValue(is); } catch (JsonProcessingException e) { String message = String.format("Unable to read style configuration %s.\nLocation: line %s, column %s\nDetails: %s", config, e.getLocation().getLineNr(), e.getLocation().getColumnNr(), e.getOriginalMessage()); throw new RuntimeException(message); } catch (IOException e) { throw new RuntimeException(e); } }
private Flux<TokenBuffer> endOfInput() { this.inputFeeder.endOfInput(); try { return parseTokenBufferFlux(); } catch (JsonProcessingException ex) { return Flux.error(new DecodingException( "JSON decoding error: " + ex.getOriginalMessage(), ex)); } catch (IOException ex) { return Flux.error(ex); } }