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));
+        }
+    }
 }

Reply via email to