Ravi Nori has uploaded a new change for review. Change subject: restapi : JAXBMarshallingException are not propogated ......................................................................
restapi : JAXBMarshallingException are not propogated When invalid xml is submitted to restapi, the JAXBMarshallingException is not propogated to the client. Change-Id: I2a3913b4b063bc7cff3f972a68f8c5fb7fccc1a1 Bug-Url: https://bugzilla.redhat.com/1064572 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JaxbMarshallExceptionMapper.java 2 files changed, 43 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/11/24411/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java index f630a23..5b7d9e1 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java @@ -60,6 +60,7 @@ import org.ovirt.engine.api.restapi.resource.BackendVnicProfilesResource; import org.ovirt.engine.api.restapi.resource.validation.InvalidValueExceptionMapper; import org.ovirt.engine.api.restapi.resource.validation.JaxbExceptionMapper; +import org.ovirt.engine.api.restapi.resource.validation.JaxbMarshallExceptionMapper; import org.ovirt.engine.api.restapi.resource.validation.JsonExceptionMapper; import org.ovirt.engine.api.restapi.resource.validation.MalformedIdExceptionMapper; import org.ovirt.engine.api.restapi.resource.validation.ValidatorLocator; @@ -170,6 +171,7 @@ // Intercepter that maps exceptions cause by illegal guid string to 400 status (BAD_REQUEST). singletons.add(new MalformedIdExceptionMapper()); singletons.add(new JaxbExceptionMapper()); + singletons.add(new JaxbMarshallExceptionMapper()); singletons.add(new JsonExceptionMapper()); singletons.add(new InvalidValueExceptionMapper()); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JaxbMarshallExceptionMapper.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JaxbMarshallExceptionMapper.java new file mode 100644 index 0000000..c853be4 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/JaxbMarshallExceptionMapper.java @@ -0,0 +1,41 @@ +package org.ovirt.engine.api.restapi.resource.validation; + +import org.jboss.resteasy.annotations.interception.ServerInterceptor; +import org.jboss.resteasy.plugins.providers.jaxb.JAXBMarshalException; +import org.ovirt.engine.api.model.Fault; + +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Application; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Request; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriInfo; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; + +@Provider +@ServerInterceptor +public class JaxbMarshallExceptionMapper implements ExceptionMapper<JAXBMarshalException> { + + @Context + protected UriInfo uriInfo; + @Context + protected Request request; + @Context + protected Application application; + + @Override + public Response toResponse(JAXBMarshalException ex) { + try { + Fault fault = new Fault(); + fault.setReason("Bad Request"); + fault.setDetail(ex.getCause().getMessage()); + return Response.status(Status.BAD_REQUEST) + .entity(fault) + .build(); + } catch (Exception e) { + throw new WebApplicationException(e, Response.status(Status.INTERNAL_SERVER_ERROR).build()); + } + } +} -- To view, visit http://gerrit.ovirt.org/24411 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2a3913b4b063bc7cff3f972a68f8c5fb7fccc1a1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches