From c3d0f200b352f411b9ebe45c3bf49d4328b2c51f Mon Sep 17 00:00:00 2001 From: Inderjeet Singh Date: Sat, 8 Mar 2014 19:12:24 +0000 Subject: [PATCH] Fixed a bug where an inner static class was incorrectly marked as non-static while creating parameterized types. --- .../main/java/com/google/gson/internal/$Gson$Types.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gson/src/main/java/com/google/gson/internal/$Gson$Types.java b/gson/src/main/java/com/google/gson/internal/$Gson$Types.java index 044a0ee0..b199f5af 100644 --- a/gson/src/main/java/com/google/gson/internal/$Gson$Types.java +++ b/gson/src/main/java/com/google/gson/internal/$Gson$Types.java @@ -23,6 +23,7 @@ import java.io.Serializable; import java.lang.reflect.Array; import java.lang.reflect.GenericArrayType; import java.lang.reflect.GenericDeclaration; +import java.lang.reflect.Modifier; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.lang.reflect.TypeVariable; @@ -440,8 +441,10 @@ public final class $Gson$Types { // require an owner type if the raw type needs it if (rawType instanceof Class) { Class rawTypeAsClass = (Class) rawType; - checkArgument(ownerType != null || rawTypeAsClass.getEnclosingClass() == null); - checkArgument(ownerType == null || rawTypeAsClass.getEnclosingClass() != null); + boolean isStaticOrTopLevelClass = Modifier.isStatic(rawTypeAsClass.getModifiers()) + || rawTypeAsClass.getEnclosingClass() == null; + checkArgument(ownerType != null || isStaticOrTopLevelClass); + checkArgument(ownerType == null || !isStaticOrTopLevelClass); } this.ownerType = ownerType == null ? null : canonicalize(ownerType);