From 67c33c134205a59aabc6dcac63acd76ebaf65722 Mon Sep 17 00:00:00 2001 From: Bill Smith Date: Thu, 24 Jan 2019 16:30:02 -0700 Subject: [PATCH] [SHIBUI-1063] Relocated the JsonSchemaValidationFailedException because it wasn't being called in the groovy controller advice class. The generic exception handler was handling it instead. Also fixed handling of the List -> List conversion. Json schema validation errors should return something more useful now. --- ...yOverridesJsonSchemaValidatingControllerAdvice.groovy | 5 ----- .../ui/controller/support/RestControllersSupport.java | 8 +++++++- .../jsonschema/JsonSchemaValidationFailedException.java | 9 ++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/jsonschema/RelyingPartyOverridesJsonSchemaValidatingControllerAdvice.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/jsonschema/RelyingPartyOverridesJsonSchemaValidatingControllerAdvice.groovy index e77097af6..9151e4ef4 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/jsonschema/RelyingPartyOverridesJsonSchemaValidatingControllerAdvice.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/jsonschema/RelyingPartyOverridesJsonSchemaValidatingControllerAdvice.groovy @@ -55,11 +55,6 @@ class RelyingPartyOverridesJsonSchemaValidatingControllerAdvice extends RequestB ] as HttpInputMessage } - @ExceptionHandler(JsonSchemaValidationFailedException) - final ResponseEntity handleJsonSchemaValidationFailedException(JsonSchemaValidationFailedException ex) { - ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ErrorResponse("400", String.join('\n', ex.errors))) - } - @PostConstruct void init() { this.jsonSchemaLocation = metadataSourcesSchema(this.jsonSchemaResourceLocationRegistry); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/support/RestControllersSupport.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/support/RestControllersSupport.java index d918594db..ebaa4da08 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/support/RestControllersSupport.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/support/RestControllersSupport.java @@ -3,6 +3,7 @@ import edu.internet2.tier.shibboleth.admin.ui.controller.ErrorResponse; import edu.internet2.tier.shibboleth.admin.ui.domain.exceptions.MetadataFileNotFoundException; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver; +import edu.internet2.tier.shibboleth.admin.ui.jsonschema.JsonSchemaValidationFailedException; import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository; import org.hibernate.exception.ConstraintViolationException; import org.springframework.beans.factory.annotation.Autowired; @@ -12,8 +13,8 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.client.HttpClientErrorException; -import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; import static org.springframework.http.HttpStatus.BAD_REQUEST; +import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; import static org.springframework.http.HttpStatus.NOT_FOUND; /** @@ -56,4 +57,9 @@ public final ResponseEntity metadataFileNotFoundHandler(MetadataF ErrorResponse errorResponse = new ErrorResponse(INTERNAL_SERVER_ERROR.toString(), ex.getLocalizedMessage()); return new ResponseEntity<>(errorResponse, INTERNAL_SERVER_ERROR); } + + @ExceptionHandler(JsonSchemaValidationFailedException.class) + public final ResponseEntity handleJsonSchemaValidationFailedException(JsonSchemaValidationFailedException ex) { + return ResponseEntity.status(BAD_REQUEST).body(new ErrorResponse("400", String.join("\n", ex.getErrors()))); + } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/jsonschema/JsonSchemaValidationFailedException.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/jsonschema/JsonSchemaValidationFailedException.java index eac2a6d2f..fac8d91fb 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/jsonschema/JsonSchemaValidationFailedException.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/jsonschema/JsonSchemaValidationFailedException.java @@ -1,5 +1,7 @@ package edu.internet2.tier.shibboleth.admin.ui.jsonschema; +import lombok.Getter; + import java.util.List; /** @@ -8,11 +10,12 @@ * * @author Dmitriy Kopylenko */ -class JsonSchemaValidationFailedException extends RuntimeException { +@Getter +public class JsonSchemaValidationFailedException extends RuntimeException { List errors; - JsonSchemaValidationFailedException(List errors) { - this.errors = errors; + JsonSchemaValidationFailedException(List errors) { + this.errors = (List) errors; } }