diff options
Diffstat (limited to 'third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java')
-rw-r--r-- | third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java index d005530..5b0065a 100644 --- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java +++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.ParcelUuid; +import com.google.android.mobly.snippet.manager.SnippetObjectConverterManager; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.URL; @@ -36,6 +37,8 @@ import org.json.JSONObject; public class JsonBuilder { + private JsonBuilder() {} + @SuppressWarnings("unchecked") public static Object build(Object data) throws JSONException { if (data == null) { @@ -69,11 +72,11 @@ public class JsonBuilder { return data; } if (data instanceof Set<?>) { - List<Object> items = new ArrayList<Object>((Set<?>) data); + List<Object> items = new ArrayList<>((Set<?>) data); return buildJsonList(items); } if (data instanceof Collection<?>) { - List<Object> items = new ArrayList<Object>((Collection<?>) data); + List<Object> items = new ArrayList<>((Collection<?>) data); return buildJsonList(items); } if (data instanceof List<?>) { @@ -86,13 +89,13 @@ public class JsonBuilder { return buildJsonIntent((Intent) data); } if (data instanceof Map<?, ?>) { - // TODO(damonkohler): I would like to make this a checked cast if - // possible. + // TODO(damonkohler): I would like to make this a checked cast if possible. return buildJsonMap((Map<String, ?>) data); } if (data instanceof ParcelUuid) { return data.toString(); } + // TODO(xpconanfan): Deprecate the following default non-primitive type builders. if (data instanceof InetSocketAddress) { return buildInetSocketAddress((InetSocketAddress) data); } @@ -112,7 +115,11 @@ public class JsonBuilder { if (data instanceof Object[]) { return buildJSONArray((Object[]) data); } - + // Try with custom converter provided by user. + Object result = SnippetObjectConverterManager.getInstance().objectToJson(data); + if (result != null) { + return result; + } return data.toString(); } @@ -195,8 +202,4 @@ public class JsonBuilder { private static JSONObject buildUri(Uri uri) throws JSONException { return new JSONObject().put("Uri", build((uri != null) ? uri.toString() : "")); } - - private JsonBuilder() { - // This is a utility class. - } } |