2525: return map instead of json string for the call method.
authorradhika <radhika@curoverse.com>
Sun, 4 May 2014 21:34:10 +0000 (17:34 -0400)
committerradhika <radhika@curoverse.com>
Sun, 4 May 2014 21:34:10 +0000 (17:34 -0400)
sdk/java/ArvadosSDKJavaExample.java
sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java

index aaffe2befcc0700e4a4d80c880eb3b4c4b7c4165..90ee6ace3d80f540f89c236ae933ddc5035a279f 100644 (file)
@@ -7,9 +7,6 @@
 
 import org.arvados.sdk.java.Arvados;
 
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-
 import java.io.File;
 import java.io.BufferedWriter;
 import java.io.FileWriter;
@@ -32,16 +29,13 @@ public class ArvadosSDKJavaExample {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("users", "list", params);
+    Map response = arv.call("users", "list", params);
     System.out.println("Arvados users.list:\n" + response);
 
     // get uuid of the first user from the response
-    JSONParser parser = new JSONParser();
-    Object obj = parser.parse(response);
-    JSONObject jsonObject = (JSONObject) obj;
-    List items = (List)jsonObject.get("items");
+    List items = (List)response.get("items");
 
-    JSONObject firstUser = (JSONObject)items.get(0);
+    Map firstUser = (Map)items.get(0);
     String userUuid = (String)firstUser.get("uuid");
     
     // Make a users.get call on the uuid obtained above
@@ -60,10 +54,7 @@ public class ArvadosSDKJavaExample {
     System.out.println("Arvados users.create:\n" + response);
 
     // delete the newly created user
-    parser = new JSONParser();
-    obj = parser.parse(response);
-    jsonObject = (JSONObject) obj;
-    userUuid = (String)jsonObject.get("uuid");
+    userUuid = (String)response.get("uuid");
     params = new HashMap<String, Object>();
     params.put("uuid", userUuid);
     response = arv.call("users", "delete", params);
index 11649ebb9e95961fbbf4dbc852b1ea7f77c217ca..fb71493df9b2497adccd3fb1ec143c00bb60816d 100644 (file)
@@ -59,7 +59,8 @@ public class Arvados {
     this (apiName, apiVersion, null, null, null);
   }
 
-  public Arvados (String apiName, String apiVersion, String token, String host, String hostInsecure){
+  public Arvados (String apiName, String apiVersion, String token,
+            String host, String hostInsecure){
     try {
       this.apiName = apiName;
       this.apiVersion = apiVersion;
@@ -88,7 +89,8 @@ public class Arvados {
       if (hostInsecure != null) {
         arvadosApiHostInsecure = Boolean.valueOf(hostInsecure);
       } else {
-        arvadosApiHostInsecure = "true".equals(System.getenv().get("ARVADOS_API_HOST_INSECURE")) ? true : false;
+        arvadosApiHostInsecure =
+            "true".equals(System.getenv().get("ARVADOS_API_HOST_INSECURE")) ? true : false;
       }
 
       // Create HTTP_TRANSPORT object
@@ -110,7 +112,8 @@ public class Arvados {
    * @return Object
    * @throws Exception
    */
-  public String call(String resourceName, String methodName, Map<String, Object> paramsMap) throws Exception {
+  public Map call(String resourceName, String methodName,
+      Map<String, Object> paramsMap) throws Exception {
     RestMethod method = getMatchingMethod(resourceName, methodName);
 
     HashMap<String, Object> parameters = loadParameters(paramsMap, method);
@@ -127,17 +130,19 @@ public class Arvados {
       // possibly required content
       HttpContent content = null;
 
-      if (!method.getHttpMethod().equals("GET") && !method.getHttpMethod().equals("DELETE")) {
+      if (!method.getHttpMethod().equals("GET") &&
+          !method.getHttpMethod().equals("DELETE")) {
         String objectName = resourceName.substring(0, resourceName.length()-1);
         Object requestBody = paramsMap.get(objectName);
         if (requestBody == null) {
           error("POST method requires content object " + objectName);
         }
 
-        content = new ByteArrayContent("application/json", ((String)requestBody).getBytes());
+        content = new ByteArrayContent("application/json",((String)requestBody).getBytes());
       }
 
-      HttpRequest request = requestFactory.buildRequest(method.getHttpMethod(), url, content);
+      HttpRequest request =
+          requestFactory.buildRequest(method.getHttpMethod(), url, content);
 
       // make the request
       List<String> authHeader = new ArrayList<String>();
@@ -145,9 +150,11 @@ public class Arvados {
       request.getHeaders().put("Authorization", authHeader);
       String response = request.execute().parseAsString();
 
-      logger.debug(response);
+      Map responseMap = jsonFactory.createJsonParser(response).parse(HashMap.class);
 
-      return response;
+      logger.debug(responseMap);
+
+      return responseMap;
     } catch (Exception e) {
       e.printStackTrace();
       throw e;
@@ -238,7 +245,8 @@ public class Arvados {
     try {
       Discovery discovery;
 
-      Discovery.Builder discoveryBuilder = new Discovery.Builder(httpTransport, jsonFactory, null);
+      Discovery.Builder discoveryBuilder =
+          new Discovery.Builder(httpTransport, jsonFactory, null);
 
       discoveryBuilder.setRootUrl(arvadosRootUrl);
       discoveryBuilder.setApplicationName(apiName);
@@ -253,7 +261,8 @@ public class Arvados {
   }
 
   private void putParameter(String argName, Map<String, Object> parameters,
-      String parameterName, JsonSchema parameter, Object parameterValue) throws Exception {
+      String parameterName, JsonSchema parameter, Object parameterValue)
+          throws Exception {
     Object value = parameterValue;
     if (parameter != null) {
       if ("boolean".equals(parameter.getType())) {
index 9712f4bc40ff56eab602cd731a8eaa48bda4c32b..110114eb183055a264393fe72222597fd26e3583 100644 (file)
@@ -11,9 +11,6 @@ import org.junit.Test;
 
 import static org.junit.Assert.*;
 
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-
 /**
  * Unit test for Arvados.
  */
@@ -29,21 +26,14 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("users", "list", params);
-    assertTrue("Expected users.list in response", response.contains("arvados#userList"));
-    assertTrue("Expected users.list in response", response.contains("uuid"));
-
-    JSONParser parser = new JSONParser();
-    Object obj = parser.parse(response);
-    JSONObject jsonObject = (JSONObject) obj;
-
-    assertEquals("Expected kind to be users.list", "arvados#userList", jsonObject.get("kind"));
+    Map response = arv.call("users", "list", params);
+    assertEquals("Expected kind to be users.list", "arvados#userList", response.get("kind"));
 
-    List items = (List)jsonObject.get("items");
+    List items = (List)response.get("items");
     assertNotNull("expected users list items", items);
     assertTrue("expected at least one item in users list", items.size()>0);
 
-    JSONObject firstUser = (JSONObject)items.get(0);
+    Map firstUser = (Map)items.get(0);
     assertNotNull ("Expcted at least one user", firstUser);
 
     assertEquals("Expected kind to be user", "arvados#user", firstUser.get("kind"));
@@ -61,15 +51,13 @@ public class ArvadosTest {
     // call user.system and get uuid of this user
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("users", "list", params);
-    JSONParser parser = new JSONParser();
-    Object obj = parser.parse(response);
-    JSONObject jsonObject = (JSONObject) obj;
-    assertNotNull("expected users list", jsonObject);
-    List items = (List)jsonObject.get("items");
+    Map response = arv.call("users", "list", params);
+
+    assertNotNull("expected users list", response);
+    List items = (List)response.get("items");
     assertNotNull("expected users list items", items);
 
-    JSONObject firstUser = (JSONObject)items.get(0);
+    Map firstUser = (Map)items.get(0);
     String userUuid = (String)firstUser.get("uuid");
 
     // invoke users.get with the system user uuid
@@ -78,10 +66,8 @@ public class ArvadosTest {
 
     response = arv.call("users", "get", params);
 
-    //JSONParser parser = new JSONParser();
-    jsonObject = (JSONObject) parser.parse(response);;
-    assertNotNull("Expected uuid for first user", jsonObject.get("uuid"));
-    assertEquals("Expected system user uuid", userUuid, jsonObject.get("uuid"));
+    assertNotNull("Expected uuid for first user", response.get("uuid"));
+    assertEquals("Expected system user uuid", userUuid, response.get("uuid"));
   }
 
   /**
@@ -94,13 +80,11 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
     params.put("user", "{}");
-    String response = arv.call("users", "create", params);
+    Map response = arv.call("users", "create", params);
 
-    JSONParser parser = new JSONParser();
-    JSONObject jsonObject = (JSONObject) parser.parse(response);
-    assertEquals("Expected kind to be user", "arvados#user", jsonObject.get("kind"));
+    assertEquals("Expected kind to be user", "arvados#user", response.get("kind"));
 
-    Object uuid = jsonObject.get("uuid");
+    Object uuid = response.get("uuid");
     assertNotNull("Expected uuid for first user", uuid);
 
     // delete the object
@@ -151,13 +135,11 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
     params.put("user", "{}");
-    String response = arv.call("users", "create", params);
+    Map response = arv.call("users", "create", params);
 
-    JSONParser parser = new JSONParser();
-    JSONObject jsonObject = (JSONObject) parser.parse(response);
-    assertEquals("Expected kind to be user", "arvados#user", jsonObject.get("kind"));
+    assertEquals("Expected kind to be user", "arvados#user", response.get("kind"));
 
-    Object uuid = jsonObject.get("uuid");
+    Object uuid = response.get("uuid");
     assertNotNull("Expected uuid for first user", uuid);
 
     // update this user
@@ -166,11 +148,9 @@ public class ArvadosTest {
     params.put("uuid", uuid);
     response = arv.call("users", "update", params);
 
-    parser = new JSONParser();
-    jsonObject = (JSONObject) parser.parse(response);
-    assertEquals("Expected kind to be user", "arvados#user", jsonObject.get("kind"));
+    assertEquals("Expected kind to be user", "arvados#user", response.get("kind"));
 
-    uuid = jsonObject.get("uuid");
+    uuid = response.get("uuid");
     assertNotNull("Expected uuid for first user", uuid);
 
     // delete the object
@@ -275,12 +255,10 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
     params.put("pipeline_template", new String(data));
-    String response = arv.call("pipeline_templates", "create", params);
+    Map response = arv.call("pipeline_templates", "create", params);
 
-    JSONParser parser = new JSONParser();
-    JSONObject jsonObject = (JSONObject) parser.parse(response);
-    assertEquals("Expected kind to be user", "arvados#pipelineTemplate", jsonObject.get("kind"));
-    String uuid = (String)jsonObject.get("uuid");
+    assertEquals("Expected kind to be user", "arvados#pipelineTemplate", response.get("kind"));
+    String uuid = (String)response.get("uuid");
     assertNotNull("Expected uuid for pipeline template", uuid);
 
     // get the pipeline
@@ -288,10 +266,8 @@ public class ArvadosTest {
     params.put("uuid", uuid);
     response = arv.call("pipeline_templates", "get", params);
 
-    parser = new JSONParser();
-    jsonObject = (JSONObject) parser.parse(response);
-    assertEquals("Expected kind to be user", "arvados#pipelineTemplate", jsonObject.get("kind"));
-    assertEquals("Expected uuid for pipeline template", uuid, jsonObject.get("uuid"));
+    assertEquals("Expected kind to be user", "arvados#pipelineTemplate", response.get("kind"));
+    assertEquals("Expected uuid for pipeline template", uuid, response.get("uuid"));
 
     // delete the object
     params = new HashMap<String, Object>();
@@ -313,14 +289,8 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("users", "list", params);
-    assertTrue("Expected users.list in response", response.contains("arvados#userList"));
-    assertTrue("Expected users.list in response", response.contains("uuid"));
-
-    JSONParser parser = new JSONParser();
-    Object obj = parser.parse(response);
-    JSONObject jsonObject = (JSONObject) obj;
-    assertEquals("Expected kind to be users.list", "arvados#userList", jsonObject.get("kind"));
+    Map response = arv.call("users", "list", params);
+    assertEquals("Expected kind to be users.list", "arvados#userList", response.get("kind"));
   }
 
   /**
@@ -333,17 +303,10 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("users", "list", params);
-    assertTrue("Expected users.list in response", response.contains("arvados#userList"));
-    assertTrue("Expected users.list in response", response.contains("uuid"));
+    Map response = arv.call("users", "list", params);
+    assertEquals("Expected users.list in response", "arvados#userList", response.get("kind"));
 
-    JSONParser parser = new JSONParser();
-    Object obj = parser.parse(response);
-    JSONObject jsonObject = (JSONObject) obj;
-
-    assertEquals("Expected kind to be users.list", "arvados#userList", jsonObject.get("kind"));
-
-    List items = (List)jsonObject.get("items");
+    List items = (List)response.get("items");
     assertNotNull("expected users list items", items);
     assertTrue("expected at least one item in users list", items.size()>0);
 
@@ -355,13 +318,9 @@ public class ArvadosTest {
 
     response = arv.call("users", "list", params);
 
-    parser = new JSONParser();
-    obj = parser.parse(response);
-    jsonObject = (JSONObject) obj;
-
-    assertEquals("Expected kind to be users.list", "arvados#userList", jsonObject.get("kind"));
+    assertEquals("Expected kind to be users.list", "arvados#userList", response.get("kind"));
 
-    items = (List)jsonObject.get("items");
+    items = (List)response.get("items");
     assertNotNull("expected users list items", items);
     assertTrue("expected at least one item in users list", items.size()>0);
 
@@ -375,8 +334,8 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("links", "list", params);
-    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
+    Map response = arv.call("links", "list", params);
+    assertEquals("Expected links.list in response", "arvados#linkList", response.get("kind"));
 
     String[] filters = new String[3];
     filters[0] = "name";
@@ -387,8 +346,8 @@ public class ArvadosTest {
     
     response = arv.call("links", "list", params);
     
-    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
-    assertFalse("Expected no can_manage in response", response.contains("\"name\":\"can_manage\""));
+    assertEquals("Expected links.list in response", "arvados#linkList", response.get("kind"));
+    assertFalse("Expected no can_manage in response", response.toString().contains("\"name\":\"can_manage\""));
   }
 
   @Test
@@ -397,8 +356,8 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("links", "list", params);
-    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
+    Map response = arv.call("links", "list", params);
+    assertEquals("Expected links.list in response", "arvados#linkList", response.get("kind"));
 
     List<String> filters = new ArrayList<String>();
     filters.add("name");
@@ -409,8 +368,8 @@ public class ArvadosTest {
     
     response = arv.call("links", "list", params);
     
-    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
-    assertFalse("Expected no can_manage in response", response.contains("\"name\":\"can_manage\""));
+    assertEquals("Expected links.list in response", "arvados#linkList", response.get("kind"));
+    assertFalse("Expected no can_manage in response", response.toString().contains("\"name\":\"can_manage\""));
   }
 
   @Test
@@ -419,17 +378,14 @@ public class ArvadosTest {
 
     Map<String, Object> params = new HashMap<String, Object>();
 
-    String response = arv.call("links", "list", params);
-    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
-
     Map<String, String> where = new HashMap<String, String>();
     where.put("where", "updated_at > '2014-05-01'");
     
     params.put("where", where);
     
-    response = arv.call("links", "list", params);
+    Map response = arv.call("links", "list", params);
     
-    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
+    assertEquals("Expected links.list in response", "arvados#linkList", response.get("kind"));
   }
 
 }
\ No newline at end of file