Extract JSON helper methods to JsonUtils

Change-Id: I31d758e359d9c11ad6c84125600e661e8d869703
Signed-off-by: Michael Ochmann <michael.ochmann@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/JsonUtils.java b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/JsonUtils.java
new file mode 100644
index 0000000..0227eed
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/JsonUtils.java
@@ -0,0 +1,51 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.cfoauth;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonPrimitive;
+
+public class JsonUtils {
+
+  public static String getAttribute(JsonObject json, String name) {
+    JsonPrimitive prim = getAsJsonPrimitive(json, name);
+    return prim != null && prim.isString() ? prim.getAsString() : null;
+  }
+
+  public static long getLongAttribute(JsonObject json, String name,
+      long defaultValue) {
+    JsonPrimitive prim = getAsJsonPrimitive(json, name);
+    return prim != null && prim.isNumber() ? prim.getAsLong() : defaultValue;
+  }
+
+  public static JsonPrimitive getAsJsonPrimitive(JsonObject json, String name) {
+    JsonElement attr = json.get(name);
+    if (attr == null || !attr.isJsonPrimitive()) {
+      return null;
+    }
+    return attr.getAsJsonPrimitive();
+  }
+
+  public static JsonObject getAsJsonObject(String s) {
+    JsonElement json = new JsonParser().parse(s);
+    if (!json.isJsonObject()) {
+      return new JsonObject();
+    }
+    return json.getAsJsonObject();
+  }
+
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/UAAClient.java b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/UAAClient.java
index e2ccc02..259339d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/UAAClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/UAAClient.java
@@ -14,6 +14,8 @@
 
 package com.googlesource.gerrit.plugins.cfoauth;
 
+import static com.googlesource.gerrit.plugins.cfoauth.JsonUtils.*;
+
 import static java.net.HttpURLConnection.HTTP_OK;
 import static java.nio.charset.StandardCharsets.US_ASCII;
 import static java.nio.charset.StandardCharsets.UTF_8;
@@ -25,10 +27,7 @@
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
-import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import com.google.gson.JsonPrimitive;
 
 import org.apache.commons.codec.binary.Base64;
 import org.scribe.model.OAuthRequest;
@@ -273,12 +272,6 @@
         "Unsupported signature algorithm ''{0}''", alg));
   }
 
-  @VisibleForTesting
-  String getAttribute(JsonObject json, String name) {
-    JsonPrimitive prim = getAsJsonPrimitive(json, name);
-    return prim != null && prim.isString() ? prim.getAsString() : null;
-  }
-
   private String getAccessTokenAttribute(String tokenResponse)
       throws UAAClientException {
     JsonObject json = getAsJsonObject(tokenResponse);
@@ -290,28 +283,6 @@
     return accessToken;
   }
 
-  @VisibleForTesting
-  long getLongAttribute(JsonObject json, String name, long defaultValue) {
-    JsonPrimitive prim = getAsJsonPrimitive(json, name);
-    return prim != null && prim.isNumber() ? prim.getAsLong() : defaultValue;
-  }
-
-  private JsonPrimitive getAsJsonPrimitive(JsonObject json, String name) {
-    JsonElement attr = json.get(name);
-    if (attr == null || !attr.isJsonPrimitive()) {
-      return null;
-    }
-    return attr.getAsJsonPrimitive();
-  }
-
-  private JsonObject getAsJsonObject(String s) {
-    JsonElement json = new JsonParser().parse(s);
-    if (!json.isJsonObject()) {
-      return new JsonObject();
-    }
-    return json.getAsJsonObject();
-  }
-
   private String decodeBase64(String s) {
     return new String(Base64.decodeBase64(s), UTF_8);
   }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/cfoauth/UAAClientTest.java b/src/test/java/com/googlesource/gerrit/plugins/cfoauth/UAAClientTest.java
index 2616784..244286c 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/cfoauth/UAAClientTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/cfoauth/UAAClientTest.java
@@ -15,15 +15,11 @@
 package com.googlesource.gerrit.plugins.cfoauth;
 
 import static org.junit.Assert.*;
+import static com.googlesource.gerrit.plugins.cfoauth.JsonUtils.getAttribute;
+import static com.googlesource.gerrit.plugins.cfoauth.JsonUtils.getLongAttribute;
 
 import com.google.gson.JsonObject;
 
-import com.googlesource.gerrit.plugins.cfoauth.AccessToken;
-import com.googlesource.gerrit.plugins.cfoauth.HMACSHA256SignatureVerifier;
-import com.googlesource.gerrit.plugins.cfoauth.SignatureVerifier;
-import com.googlesource.gerrit.plugins.cfoauth.UAAClient;
-import com.googlesource.gerrit.plugins.cfoauth.UAAClientException;
-
 import org.junit.Before;
 import org.junit.Test;
 
@@ -110,9 +106,9 @@
   @Test
   public void testToJsonWebToken() throws Exception {
     JsonObject jsonWebToken = client.toJsonWebToken(HS256_TEST_TOKEN);
-    assertEquals("marissa", client.getAttribute(jsonWebToken, "user_name"));
-    assertEquals("marissa@test.org", client.getAttribute(jsonWebToken, "email"));
-    assertEquals(1436232932L, client.getLongAttribute(jsonWebToken, "exp", 0));
+    assertEquals("marissa", getAttribute(jsonWebToken, "user_name"));
+    assertEquals("marissa@test.org", getAttribute(jsonWebToken, "email"));
+    assertEquals(1436232932L, getLongAttribute(jsonWebToken, "exp", 0));
   }
 
   @Test(expected = UAAClientException.class)