8

I've got a JacksonMappingException that I'm using to produce errors for the user:

public Map<String, List<Map<String, String>>> getErrors(JsonMappingException e) {                                                                                                      

    Map<String, List<Map<String, String>>> errors = new HashMap<>();                                                                                                      

    List<Map<String, String>> badFields = new ArrayList<>();                                                                                                                  

    for (Reference ref: e.getPath()) {                                                                                                                                        
        Map<String, String> badField = new HashMap<>();                                                                                                                       
        badField.put("field", ref.getFieldName());                                                                                                                          
        badField.put("description", e.getOriginalMessage());                                                                                                                
        badFields.add(badField);                                                                                                                                              
    }                                                                                                                                                                         

    errors.put("errors", badFields);  

    return errors;
}

Which is great except for some classes of error, certain technical details leak out to the user, such as class structure, etc, that is totally unseemly:

{
  "errors" : [ {
    "field" : "id",
    "description" : "Unrecognized field \"id\" (class motif.web.resource.UserResource$PutUser), not marked as ignorable"
  } ]
}

How can I can have description be more like Unrecognized field \"id\" without all the technical mumbo jumbo?

Dmitry Minkovsky
  • 36,185
  • 26
  • 116
  • 160

1 Answers1

1

JsonMappingException has several subsclasses. You can do instanceof checks for the class of the exception, and then build your own description.

tkruse
  • 10,222
  • 7
  • 53
  • 80