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

Reply via email to