This is an automated email from the ASF dual-hosted git repository. nixon pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 2559aa510883a0194a971d9b884835d419f8282c Author: nixonrodrigues <[email protected]> AuthorDate: Wed Jan 13 16:09:43 2021 +0530 ATLAS-4101 : Fix http error code for JsonParseException by overriding readFrom method of JacksonJsonProvider. (cherry picked from commit 6edd4bc110a3fdde42659f797c588fa75432cc79) --- .../apache/atlas/web/util/AtlasJsonProvider.java | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/webapp/src/main/java/org/apache/atlas/web/util/AtlasJsonProvider.java b/webapp/src/main/java/org/apache/atlas/web/util/AtlasJsonProvider.java index efe0486..8a7dcf1 100644 --- a/webapp/src/main/java/org/apache/atlas/web/util/AtlasJsonProvider.java +++ b/webapp/src/main/java/org/apache/atlas/web/util/AtlasJsonProvider.java @@ -18,16 +18,24 @@ package org.apache.atlas.web.util; +import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; - import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; +import java.io.IOException; +import java.io.InputStream; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; @Provider @@ -44,4 +52,18 @@ public class AtlasJsonProvider extends JacksonJaxbJsonProvider { LOG.info("AtlasJsonProvider() instantiated"); } + + @Override + public Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, + MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { + try { + return super.readFrom(type, genericType, annotations, mediaType, httpHeaders, entityStream); + } catch (JsonParseException jpe) { + LOG.error("Malformed json passed to server", jpe); + throw new WebApplicationException(Servlets.getErrorResponse(jpe.getMessage(), Response.Status.BAD_REQUEST)); + } catch (JsonMappingException jme) { + LOG.error("Malformed json passed to server, incorrect data type used", jme); + throw new WebApplicationException(Servlets.getErrorResponse(jme.getMessage(), Response.Status.BAD_REQUEST)); + } + } }
