KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
We need to return custom error code and error message when exception occurs during REST invocation. We have created a exception mapper provider, it works well for the exceptions from the application code. However, it doesn't work when exception occurs from the CXF code (e.g. form the CustomValidationInterceptor that I wrote). For example, if I request with invalid path parameter (e.g invalid phoneNumber). In this case, we need to return a custom error code and error message in JSON format, but it doesn't work even though we have a exception mapper provider created to handle WebApplicationException. Is there any way to handle exceptions from cxf interceptors and return response to user with something like the following? { "errorDetail": { "errorCode": "404", "errorMessage": "Bad Request" } } Code Snippet of my CustomValidationInterceptor : public class CustomValidationInterceptor extends AbstractPhaseInterceptor<Message>{ public CustomValidationInterceptor() { super(Phase.PRE_INVOKE); // Put this interceptor in this phase } public void handleMessage(Message message) { MetadataMap<String, String> metadataMap = (MetadataMap<String, String>) message.get("jaxrs.template.parameters"); if(null != metadataMap) { List<String> list = metadataMap.get("phoneNumber"); if(null != list) { String phoneNumber = list.get(0); boolean result = validatePhoneNumber(phoneNumber); if(!result){ throw new TelusServiceException(Response.status(Response.Status.BAD_REQUEST).build(), 400, "phone number not valid"); } } else { throw new TelusServiceException(Response.status(Response.Status.BAD_REQUEST).build(), 400, "phone number not valid"); } } else { throw new TelusServiceException(Response.stat
Tags (comma-separated)
Save Edits
Cancel