From b922500c239406c755149e9a9ca1164a2e2e2c90 Mon Sep 17 00:00:00 2001 From: Inderjeet Singh Date: Wed, 3 Aug 2011 01:25:02 +0000 Subject: [PATCH] For efficiency, calling setAccessible on all fields of a class in one method call instead of doing it individually. --- .../google/gson/internal/bind/ReflectiveTypeAdapter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapter.java b/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapter.java index a3efca06..e8774c2a 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapter.java +++ b/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapter.java @@ -22,6 +22,7 @@ import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import java.io.IOException; +import java.lang.reflect.AccessibleObject; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Type; @@ -143,11 +144,12 @@ public final class ReflectiveTypeAdapter extends TypeAdapter { Map result = new LinkedHashMap(); Type declaredType = type.getType(); while (raw != Object.class) { - for (Field field : raw.getDeclaredFields()) { + Field[] fields = raw.getDeclaredFields(); + AccessibleObject.setAccessible(fields, true); + for (Field field : fields) { boolean serialize = serializeField(raw, field, declaredType); boolean deserialize = deserializeField(raw, field, declaredType); if (serialize || deserialize) { - field.setAccessible(true); // TODO: don't call setAccessible unless necessary Type fieldType = $Gson$Types.resolve(type.getType(), raw, field.getGenericType()); BoundField boundField = createBoundField(context, field, TypeToken.get(fieldType), serialize, deserialize); result.put(boundField.name, boundField);