w.smali
.class public final Lcom/alibaba/fastjson/parser/deserializer/w;
.super Lcom/alibaba/fastjson/parser/deserializer/m;
.source "SourceFile"
# direct methods
.method public constructor <init>(Lcom/alibaba/fastjson/parser/i;Ljava/lang/Class;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/alibaba/fastjson/parser/i;",
"Ljava/lang/Class<",
"*>;)V"
}
.end annotation
invoke-direct {p0, p1, p2, p2}, Lcom/alibaba/fastjson/parser/deserializer/m;-><init>(Lcom/alibaba/fastjson/parser/i;Ljava/lang/Class;Ljava/lang/reflect/Type;)V
return-void
.end method
# virtual methods
.method public final b()I
.registers 2
const/16 v0, 0xc
return v0
.end method
.method public final c(Lcom/alibaba/fastjson/parser/a;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
.registers 16
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/alibaba/fastjson/parser/a;",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Object;",
")TT;"
}
.end annotation
.line 1
iget-object p3, p1, Lcom/alibaba/fastjson/parser/a;->f:Lcom/alibaba/fastjson/parser/c;
.line 2
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v0
const/4 v1, 0x0
const/16 v2, 0x8
if-ne v0, v2, :cond_f
.line 3
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->o()V
return-object v1
.line 4
:cond_f
iget v0, p1, Lcom/alibaba/fastjson/parser/a;->k:I
const/4 v3, 0x2
const-string v4, "syntax error"
if-ne v0, v3, :cond_1a
const/4 v0, 0x0
.line 5
iput v0, p1, Lcom/alibaba/fastjson/parser/a;->k:I
goto :goto_22
.line 6
:cond_1a
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v0
const/16 v3, 0xc
if-ne v0, v3, :cond_118
:goto_22
if-eqz p2, :cond_33
.line 7
instance-of v0, p2, Ljava/lang/Class;
if-eqz v0, :cond_33
.line 8
check-cast p2, Ljava/lang/Class;
.line 9
const-class v0, Ljava/lang/Throwable;
invoke-virtual {v0, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v0
if-eqz v0, :cond_33
goto :goto_34
:cond_33
move-object p2, v1
.line 10
:goto_34
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
move-object v3, v1
move-object v5, v3
move-object v6, v5
.line 11
:cond_3c
:goto_3c
iget-object v7, p1, Lcom/alibaba/fastjson/parser/a;->b:Lcom/alibaba/fastjson/parser/j;
.line 12
invoke-interface {p3, v7}, Lcom/alibaba/fastjson/parser/c;->N0(Lcom/alibaba/fastjson/parser/j;)Ljava/lang/String;
move-result-object v7
const/16 v8, 0xd
const/16 v9, 0x10
if-nez v7, :cond_62
.line 13
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v10
if-ne v10, v8, :cond_53
.line 14
invoke-interface {p3, v9}, Lcom/alibaba/fastjson/parser/c;->C(I)V
goto/16 :goto_de
.line 15
:cond_53
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v10
if-ne v10, v9, :cond_62
.line 16
sget-object v10, Lcom/alibaba/fastjson/parser/b;->AllowArbitraryCommas:Lcom/alibaba/fastjson/parser/b;
invoke-interface {p3, v10}, Lcom/alibaba/fastjson/parser/c;->h(Lcom/alibaba/fastjson/parser/b;)Z
move-result v10
if-eqz v10, :cond_62
goto :goto_3c
:cond_62
const/4 v10, 0x4
.line 17
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->x()V
.line 18
sget-object v11, Lcom/alibaba/fastjson/a;->c:Ljava/lang/String;
invoke-virtual {v11, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v11
if-eqz v11, :cond_8a
.line 19
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result p2
if-ne p2, v10, :cond_84
.line 20
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->K0()Ljava/lang/String;
move-result-object p2
.line 21
iget-object v7, p1, Lcom/alibaba/fastjson/parser/a;->c:Lcom/alibaba/fastjson/parser/i;
.line 22
const-class v10, Ljava/lang/Throwable;
invoke-virtual {v7, p2, v10}, Lcom/alibaba/fastjson/parser/i;->a(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Class;
move-result-object p2
.line 23
invoke-interface {p3, v9}, Lcom/alibaba/fastjson/parser/c;->C(I)V
goto :goto_d5
.line 24
:cond_84
new-instance p1, Lcom/alibaba/fastjson/d;
invoke-direct {p1, v4}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V
throw p1
:cond_8a
const-string v11, "message"
.line 25
invoke-virtual {v11, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v11
if-eqz v11, :cond_ae
.line 26
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v5
if-ne v5, v2, :cond_9a
move-object v5, v1
goto :goto_a4
.line 27
:cond_9a
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v5
if-ne v5, v10, :cond_a8
.line 28
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->K0()Ljava/lang/String;
move-result-object v5
.line 29
:goto_a4
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->o()V
goto :goto_d5
.line 30
:cond_a8
new-instance p1, Lcom/alibaba/fastjson/d;
invoke-direct {p1, v4}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V
throw p1
:cond_ae
const-string v10, "cause"
.line 31
invoke-virtual {v10, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v11
if-eqz v11, :cond_bd
.line 32
invoke-virtual {p0, p1, v1, v10}, Lcom/alibaba/fastjson/parser/deserializer/w;->c(Lcom/alibaba/fastjson/parser/a;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/Throwable;
goto :goto_d5
:cond_bd
const-string v10, "stackTrace"
.line 33
invoke-virtual {v10, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v10
if-eqz v10, :cond_ce
.line 34
const-class v6, [Ljava/lang/StackTraceElement;
.line 35
invoke-virtual {p1, v6, v1}, Lcom/alibaba/fastjson/parser/a;->J(Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v6
.line 36
check-cast v6, [Ljava/lang/StackTraceElement;
goto :goto_d5
.line 37
:cond_ce
invoke-virtual {p1, v1}, Lcom/alibaba/fastjson/parser/a;->D(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v10
.line 38
invoke-virtual {v0, v7, v10}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 39
:goto_d5
invoke-interface {p3}, Lcom/alibaba/fastjson/parser/c;->M0()I
move-result v7
if-ne v7, v8, :cond_3c
.line 40
invoke-interface {p3, v9}, Lcom/alibaba/fastjson/parser/c;->C(I)V
:goto_de
if-nez p2, :cond_e6
.line 41
new-instance p1, Ljava/lang/Exception;
invoke-direct {p1, v5, v3}, Ljava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_f9
.line 42
:cond_e6
const-class p1, Ljava/lang/Throwable;
invoke-virtual {p1, p2}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p1
if-eqz p1, :cond_108
.line 43
:try_start_ee
invoke-virtual {p0, v5, v3, p2}, Lcom/alibaba/fastjson/parser/deserializer/w;->l(Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/Throwable;
move-result-object p1
if-nez p1, :cond_f9
.line 44
new-instance p1, Ljava/lang/Exception;
invoke-direct {p1, v5, v3}, Ljava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_f9
.catch Ljava/lang/Exception; {:try_start_ee .. :try_end_f9} :catch_ff
:cond_f9
:goto_f9
if-eqz v6, :cond_fe
.line 45
invoke-virtual {p1, v6}, Ljava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V
:cond_fe
return-object p1
:catch_ff
move-exception p1
.line 46
new-instance p2, Lcom/alibaba/fastjson/d;
const-string p3, "create instance error"
invoke-direct {p2, p3, p1}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.line 47
:cond_108
new-instance p1, Lcom/alibaba/fastjson/d;
const-string p3, "type not match, not Throwable. "
.line 48
invoke-static {p3}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p3
.line 49
invoke-static {p2, p3}, Landroidx/appcompat/view/f;->c(Ljava/lang/Class;Ljava/lang/StringBuilder;)Ljava/lang/String;
move-result-object p2
.line 50
invoke-direct {p1, p2}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V
throw p1
.line 51
:cond_118
new-instance p1, Lcom/alibaba/fastjson/d;
invoke-direct {p1, v4}, Lcom/alibaba/fastjson/d;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public final l(Ljava/lang/String;Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/Throwable;
.registers 18
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/lang/Throwable;",
"Ljava/lang/Class<",
"*>;)",
"Ljava/lang/Throwable;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 1
const-class v0, Ljava/lang/String;
.line 2
invoke-virtual/range {p3 .. p3}, Ljava/lang/Class;->getConstructors()[Ljava/lang/reflect/Constructor;
move-result-object v1
array-length v2, v1
const/4 v3, 0x0
const/4 v4, 0x0
move-object v6, v4
move-object v7, v6
move-object v8, v7
const/4 v5, 0x0
:goto_d
const/4 v9, 0x2
const/4 v10, 0x1
if-ge v5, v2, :cond_36
aget-object v11, v1, v5
.line 3
invoke-virtual {v11}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;
move-result-object v12
.line 4
array-length v13, v12
if-nez v13, :cond_1c
move-object v8, v11
goto :goto_33
.line 5
:cond_1c
array-length v13, v12
if-ne v13, v10, :cond_25
aget-object v13, v12, v3
if-ne v13, v0, :cond_25
move-object v7, v11
goto :goto_33
.line 6
:cond_25
array-length v13, v12
if-ne v13, v9, :cond_33
aget-object v9, v12, v3
if-ne v9, v0, :cond_33
aget-object v9, v12, v10
const-class v10, Ljava/lang/Throwable;
if-ne v9, v10, :cond_33
move-object v6, v11
:cond_33
:goto_33
add-int/lit8 v5, v5, 0x1
goto :goto_d
:cond_36
if-eqz v6, :cond_45
new-array v0, v9, [Ljava/lang/Object;
aput-object p1, v0, v3
aput-object p2, v0, v10
.line 7
invoke-virtual {v6, v0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Throwable;
return-object v0
:cond_45
if-eqz v7, :cond_52
new-array v0, v10, [Ljava/lang/Object;
aput-object p1, v0, v3
.line 8
invoke-virtual {v7, v0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Throwable;
return-object v0
:cond_52
if-eqz v8, :cond_5d
new-array v0, v3, [Ljava/lang/Object;
.line 9
invoke-virtual {v8, v0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Throwable;
return-object v0
:cond_5d
return-object v4
.end method