diff options
author | Tim Bray <timbray@gmail.com> | 2014-04-18 12:44:42 -0700 |
---|---|---|
committer | Tim Bray <timbray@gmail.com> | 2014-04-29 15:04:05 -0700 |
commit | e663dadc32633dc12f846539196276265ccc3534 (patch) | |
tree | 4f3569105bba19ce7dbc93e53dabb147b2e83142 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java | |
parent | e0a0bf04ee6fa4794a82b44dae905bc814d85491 (diff) | |
download | open-keychain-e663dadc32633dc12f846539196276265ccc3534.tar.gz open-keychain-e663dadc32633dc12f846539196276265ccc3534.tar.bz2 open-keychain-e663dadc32633dc12f846539196276265ccc3534.zip |
can search openkeychain, retrieve & install & use keys from there
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java new file mode 100644 index 000000000..6f9c4cfa5 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/JWalk.java @@ -0,0 +1,56 @@ +package org.sufficientlysecure.keychain.util; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +/** + * Minimal hierarchy selector + */ +public class JWalk { + + public static int getInt(JSONObject json, String... path) throws JSONException { + json = walk(json, path); + return json.getInt(path[path.length - 1]); + } + + public static long getLong(JSONObject json, String... path) throws JSONException { + json = walk(json, path); + return json.getLong(path[path.length - 1]); + } + + public static String getString(JSONObject json, String... path) throws JSONException { + json = walk(json, path); + return json.getString(path[path.length - 1]); + } + + public static JSONArray getArray(JSONObject json, String... path) throws JSONException { + json = walk(json, path); + return json.getJSONArray(path[path.length - 1]); + } + + public static JSONObject optObject(JSONObject json, String... path) throws JSONException { + json = walk(json, path); + return json.optJSONObject(path[path.length - 1]); + } + + private static JSONObject walk(JSONObject json, String... path) throws JSONException { + int len = path.length - 1; + int pathIndex = 0; + try { + while (pathIndex < len) { + json = json.getJSONObject(path[pathIndex]); + pathIndex++; + } + } catch (JSONException e) { + // try to give ’em a nice-looking error + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < len; i++) { + sb.append(path[i]).append('.'); + } + sb.append(path[len]); + throw new JSONException("JWalk error at step " + pathIndex + " of " + sb); + } + return json; + } +} |