From d17ef1d036b4262f6c6c40324cc56d04d26581d3 Mon Sep 17 00:00:00 2001 From: radhika Date: Sat, 3 May 2014 09:33:21 -0400 Subject: [PATCH] 2525: token, host name, and host insecure can also be passed to constructor similar to other SDKs. If so, the environment variables are ignored and passed in values are used. --- sdk/java/ArvadosSDKJavaUser.java | 10 ++-- .../java/org/arvados/sdk/java/Arvados.java | 49 ++++++++++++------- .../org/arvados/sdk/java/ArvadosTest.java | 28 +++++++++++ 3 files changed, 62 insertions(+), 25 deletions(-) diff --git a/sdk/java/ArvadosSDKJavaUser.java b/sdk/java/ArvadosSDKJavaUser.java index 289d0c6a20..79b2c2dfc9 100644 --- a/sdk/java/ArvadosSDKJavaUser.java +++ b/sdk/java/ArvadosSDKJavaUser.java @@ -26,21 +26,17 @@ public class ArvadosSDKJavaUser { String apiName = "arvados"; String apiVersion = "v1"; - Arvados arv = new Arvados(apiName); + Arvados arv = new Arvados(apiName, apiVersion); // Make a discover request. System.out.println("Making an arvados discovery api request"); - List params = new ArrayList(); - params.add("discover"); - params.add("arvados"); - params.add("v1"); - - RestDescription restDescription = arv.discover(params); + RestDescription restDescription = arv.discover(); System.out.println("Arvados discovery docuemnt:\n" + restDescription); // Make a users.list call System.out.println("Making an arvados users.list api call"); + List params = new ArrayList(); params = new ArrayList(); params.add("call"); params.add("arvados"); 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 260b68d69b..66feadd958 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 @@ -22,7 +22,6 @@ import java.io.File; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -33,16 +32,16 @@ import org.apache.log4j.Logger; public class Arvados { // HttpTransport and JsonFactory are thread-safe. So, use global instances. - private static HttpTransport HTTP_TRANSPORT; - private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); + private HttpTransport HTTP_TRANSPORT; + private final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); private static final Pattern METHOD_PATTERN = Pattern.compile("((\\w+)\\.)*(\\w+)"); - private static String ARVADOS_API_TOKEN; - private static String ARVADOS_API_HOST; - private static boolean ARVADOS_API_HOST_INSECURE; + private String ARVADOS_API_TOKEN; + private String ARVADOS_API_HOST; + private boolean ARVADOS_API_HOST_INSECURE; - private static String ARVADOS_ROOT_URL; + private String ARVADOS_ROOT_URL; private static final Logger logger = Logger.getLogger(Arvados.class); @@ -52,26 +51,41 @@ public class Arvados { String apiVersion = null; public Arvados (String apiName, String apiVersion){ + this (apiName, apiVersion, null, null, null); + } + + public Arvados (String apiName, String apiVersion, String token, String host, String hostInsecure){ try { this.apiName = apiName; this.apiVersion = apiVersion; - // Read needed environmental variables - ARVADOS_API_TOKEN = System.getenv().get("ARVADOS_API_TOKEN"); - if (ARVADOS_API_TOKEN == null) { - throw new Exception("Missing environment variable: ARVADOS_API_TOKEN"); + // Read needed environmental variables if they are not passed + if (token != null) { + ARVADOS_API_TOKEN = token; + } else { + ARVADOS_API_TOKEN = System.getenv().get("ARVADOS_API_TOKEN"); + if (ARVADOS_API_TOKEN == null) { + throw new Exception("Missing environment variable: ARVADOS_API_TOKEN"); + } } - ARVADOS_API_HOST = System.getenv().get("ARVADOS_API_HOST"); - if (ARVADOS_API_HOST == null) { - throw new Exception("Missing environment variable: ARVADOS_API_HOST"); + if (host != null) { + ARVADOS_API_HOST = host; + } else { + ARVADOS_API_HOST = System.getenv().get("ARVADOS_API_HOST"); + if (ARVADOS_API_HOST == null) { + throw new Exception("Missing environment variable: ARVADOS_API_HOST"); + } } - ARVADOS_ROOT_URL = "https://" + ARVADOS_API_HOST; ARVADOS_ROOT_URL += (ARVADOS_API_HOST.endsWith("/")) ? "" : "/"; - ARVADOS_API_HOST_INSECURE = "true".equals(System.getenv().get("ARVADOS_API_HOST_INSECURE")) ? true : false; - + if (hostInsecure != null) { + ARVADOS_API_HOST_INSECURE = Boolean.valueOf(hostInsecure); + } else { + ARVADOS_API_HOST_INSECURE = "true".equals(System.getenv().get("ARVADOS_API_HOST_INSECURE")) ? true : false; + } + // Create HTTP_TRANSPORT object NetHttpTransport.Builder builder = new NetHttpTransport.Builder(); if (ARVADOS_API_HOST_INSECURE) { @@ -357,5 +371,4 @@ public class Arvados { throw new Exception(errorDetail); } - } 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 77157e5c46..66345de594 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 @@ -259,4 +259,32 @@ public class ArvadosTest { } + /** + * Test users.list api + * @throws Exception + */ + @Test + public void testArvadosWithTokenPassed() throws Exception { + String token = System.getenv().get("ARVADOS_API_TOKEN"); + String host = System.getenv().get("ARVADOS_API_HOST"); + String hostInsecure = System.getenv().get("ARVADOS_API_HOST_INSECURE"); + + Arvados arv = new Arvados("arvados", "v1", token, host, hostInsecure); + + List params = new ArrayList(); + params.add("call"); + params.add("arvados"); + params.add("v1"); + params.add("users.list"); + + String response = arv.call(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")); + } + } \ No newline at end of file -- 2.30.2