use of com.yahoo.elide.core.exceptions.InvalidURLException in project elide by yahoo.
the class Elide method handleRuntimeException.
private ElideResponse handleRuntimeException(RuntimeException error, boolean isVerbose) {
CustomErrorException mappedException = mapError(error);
if (mappedException != null) {
return buildErrorResponse(mappedException, isVerbose);
}
if (error instanceof WebApplicationException) {
throw error;
}
if (error instanceof ForbiddenAccessException) {
ForbiddenAccessException e = (ForbiddenAccessException) error;
if (log.isDebugEnabled()) {
log.debug("{}", e.getLoggedMessage());
}
return buildErrorResponse(e, isVerbose);
}
if (error instanceof JsonPatchExtensionException) {
JsonPatchExtensionException e = (JsonPatchExtensionException) error;
log.debug("JSON patch extension exception caught", e);
return buildErrorResponse(e, isVerbose);
}
if (error instanceof HttpStatusException) {
HttpStatusException e = (HttpStatusException) error;
log.debug("Caught HTTP status exception", e);
return buildErrorResponse(e, isVerbose);
}
if (error instanceof ParseCancellationException) {
ParseCancellationException e = (ParseCancellationException) error;
log.debug("Parse cancellation exception uncaught by Elide (i.e. invalid URL)", e);
return buildErrorResponse(new InvalidURLException(e), isVerbose);
}
if (error instanceof ConstraintViolationException) {
ConstraintViolationException e = (ConstraintViolationException) error;
log.debug("Constraint violation exception caught", e);
String message = "Constraint violation";
final ErrorObjects.ErrorObjectsBuilder errorObjectsBuilder = ErrorObjects.builder();
for (ConstraintViolation<?> constraintViolation : e.getConstraintViolations()) {
errorObjectsBuilder.addError().withDetail(constraintViolation.getMessage());
final String propertyPathString = constraintViolation.getPropertyPath().toString();
if (!propertyPathString.isEmpty()) {
Map<String, Object> source = new HashMap<>(1);
source.put("property", propertyPathString);
errorObjectsBuilder.with("source", source);
}
}
return buildErrorResponse(new CustomErrorException(HttpStatus.SC_BAD_REQUEST, message, errorObjectsBuilder.build()), isVerbose);
}
log.error("Error or exception uncaught by Elide", error);
throw new RuntimeException(error);
}
Aggregations