summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java')
-rw-r--r--base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java126
1 files changed, 103 insertions, 23 deletions
diff --git a/base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java b/base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java
index 40f57a7a7..b31d9961d 100644
--- a/base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java
+++ b/base/common/src/com/netscape/cms/servlet/request/CertRequestResourceService.java
@@ -18,15 +18,27 @@
package com.netscape.cms.servlet.request;
+import javax.ws.rs.PathParam;
import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import com.netscape.certsrv.apps.CMS;
+import com.netscape.certsrv.authentication.EAuthException;
+import com.netscape.certsrv.authorization.EAuthzException;
+import com.netscape.certsrv.base.BadRequestDataException;
import com.netscape.certsrv.base.EBaseException;
+import com.netscape.certsrv.profile.EDeferException;
+import com.netscape.certsrv.profile.EProfileException;
+import com.netscape.certsrv.profile.ERejectException;
+import com.netscape.certsrv.property.EPropertyException;
import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.base.BadRequestException;
import com.netscape.cms.servlet.base.CMSException;
import com.netscape.cms.servlet.base.CMSResourceService;
+import com.netscape.cms.servlet.request.model.AgentEnrollmentRequestData;
import com.netscape.cms.servlet.request.model.CertRequestDAO;
import com.netscape.cms.servlet.request.model.CertRequestInfo;
+import com.netscape.cms.servlet.request.model.CertRequestInfos;
import com.netscape.cms.servlet.request.model.EnrollmentRequestData;
/**
@@ -60,51 +72,119 @@ public class CertRequestResourceService extends CMSResourceService implements Ce
}
// Enrollment - used to test integration with a browser
- public CertRequestInfo enrollCert(MultivaluedMap<String, String> form) {
+ public CertRequestInfos enrollCert(MultivaluedMap<String, String> form) {
EnrollmentRequestData data = new EnrollmentRequestData(form);
return enrollCert(data);
}
- public CertRequestInfo enrollCert(EnrollmentRequestData data) {
-
+ public CertRequestInfos enrollCert(EnrollmentRequestData data) {
+ CertRequestInfos infos;
if (data == null) {
throw new BadRequestException("Bad data input into CertRequestResourceService.enrollCert!");
}
CertRequestDAO dao = new CertRequestDAO();
try {
- dao.submitRequest(data, uriInfo);
+ infos = dao.submitRequest(data, servletRequest, uriInfo, getLocale());
+ } catch (EAuthException e) {
+ CMS.debug("enrollCert: authentication failed: " + e);
+ throw new CMSException(Response.Status.UNAUTHORIZED, e.toString());
+ } catch (EAuthzException e) {
+ CMS.debug("enrollCert: authorization failed: " + e);
+ throw new CMSException(Response.Status.UNAUTHORIZED, e.toString());
+ } catch (BadRequestDataException e) {
+ CMS.debug("enrollCert: bad request data: " + e);
+ throw new CMSException(Response.Status.BAD_REQUEST, e.toString());
} catch (EBaseException e) {
- throw new CMSException("Problem enrolling cert in CertRequestResource.enrollCert!");
+ throw new CMSException(e.toString());
}
- //TODO implement
- throw new CMSException("CertRequestResourceService.enrollCert not implemented!");
+ return infos;
}
- public void approveRequest(RequestId id) {
- if (id == null) {
- throw new BadRequestException("Bad data input in CertRequestResourceService.approveRequest!");
- }
- //TODO implement
- throw new CMSException("Problem approving request in CertRequestResource.approveRequest!");
+ public void approveRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "approve");
}
- public void rejectRequest(RequestId id) {
- if (id == null) {
- throw new BadRequestException("Bad data input into CertRequestResourceService.rejectRequest!");
- }
- //TODO implement
+ public void rejectRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "reject");
+ }
- throw new CMSException("Problem rejecting request in CertRequestResource.rejectRequest!");
+ public void cancelRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "cancel");
+ }
+ public void updateRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "update");
}
- public void cancelRequest(RequestId id) {
+ public void validateRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "validate");
+ }
+
+ public void unassignRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "unassign");
+ }
+
+ public void assignRequest(RequestId id, AgentEnrollmentRequestData data) {
+ changeRequestState(id, data, "assign");
+ }
+
+ public void changeRequestState(RequestId id, AgentEnrollmentRequestData data, String op) {
if (id == null) {
- throw new BadRequestException("Bad data input in CertRequestResourceService.cancelRequest!");
+ throw new BadRequestException("Bad data input in CertRequestResourceService. op:" + op);
+ }
+
+ CertRequestDAO dao = new CertRequestDAO();
+ try {
+ dao.changeRequestState(id, servletRequest, data, getLocale(), op);
+ } catch (ERejectException e) {
+ CMS.debug("changeRequestState: execution rejected " + e);
+ throw new CMSException(Response.Status.BAD_REQUEST,
+ CMS.getUserMessage(getLocale(), "CMS_PROFILE_REJECTED", e.toString()));
+ } catch (EDeferException e) {
+ CMS.debug("changeRequestState: execution defered " + e);
+ // TODO do we throw an exception here?
+ throw new CMSException(Response.Status.BAD_REQUEST,
+ CMS.getUserMessage(getLocale(), "CMS_PROFILE_DEFERRED", e.toString()));
+ } catch (BadRequestDataException e) {
+ CMS.debug("changeRequestState: bad request data: " + e);
+ throw new CMSException(Response.Status.BAD_REQUEST, e.toString());
+ } catch (EPropertyException e) {
+ CMS.debug("changeRequestState: execution error " + e);
+ throw new CMSException(CMS.getUserMessage(getLocale(),
+ "CMS_PROFILE_PROPERTY_ERROR", e.toString()));
+ } catch (EProfileException e) {
+ CMS.debug("ProfileProcessServlet: execution error " + e);
+ throw new CMSException(CMS.getUserMessage(getLocale(), "CMS_INTERNAL_ERROR"));
+ } catch (EBaseException e) {
+ e.printStackTrace();
+ throw new CMSException("Problem approving request in CertRequestResource.assignRequest!");
+ } catch (RequestNotFoundException e) {
+ throw new CMSException(Response.Status.BAD_REQUEST,
+ CMS.getUserMessage(getLocale(), "CMS_REQUEST_NOT_FOUND", id.toString()));
}
- //TODO implement
- throw new CMSException("Problem cancelling request in CertRequestResource.cancelRequest!");
}
+
+ public AgentEnrollmentRequestData reviewRequest(@PathParam("id") RequestId id) {
+ // auth and authz
+ AgentEnrollmentRequestData info;
+
+ CertRequestDAO dao = new CertRequestDAO();
+ try {
+ info = dao.reviewRequest(servletRequest, id, uriInfo, getLocale());
+ } catch (EBaseException e) {
+ // log error
+ e.printStackTrace();
+ throw new CMSException("Error getting Cert request info!");
+ }
+
+ if (info == null) {
+ // request does not exist
+ throw new RequestNotFoundException(id);
+ }
+
+ return info;
+ }
+
}