[ARVADOS] updated: 51928265eaf8ca6b6319dd231d74604ceb3af287

git at public.curoverse.com git at public.curoverse.com
Sun May 4 17:35:55 EDT 2014


Summary of changes:
 sdk/java/ArvadosSDKJavaExample.java                |   17 +--
 .../main/java/org/arvados/sdk/java/Arvados.java    |  106 +++++++++++-----
 .../java/org/arvados/sdk/java/ArvadosTest.java     |  135 ++++++++------------
 services/api/app/models/log.rb                     |    6 +-
 4 files changed, 138 insertions(+), 126 deletions(-)

       via  51928265eaf8ca6b6319dd231d74604ceb3af287 (commit)
       via  181fead894b660893e0e09274e609ec8ee4230a1 (commit)
       via  51af13e97bc4725e8cc010c72bbedb667b0a0e0f (commit)
       via  e9359f96365d629a688cbbc2f7d063fabf535a9f (commit)
       via  228f1ecbb98438fcd5bbe59465c830be637d38ce (commit)
       via  4d1c7f9514163b6e6949dda814bb524eeff586d9 (commit)
      from  ee056b0ceb9ce569e0ee9a64b41ead728636772a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 51928265eaf8ca6b6319dd231d74604ceb3af287
Merge: 181fead 4d1c7f9
Author: radhika <radhika at curoverse.com>
Date:   Sun May 4 17:35:00 2014 -0400

    Merge branch 'master' into 2525-java-sdk


commit 181fead894b660893e0e09274e609ec8ee4230a1
Author: radhika <radhika at curoverse.com>
Date:   Sun May 4 17:34:10 2014 -0400

    2525: return map instead of json string for the call method.

diff --git a/sdk/java/ArvadosSDKJavaExample.java b/sdk/java/ArvadosSDKJavaExample.java
index aaffe2b..90ee6ac 100644
--- a/sdk/java/ArvadosSDKJavaExample.java
+++ b/sdk/java/ArvadosSDKJavaExample.java
@@ -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);
diff --git a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
index 11649eb..fb71493 100644
--- a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
+++ b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
@@ -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())) {
diff --git a/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java b/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
index 9712f4b..110114e 100644
--- a/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
+++ b/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
@@ -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

commit 51af13e97bc4725e8cc010c72bbedb667b0a0e0f
Author: radhika <radhika at curoverse.com>
Date:   Sun May 4 16:47:25 2014 -0400

    2525: small refactoring

diff --git a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
index cd643b6..11649eb 100644
--- a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
+++ b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
@@ -267,20 +267,20 @@ public class Arvados {
       } else if (("array".equals(parameter.getType())) ||
                  ("Array".equals(parameter.getType()))) {
         if (parameterValue.getClass().isArray()){
-          value = getValueFromArrayType(parameterValue);
+          value = getJsonValueFromArrayType(parameterValue);
         } else if (List.class.isAssignableFrom(parameterValue.getClass())) {
-          value = getValueFromListType(parameterValue);
+          value = getJsonValueFromListType(parameterValue);
         }
       } else if (("Hash".equals(parameter.getType())) ||
                  ("hash".equals(parameter.getType()))) {
-        value = getValueFromMapType(parameterValue);
+        value = getJsonValueFromMapType(parameterValue);
       } else {
         if (parameterValue.getClass().isArray()){
-          value = getValueFromArrayType(parameterValue);
+          value = getJsonValueFromArrayType(parameterValue);
         } else if (List.class.isAssignableFrom(parameterValue.getClass())) {
-          value = getValueFromListType(parameterValue);
+          value = getJsonValueFromListType(parameterValue);
         } else if (Map.class.isAssignableFrom(parameterValue.getClass())) {
-          value = getValueFromMapType(parameterValue);
+          value = getJsonValueFromMapType(parameterValue);
         }
       }
     }
@@ -288,7 +288,7 @@ public class Arvados {
     parameters.put(parameterName, value);
   }
 
-  private String getValueFromArrayType (Object parameterValue) {
+  private String getJsonValueFromArrayType (Object parameterValue) {
     String arrayStr = Arrays.deepToString((Object[])parameterValue);
     arrayStr = arrayStr.substring(1, arrayStr.length()-1);
     Object[] array = arrayStr.split(",");
@@ -302,7 +302,7 @@ public class Arvados {
     return value;
   }
 
-  private String getValueFromListType (Object parameterValue) {
+  private String getJsonValueFromListType (Object parameterValue) {
     List paramList = (List)parameterValue;
     Object[] array = new Object[paramList.size()];
     String arrayStr = Arrays.deepToString(paramList.toArray(array));
@@ -318,7 +318,7 @@ public class Arvados {
     return value;
   }
 
-  private String getValueFromMapType (Object parameterValue) {
+  private String getJsonValueFromMapType (Object parameterValue) {
     JSONObject json = new JSONObject((Map)parameterValue);
     return json.toString();
   }

commit e9359f96365d629a688cbbc2f7d063fabf535a9f
Author: radhika <radhika at curoverse.com>
Date:   Sun May 4 15:53:17 2014 -0400

    2525: add map parameter type handling to request processing

diff --git a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
index b3226f1..cd643b6 100644
--- a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
+++ b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
@@ -27,6 +27,7 @@ import java.util.Map;
 
 import org.apache.log4j.Logger;
 import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
 
 /**
  * This class provides a java SDK interface to Arvados API server.
@@ -266,33 +267,62 @@ public class Arvados {
       } else if (("array".equals(parameter.getType())) ||
                  ("Array".equals(parameter.getType()))) {
         if (parameterValue.getClass().isArray()){
-          String arrayStr = Arrays.deepToString((Object[])parameterValue);
-          arrayStr = arrayStr.substring(1, arrayStr.length()-1);
-          Object[] array = arrayStr.split(",");
-          Object[] trimmedArray = new Object[array.length];
-          for (int i=0; i<array.length; i++){
-            trimmedArray[i] = array[i].toString().trim();
-          }
-          String jsonString = JSONArray.toJSONString(Arrays.asList(trimmedArray));
-          value = "["+ jsonString +"]";
+          value = getValueFromArrayType(parameterValue);
         } else if (List.class.isAssignableFrom(parameterValue.getClass())) {
-          List paramList = (List)parameterValue;
-          Object[] array = new Object[paramList.size()];
-          String arrayStr = Arrays.deepToString(paramList.toArray(array));
-          arrayStr = arrayStr.substring(1, arrayStr.length()-1);
-          array = arrayStr.split(",");
-          Object[] trimmedArray = new Object[array.length];
-          for (int i=0; i<array.length; i++){
-            trimmedArray[i] = array[i].toString().trim();
-          }
-          String jsonString = JSONArray.toJSONString(Arrays.asList(trimmedArray));
-          value = "["+ jsonString +"]";
+          value = getValueFromListType(parameterValue);
+        }
+      } else if (("Hash".equals(parameter.getType())) ||
+                 ("hash".equals(parameter.getType()))) {
+        value = getValueFromMapType(parameterValue);
+      } else {
+        if (parameterValue.getClass().isArray()){
+          value = getValueFromArrayType(parameterValue);
+        } else if (List.class.isAssignableFrom(parameterValue.getClass())) {
+          value = getValueFromListType(parameterValue);
+        } else if (Map.class.isAssignableFrom(parameterValue.getClass())) {
+          value = getValueFromMapType(parameterValue);
         }
       }
     }
+    
     parameters.put(parameterName, value);
   }
 
+  private String getValueFromArrayType (Object parameterValue) {
+    String arrayStr = Arrays.deepToString((Object[])parameterValue);
+    arrayStr = arrayStr.substring(1, arrayStr.length()-1);
+    Object[] array = arrayStr.split(",");
+    Object[] trimmedArray = new Object[array.length];
+    for (int i=0; i<array.length; i++){
+      trimmedArray[i] = array[i].toString().trim();
+    }
+    String jsonString = JSONArray.toJSONString(Arrays.asList(trimmedArray));
+    String value = "["+ jsonString +"]";
+
+    return value;
+  }
+
+  private String getValueFromListType (Object parameterValue) {
+    List paramList = (List)parameterValue;
+    Object[] array = new Object[paramList.size()];
+    String arrayStr = Arrays.deepToString(paramList.toArray(array));
+    arrayStr = arrayStr.substring(1, arrayStr.length()-1);
+    array = arrayStr.split(",");
+    Object[] trimmedArray = new Object[array.length];
+    for (int i=0; i<array.length; i++){
+      trimmedArray[i] = array[i].toString().trim();
+    }
+    String jsonString = JSONArray.toJSONString(Arrays.asList(trimmedArray));
+    String value = "["+ jsonString +"]";
+
+    return value;
+  }
+
+  private String getValueFromMapType (Object parameterValue) {
+    JSONObject json = new JSONObject((Map)parameterValue);
+    return json.toString();
+  }
+
   private static void error(String detail) throws Exception {
     String errorDetail = "ERROR: " + detail;
 
@@ -304,5 +334,5 @@ public class Arvados {
     System.out.println("Welcome to Arvados Java SDK.");
     System.out.println("Please refer to README to learn to use the SDK.");
   }
-  
+
 }
\ No newline at end of file
diff --git a/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java b/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
index afe9b6e..9712f4b 100644
--- a/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
+++ b/sdk/java/src/test/java/org/arvados/sdk/java/ArvadosTest.java
@@ -413,4 +413,23 @@ public class ArvadosTest {
     assertFalse("Expected no can_manage in response", response.contains("\"name\":\"can_manage\""));
   }
 
+  @Test
+  public void testGetLinksWithWhereClause() throws Exception {
+    Arvados arv = new Arvados("arvados", "v1");
+
+    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);
+    
+    assertTrue("Expected links.list in response", response.contains("arvados#linkList"));
+  }
+
 }
\ No newline at end of file

commit 228f1ecbb98438fcd5bbe59465c830be637d38ce
Author: radhika <radhika at curoverse.com>
Date:   Sun May 4 14:53:32 2014 -0400

    2525: add float handling to request parameters

diff --git a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
index 8abb005..b3226f1 100644
--- a/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
+++ b/sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
@@ -261,7 +261,10 @@ public class Arvados {
         value = new BigDecimal(parameterValue.toString());
       } else if ("integer".equals(parameter.getType())) {
         value = new BigInteger(parameterValue.toString());
-      } else if ("array".equals(parameter.getType())) {
+      } else if ("float".equals(parameter.getType())) {
+        value = new BigDecimal(parameterValue.toString());
+      } else if (("array".equals(parameter.getType())) ||
+                 ("Array".equals(parameter.getType()))) {
         if (parameterValue.getClass().isArray()){
           String arrayStr = Arrays.deepToString((Object[])parameterValue);
           arrayStr = arrayStr.substring(1, arrayStr.length()-1);

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list