summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2014-05-05 11:05:43 -0400
committerEndi S. Dewata <edewata@redhat.com>2014-05-07 19:36:20 -0400
commite03bff7807bf7043cf396bd0d383e13e46c211ed (patch)
tree7e960e1013e7f66189ac0712fa4497fde35d96ea /base/server/cms/src
parentde691da40f32693469ee289235650c54fbabe3e6 (diff)
Fixed message format for PKIException.
Previously PKIException was not displayed properly in browser because it doesn't have a writer for HTML. Now the exception mapper will compute the message format properly, and will default to XML. The exception mapper itself has been moved into a server package due to class dependency. The REST application classes have been updated accordingly. Ticket #554
Diffstat (limited to 'base/server/cms/src')
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/base/PKIService.java12
-rw-r--r--base/server/cms/src/org/dogtagpki/server/rest/PKIExceptionMapper.java26
2 files changed, 36 insertions, 2 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/base/PKIService.java b/base/server/cms/src/com/netscape/cms/servlet/base/PKIService.java
index 9338b9645..866db63fd 100644
--- a/base/server/cms/src/com/netscape/cms/servlet/base/PKIService.java
+++ b/base/server/cms/src/com/netscape/cms/servlet/base/PKIService.java
@@ -87,7 +87,7 @@ public class PKIService {
return null;
}
- public MediaType getResponseFormat() {
+ public static MediaType getResponseFormat(HttpHeaders headers) {
MediaType contentType = headers.getMediaType();
List<MediaType> acceptableFormats = headers.getAcceptableMediaTypes();
@@ -104,10 +104,18 @@ public class PKIService {
} else {
responseFormat = resolveFormat(acceptableFormats);
}
- if (responseFormat == null) throw new PKIException(Response.Status.NOT_ACCEPTABLE);
+
+ if (responseFormat == null) {
+ throw new PKIException(Response.Status.NOT_ACCEPTABLE);
+ }
+
return responseFormat;
}
+ public MediaType getResponseFormat() {
+ return getResponseFormat(headers);
+ }
+
public Response createOKResponse() {
return Response
.ok()
diff --git a/base/server/cms/src/org/dogtagpki/server/rest/PKIExceptionMapper.java b/base/server/cms/src/org/dogtagpki/server/rest/PKIExceptionMapper.java
new file mode 100644
index 000000000..072ac05e6
--- /dev/null
+++ b/base/server/cms/src/org/dogtagpki/server/rest/PKIExceptionMapper.java
@@ -0,0 +1,26 @@
+package org.dogtagpki.server.rest;
+
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+
+import com.netscape.certsrv.base.PKIException;
+import com.netscape.cms.servlet.base.PKIService;
+
+@Provider
+public class PKIExceptionMapper implements ExceptionMapper<PKIException> {
+
+ @Context
+ private HttpHeaders headers;
+
+ public Response toResponse(PKIException exception) {
+ // convert PKIException into HTTP response
+ return Response
+ .status(exception.getCode())
+ .entity(exception.getData())
+ .type(PKIService.getResponseFormat(headers))
+ .build();
+ }
+}