Repository: incubator-atlas Updated Branches: refs/heads/master ea38942ba -> 8cd6a6445
ATLAS-1566: replace GSON ser-de with ObjectMapper ser-de Signed-off-by: Madhan Neethiraj <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/8cd6a644 Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/8cd6a644 Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/8cd6a644 Branch: refs/heads/master Commit: 8cd6a6445ff59d1345985581e229adc13bc0c7b0 Parents: ea38942 Author: Vimal Sharma <[email protected]> Authored: Sat Feb 18 20:01:04 2017 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Sat Feb 18 20:03:41 2017 -0800 ---------------------------------------------------------------------- .../main/java/org/apache/atlas/AtlasClient.java | 27 +++++++++++++++++++ .../java/org/apache/atlas/type/AtlasType.java | 28 +++++++++++++++----- release-log.txt | 1 + .../atlas/web/adapters/TestEntitiesREST.java | 11 +++----- 4 files changed, 53 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/8cd6a644/client/src/main/java/org/apache/atlas/AtlasClient.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/atlas/AtlasClient.java b/client/src/main/java/org/apache/atlas/AtlasClient.java index 1955f2a..13896ce 100755 --- a/client/src/main/java/org/apache/atlas/AtlasClient.java +++ b/client/src/main/java/org/apache/atlas/AtlasClient.java @@ -35,6 +35,10 @@ import org.apache.atlas.typesystem.types.utils.TypesUtil; import org.apache.commons.configuration.Configuration; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.security.UserGroupInformation; +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonIgnore; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; @@ -44,6 +48,9 @@ import org.slf4j.LoggerFactory; import javax.ws.rs.HttpMethod; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -51,6 +58,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.NONE; +import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * Client for metadata. */ @@ -243,6 +253,11 @@ public class AtlasClient extends AtlasBaseClient { } } + @JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) + @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) + @JsonIgnoreProperties(ignoreUnknown=true) + @XmlRootElement + @XmlAccessorType(XmlAccessType.PROPERTY) public static class EntityResult { public static final String OP_CREATED = "created"; public static final String OP_UPDATED = "updated"; @@ -274,14 +289,26 @@ public class AtlasClient extends AtlasBaseClient { return list; } + public Map<String, List<String>> getEntities(){ + return entities; + } + + public void setEntities(Map<String, List<String>> entities){ + this.entities = entities; + } + + @JsonIgnore public List<String> getCreatedEntities() { return get(OP_CREATED); } + @JsonIgnore public List<String> getUpdateEntities() { return get(OP_UPDATED); } + + @JsonIgnore public List<String> getDeletedEntities() { return get(OP_DELETED); } http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/8cd6a644/intg/src/main/java/org/apache/atlas/type/AtlasType.java ---------------------------------------------------------------------- diff --git a/intg/src/main/java/org/apache/atlas/type/AtlasType.java b/intg/src/main/java/org/apache/atlas/type/AtlasType.java index 6d0c357..28d0a07 100644 --- a/intg/src/main/java/org/apache/atlas/type/AtlasType.java +++ b/intg/src/main/java/org/apache/atlas/type/AtlasType.java @@ -18,22 +18,25 @@ package org.apache.atlas.type; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.typedef.AtlasBaseTypeDef; +import org.codehaus.jackson.map.ObjectMapper; + +import java.io.IOException; import java.util.List; + + /** * base class that declares interface for all Atlas types. */ + public abstract class AtlasType { - private static final Gson GSON = - new GsonBuilder().serializeNulls().setDateFormat(AtlasBaseTypeDef.SERIALIZED_DATE_FORMAT_STR).create(); + private static final ObjectMapper mapper = new ObjectMapper(); private final String typeName; private final TypeCategory typeCategory; @@ -93,12 +96,23 @@ public abstract class AtlasType { return this; } - public static String toJson(Object obj) { - return GSON.toJson(obj); + String ret; + try { + ret = mapper.writeValueAsString(obj); + }catch (IOException e){ + ret = null; + } + return ret; } public static <T> T fromJson(String jsonStr, Class<T> type) { - return GSON.fromJson(jsonStr, type); + T ret; + try { + ret = mapper.readValue(jsonStr, type); + }catch (IOException e){ + ret = null; + } + return ret; } } http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/8cd6a644/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 9e17c54..582b71f 100644 --- a/release-log.txt +++ b/release-log.txt @@ -9,6 +9,7 @@ ATLAS-1060 Add composite indexes for exact match performance improvements for al ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai) ALL CHANGES: +ATLAS-1566 replace GSON ser-de with ObjectMapper ser-de (svimal2016 via mneethiraj) ATLAS-1551 auto update of reverse references in V1 API (dkantor) ATLAS-1565 Create EntityREST endpoints for delete operations (sarathkumarsubramanian via svimal2106) ATLAS-1547 Added tests for hard delete (mneethiraj) http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/8cd6a644/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntitiesREST.java ---------------------------------------------------------------------- diff --git a/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntitiesREST.java b/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntitiesREST.java index 1df9d2f..861e15f 100644 --- a/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntitiesREST.java +++ b/webapp/src/test/java/org/apache/atlas/web/adapters/TestEntitiesREST.java @@ -17,8 +17,6 @@ */ package org.apache.atlas.web.adapters; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.atlas.AtlasClient; import org.apache.atlas.RepositoryMetadataModule; import org.apache.atlas.RequestContext; @@ -36,6 +34,7 @@ import org.apache.atlas.model.typedef.AtlasTypesDef; import org.apache.atlas.repository.graph.AtlasGraphProvider; import org.apache.atlas.repository.store.bootstrap.AtlasTypeDefStoreInitializer; import org.apache.atlas.store.AtlasTypeDefStore; +import org.apache.atlas.type.AtlasType; import org.apache.atlas.type.AtlasTypeRegistry; import org.apache.atlas.web.rest.EntityREST; @@ -254,11 +253,9 @@ public class TestEntitiesREST { AtlasEntity serDeserEntity(AtlasEntity entity) throws IOException { //Convert from json to object and back to trigger the case where it gets translated to a map for attributes instead of AtlasEntity - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - String entityJson = mapper.writeValueAsString(entity); - //JSON from String to Object - AtlasEntity newEntity = mapper.readValue(entityJson, AtlasEntity.class); + String jsonString = AtlasType.toJson(entity); + AtlasEntity newEntity = AtlasType.fromJson(jsonString, AtlasEntity.class); + return newEntity; }
