Ori Liel has uploaded a new change for review.

Change subject: restapi: Invalid guid should result in 400 (BAD_REQUEST) status
......................................................................

restapi: Invalid guid should result in 400 (BAD_REQUEST) status

Change-Id: Ia98fc192ed1f018f975d1ed06b1aa596d2ab7ac7
Signed-off-by: Ori Liel <[email protected]>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
3 files changed, 37 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/7603/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 f727453..5c6d243 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
@@ -54,6 +54,7 @@
 import org.ovirt.engine.api.restapi.resource.BackendUsersResource;
 import org.ovirt.engine.api.restapi.resource.BackendVmPoolsResource;
 import org.ovirt.engine.api.restapi.resource.BackendVmsResource;
+import 
org.ovirt.engine.api.restapi.resource.validation.MalformedIdExceptionMapper;
 import org.ovirt.engine.api.restapi.resource.validation.ValidatorLocator;
 import org.ovirt.engine.api.restapi.security.auth.LoginValidator;
 import org.ovirt.engine.api.restapi.types.MappingLocator;
@@ -148,6 +149,9 @@
         singletons.add(new RequestPayloadLogger());
         singletons.add(new ResponseStatusLogger());
         singletons.add(new ResponsePayloadLogger());
+
+        // Intercepter that maps exceptions cause by illegal guid string to 
400 status (BAD_REQUEST).
+        singletons.add(new MalformedIdExceptionMapper());
     }
 
     private void addResource(final BackendResource resource) {
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
index bf52048..efdf178 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BaseBackendResource.java
@@ -241,8 +241,21 @@
         return list;
     }
 
+    public static class MalformedIdException extends IllegalArgumentException {
+
+        private static final long serialVersionUID = 1L;
+
+        public MalformedIdException(IllegalArgumentException e) {
+            super(e);
+        }
+    }
+
     protected Guid asGuid(String id) {
-        return new Guid(id);
+        try {
+            return new Guid(id);
+        }catch (IllegalArgumentException e) {
+            throw new MalformedIdException(e);
+        }
     }
 
     protected Guid asGuid(NGuid nGuid) {
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
new file mode 100644
index 0000000..8df2b8b
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/MalformedIdExceptionMapper.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.api.restapi.resource.validation;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+
+import org.jboss.resteasy.annotations.interception.ServerInterceptor;
+import 
org.ovirt.engine.api.restapi.resource.BaseBackendResource.MalformedIdException;
+
+@Provider
+@ServerInterceptor
+public class MalformedIdExceptionMapper implements 
ExceptionMapper<MalformedIdException> {
+
+    @Override
+    public Response toResponse(MalformedIdException exception) {
+        return 
Response.status(Status.BAD_REQUEST).entity(exception.getCause().getMessage()).build();
+    }
+}


--
To view, visit http://gerrit.ovirt.org/7603
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia98fc192ed1f018f975d1ed06b1aa596d2ab7ac7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ori Liel <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to