diff options
| author | Endi S. Dewata <edewata@redhat.com> | 2014-05-05 11:05:43 -0400 |
|---|---|---|
| committer | Endi S. Dewata <edewata@redhat.com> | 2014-05-07 19:36:20 -0400 |
| commit | e03bff7807bf7043cf396bd0d383e13e46c211ed (patch) | |
| tree | 7e960e1013e7f66189ac0712fa4497fde35d96ea /base/server/cms/src | |
| parent | de691da40f32693469ee289235650c54fbabe3e6 (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.java | 12 | ||||
| -rw-r--r-- | base/server/cms/src/org/dogtagpki/server/rest/PKIExceptionMapper.java | 26 |
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(); + } +} |
