From 0b39b68e4e72cbcf0f4d28488d54ce06117efa9c Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Thu, 1 Mar 2012 19:58:34 -0600 Subject: Added CMSException. The CMSException was added to simplify error handling in REST services. The exception may include an error message and some other attributes. When the server throws a CMSException (or its subclass), the exception will be marshalled into XML and unmarshalled by the client, then thrown again as a new exception which can be caught by the application. Ticket #100 --- .../servlet/request/KeyRequestResourceService.java | 25 ++++++------ .../request/KeyRequestsResourceService.java | 5 --- .../servlet/request/RequestNotFoundException.java | 46 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 base/common/src/com/netscape/cms/servlet/request/RequestNotFoundException.java (limited to 'base/common/src/com/netscape/cms/servlet/request') diff --git a/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java b/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java index 43e58bbdc..b9ba206c1 100644 --- a/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java +++ b/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java @@ -19,27 +19,24 @@ package com.netscape.cms.servlet.request; import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; + import com.netscape.certsrv.base.EBaseException; import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.servlet.base.CMSException; import com.netscape.cms.servlet.base.CMSResourceService; import com.netscape.cms.servlet.request.model.ArchivalRequestData; import com.netscape.cms.servlet.request.model.KeyRequestDAO; import com.netscape.cms.servlet.request.model.KeyRequestInfo; import com.netscape.cms.servlet.request.model.RecoveryRequestData; - + /** * @author alee - * + * */ public class KeyRequestResourceService extends CMSResourceService implements KeyRequestResource { - @Context - UriInfo uriInfo; - /** * Used to retrieve key request info for a specific request */ @@ -52,15 +49,15 @@ public class KeyRequestResourceService extends CMSResourceService implements Key } catch (EBaseException e) { // log error e.printStackTrace(); - throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); + throw new CMSException(e.getMessage(), e); } if (info == null) { // request does not exist - throw new WebApplicationException(Response.Status.NOT_FOUND); + throw new RequestNotFoundException(id); } return info; } - + // Archiving - used to test integration with a browser public KeyRequestInfo archiveKey(MultivaluedMap form) { ArchivalRequestData data = new ArchivalRequestData(form); @@ -88,7 +85,7 @@ public class KeyRequestResourceService extends CMSResourceService implements Key } return info; } - + //Recovery - used to test integration with a browser public KeyRequestInfo recoverKey(MultivaluedMap form) { RecoveryRequestData data = new RecoveryRequestData(form); @@ -117,7 +114,7 @@ public class KeyRequestResourceService extends CMSResourceService implements Key } return info; } - + public void approveRequest(RequestId id) { if (id == null) { throw new WebApplicationException(Response.Status.BAD_REQUEST); @@ -132,7 +129,7 @@ public class KeyRequestResourceService extends CMSResourceService implements Key throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } } - + public void rejectRequest(RequestId id) { if (id == null) { throw new WebApplicationException(Response.Status.BAD_REQUEST); @@ -147,7 +144,7 @@ public class KeyRequestResourceService extends CMSResourceService implements Key throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR); } } - + public void cancelRequest(RequestId id) { if (id == null) { throw new WebApplicationException(Response.Status.BAD_REQUEST); diff --git a/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java b/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java index 11898ef7a..82b1efa07 100644 --- a/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java +++ b/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java @@ -19,9 +19,7 @@ package com.netscape.cms.servlet.request; import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import com.netscape.certsrv.apps.CMS; import com.netscape.certsrv.base.EBaseException; @@ -37,9 +35,6 @@ import com.netscape.cmsutil.ldap.LDAPUtil; */ public class KeyRequestsResourceService extends CMSResourceService implements KeyRequestsResource{ - @Context - UriInfo uriInfo; - /** * Used to generate list of key requests based on the search parameters */ diff --git a/base/common/src/com/netscape/cms/servlet/request/RequestNotFoundException.java b/base/common/src/com/netscape/cms/servlet/request/RequestNotFoundException.java new file mode 100644 index 000000000..5d6b5563b --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/request/RequestNotFoundException.java @@ -0,0 +1,46 @@ +package com.netscape.cms.servlet.request; + +import javax.ws.rs.core.Response; + +import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.servlet.base.CMSException; + +public class RequestNotFoundException extends CMSException { + + private static final long serialVersionUID = -4784839378360933483L; + + public RequestId requestId; + + public RequestNotFoundException(RequestId requestId) { + this(requestId, "Request ID "+requestId.toHexString()+" not found"); + } + + public RequestNotFoundException(RequestId requestId, String message) { + super(Response.Status.NOT_FOUND, message); + this.requestId = requestId; + } + + public RequestNotFoundException(RequestId requestId, String message, Throwable cause) { + super(Response.Status.NOT_FOUND, message, cause); + this.requestId = requestId; + } + + public RequestNotFoundException(Data data) { + super(data); + requestId = new RequestId(data.getAttribute("requestId")); + } + + public Data getData() { + Data data = super.getData(); + data.setAttribute("requestId", requestId.toString()); + return data; + } + + public RequestId getRequestId() { + return requestId; + } + + public void setRequestId(RequestId requestId) { + this.requestId = requestId; + } +} -- cgit