atlas-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shweth...@apache.org
Subject incubator-atlas git commit: ATLAS-586 While updating the multiple attributes, Atlas returns the response with escape characters (dkantor via shwethags)
Date Mon, 11 Apr 2016 11:45:35 GMT
Repository: incubator-atlas
Updated Branches:
  refs/heads/master a5f8c5aa0 -> 2824f15a0


ATLAS-586 While updating the multiple attributes, Atlas returns the response with escape characters
(dkantor via shwethags)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/2824f15a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/2824f15a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/2824f15a

Branch: refs/heads/master
Commit: 2824f15a0a58afebff940e4026dd07338974b959
Parents: a5f8c5a
Author: Shwetha GS <sshivalingamurthy@hortonworks.com>
Authored: Mon Apr 11 17:15:29 2016 +0530
Committer: Shwetha GS <sshivalingamurthy@hortonworks.com>
Committed: Mon Apr 11 17:15:29 2016 +0530

----------------------------------------------------------------------
 release-log.txt                                 |  1 +
 .../atlas/web/resources/EntityResource.java     |  9 ++--
 .../web/resources/EntityJerseyResourceIT.java   | 52 ++++++++++++++++----
 3 files changed, 49 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/2824f15a/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 4b02f34..d687990 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -14,6 +14,7 @@ ATLAS-409 Atlas will not import avro tables with schema read from a file
(dosset
 ATLAS-379 Create sqoop and falcon metadata addons (venkatnrangan,bvellanki,sowmyaramesh via
shwethags)
 
 ALL CHANGES:
+ATLAS-586 While updating the multiple attributes, Atlas returns the response with escape
characters (dkantor via shwethags)
 ATLAS-582 Move Atlas UI to use backboneJS (kevalbhatt18 via shwethags)
 ATLAS-540 API to retrieve entity version events (shwethags)
 ATLAS-529 support drop database (sumasai)

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/2824f15a/webapp/src/main/java/org/apache/atlas/web/resources/EntityResource.java
----------------------------------------------------------------------
diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/EntityResource.java b/webapp/src/main/java/org/apache/atlas/web/resources/EntityResource.java
index 8e69378..b14aa80 100755
--- a/webapp/src/main/java/org/apache/atlas/web/resources/EntityResource.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/EntityResource.java
@@ -19,6 +19,7 @@
 package org.apache.atlas.web.resources;
 
 import com.google.common.base.Preconditions;
+
 import org.apache.atlas.AtlasClient;
 import org.apache.atlas.AtlasException;
 import org.apache.atlas.EntityAuditEvent;
@@ -58,6 +59,7 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
+
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -165,9 +167,10 @@ public class EntityResource {
 
             JSONObject response = new JSONObject();
             response.put(AtlasClient.REQUEST_ID, Servlets.getRequestId());
-            response.put(AtlasClient.GUID, new JSONArray(guids));
-            response.put(AtlasClient.DEFINITION, metadataService.getEntityDefinition(new
JSONArray(guids).getString(0)));
-
+            JSONArray guidsArray = new JSONArray(guids);
+            response.put(AtlasClient.GUID, guidsArray);
+            String entityDefinition = metadataService.getEntityDefinition(guidsArray.getString(0));
+            response.put(AtlasClient.DEFINITION, new JSONObject(entityDefinition));
             return Response.ok(response).build();
         } catch(EntityExistsException e) {
             LOG.error("Unique constraint violation", e);

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/2824f15a/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java
b/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java
index 83db46f..23f6874 100755
--- a/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java
+++ b/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java
@@ -20,6 +20,8 @@ package org.apache.atlas.web.resources;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
+import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
 import com.google.inject.Inject;
 import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
@@ -50,6 +52,7 @@ import org.apache.atlas.typesystem.types.utils.TypesUtil;
 import org.apache.atlas.web.util.Servlets;
 import org.apache.commons.lang.RandomStringUtils;
 import org.codehaus.jettison.json.JSONArray;
+import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -368,14 +371,19 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
     }
 
     private String getEntityDefinition(ClientResponse clientResponse) throws Exception {
-        Assert.assertEquals(clientResponse.getStatus(), Response.Status.OK.getStatusCode());
-        JSONObject response = new JSONObject(clientResponse.getEntity(String.class));
+        JSONObject response = getEntity(clientResponse);
         final String definition = response.getString(AtlasClient.DEFINITION);
         Assert.assertNotNull(definition);
 
         return definition;
     }
 
+    private JSONObject getEntity(ClientResponse clientResponse) throws JSONException {
+        Assert.assertEquals(clientResponse.getStatus(), Response.Status.OK.getStatusCode());
+        JSONObject response = new JSONObject(clientResponse.getEntity(String.class));
+        return response;
+    }
+
     @Test
     public void testGetInvalidEntityDefinition() throws Exception {
         WebResource resource = service.path(ENTITIES).path("blah");
@@ -730,12 +738,28 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
         columns.add(ref1);
         columns.add(ref2);
         tableInstance.set("columns", columns);
-
+        String entityJson = InstanceSerialization.toJson(tableInstance, true);
+        JSONArray entityArray = new JSONArray(1);
+        entityArray.put(entityJson);
         LOG.debug("Replacing entity= " + tableInstance);
-        serviceClient.updateEntities(tableInstance);
+        ClientResponse clientResponse = service.path(ENTITIES).
+            accept(Servlets.JSON_MEDIA_TYPE).type(Servlets.JSON_MEDIA_TYPE).
+            method(HttpMethod.PUT, ClientResponse.class, entityArray);
+        Assert.assertEquals(clientResponse.getStatus(), Response.Status.OK.getStatusCode());
 
-        ClientResponse response = getEntityDefinition(tableId._getId());
-        String definition = getEntityDefinition(response);
+        // ATLAS-586: verify response entity can be parsed by GSON.
+        String entity = clientResponse.getEntity(String.class);
+        Gson gson = new Gson();
+        UpdateEntitiesResponse updateEntitiesResponse = null;
+        try {
+            updateEntitiesResponse = gson.fromJson(entity, UpdateEntitiesResponse.class);
+        }
+        catch (JsonSyntaxException e) {
+            Assert.fail("Response entity from " + service.path(ENTITIES).getURI() + " not
parseable by GSON", e);
+        }
+        
+        clientResponse = getEntityDefinition(tableId._getId());
+        String definition = getEntityDefinition(clientResponse);
         Referenceable getReferenceable = InstanceSerialization.fromJsonReferenceable(definition,
true);
         List<Referenceable> refs = (List<Referenceable>) getReferenceable.get("columns");
         Assert.assertEquals(refs.size(), 2);
@@ -744,6 +768,17 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
         Assert.assertTrue(refs.get(1).equalsContents(columns.get(1)));
     }
     
+    private static class UpdateEntitiesResponse {
+        String requestId;
+        String[] GUID;
+        AtlasEntity definition;
+    }
+    
+    private static class AtlasEntity {
+        String typeName;
+        final Map<String, Object> values = new HashMap<String, Object>();
+    }
+    
     @Test
     public void testDeleteEntitiesViaRestApi() throws Exception {
         // Create 2 database entities
@@ -761,10 +796,7 @@ public class EntityJerseyResourceIT extends BaseResourceIT {
             queryParam(AtlasClient.GUID.toLowerCase(), db1Id._getId()).
             queryParam(AtlasClient.GUID.toLowerCase(), db2Id._getId()).
             accept(Servlets.JSON_MEDIA_TYPE).type(Servlets.JSON_MEDIA_TYPE).method(HttpMethod.DELETE,
ClientResponse.class);
-        Assert.assertEquals(clientResponse.getStatus(), Response.Status.OK.getStatusCode());
-
-        // Verify that response has guids for both database entities
-        JSONObject response = new JSONObject(clientResponse.getEntity(String.class));
+        JSONObject response = getEntity(clientResponse);
         final String deletedGuidsJson = response.getString(AtlasClient.GUID);
         Assert.assertNotNull(deletedGuidsJson);
         JSONArray guidsArray = new JSONArray(deletedGuidsJson);


Mime
View raw message