2525: Add ArvadosSDKJavaUser.java to serve as an example implementation of SDK usage...
authorradhika <radhika@radhika>
Tue, 29 Apr 2014 19:50:49 +0000 (15:50 -0400)
committerradhika <radhika@radhika>
Tue, 29 Apr 2014 19:50:49 +0000 (15:50 -0400)
.gitignore
sdk/java/ArvadosSDKJavaUser.java [new file with mode: 0644]
sdk/java/src/main/java/org/arvados/sdk/java/Arvados.java
sdk/java/src/main/resources/log4j.properties

index c1b7c2087ee8ca9d2ce45b2200f4afdc5abbf8be..602e1b9e40dbb8eda8a20ca1a607c40fa7e0b525 100644 (file)
@@ -15,3 +15,4 @@ services/keep/bin
 services/keep/pkg
 services/keep/src/github.com
 sdk/java/target
+*.class
diff --git a/sdk/java/ArvadosSDKJavaUser.java b/sdk/java/ArvadosSDKJavaUser.java
new file mode 100644 (file)
index 0000000..289d0c6
--- /dev/null
@@ -0,0 +1,103 @@
+/**
+ * This Sample test program is useful in getting started with working with Arvados Java SDK.
+ * Please also see arvadso 
+ * @author radhika
+ *
+ */
+
+import java.io.File;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.arvados.sdk.java.Arvados;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+
+import com.google.api.services.discovery.model.RestDescription;
+
+public class ArvadosSDKJavaUser {
+  /** Make sure the following environment variables are set before using Arvados:
+   *      ARVADOS_API_TOKEN, ARVADOS_API_HOST, ARVADOS_API_HOST_INSECURE
+   */
+  public static void main(String[] args) throws Exception {
+    String apiName = "arvados";
+    String apiVersion = "v1";
+
+    Arvados arv = new Arvados(apiName);
+
+    // Make a discover request. 
+    System.out.println("Making an arvados discovery api request");
+    List<String> params = new ArrayList<String>();
+    params.add("discover");
+    params.add("arvados");
+    params.add("v1");
+
+    RestDescription restDescription = arv.discover(params);
+    System.out.println("Arvados discovery docuemnt:\n" + restDescription);
+    
+    // Make a users.list call
+    System.out.println("Making an arvados users.list api call");
+
+    params = new ArrayList<String>();
+    params.add("call");
+    params.add("arvados");
+    params.add("v1");
+    params.add("users.list");
+
+    String response = arv.call(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");
+
+    JSONObject firstUser = (JSONObject)items.get(0);
+    String userUuid = (String)firstUser.get("uuid");
+    
+    // Make a users.get call on the uuid obtained above
+    System.out.println("Making a users.get for " + userUuid);
+    params = new ArrayList<String>();
+    params.add("call");
+    params.add("arvados");
+    params.add("v1");
+    params.add("users.get");
+    params.add(userUuid);
+    response = arv.call(params);
+    System.out.println("Arvados users.get:\n" + response);
+
+    // Make a users.create call
+    System.out.println("Making a users.create call.");
+    
+    File file = new File("/tmp/arvados_test.json");
+    BufferedWriter output = new BufferedWriter(new FileWriter(file));
+    output.write("{}");
+    output.close();
+    String filePath = file.getPath();
+
+    params = new ArrayList<String>();
+    params.add("call");
+    params.add("arvados");
+    params.add("v1");
+    params.add("users.create");
+    params.add(filePath);
+    response = arv.call(params);
+    System.out.println("Arvados users.create:\n" + response);
+
+    // Make a pipeline_templates.list call
+    System.out.println("Making a pipeline_templates.list call.");
+
+    params = new ArrayList<String>();
+    params.add("call");
+    params.add("arvados");
+    params.add("v1");
+    params.add("pipeline_templates.list");
+    response = arv.call(params);
+
+    System.out.println("Arvados pipelinetempates.list:\n" + response);
+  }
+}
index 5beff86d2930b6f56bb1c3463c0f5ce666c70ed9..831888cd9c9e1d1c39ab6917d56e2ee0f2086f93 100644 (file)
@@ -46,6 +46,9 @@ public class Arvados {
 
   private static final Logger logger = Logger.getLogger(Arvados.class);
   
+  // Get it on a discover call and reuse on the call requests
+  RestDescription restDescription = null;
+  
   public static void main(String[] args) throws Exception {
     if (args.length == 0) {
       showMainHelp();
@@ -154,6 +157,12 @@ public class Arvados {
     }
   }
   
+  /**
+   * Make a discover call and cache the response in-memory. Reload the document on each invocation.
+   * @param params
+   * @return
+   * @throws Exception
+   */
   public RestDescription discover(List<String> params) throws Exception {
     if (params.size() == 1) {
       error("call", "missing api name");
@@ -161,7 +170,7 @@ public class Arvados {
       error("call", "missing api version");
     } 
 
-    RestDescription restDescription = loadArvadosApi(params.get(1), params.get(2));
+    restDescription = loadArvadosApi(params.get(1), params.get(2));
 
     // compute method details
     ArrayList<MethodDetails> result = Lists.newArrayList();
@@ -209,7 +218,11 @@ public class Arvados {
       error("call", "invalid method name: " + fullMethodName);
     }
 
-    RestDescription restDescription = loadArvadosApi(callParams.get(1), callParams.get(2));
+    // initialize rest description if not already
+    if (restDescription == null) {
+      restDescription = loadArvadosApi(callParams.get(1), callParams.get(2));
+    }
+
     Map<String, RestMethod> methodMap = null;
     int curIndex = 0;
     int nextIndex = fullMethodName.indexOf('.');
@@ -314,6 +327,8 @@ public class Arvados {
       request.getHeaders().put("Authorization", authHeader);
       String response = request.execute().parseAsString();
 
+      logger.debug(response);
+      
       return response;
     } catch (Exception e) {
       e.printStackTrace();
index aa336eb0baa1c3ff4eae152c91df977858df939c..9ebb3c64b10c2f8ab689d94efd4422f67f3bee21 100644 (file)
@@ -8,4 +8,4 @@ log4j.appender.fileAppender.Append=true
 log4j.appender.file.MaxFileSize=10MB
 log4j.appender.file.MaxBackupIndex=10
 log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
-log4j.appender.fileAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
+log4j.appender.fileAppender.layout.ConversionPattern=[%d] %-5p %c %x - %m%n