j.smali
.class public final Lcom/google/gson/internal/a/j;
.super Ljava/lang/Object;
.source "ReflectiveTypeAdapterFactory.java"
# interfaces
.implements Lcom/google/gson/o;
# instance fields
.field private final bfi:Lcom/google/gson/internal/b;
.field private final bgm:Lcom/google/gson/c;
.field private final bgn:Lcom/google/gson/internal/c;
# direct methods
.method public constructor <init>(Lcom/google/gson/internal/b;Lcom/google/gson/c;Lcom/google/gson/internal/c;)V
.registers 4
.prologue
.line 55
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 56
iput-object p1, p0, Lcom/google/gson/internal/a/j;->bfi:Lcom/google/gson/internal/b;
.line 57
iput-object p2, p0, Lcom/google/gson/internal/a/j;->bgm:Lcom/google/gson/c;
.line 58
iput-object p3, p0, Lcom/google/gson/internal/a/j;->bgn:Lcom/google/gson/internal/c;
.line 60
return-void
.end method
.method private a(Ljava/lang/reflect/Field;)Ljava/util/List;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Field;",
")",
"Ljava/util/List",
"<",
"Ljava/lang/String;",
">;"
}
.end annotation
.prologue
.line 72
const-class v0, Lcom/google/gson/a/b;
invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/google/gson/a/b;
.line 73
if-nez v0, :cond_15
.line 74
iget-object v0, p0, Lcom/google/gson/internal/a/j;->bgm:Lcom/google/gson/c;
invoke-interface {v0, p1}, Lcom/google/gson/c;->translateName(Ljava/lang/reflect/Field;)Ljava/lang/String;
move-result-object v0
.line 75
invoke-static {v0}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
.line 89
:cond_14
:goto_14
return-object v0
.line 78
:cond_15
invoke-interface {v0}, Lcom/google/gson/a/b;->value()Ljava/lang/String;
move-result-object v1
.line 79
invoke-interface {v0}, Lcom/google/gson/a/b;->Ac()[Ljava/lang/String;
move-result-object v2
.line 80
array-length v0, v2
if-nez v0, :cond_25
.line 81
invoke-static {v1}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
goto :goto_14
.line 84
:cond_25
new-instance v0, Ljava/util/ArrayList;
array-length v3, v2
add-int/lit8 v3, v3, 0x1
invoke-direct {v0, v3}, Ljava/util/ArrayList;-><init>(I)V
.line 85
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 86
array-length v3, v2
const/4 v1, 0x0
:goto_32
if-ge v1, v3, :cond_14
aget-object v4, v2, v1
.line 87
invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 86
add-int/lit8 v1, v1, 0x1
goto :goto_32
.end method
.method private a(Lcom/google/gson/d;Lcom/google/gson/b/a;Ljava/lang/Class;)Ljava/util/Map;
.registers 25
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/gson/d;",
"Lcom/google/gson/b/a",
"<*>;",
"Ljava/lang/Class",
"<*>;)",
"Ljava/util/Map",
"<",
"Ljava/lang/String;",
"Lcom/google/gson/internal/a/l;",
">;"
}
.end annotation
.prologue
.line 143
new-instance v12, Ljava/util/LinkedHashMap;
invoke-direct {v12}, Ljava/util/LinkedHashMap;-><init>()V
.line 144
invoke-virtual/range {p3 .. p3}, Ljava/lang/Class;->isInterface()Z
move-result v1
if-eqz v1, :cond_d
move-object v1, v12
.line 177
:goto_c
return-object v1
.line 2101
:cond_d
move-object/from16 v0, p2
iget-object v15, v0, Lcom/google/gson/b/a;->type:Ljava/lang/reflect/Type;
.line 149
:goto_11
const-class v1, Ljava/lang/Object;
move-object/from16 v0, p3
if-eq v0, v1, :cond_e8
.line 150
invoke-virtual/range {p3 .. p3}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;
move-result-object v16
.line 151
move-object/from16 v0, v16
array-length v0, v0
move/from16 v17, v0
const/4 v1, 0x0
move v14, v1
:goto_22
move/from16 v0, v17
if-ge v14, v0, :cond_ce
aget-object v5, v16, v14
.line 152
const/4 v1, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v5, v1}, Lcom/google/gson/internal/a/j;->a(Ljava/lang/reflect/Field;Z)Z
move-result v3
.line 153
const/4 v1, 0x0
move-object/from16 v0, p0
invoke-direct {v0, v5, v1}, Lcom/google/gson/internal/a/j;->a(Ljava/lang/reflect/Field;Z)Z
move-result v4
.line 154
if-nez v3, :cond_3a
if-eqz v4, :cond_c9
.line 157
:cond_3a
const/4 v1, 0x1
invoke-virtual {v5, v1}, Ljava/lang/reflect/Field;->setAccessible(Z)V
.line 3101
move-object/from16 v0, p2
iget-object v1, v0, Lcom/google/gson/b/a;->type:Ljava/lang/reflect/Type;
.line 158
invoke-virtual {v5}, Ljava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;
move-result-object v2
move-object/from16 v0, p3
invoke-static {v1, v0, v2}, Lcom/google/gson/internal/$Gson$Types;->resolve(Ljava/lang/reflect/Type;Ljava/lang/Class;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v18
.line 159
move-object/from16 v0, p0
invoke-direct {v0, v5}, Lcom/google/gson/internal/a/j;->a(Ljava/lang/reflect/Field;)Ljava/util/List;
move-result-object v19
.line 160
const/4 v11, 0x0
.line 161
const/4 v1, 0x0
invoke-interface/range {v19 .. v19}, Ljava/util/List;->size()I
move-result v20
move v13, v1
:goto_59
move/from16 v0, v20
if-ge v13, v0, :cond_a8
.line 162
move-object/from16 v0, v19
invoke-interface {v0, v13}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
.line 163
if-eqz v13, :cond_68
const/4 v3, 0x0
.line 165
:cond_68
invoke-static/range {v18 .. v18}, Lcom/google/gson/b/a;->d(Ljava/lang/reflect/Type;)Lcom/google/gson/b/a;
move-result-object v9
.line 4094
iget-object v1, v9, Lcom/google/gson/b/a;->bhL:Ljava/lang/Class;
.line 3106
invoke-static {v1}, Lcom/google/gson/internal/j;->c(Ljava/lang/reflect/Type;)Z
move-result v10
.line 3108
const-class v1, Lcom/google/gson/a/a;
invoke-virtual {v5, v1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v1
check-cast v1, Lcom/google/gson/a/a;
.line 3109
const/4 v7, 0x0
.line 3110
if-eqz v1, :cond_87
.line 3111
move-object/from16 v0, p0
iget-object v6, v0, Lcom/google/gson/internal/a/j;->bfi:Lcom/google/gson/internal/b;
move-object/from16 v0, p1
invoke-static {v6, v0, v9, v1}, Lcom/google/gson/internal/a/e;->a(Lcom/google/gson/internal/b;Lcom/google/gson/d;Lcom/google/gson/b/a;Lcom/google/gson/a/a;)Lcom/google/gson/n;
move-result-object v7
.line 3114
:cond_87
if-eqz v7, :cond_a6
const/4 v6, 0x1
.line 3115
:goto_8a
if-nez v7, :cond_92
move-object/from16 v0, p1
invoke-virtual {v0, v9}, Lcom/google/gson/d;->a(Lcom/google/gson/b/a;)Lcom/google/gson/n;
move-result-object v7
.line 3118
:cond_92
new-instance v1, Lcom/google/gson/internal/a/j$1;
move-object/from16 v8, p1
invoke-direct/range {v1 .. v10}, Lcom/google/gson/internal/a/j$1;-><init>(Ljava/lang/String;ZZLjava/lang/reflect/Field;ZLcom/google/gson/n;Lcom/google/gson/d;Lcom/google/gson/b/a;Z)V
.line 166
invoke-interface {v12, v2, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/gson/internal/a/l;
.line 167
if-nez v11, :cond_eb
.line 161
:goto_a1
add-int/lit8 v2, v13, 0x1
move v13, v2
move-object v11, v1
goto :goto_59
.line 3114
:cond_a6
const/4 v6, 0x0
goto :goto_8a
.line 169
:cond_a8
if-eqz v11, :cond_c9
.line 170
new-instance v1, Ljava/lang/IllegalArgumentException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " declares multiple JSON fields named "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
iget-object v3, v11, Lcom/google/gson/internal/a/l;->name:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.line 151
:cond_c9
add-int/lit8 v1, v14, 0x1
move v14, v1
goto/16 :goto_22
.line 4101
:cond_ce
move-object/from16 v0, p2
iget-object v1, v0, Lcom/google/gson/b/a;->type:Ljava/lang/reflect/Type;
.line 174
invoke-virtual/range {p3 .. p3}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
move-result-object v2
move-object/from16 v0, p3
invoke-static {v1, v0, v2}, Lcom/google/gson/internal/$Gson$Types;->resolve(Ljava/lang/reflect/Type;Ljava/lang/Class;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v1
invoke-static {v1}, Lcom/google/gson/b/a;->d(Ljava/lang/reflect/Type;)Lcom/google/gson/b/a;
move-result-object p2
.line 5094
move-object/from16 v0, p2
iget-object v0, v0, Lcom/google/gson/b/a;->bhL:Ljava/lang/Class;
move-object/from16 p3, v0
goto/16 :goto_11
:cond_e8
move-object v1, v12
.line 177
goto/16 :goto_c
:cond_eb
move-object v1, v11
goto :goto_a1
.end method
.method private a(Ljava/lang/reflect/Field;Z)Z
.registers 11
.prologue
const/4 v3, 0x0
const/4 v2, 0x1
.line 63
iget-object v4, p0, Lcom/google/gson/internal/a/j;->bgn:Lcom/google/gson/internal/c;
.line 1067
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v4, v0, p2}, Lcom/google/gson/internal/c;->a(Ljava/lang/Class;Z)Z
move-result v0
if-nez v0, :cond_8c
.line 1150
iget v0, v4, Lcom/google/gson/internal/c;->bfA:I
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getModifiers()I
move-result v1
and-int/2addr v0, v1
if-eqz v0, :cond_1c
move v0, v2
.line 1067
:goto_18
if-nez v0, :cond_8c
move v0, v2
:goto_1b
return v0
.line 1154
:cond_1c
iget-wide v0, v4, Lcom/google/gson/internal/c;->bfz:D
const-wide/high16 v6, -0x4010000000000000L # -1.0
cmpl-double v0, v0, v6
if-eqz v0, :cond_3c
const-class v0, Lcom/google/gson/a/c;
.line 1155
invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/google/gson/a/c;
const-class v1, Lcom/google/gson/a/d;
invoke-virtual {p1, v1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v1
check-cast v1, Lcom/google/gson/a/d;
invoke-virtual {v4, v0, v1}, Lcom/google/gson/internal/c;->a(Lcom/google/gson/a/c;Lcom/google/gson/a/d;)Z
move-result v0
if-nez v0, :cond_3c
move v0, v2
.line 1156
goto :goto_18
.line 1159
:cond_3c
invoke-virtual {p1}, Ljava/lang/reflect/Field;->isSynthetic()Z
move-result v0
if-eqz v0, :cond_44
move v0, v2
.line 1160
goto :goto_18
.line 1170
:cond_44
iget-boolean v0, v4, Lcom/google/gson/internal/c;->bfB:Z
if-nez v0, :cond_54
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
invoke-static {v0}, Lcom/google/gson/internal/c;->isInnerClass(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_54
move v0, v2
.line 1171
goto :goto_18
.line 1174
:cond_54
invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
move-result-object v0
invoke-static {v0}, Lcom/google/gson/internal/c;->r(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_60
move v0, v2
.line 1175
goto :goto_18
.line 1178
:cond_60
if-eqz p2, :cond_87
iget-object v0, v4, Lcom/google/gson/internal/c;->bfC:Ljava/util/List;
.line 1179
:goto_64
invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
move-result v1
if-nez v1, :cond_8a
.line 1180
new-instance v1, Lcom/google/gson/b;
invoke-direct {v1, p1}, Lcom/google/gson/b;-><init>(Ljava/lang/reflect/Field;)V
.line 1181
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_73
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_8a
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/gson/a;
.line 1182
invoke-interface {v0}, Lcom/google/gson/a;->zT()Z
move-result v0
if-eqz v0, :cond_73
move v0, v2
.line 1183
goto :goto_18
.line 1178
:cond_87
iget-object v0, v4, Lcom/google/gson/internal/c;->bfD:Ljava/util/List;
goto :goto_64
:cond_8a
move v0, v3
.line 1188
goto :goto_18
:cond_8c
move v0, v3
.line 63
goto :goto_1b
.end method
# virtual methods
.method public final a(Lcom/google/gson/d;Lcom/google/gson/b/a;)Lcom/google/gson/n;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/google/gson/d;",
"Lcom/google/gson/b/a",
"<TT;>;)",
"Lcom/google/gson/n",
"<TT;>;"
}
.end annotation
.prologue
.line 93
.line 2094
iget-object v1, p2, Lcom/google/gson/b/a;->bhL:Ljava/lang/Class;
.line 95
const-class v0, Ljava/lang/Object;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-nez v0, :cond_c
.line 96
const/4 v0, 0x0
.line 100
:goto_b
return-object v0
.line 99
:cond_c
iget-object v0, p0, Lcom/google/gson/internal/a/j;->bfi:Lcom/google/gson/internal/b;
invoke-virtual {v0, p2}, Lcom/google/gson/internal/b;->b(Lcom/google/gson/b/a;)Lcom/google/gson/internal/i;
move-result-object v2
.line 100
new-instance v0, Lcom/google/gson/internal/a/k;
invoke-direct {p0, p1, p2, v1}, Lcom/google/gson/internal/a/j;->a(Lcom/google/gson/d;Lcom/google/gson/b/a;Ljava/lang/Class;)Ljava/util/Map;
move-result-object v1
invoke-direct {v0, v2, v1}, Lcom/google/gson/internal/a/k;-><init>(Lcom/google/gson/internal/i;Ljava/util/Map;)V
goto :goto_b
.end method