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
