aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoel.leitch@gmail.com <joel.leitch@gmail.com@2534bb62-2c4b-0410-85e8-b5006b95c4ae>2012-12-20 07:57:17 +0000
committerjoel.leitch@gmail.com <joel.leitch@gmail.com@2534bb62-2c4b-0410-85e8-b5006b95c4ae>2012-12-20 07:57:17 +0000
commitebba6e2c8f7bc01423efb0f3f429eee80453e83f (patch)
tree6677d298007ca2cf51a9c26911dfa599c77319ec
parentae7d132db375120494a18e6fb5046ecb69a771a7 (diff)
downloadandroid_external_gson-ebba6e2c8f7bc01423efb0f3f429eee80453e83f.tar.gz
android_external_gson-ebba6e2c8f7bc01423efb0f3f429eee80453e83f.tar.bz2
android_external_gson-ebba6e2c8f7bc01423efb0f3f429eee80453e83f.zip
Make JsonElement TypeAdapterFactory a type hierarchy factory.
git-svn-id: http://google-gson.googlecode.com/svn/trunk/gson@1218 2534bb62-2c4b-0410-85e8-b5006b95c4ae
-rw-r--r--src/main/java/com/google/gson/internal/bind/TypeAdapters.java2
-rw-r--r--src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java24
2 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/com/google/gson/internal/bind/TypeAdapters.java b/src/main/java/com/google/gson/internal/bind/TypeAdapters.java
index eabfe831..d32458cc 100644
--- a/src/main/java/com/google/gson/internal/bind/TypeAdapters.java
+++ b/src/main/java/com/google/gson/internal/bind/TypeAdapters.java
@@ -703,7 +703,7 @@ public final class TypeAdapters {
};
public static final TypeAdapterFactory JSON_ELEMENT_FACTORY
- = newFactory(JsonElement.class, JSON_ELEMENT);
+ = newTypeHierarchyFactory(JsonElement.class, JSON_ELEMENT);
private static final class EnumTypeAdapter<T extends Enum<T>> extends TypeAdapter<T> {
private final Map<String, T> nameToConstant = new HashMap<String, T>();
diff --git a/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java b/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
index 9b27ef15..d9bb9492 100644
--- a/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
+++ b/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
@@ -554,17 +554,23 @@ public class DefaultTypeAdaptersTest extends TestCase {
public void testJsonPrimitiveDeserialization() {
assertEquals(new JsonPrimitive(5), gson.fromJson("5", JsonElement.class));
+ assertEquals(new JsonPrimitive(5), gson.fromJson("5", JsonPrimitive.class));
assertEquals(new JsonPrimitive(true), gson.fromJson("true", JsonElement.class));
+ assertEquals(new JsonPrimitive(true), gson.fromJson("true", JsonPrimitive.class));
assertEquals(new JsonPrimitive("foo"), gson.fromJson("\"foo\"", JsonElement.class));
+ assertEquals(new JsonPrimitive("foo"), gson.fromJson("\"foo\"", JsonPrimitive.class));
assertEquals(new JsonPrimitive('a'), gson.fromJson("\"a\"", JsonElement.class));
+ assertEquals(new JsonPrimitive('a'), gson.fromJson("\"a\"", JsonPrimitive.class));
}
public void testJsonNullSerialization() {
assertEquals("null", gson.toJson(JsonNull.INSTANCE, JsonElement.class));
+ assertEquals("null", gson.toJson(JsonNull.INSTANCE, JsonNull.class));
}
public void testNullJsonElementSerialization() {
assertEquals("null", gson.toJson(null, JsonElement.class));
+ assertEquals("null", gson.toJson(null, JsonNull.class));
}
public void testJsonArraySerialization() {
@@ -575,12 +581,15 @@ public class DefaultTypeAdaptersTest extends TestCase {
assertEquals("[1,2,3]", gson.toJson(array, JsonElement.class));
}
- public void testJsonArrayDeerialization() {
+ public void testJsonArrayDeserialization() {
JsonArray array = new JsonArray();
array.add(new JsonPrimitive(1));
array.add(new JsonPrimitive(2));
array.add(new JsonPrimitive(3));
- assertEquals(array, gson.fromJson("[1,2,3]", JsonElement.class));
+
+ String json = "[1,2,3]";
+ assertEquals(array, gson.fromJson(json, JsonElement.class));
+ assertEquals(array, gson.fromJson(json, JsonArray.class));
}
public void testJsonObjectSerialization() {
@@ -595,16 +604,17 @@ public class DefaultTypeAdaptersTest extends TestCase {
object.add("foo", new JsonPrimitive(1));
object.add("bar", new JsonPrimitive(2));
- JsonElement actual = gson.fromJson("{\"foo\":1,\"bar\":2}", JsonElement.class);
+ String json = "{\"foo\":1,\"bar\":2}";
+ JsonElement actual = gson.fromJson(json, JsonElement.class);
assertEquals(object, actual);
- }
- public void testJsonNullDeerialization() {
- assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonElement.class));
+ JsonObject actualObj = gson.fromJson(json, JsonObject.class);
+ assertEquals(object, actualObj);
}
- public void testNullJsonElementDeserialization() {
+ public void testJsonNullDeserialization() {
assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonElement.class));
+ assertEquals(JsonNull.INSTANCE, gson.fromJson("null", JsonNull.class));
}
private static class ClassWithBigDecimal {