Fixed issue 126 by ensuring that parameterized type deduction is not done for transient fields.
diff --git a/gson/src/main/java/com/google/gson/ObjectNavigator.java b/gson/src/main/java/com/google/gson/ObjectNavigator.java
index fccafe8..dd08a2b 100644
--- a/gson/src/main/java/com/google/gson/ObjectNavigator.java
+++ b/gson/src/main/java/com/google/gson/ObjectNavigator.java
@@ -133,11 +133,11 @@
Field[] fields = clazz.getDeclaredFields();
AccessibleObject.setAccessible(fields, true);
for (Field f : fields) {
- TypeInfo fieldTypeInfo = TypeInfoFactory.getTypeInfoForField(f, objType);
- Type actualTypeOfField = fieldTypeInfo.getActualType();
if (exclusionStrategy.shouldSkipField(f)) {
continue; // skip
} else {
+ TypeInfo fieldTypeInfo = TypeInfoFactory.getTypeInfoForField(f, objType);
+ Type actualTypeOfField = fieldTypeInfo.getActualType();
boolean visitedWithCustomHandler =
visitor.visitFieldUsingCustomHandler(f, actualTypeOfField, obj);
if (!visitedWithCustomHandler) {
diff --git a/gson/src/test/java/com/google/gson/common/TestTypes.java b/gson/src/test/java/com/google/gson/common/TestTypes.java
index 38d37b4..808f3e0 100644
--- a/gson/src/test/java/com/google/gson/common/TestTypes.java
+++ b/gson/src/test/java/com/google/gson/common/TestTypes.java
@@ -219,7 +219,8 @@
}
}
- public static class ClassWithTransientFields {
+ public static class ClassWithTransientFields<T> {
+ public transient T transientT;
public final transient long transientLongValue;
private final long[] longValue;