aboutsummaryrefslogtreecommitdiff
path: root/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java
diff options
context:
space:
mode:
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.java21
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.
- }
}