diff --git a/gson/src/main/java/com/google/gson/JsonArrayDeserializationVisitor.java b/gson/src/main/java/com/google/gson/JsonArrayDeserializationVisitor.java index baaaa3a7..157a7acd 100644 --- a/gson/src/main/java/com/google/gson/JsonArrayDeserializationVisitor.java +++ b/gson/src/main/java/com/google/gson/JsonArrayDeserializationVisitor.java @@ -106,10 +106,6 @@ final class JsonArrayDeserializationVisitor extends JsonDeserializationVisito throw new UnsupportedOperationException(); } - public void visitCollectionField(Field f, Type typeOfF, Object obj) { - throw new UnsupportedOperationException(); - } - public void visitObjectField(Field f, Type typeOfF, Object obj) { throw new UnsupportedOperationException(); } diff --git a/gson/src/main/java/com/google/gson/JsonObjectDeserializationVisitor.java b/gson/src/main/java/com/google/gson/JsonObjectDeserializationVisitor.java index 0e032984..19f7627c 100644 --- a/gson/src/main/java/com/google/gson/JsonObjectDeserializationVisitor.java +++ b/gson/src/main/java/com/google/gson/JsonObjectDeserializationVisitor.java @@ -76,32 +76,6 @@ final class JsonObjectDeserializationVisitor extends JsonDeserializationVisit } } - @SuppressWarnings("unchecked") - public void visitCollectionField(Field f, Type typeOfF, Object obj) { - try { - JsonObject jsonObject = json.getAsJsonObject(); - String fName = getFieldName(f); - JsonArray jsonArray = (JsonArray) jsonObject.get(fName); - if (jsonArray != null) { - Collection collection = (Collection) objectConstructor.construct(typeOfF); - f.set(obj, collection); - Type childType = TypeUtils.getActualTypeForFirstTypeVariable(typeOfF); - for (JsonElement jsonChild : jsonArray) { - Object child = visitChild(childType, jsonChild); - if (childType == Object.class) { - throw new JsonParseException(fName + - " can not be a raw collection. Try making it a genericized collection instead"); - } - collection.add(child); - } - } else { - f.set(obj, null); - } - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } - public void visitArrayField(Field f, Type typeOfF, Object obj) { try { JsonObject jsonObject = json.getAsJsonObject(); diff --git a/gson/src/main/java/com/google/gson/JsonPrimitiveDeserializationVisitor.java b/gson/src/main/java/com/google/gson/JsonPrimitiveDeserializationVisitor.java index 5c322be7..39d1988e 100644 --- a/gson/src/main/java/com/google/gson/JsonPrimitiveDeserializationVisitor.java +++ b/gson/src/main/java/com/google/gson/JsonPrimitiveDeserializationVisitor.java @@ -71,11 +71,6 @@ final class JsonPrimitiveDeserializationVisitor extends JsonDeserializationVi throw new IllegalStateException(); } - public void visitCollectionField(Field f, Type typeOfF, Object obj) { - // should not be called since this case should invoke JsonArrayDeserializationVisitor - throw new IllegalStateException(); - } - public void visitArrayField(Field f, Type typeOfF, Object obj) { // should not be called since this case should invoke JsonArrayDeserializationVisitor throw new IllegalStateException(); diff --git a/gson/src/main/java/com/google/gson/JsonSerializationVisitor.java b/gson/src/main/java/com/google/gson/JsonSerializationVisitor.java index 09af466f..c948cf79 100644 --- a/gson/src/main/java/com/google/gson/JsonSerializationVisitor.java +++ b/gson/src/main/java/com/google/gson/JsonSerializationVisitor.java @@ -77,20 +77,6 @@ final class JsonSerializationVisitor implements ObjectNavigator.Visitor { } } - public void visitCollectionField(Field f, Type typeOfF, Object obj) { - if (isFieldNull(f, obj)) { - if (serializeNulls) { - addChildAsElement(f, JsonNull.INSTANCE); - } - } else { - if (typeOfF == null) { - throw new RuntimeException("Can not handle non-generic collections"); - } - Object collection = getFieldValue(f, obj); - addAsChildOfObject(f, typeOfF, collection); - } - } - @SuppressWarnings("unchecked") public void visitEnum(Object obj, Type objType) { JsonSerializer serializer = serializers.getHandlerFor(objType); diff --git a/gson/src/main/java/com/google/gson/ObjectNavigator.java b/gson/src/main/java/com/google/gson/ObjectNavigator.java index 97da40d7..65710a1e 100644 --- a/gson/src/main/java/com/google/gson/ObjectNavigator.java +++ b/gson/src/main/java/com/google/gson/ObjectNavigator.java @@ -54,11 +54,6 @@ final class ObjectNavigator { */ void visitObjectField(Field f, Type typeOfF, Object obj); - /** - * This is called to visit a field of type Collection of the current object - */ - void visitCollectionField(Field f, Type typeOfF, Object obj); - /** * This is called to visit an array field of the current object */ @@ -165,12 +160,8 @@ final class ObjectNavigator { boolean visitedWithCustomHandler = visitor.visitFieldUsingCustomHandler(f, actualTypeOfField, obj); if (!visitedWithCustomHandler) { - if (fieldTypeInfo.isCollectionOrArray()) { - if (fieldTypeInfo.isArray()) { - visitor.visitArrayField(f, actualTypeOfField, obj); - } else { // must be Collection - visitor.visitCollectionField(f, actualTypeOfField, obj); - } + if (fieldTypeInfo.isArray()) { + visitor.visitArrayField(f, actualTypeOfField, obj); } else if (fieldTypeInfo.isPrimitiveOrStringAndNotAnArray()) { visitor.visitPrimitiveField(f, actualTypeOfField, obj); } else {