TypeUtils.smali
.class public Lcom/alibaba/fastjson/util/TypeUtils;
.super Ljava/lang/Object;
.source "TypeUtils.java"
# static fields
.field public static compatibleWithJavaBean:Z
.field private static mappings:Ljava/util/concurrent/ConcurrentMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/ConcurrentMap<",
"Ljava/lang/String;",
"Ljava/lang/Class<",
"*>;>;"
}
.end annotation
.end field
.field private static setAccessibleEnable:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 67
const/4 v0, 0x0
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
.line 68
const/4 v0, 0x1
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessibleEnable:Z
.line 856
new-instance v0, Ljava/util/concurrent/ConcurrentHashMap;
invoke-direct {v0}, Ljava/util/concurrent/ConcurrentHashMap;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
.line 858
invoke-static {}, Lcom/alibaba/fastjson/util/TypeUtils;->addBaseClassMappings()V
.line 859
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 65
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static addBaseClassMappings()V
.registers 3
.line 870
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
const-string v2, "byte"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 871
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
const-string/jumbo v2, "short"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 872
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
const-string v2, "int"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 873
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
const-string v2, "long"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 874
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
const-string v2, "float"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 875
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
const-string v2, "double"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 876
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
const-string v2, "boolean"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 877
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v1, Ljava/lang/Character;->TYPE:Ljava/lang/Class;
const-string v2, "char"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 879
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [B
const-string v2, "[byte"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 880
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [S
const-string v2, "[short"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 881
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [I
const-string v2, "[int"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 882
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [J
const-string v2, "[long"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 883
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [F
const-string v2, "[float"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 884
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [D
const-string v2, "[double"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 885
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [Z
const-string v2, "[boolean"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 886
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, [C
const-string v2, "[char"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 888
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-class v1, Ljava/util/HashMap;
invoke-virtual {v1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v1
const-class v2, Ljava/util/HashMap;
invoke-interface {v0, v1, v2}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 889
return-void
.end method
.method public static addClassMapping(Ljava/lang/String;Ljava/lang/Class;)V
.registers 3
.param p0, "className" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/lang/Class<",
"*>;)V"
}
.end annotation
.line 862
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
if-nez p0, :cond_6
.line 863
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p0
.line 866
:cond_6
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v0, p0, p1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 867
return-void
.end method
.method public static final cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 9
.param p0, "obj" # Ljava/lang/Object;
.param p2, "mapping" # Lcom/alibaba/fastjson/parser/ParserConfig;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Object;",
"Ljava/lang/Class<",
"TT;>;",
"Lcom/alibaba/fastjson/parser/ParserConfig;",
")TT;"
}
.end annotation
.line 508
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
const/4 v0, 0x0
if-nez p0, :cond_4
.line 509
return-object v0
.line 512
:cond_4
if-eqz p1, :cond_188
.line 516
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
if-ne p1, v1, :cond_d
.line 517
return-object p0
.line 520
:cond_d
instance-of v1, p0, Ljava/util/Map;
if-eqz v1, :cond_2e
.line 521
const-class v0, Ljava/util/Map;
if-ne p1, v0, :cond_16
.line 522
return-object p0
.line 525
:cond_16
move-object v0, p0
check-cast v0, Ljava/util/Map;
.line 526
.local v0, "map":Ljava/util/Map;
const-class v1, Ljava/lang/Object;
if-ne p1, v1, :cond_26
sget-object v1, Lcom/alibaba/fastjson/JSON;->DEFAULT_TYPE_KEY:Ljava/lang/String;
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_26
.line 527
return-object p0
.line 530
:cond_26
move-object v1, p0
check-cast v1, Ljava/util/Map;
invoke-static {v1, p1, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->castToJavaBean(Ljava/util/Map;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v1
return-object v1
.line 533
.end local v0 # "map":Ljava/util/Map;
:cond_2e
invoke-virtual {p1}, Ljava/lang/Class;->isArray()Z
move-result v1
if-eqz v1, :cond_6f
.line 534
instance-of v1, p0, Ljava/util/Collection;
if-eqz v1, :cond_66
.line 536
move-object v0, p0
check-cast v0, Ljava/util/Collection;
.line 537
.local v0, "collection":Ljava/util/Collection;
const/4 v1, 0x0
.line 538
.local v1, "index":I
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v2
invoke-interface {v0}, Ljava/util/Collection;->size()I
move-result v3
invoke-static {v2, v3}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v2
.line 539
.local v2, "array":Ljava/lang/Object;
invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v3
.local v3, "i$":Ljava/util/Iterator;
:goto_4c
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_65
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
.line 540
.local v4, "item":Ljava/lang/Object;
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v5
invoke-static {v4, v5, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v5
.line 541
.local v5, "value":Ljava/lang/Object;
invoke-static {v2, v1, v5}, Ljava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V
.line 542
nop
.end local v4 # "item":Ljava/lang/Object;
.end local v5 # "value":Ljava/lang/Object;
add-int/lit8 v1, v1, 0x1
.line 543
goto :goto_4c
.line 545
.end local v3 # "i$":Ljava/util/Iterator;
:cond_65
return-object v2
.line 548
.end local v0 # "collection":Ljava/util/Collection;
.end local v1 # "index":I
.end local v2 # "array":Ljava/lang/Object;
:cond_66
const-class v1, [B
if-ne p1, v1, :cond_6f
.line 549
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBytes(Ljava/lang/Object;)[B
move-result-object v0
return-object v0
.line 553
:cond_6f
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
invoke-virtual {p1, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_7a
.line 554
return-object p0
.line 557
:cond_7a
sget-object v1, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_183
const-class v1, Ljava/lang/Boolean;
if-ne p1, v1, :cond_84
goto/16 :goto_183
.line 561
:cond_84
sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_17e
const-class v1, Ljava/lang/Byte;
if-ne p1, v1, :cond_8e
goto/16 :goto_17e
.line 569
:cond_8e
sget-object v1, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_179
const-class v1, Ljava/lang/Short;
if-ne p1, v1, :cond_98
goto/16 :goto_179
.line 573
:cond_98
sget-object v1, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_174
const-class v1, Ljava/lang/Integer;
if-ne p1, v1, :cond_a2
goto/16 :goto_174
.line 577
:cond_a2
sget-object v1, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_16f
const-class v1, Ljava/lang/Long;
if-ne p1, v1, :cond_ac
goto/16 :goto_16f
.line 581
:cond_ac
sget-object v1, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_16a
const-class v1, Ljava/lang/Float;
if-ne p1, v1, :cond_b6
goto/16 :goto_16a
.line 585
:cond_b6
sget-object v1, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_165
const-class v1, Ljava/lang/Double;
if-ne p1, v1, :cond_c0
goto/16 :goto_165
.line 589
:cond_c0
const-class v1, Ljava/lang/String;
if-ne p1, v1, :cond_c9
.line 590
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
return-object v0
.line 593
:cond_c9
const-class v1, Ljava/math/BigDecimal;
if-ne p1, v1, :cond_d2
.line 594
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBigDecimal(Ljava/lang/Object;)Ljava/math/BigDecimal;
move-result-object v0
return-object v0
.line 597
:cond_d2
const-class v1, Ljava/math/BigInteger;
if-ne p1, v1, :cond_db
.line 598
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBigInteger(Ljava/lang/Object;)Ljava/math/BigInteger;
move-result-object v0
return-object v0
.line 601
:cond_db
const-class v1, Ljava/util/Date;
if-ne p1, v1, :cond_e4
.line 602
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDate(Ljava/lang/Object;)Ljava/util/Date;
move-result-object v0
return-object v0
.line 605
:cond_e4
const-class v1, Ljava/sql/Date;
if-ne p1, v1, :cond_ed
.line 606
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToSqlDate(Ljava/lang/Object;)Ljava/sql/Date;
move-result-object v0
return-object v0
.line 609
:cond_ed
const-class v1, Ljava/sql/Timestamp;
if-ne p1, v1, :cond_f6
.line 610
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToTimestamp(Ljava/lang/Object;)Ljava/sql/Timestamp;
move-result-object v0
return-object v0
.line 613
:cond_f6
invoke-virtual {p1}, Ljava/lang/Class;->isEnum()Z
move-result v1
if-eqz v1, :cond_101
.line 614
invoke-static {p0, p1, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->castToEnum(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v0
return-object v0
.line 617
:cond_101
const-class v1, Ljava/util/Calendar;
invoke-virtual {v1, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
const-string v2, "can not cast to : "
if-eqz v1, :cond_13e
.line 618
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDate(Ljava/lang/Object;)Ljava/util/Date;
move-result-object v1
.line 620
.local v1, "date":Ljava/util/Date;
const-class v3, Ljava/util/Calendar;
if-ne p1, v3, :cond_118
.line 621
invoke-static {}, Ljava/util/Calendar;->getInstance()Ljava/util/Calendar;
move-result-object v0
.local v0, "calendar":Ljava/util/Calendar;
goto :goto_120
.line 624
.end local v0 # "calendar":Ljava/util/Calendar;
:cond_118
:try_start_118
invoke-virtual {p1}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/util/Calendar;
:try_end_11e
.catch Ljava/lang/Exception; {:try_start_118 .. :try_end_11e} :catch_124
move-object v0, v3
.line 627
.restart local v0 # "calendar":Ljava/util/Calendar;
nop
.line 629
:goto_120
invoke-virtual {v0, v1}, Ljava/util/Calendar;->setTime(Ljava/util/Date;)V
.line 630
return-object v0
.line 625
.end local v0 # "calendar":Ljava/util/Calendar;
:catch_124
move-exception v3
.line 626
.restart local v0 # "calendar":Ljava/util/Calendar;
.local v3, "e":Ljava/lang/Exception;
new-instance v4, Lcom/alibaba/fastjson/JSONException;
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v4, v2, v3}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v4
.line 633
.end local v0 # "calendar":Ljava/util/Calendar;
.end local v1 # "date":Ljava/util/Date;
.end local v3 # "e":Ljava/lang/Exception;
:cond_13e
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_14c
.line 634
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 635
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v3
if-nez v3, :cond_14c
.line 636
return-object v0
.line 640
.end local v1 # "strVal":Ljava/lang/String;
:cond_14c
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.line 586
:cond_165
:goto_165
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDouble(Ljava/lang/Object;)Ljava/lang/Double;
move-result-object v0
return-object v0
.line 582
:cond_16a
:goto_16a
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToFloat(Ljava/lang/Object;)Ljava/lang/Float;
move-result-object v0
return-object v0
.line 578
:cond_16f
:goto_16f
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToLong(Ljava/lang/Object;)Ljava/lang/Long;
move-result-object v0
return-object v0
.line 574
:cond_174
:goto_174
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToInt(Ljava/lang/Object;)Ljava/lang/Integer;
move-result-object v0
return-object v0
.line 570
:cond_179
:goto_179
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToShort(Ljava/lang/Object;)Ljava/lang/Short;
move-result-object v0
return-object v0
.line 562
:cond_17e
:goto_17e
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToByte(Ljava/lang/Object;)Ljava/lang/Byte;
move-result-object v0
return-object v0
.line 558
:cond_183
:goto_183
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBoolean(Ljava/lang/Object;)Ljava/lang/Boolean;
move-result-object v0
return-object v0
.line 513
:cond_188
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "clazz is null"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
goto :goto_191
:goto_190
throw v0
:goto_191
goto :goto_190
.end method
.method public static final cast(Ljava/lang/Object;Ljava/lang/reflect/ParameterizedType;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 11
.param p0, "obj" # Ljava/lang/Object;
.param p1, "type" # Ljava/lang/reflect/ParameterizedType;
.param p2, "mapping" # Lcom/alibaba/fastjson/parser/ParserConfig;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Object;",
"Ljava/lang/reflect/ParameterizedType;",
"Lcom/alibaba/fastjson/parser/ParserConfig;",
")TT;"
}
.end annotation
.line 704
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object v0
.line 706
.local v0, "rawTye":Ljava/lang/reflect/Type;
const-class v1, Ljava/util/Set;
const/4 v2, 0x0
if-eq v0, v1, :cond_19
const-class v1, Ljava/util/HashSet;
if-eq v0, v1, :cond_19
const-class v1, Ljava/util/TreeSet;
if-eq v0, v1, :cond_19
const-class v1, Ljava/util/List;
if-eq v0, v1, :cond_19
const-class v1, Ljava/util/ArrayList;
if-ne v0, v1, :cond_5b
.line 711
:cond_19
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
aget-object v1, v1, v2
.line 713
.local v1, "itemType":Ljava/lang/reflect/Type;
instance-of v3, p0, Ljava/lang/Iterable;
if-eqz v3, :cond_5b
.line 715
const-class v2, Ljava/util/Set;
if-eq v0, v2, :cond_3c
const-class v2, Ljava/util/HashSet;
if-ne v0, v2, :cond_2c
goto :goto_3c
.line 717
:cond_2c
const-class v2, Ljava/util/TreeSet;
if-ne v0, v2, :cond_36
.line 718
new-instance v2, Ljava/util/TreeSet;
invoke-direct {v2}, Ljava/util/TreeSet;-><init>()V
.local v2, "collection":Ljava/util/Collection;
goto :goto_41
.line 720
.end local v2 # "collection":Ljava/util/Collection;
:cond_36
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.restart local v2 # "collection":Ljava/util/Collection;
goto :goto_41
.line 716
.end local v2 # "collection":Ljava/util/Collection;
:cond_3c
:goto_3c
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
.line 723
.restart local v2 # "collection":Ljava/util/Collection;
:goto_41
move-object v3, p0
check-cast v3, Ljava/lang/Iterable;
invoke-interface {v3}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object v3
.local v3, "it":Ljava/util/Iterator;
:goto_48
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_5a
.line 724
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
.line 725
.local v4, "item":Ljava/lang/Object;
invoke-static {v4, v1, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v5
invoke-interface {v2, v5}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 726
.end local v4 # "item":Ljava/lang/Object;
goto :goto_48
.line 728
.end local v3 # "it":Ljava/util/Iterator;
:cond_5a
return-object v2
.line 732
.end local v1 # "itemType":Ljava/lang/reflect/Type;
.end local v2 # "collection":Ljava/util/Collection;
:cond_5b
const-class v1, Ljava/util/Map;
const/4 v3, 0x1
if-eq v0, v1, :cond_64
const-class v1, Ljava/util/HashMap;
if-ne v0, v1, :cond_a5
.line 733
:cond_64
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
aget-object v1, v1, v2
.line 734
.local v1, "keyType":Ljava/lang/reflect/Type;
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v4
aget-object v4, v4, v3
.line 736
.local v4, "valueType":Ljava/lang/reflect/Type;
instance-of v5, p0, Ljava/util/Map;
if-eqz v5, :cond_a5
.line 737
new-instance v2, Ljava/util/HashMap;
invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
.line 739
.local v2, "map":Ljava/util/Map;
move-object v3, p0
check-cast v3, Ljava/util/Map;
invoke-interface {v3}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v3
invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v3
.local v3, "i$":Ljava/util/Iterator;
:goto_84
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v5
if-eqz v5, :cond_a4
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/util/Map$Entry;
.line 740
.local v5, "entry":Ljava/util/Map$Entry;
invoke-interface {v5}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v6
invoke-static {v6, v1, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v6
.line 741
.local v6, "key":Ljava/lang/Object;
invoke-interface {v5}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v7
invoke-static {v7, v4, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v7
.line 743
.local v7, "value":Ljava/lang/Object;
invoke-interface {v2, v6, v7}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 744
.end local v5 # "entry":Ljava/util/Map$Entry;
.end local v6 # "key":Ljava/lang/Object;
.end local v7 # "value":Ljava/lang/Object;
goto :goto_84
.line 746
.end local v3 # "i$":Ljava/util/Iterator;
:cond_a4
return-object v2
.line 750
.end local v1 # "keyType":Ljava/lang/reflect/Type;
.end local v2 # "map":Ljava/util/Map;
.end local v4 # "valueType":Ljava/lang/reflect/Type;
:cond_a5
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_b4
.line 751
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 752
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v4
if-nez v4, :cond_b4
.line 753
const/4 v2, 0x0
return-object v2
.line 757
.end local v1 # "strVal":Ljava/lang/String;
:cond_b4
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
array-length v1, v1
if-ne v1, v3, :cond_ca
.line 758
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
aget-object v1, v1, v2
.line 759
.local v1, "argType":Ljava/lang/reflect/Type;
instance-of v2, v1, Ljava/lang/reflect/WildcardType;
if-eqz v2, :cond_ca
.line 760
invoke-static {p0, v0, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v2
return-object v2
.line 764
.end local v1 # "argType":Ljava/lang/reflect/Type;
:cond_ca
new-instance v1, Lcom/alibaba/fastjson/JSONException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "can not cast to : "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
goto :goto_e2
:goto_e1
throw v1
:goto_e2
goto :goto_e1
.end method
.method public static final cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 6
.param p0, "obj" # Ljava/lang/Object;
.param p1, "type" # Ljava/lang/reflect/Type;
.param p2, "mapping" # Lcom/alibaba/fastjson/parser/ParserConfig;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Object;",
"Ljava/lang/reflect/Type;",
"Lcom/alibaba/fastjson/parser/ParserConfig;",
")TT;"
}
.end annotation
.line 676
const/4 v0, 0x0
if-nez p0, :cond_4
.line 677
return-object v0
.line 680
:cond_4
instance-of v1, p1, Ljava/lang/Class;
if-eqz v1, :cond_10
.line 681
move-object v0, p1
check-cast v0, Ljava/lang/Class;
invoke-static {p0, v0, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v0
return-object v0
.line 684
:cond_10
instance-of v1, p1, Ljava/lang/reflect/ParameterizedType;
if-eqz v1, :cond_1c
.line 685
move-object v0, p1
check-cast v0, Ljava/lang/reflect/ParameterizedType;
invoke-static {p0, v0, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/ParameterizedType;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v0
return-object v0
.line 688
:cond_1c
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_2a
.line 689
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 690
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_2a
.line 691
return-object v0
.line 695
.end local v1 # "strVal":Ljava/lang/String;
:cond_2a
instance-of v0, p1, Ljava/lang/reflect/TypeVariable;
if-eqz v0, :cond_2f
.line 696
return-object p0
.line 699
:cond_2f
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToBigDecimal(Ljava/lang/Object;)Ljava/math/BigDecimal;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 155
const/4 v0, 0x0
if-nez p0, :cond_4
.line 156
return-object v0
.line 159
:cond_4
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_c
.line 160
move-object v0, p0
check-cast v0, Ljava/math/BigDecimal;
return-object v0
.line 163
:cond_c
instance-of v1, p0, Ljava/math/BigInteger;
if-eqz v1, :cond_19
.line 164
new-instance v0, Ljava/math/BigDecimal;
move-object v1, p0
check-cast v1, Ljava/math/BigInteger;
invoke-direct {v0, v1}, Ljava/math/BigDecimal;-><init>(Ljava/math/BigInteger;)V
return-object v0
.line 167
:cond_19
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v1
.line 168
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_24
.line 169
return-object v0
.line 172
:cond_24
new-instance v0, Ljava/math/BigDecimal;
invoke-direct {v0, v1}, Ljava/math/BigDecimal;-><init>(Ljava/lang/String;)V
return-object v0
.end method
.method public static final castToBigInteger(Ljava/lang/Object;)Ljava/math/BigInteger;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 176
const/4 v0, 0x0
if-nez p0, :cond_4
.line 177
return-object v0
.line 180
:cond_4
instance-of v1, p0, Ljava/math/BigInteger;
if-eqz v1, :cond_c
.line 181
move-object v0, p0
check-cast v0, Ljava/math/BigInteger;
return-object v0
.line 184
:cond_c
instance-of v1, p0, Ljava/lang/Float;
if-nez v1, :cond_26
instance-of v1, p0, Ljava/lang/Double;
if-eqz v1, :cond_15
goto :goto_26
.line 188
:cond_15
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v1
.line 189
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_20
.line 190
return-object v0
.line 193
:cond_20
new-instance v0, Ljava/math/BigInteger;
invoke-direct {v0, v1}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V
return-object v0
.line 185
.end local v1 # "strVal":Ljava/lang/String;
:cond_26
:goto_26
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->longValue()J
move-result-wide v0
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v0
return-object v0
.end method
.method public static final castToBoolean(Ljava/lang/Object;)Ljava/lang/Boolean;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 461
const/4 v0, 0x0
if-nez p0, :cond_4
.line 462
return-object v0
.line 465
:cond_4
instance-of v1, p0, Ljava/lang/Boolean;
if-eqz v1, :cond_c
.line 466
move-object v0, p0
check-cast v0, Ljava/lang/Boolean;
return-object v0
.line 469
:cond_c
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_21
.line 470
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->intValue()I
move-result v0
const/4 v1, 0x1
if-ne v0, v1, :cond_1b
goto :goto_1c
:cond_1b
const/4 v1, 0x0
:goto_1c
invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v0
return-object v0
.line 473
:cond_21
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_65
.line 474
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 475
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_2f
.line 476
return-object v0
.line 479
:cond_2f
const-string/jumbo v2, "true"
invoke-virtual {v2, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_3b
.line 480
sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
return-object v0
.line 482
:cond_3b
const-string v2, "false"
invoke-virtual {v2, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_46
.line 483
sget-object v0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object v0
.line 486
:cond_46
const-string v2, "1"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_51
.line 487
sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
return-object v0
.line 490
:cond_51
const-string v2, "0"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_5c
.line 491
sget-object v0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object v0
.line 494
:cond_5c
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_65
.line 495
return-object v0
.line 499
.end local v1 # "strVal":Ljava/lang/String;
:cond_65
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to int, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToByte(Ljava/lang/Object;)Ljava/lang/Byte;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 79
const/4 v0, 0x0
if-nez p0, :cond_4
.line 80
return-object v0
.line 83
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_14
.line 84
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->byteValue()B
move-result v0
invoke-static {v0}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object v0
return-object v0
.line 87
:cond_14
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_34
.line 88
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 89
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_22
.line 90
return-object v0
.line 93
:cond_22
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2b
.line 94
return-object v0
.line 97
:cond_2b
invoke-static {v1}, Ljava/lang/Byte;->parseByte(Ljava/lang/String;)B
move-result v0
invoke-static {v0}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object v0
return-object v0
.line 100
.end local v1 # "strVal":Ljava/lang/String;
:cond_34
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to byte, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToBytes(Ljava/lang/Object;)[B
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 450
instance-of v0, p0, [B
if-eqz v0, :cond_a
.line 451
move-object v0, p0
check-cast v0, [B
check-cast v0, [B
return-object v0
.line 454
:cond_a
instance-of v0, p0, Ljava/lang/String;
if-eqz v0, :cond_16
.line 455
move-object v0, p0
check-cast v0, Ljava/lang/String;
invoke-static {v0}, Lcom/alibaba/fastjson/util/Base64;->decodeFast(Ljava/lang/String;)[B
move-result-object v0
return-object v0
.line 457
:cond_16
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to int, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToChar(Ljava/lang/Object;)Ljava/lang/Character;
.registers 5
.param p0, "value" # Ljava/lang/Object;
.line 104
const/4 v0, 0x0
if-nez p0, :cond_4
.line 105
return-object v0
.line 108
:cond_4
instance-of v1, p0, Ljava/lang/Character;
if-eqz v1, :cond_c
.line 109
move-object v0, p0
check-cast v0, Ljava/lang/Character;
return-object v0
.line 112
:cond_c
instance-of v1, p0, Ljava/lang/String;
const-string v2, "can not cast to byte, value : "
if-eqz v1, :cond_42
.line 113
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 115
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v3
if-nez v3, :cond_1c
.line 116
return-object v0
.line 119
:cond_1c
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v0
const/4 v3, 0x1
if-ne v0, v3, :cond_2d
.line 123
const/4 v0, 0x0
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
invoke-static {v0}, Ljava/lang/Character;->valueOf(C)Ljava/lang/Character;
move-result-object v0
return-object v0
.line 120
:cond_2d
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v0, v2}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.line 126
.end local v1 # "strVal":Ljava/lang/String;
:cond_42
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToDate(Ljava/lang/Object;)Ljava/util/Date;
.registers 10
.param p0, "value" # Ljava/lang/Object;
.line 247
const/4 v0, 0x0
if-nez p0, :cond_4
.line 248
return-object v0
.line 251
:cond_4
instance-of v1, p0, Ljava/util/Calendar;
if-eqz v1, :cond_10
.line 252
move-object v0, p0
check-cast v0, Ljava/util/Calendar;
invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
move-result-object v0
return-object v0
.line 255
:cond_10
instance-of v1, p0, Ljava/util/Date;
if-eqz v1, :cond_18
.line 256
move-object v0, p0
check-cast v0, Ljava/util/Date;
return-object v0
.line 259
:cond_18
const-wide/16 v1, -0x1
.line 261
.local v1, "longValue":J
instance-of v3, p0, Ljava/lang/Number;
if-eqz v3, :cond_25
.line 262
move-object v3, p0
check-cast v3, Ljava/lang/Number;
invoke-virtual {v3}, Ljava/lang/Number;->longValue()J
move-result-wide v1
.line 265
:cond_25
instance-of v3, p0, Ljava/lang/String;
const-string v4, "can not cast to Date, value : "
if-eqz v3, :cond_91
.line 266
move-object v3, p0
check-cast v3, Ljava/lang/String;
.line 268
.local v3, "strVal":Ljava/lang/String;
const/16 v5, 0x2d
invoke-virtual {v3, v5}, Ljava/lang/String;->indexOf(I)I
move-result v5
const/4 v6, -0x1
if-eq v5, v6, :cond_86
.line 270
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v0
sget-object v5, Lcom/alibaba/fastjson/JSON;->DEFFAULT_DATE_FORMAT:Ljava/lang/String;
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v5
if-ne v0, v5, :cond_46
.line 271
sget-object v0, Lcom/alibaba/fastjson/JSON;->DEFFAULT_DATE_FORMAT:Ljava/lang/String;
.local v0, "format":Ljava/lang/String;
goto :goto_66
.line 272
.end local v0 # "format":Ljava/lang/String;
:cond_46
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v0
const/16 v5, 0xa
if-ne v0, v5, :cond_52
.line 273
const-string/jumbo v0, "yyyy-MM-dd"
.restart local v0 # "format":Ljava/lang/String;
goto :goto_66
.line 274
.end local v0 # "format":Ljava/lang/String;
:cond_52
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v0
const-string/jumbo v5, "yyyy-MM-dd HH:mm:ss"
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v5
if-ne v0, v5, :cond_63
.line 275
const-string/jumbo v0, "yyyy-MM-dd HH:mm:ss"
.restart local v0 # "format":Ljava/lang/String;
goto :goto_66
.line 277
.end local v0 # "format":Ljava/lang/String;
:cond_63
const-string/jumbo v0, "yyyy-MM-dd HH:mm:ss.SSS"
.line 280
.restart local v0 # "format":Ljava/lang/String;
:goto_66
new-instance v5, Ljava/text/SimpleDateFormat;
invoke-direct {v5, v0}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
.line 282
.local v5, "dateFormat":Ljava/text/SimpleDateFormat;
:try_start_6b
invoke-virtual {v5, v3}, Ljava/text/SimpleDateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;
move-result-object v4
:try_end_6f
.catch Ljava/text/ParseException; {:try_start_6b .. :try_end_6f} :catch_70
return-object v4
.line 283
:catch_70
move-exception v6
.line 284
.local v6, "e":Ljava/text/ParseException;
new-instance v7, Lcom/alibaba/fastjson/JSONException;
new-instance v8, Ljava/lang/StringBuilder;
invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v8, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-direct {v7, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v7
.line 288
.end local v0 # "format":Ljava/lang/String;
.end local v5 # "dateFormat":Ljava/text/SimpleDateFormat;
.end local v6 # "e":Ljava/text/ParseException;
:cond_86
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v5
if-nez v5, :cond_8d
.line 289
return-object v0
.line 292
:cond_8d
invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v1
.line 295
.end local v3 # "strVal":Ljava/lang/String;
:cond_91
const-wide/16 v5, 0x0
cmp-long v0, v1, v5
if-ltz v0, :cond_9d
.line 299
new-instance v0, Ljava/util/Date;
invoke-direct {v0, v1, v2}, Ljava/util/Date;-><init>(J)V
return-object v0
.line 296
:cond_9d
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v0, v3}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToDouble(Ljava/lang/Object;)Ljava/lang/Double;
.registers 5
.param p0, "value" # Ljava/lang/Object;
.line 222
const/4 v0, 0x0
if-nez p0, :cond_4
.line 223
return-object v0
.line 226
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_14
.line 227
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->doubleValue()D
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v0
return-object v0
.line 230
:cond_14
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_35
.line 231
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v1
.line 232
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_23
.line 233
return-object v0
.line 236
:cond_23
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2c
.line 237
return-object v0
.line 240
:cond_2c
invoke-static {v1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v2
invoke-static {v2, v3}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object v0
return-object v0
.line 243
.end local v1 # "strVal":Ljava/lang/String;
:cond_35
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to double, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToEnum(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 13
.param p0, "obj" # Ljava/lang/Object;
.param p2, "mapping" # Lcom/alibaba/fastjson/parser/ParserConfig;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Object;",
"Ljava/lang/Class<",
"TT;>;",
"Lcom/alibaba/fastjson/parser/ParserConfig;",
")TT;"
}
.end annotation
.line 646
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
const-string v0, "can not cast to : "
:try_start_2
instance-of v1, p0, Ljava/lang/String;
const/4 v2, 0x0
if-eqz v1, :cond_16
.line 647
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 648
.local v1, "name":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v3
if-nez v3, :cond_11
.line 649
return-object v2
.line 652
:cond_11
invoke-static {p1, v1}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
move-result-object v0
return-object v0
.line 655
.end local v1 # "name":Ljava/lang/String;
:cond_16
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_49
.line 656
move-object v1, p0
check-cast v1, Ljava/lang/Number;
invoke-virtual {v1}, Ljava/lang/Number;->intValue()I
move-result v1
.line 658
.local v1, "ordinal":I
const-string/jumbo v3, "values"
const/4 v4, 0x0
new-array v5, v4, [Ljava/lang/Class;
invoke-virtual {p1, v3, v5}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v3
.line 659
.local v3, "method":Ljava/lang/reflect/Method;
new-array v4, v4, [Ljava/lang/Object;
invoke-virtual {v3, v2, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, [Ljava/lang/Object;
check-cast v2, [Ljava/lang/Object;
.line 660
.local v2, "values":[Ljava/lang/Object;
move-object v4, v2
.local v4, "arr$":[Ljava/lang/Object;
array-length v5, v4
.local v5, "len$":I
const/4 v6, 0x0
.local v6, "i$":I
:goto_38
if-ge v6, v5, :cond_49
aget-object v7, v4, v6
.line 661
.local v7, "value":Ljava/lang/Object;
move-object v8, v7
check-cast v8, Ljava/lang/Enum;
.line 662
.local v8, "e":Ljava/lang/Enum;
invoke-virtual {v8}, Ljava/lang/Enum;->ordinal()I
move-result v9
:try_end_43
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_43} :catch_63
if-ne v9, v1, :cond_46
.line 663
return-object v8
.line 660
.end local v7 # "value":Ljava/lang/Object;
.end local v8 # "e":Ljava/lang/Enum;
:cond_46
add-int/lit8 v6, v6, 0x1
goto :goto_38
.line 669
.end local v1 # "ordinal":I
.end local v2 # "values":[Ljava/lang/Object;
.end local v3 # "method":Ljava/lang/reflect/Method;
.end local v4 # "arr$":[Ljava/lang/Object;
.end local v5 # "len$":I
.end local v6 # "i$":I
:cond_49
nop
.line 671
new-instance v1, Lcom/alibaba/fastjson/JSONException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v1
.line 667
:catch_63
move-exception v1
.line 668
.local v1, "ex":Ljava/lang/Exception;
new-instance v2, Lcom/alibaba/fastjson/JSONException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v2, v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_7e
:goto_7d
throw v2
:goto_7e
goto :goto_7d
.end method
.method public static final castToFloat(Ljava/lang/Object;)Ljava/lang/Float;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 197
const/4 v0, 0x0
if-nez p0, :cond_4
.line 198
return-object v0
.line 201
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_14
.line 202
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->floatValue()F
move-result v0
invoke-static {v0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object v0
return-object v0
.line 205
:cond_14
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_35
.line 206
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v1
.line 207
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_23
.line 208
return-object v0
.line 211
:cond_23
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2c
.line 212
return-object v0
.line 215
:cond_2c
invoke-static {v1}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result v0
invoke-static {v0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object v0
return-object v0
.line 218
.end local v1 # "strVal":Ljava/lang/String;
:cond_35
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to float, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToInt(Ljava/lang/Object;)Ljava/lang/Integer;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 421
const/4 v0, 0x0
if-nez p0, :cond_4
.line 422
return-object v0
.line 425
:cond_4
instance-of v1, p0, Ljava/lang/Integer;
if-eqz v1, :cond_c
.line 426
move-object v0, p0
check-cast v0, Ljava/lang/Integer;
return-object v0
.line 429
:cond_c
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_1c
.line 430
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->intValue()I
move-result v0
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
return-object v0
.line 433
:cond_1c
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_3c
.line 434
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 435
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_2a
.line 436
return-object v0
.line 439
:cond_2a
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_33
.line 440
return-object v0
.line 443
:cond_33
invoke-static {v1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result v0
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
return-object v0
.line 446
.end local v1 # "strVal":Ljava/lang/String;
:cond_3c
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to int, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToJavaBean(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
.registers 3
.param p0, "obj" # Ljava/lang/Object;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Object;",
"Ljava/lang/Class<",
"TT;>;)TT;"
}
.end annotation
.line 503
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object v0
invoke-static {p0, p1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v0
return-object v0
.end method
.method public static final castToJavaBean(Ljava/util/Map;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 20
.param p2, "mapping" # Lcom/alibaba/fastjson/parser/ParserConfig;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/Object;",
">;",
"Ljava/lang/Class<",
"TT;>;",
"Lcom/alibaba/fastjson/parser/ParserConfig;",
")TT;"
}
.end annotation
.local p0, "map":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;"
.local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
move-object/from16 v1, p0
move-object/from16 v2, p1
move-object/from16 v3, p2
.line 770
:try_start_6
const-class v0, Ljava/lang/StackTraceElement;
if-ne v2, v0, :cond_38
.line 771
const-string v0, "className"
invoke-interface {v1, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
.line 772
.local v0, "declaringClass":Ljava/lang/String;
const-string v4, "methodName"
invoke-interface {v1, v4}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/lang/String;
.line 773
.local v4, "methodName":Ljava/lang/String;
const-string v5, "fileName"
invoke-interface {v1, v5}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/lang/String;
.line 776
.local v5, "fileName":Ljava/lang/String;
const-string v6, "lineNumber"
invoke-interface {v1, v6}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v6
check-cast v6, Ljava/lang/Number;
.line 777
.local v6, "value":Ljava/lang/Number;
if-nez v6, :cond_2e
.line 778
const/4 v7, 0x0
.local v7, "lineNumber":I
goto :goto_32
.line 780
.end local v7 # "lineNumber":I
:cond_2e
invoke-virtual {v6}, Ljava/lang/Number;->intValue()I
move-result v7
.line 784
.end local v6 # "value":Ljava/lang/Number;
.restart local v7 # "lineNumber":I
:goto_32
new-instance v6, Ljava/lang/StackTraceElement;
invoke-direct {v6, v0, v4, v5, v7}, Ljava/lang/StackTraceElement;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
return-object v6
.line 788
.end local v0 # "declaringClass":Ljava/lang/String;
.end local v4 # "methodName":Ljava/lang/String;
.end local v5 # "fileName":Ljava/lang/String;
.end local v7 # "lineNumber":I
:cond_38
sget-object v0, Lcom/alibaba/fastjson/JSON;->DEFAULT_TYPE_KEY:Ljava/lang/String;
invoke-interface {v1, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 789
.local v0, "iClassObject":Ljava/lang/Object;
instance-of v4, v0, Ljava/lang/String;
if-eqz v4, :cond_6d
.line 790
move-object v4, v0
check-cast v4, Ljava/lang/String;
.line 792
.local v4, "className":Ljava/lang/String;
invoke-static {v4}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v5
.line 794
.local v5, "loadClazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
if-eqz v5, :cond_56
.line 798
invoke-virtual {v5, v2}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v6
if-nez v6, :cond_6d
.line 799
invoke-static {v1, v5, v3}, Lcom/alibaba/fastjson/util/TypeUtils;->castToJavaBean(Ljava/util/Map;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v6
return-object v6
.line 795
:cond_56
new-instance v6, Ljava/lang/ClassNotFoundException;
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v8, " not found"
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-direct {v6, v7}, Ljava/lang/ClassNotFoundException;-><init>(Ljava/lang/String;)V
.end local p0 # "map":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;"
.end local p1 # "clazz":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
.end local p2 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
throw v6
.line 804
.end local v0 # "iClassObject":Ljava/lang/Object;
.end local v4 # "className":Ljava/lang/String;
.end local v5 # "loadClazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.restart local p0 # "map":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;"
.restart local p1 # "clazz":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
.restart local p2 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
:cond_6d
invoke-virtual/range {p1 .. p1}, Ljava/lang/Class;->isInterface()Z
move-result v0
const/4 v4, 0x1
const/4 v5, 0x0
if-eqz v0, :cond_93
.line 807
instance-of v0, v1, Lcom/alibaba/fastjson/JSONObject;
if-eqz v0, :cond_7d
.line 808
move-object v0, v1
check-cast v0, Lcom/alibaba/fastjson/JSONObject;
.local v0, "object":Lcom/alibaba/fastjson/JSONObject;
goto :goto_82
.line 810
.end local v0 # "object":Lcom/alibaba/fastjson/JSONObject;
:cond_7d
new-instance v0, Lcom/alibaba/fastjson/JSONObject;
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONObject;-><init>(Ljava/util/Map;)V
.line 813
.restart local v0 # "object":Lcom/alibaba/fastjson/JSONObject;
:goto_82
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader;
move-result-object v6
new-array v4, v4, [Ljava/lang/Class;
aput-object v2, v4, v5
invoke-static {v6, v4, v0}, Ljava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
move-result-object v4
return-object v4
.line 817
.end local v0 # "object":Lcom/alibaba/fastjson/JSONObject;
:cond_93
if-nez v3, :cond_9a
.line 818
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object v0
:try_end_99
.catch Ljava/lang/Exception; {:try_start_6 .. :try_end_99} :catch_10c
move-object v3, v0
.line 821
.end local p2 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
.local v3, "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
:cond_9a
:try_start_9a
invoke-virtual {v3, v2}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldDeserializers(Ljava/lang/Class;)Ljava/util/Map;
move-result-object v0
.line 823
.local v0, "setters":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;>;"
new-array v6, v5, [Ljava/lang/Class;
invoke-virtual {v2, v6}, Ljava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v6
.line 824
.local v6, "constructor":Ljava/lang/reflect/Constructor;, "Ljava/lang/reflect/Constructor<TT;>;"
invoke-virtual {v6}, Ljava/lang/reflect/Constructor;->isAccessible()Z
move-result v7
if-nez v7, :cond_ad
.line 825
invoke-virtual {v6, v4}, Ljava/lang/reflect/Constructor;->setAccessible(Z)V
.line 827
:cond_ad
new-array v7, v5, [Ljava/lang/Object;
invoke-virtual {v6, v7}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v7
.line 829
.local v7, "object":Ljava/lang/Object;, "TT;"
invoke-interface {v0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v8
invoke-interface {v8}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v8
.local v8, "i$":Ljava/util/Iterator;
:goto_bb
invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
move-result v9
if-eqz v9, :cond_109
invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v9
check-cast v9, Ljava/util/Map$Entry;
.line 830
.local v9, "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry<Ljava/lang/String;Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;>;"
invoke-interface {v9}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v10
check-cast v10, Ljava/lang/String;
.line 831
.local v10, "key":Ljava/lang/String;
invoke-interface {v9}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v11
check-cast v11, Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;
.line 833
.local v11, "fieldDeser":Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;
invoke-interface {v1, v10}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_108
.line 834
invoke-interface {v1, v10}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v12
.line 835
.local v12, "value":Ljava/lang/Object;
invoke-virtual {v11}, Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;->getMethod()Ljava/lang/reflect/Method;
move-result-object v13
.line 836
.local v13, "method":Ljava/lang/reflect/Method;
if-eqz v13, :cond_f7
.line 837
invoke-virtual {v13}, Ljava/lang/reflect/Method;->getGenericParameterTypes()[Ljava/lang/reflect/Type;
move-result-object v14
aget-object v14, v14, v5
.line 838
.local v14, "paramType":Ljava/lang/reflect/Type;
invoke-static {v12, v14, v3}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v15
move-object v12, v15
.line 839
new-array v15, v4, [Ljava/lang/Object;
aput-object v12, v15, v5
invoke-virtual {v13, v7, v15}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
.line 840
nop
.end local v14 # "paramType":Ljava/lang/reflect/Type;
goto :goto_108
.line 841
:cond_f7
invoke-virtual {v11}, Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;->getField()Ljava/lang/reflect/Field;
move-result-object v14
.line 842
.local v14, "field":Ljava/lang/reflect/Field;
invoke-virtual {v14}, Ljava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;
move-result-object v15
.line 843
.local v15, "paramType":Ljava/lang/reflect/Type;
invoke-static {v12, v15, v3}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v16
move-object/from16 v12, v16
.line 844
invoke-virtual {v14, v7, v12}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V
:try_end_108
.catch Ljava/lang/Exception; {:try_start_9a .. :try_end_108} :catch_10a
.line 848
.end local v9 # "entry":Ljava/util/Map$Entry;, "Ljava/util/Map$Entry<Ljava/lang/String;Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;>;"
.end local v10 # "key":Ljava/lang/String;
.end local v11 # "fieldDeser":Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;
.end local v12 # "value":Ljava/lang/Object;
.end local v13 # "method":Ljava/lang/reflect/Method;
.end local v14 # "field":Ljava/lang/reflect/Field;
.end local v15 # "paramType":Ljava/lang/reflect/Type;
:cond_108
:goto_108
goto :goto_bb
.line 850
.end local v8 # "i$":Ljava/util/Iterator;
:cond_109
return-object v7
.line 851
.end local v0 # "setters":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;>;"
.end local v6 # "constructor":Ljava/lang/reflect/Constructor;, "Ljava/lang/reflect/Constructor<TT;>;"
.end local v7 # "object":Ljava/lang/Object;, "TT;"
:catch_10a
move-exception v0
goto :goto_10d
.end local v3 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
.restart local p2 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
:catch_10c
move-exception v0
.line 852
.end local p2 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
.local v0, "e":Ljava/lang/Exception;
.restart local v3 # "mapping":Lcom/alibaba/fastjson/parser/ParserConfig;
:goto_10d
new-instance v4, Lcom/alibaba/fastjson/JSONException;
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v5
invoke-direct {v4, v5, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_118
:goto_117
throw v4
:goto_118
goto :goto_117
.end method
.method public static final castToLong(Ljava/lang/Object;)Ljava/lang/Long;
.registers 6
.param p0, "value" # Ljava/lang/Object;
.line 381
const/4 v0, 0x0
if-nez p0, :cond_4
.line 382
return-object v0
.line 385
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_14
.line 386
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->longValue()J
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v0
return-object v0
.line 389
:cond_14
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_54
.line 390
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 391
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_22
.line 392
return-object v0
.line 395
:cond_22
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2b
.line 396
return-object v0
.line 400
:cond_2b
:try_start_2b
invoke-static {v1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v2
invoke-static {v2, v3}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v0
:try_end_33
.catch Ljava/lang/NumberFormatException; {:try_start_2b .. :try_end_33} :catch_34
return-object v0
.line 401
:catch_34
move-exception v0
.line 405
new-instance v0, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
.line 406
.local v0, "dateParser":Lcom/alibaba/fastjson/parser/JSONScanner;
const/4 v2, 0x0
.line 407
.local v2, "calendar":Ljava/util/Calendar;
const/4 v3, 0x0
invoke-virtual {v0, v3}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z
move-result v3
if-eqz v3, :cond_46
.line 408
invoke-virtual {v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object v2
.line 410
:cond_46
invoke-virtual {v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->close()V
.line 412
if-eqz v2, :cond_54
.line 413
invoke-virtual {v2}, Ljava/util/Calendar;->getTimeInMillis()J
move-result-wide v3
invoke-static {v3, v4}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v3
return-object v3
.line 417
.end local v0 # "dateParser":Lcom/alibaba/fastjson/parser/JSONScanner;
.end local v1 # "strVal":Ljava/lang/String;
.end local v2 # "calendar":Ljava/util/Calendar;
:cond_54
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to long, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToShort(Ljava/lang/Object;)Ljava/lang/Short;
.registers 4
.param p0, "value" # Ljava/lang/Object;
.line 130
const/4 v0, 0x0
if-nez p0, :cond_4
.line 131
return-object v0
.line 134
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_14
.line 135
move-object v0, p0
check-cast v0, Ljava/lang/Number;
invoke-virtual {v0}, Ljava/lang/Number;->shortValue()S
move-result v0
invoke-static {v0}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object v0
return-object v0
.line 138
:cond_14
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_34
.line 139
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 140
.local v1, "strVal":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-nez v2, :cond_22
.line 141
return-object v0
.line 144
:cond_22
const-string v2, "null"
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2b
.line 145
return-object v0
.line 148
:cond_2b
invoke-static {v1}, Ljava/lang/Short;->parseShort(Ljava/lang/String;)S
move-result v0
invoke-static {v0}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object v0
return-object v0
.line 151
.end local v1 # "strVal":Ljava/lang/String;
:cond_34
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "can not cast to short, value : "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToSqlDate(Ljava/lang/Object;)Ljava/sql/Date;
.registers 6
.param p0, "value" # Ljava/lang/Object;
.line 303
const/4 v0, 0x0
if-nez p0, :cond_4
.line 304
return-object v0
.line 307
:cond_4
instance-of v1, p0, Ljava/util/Calendar;
if-eqz v1, :cond_15
.line 308
new-instance v0, Ljava/sql/Date;
move-object v1, p0
check-cast v1, Ljava/util/Calendar;
invoke-virtual {v1}, Ljava/util/Calendar;->getTimeInMillis()J
move-result-wide v1
invoke-direct {v0, v1, v2}, Ljava/sql/Date;-><init>(J)V
return-object v0
.line 311
:cond_15
instance-of v1, p0, Ljava/sql/Date;
if-eqz v1, :cond_1d
.line 312
move-object v0, p0
check-cast v0, Ljava/sql/Date;
return-object v0
.line 315
:cond_1d
instance-of v1, p0, Ljava/util/Date;
if-eqz v1, :cond_2e
.line 316
new-instance v0, Ljava/sql/Date;
move-object v1, p0
check-cast v1, Ljava/util/Date;
invoke-virtual {v1}, Ljava/util/Date;->getTime()J
move-result-wide v1
invoke-direct {v0, v1, v2}, Ljava/sql/Date;-><init>(J)V
return-object v0
.line 319
:cond_2e
const-wide/16 v1, 0x0
.line 321
.local v1, "longValue":J
instance-of v3, p0, Ljava/lang/Number;
if-eqz v3, :cond_3b
.line 322
move-object v3, p0
check-cast v3, Ljava/lang/Number;
invoke-virtual {v3}, Ljava/lang/Number;->longValue()J
move-result-wide v1
.line 325
:cond_3b
instance-of v3, p0, Ljava/lang/String;
if-eqz v3, :cond_4d
.line 326
move-object v3, p0
check-cast v3, Ljava/lang/String;
.line 327
.local v3, "strVal":Ljava/lang/String;
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v4
if-nez v4, :cond_49
.line 328
return-object v0
.line 331
:cond_49
invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v1
.line 334
.end local v3 # "strVal":Ljava/lang/String;
:cond_4d
const-wide/16 v3, 0x0
cmp-long v0, v1, v3
if-lez v0, :cond_59
.line 338
new-instance v0, Ljava/sql/Date;
invoke-direct {v0, v1, v2}, Ljava/sql/Date;-><init>(J)V
return-object v0
.line 335
:cond_59
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "can not cast to Date, value : "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v0, v3}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static final castToString(Ljava/lang/Object;)Ljava/lang/String;
.registers 2
.param p0, "value" # Ljava/lang/Object;
.line 71
if-nez p0, :cond_4
.line 72
const/4 v0, 0x0
return-object v0
.line 75
:cond_4
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public static final castToTimestamp(Ljava/lang/Object;)Ljava/sql/Timestamp;
.registers 6
.param p0, "value" # Ljava/lang/Object;
.line 342
const/4 v0, 0x0
if-nez p0, :cond_4
.line 343
return-object v0
.line 346
:cond_4
instance-of v1, p0, Ljava/util/Calendar;
if-eqz v1, :cond_15
.line 347
new-instance v0, Ljava/sql/Timestamp;
move-object v1, p0
check-cast v1, Ljava/util/Calendar;
invoke-virtual {v1}, Ljava/util/Calendar;->getTimeInMillis()J
move-result-wide v1
invoke-direct {v0, v1, v2}, Ljava/sql/Timestamp;-><init>(J)V
return-object v0
.line 350
:cond_15
instance-of v1, p0, Ljava/sql/Timestamp;
if-eqz v1, :cond_1d
.line 351
move-object v0, p0
check-cast v0, Ljava/sql/Timestamp;
return-object v0
.line 354
:cond_1d
instance-of v1, p0, Ljava/util/Date;
if-eqz v1, :cond_2e
.line 355
new-instance v0, Ljava/sql/Timestamp;
move-object v1, p0
check-cast v1, Ljava/util/Date;
invoke-virtual {v1}, Ljava/util/Date;->getTime()J
move-result-wide v1
invoke-direct {v0, v1, v2}, Ljava/sql/Timestamp;-><init>(J)V
return-object v0
.line 358
:cond_2e
const-wide/16 v1, 0x0
.line 360
.local v1, "longValue":J
instance-of v3, p0, Ljava/lang/Number;
if-eqz v3, :cond_3b
.line 361
move-object v3, p0
check-cast v3, Ljava/lang/Number;
invoke-virtual {v3}, Ljava/lang/Number;->longValue()J
move-result-wide v1
.line 364
:cond_3b
instance-of v3, p0, Ljava/lang/String;
if-eqz v3, :cond_4d
.line 365
move-object v3, p0
check-cast v3, Ljava/lang/String;
.line 366
.local v3, "strVal":Ljava/lang/String;
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v4
if-nez v4, :cond_49
.line 367
return-object v0
.line 370
:cond_49
invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v1
.line 373
.end local v3 # "strVal":Ljava/lang/String;
:cond_4d
const-wide/16 v3, 0x0
cmp-long v0, v1, v3
if-lez v0, :cond_59
.line 377
new-instance v0, Ljava/sql/Timestamp;
invoke-direct {v0, v1, v2}, Ljava/sql/Timestamp;-><init>(J)V
return-object v0
.line 374
:cond_59
new-instance v0, Lcom/alibaba/fastjson/JSONException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "can not cast to Date, value : "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v0, v3}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static clearClassMapping()V
.registers 1
.line 892
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v0}, Ljava/util/concurrent/ConcurrentMap;->clear()V
.line 893
invoke-static {}, Lcom/alibaba/fastjson/util/TypeUtils;->addBaseClassMappings()V
.line 894
return-void
.end method
.method public static computeGetters(Ljava/lang/Class;Ljava/util/Map;)Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;)",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;"
}
.end annotation
.line 945
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.local p1, "aliasMap":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;"
const/4 v0, 0x1
invoke-static {p0, p1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Ljava/util/Map;Z)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public static computeGetters(Ljava/lang/Class;Ljava/util/Map;Z)Ljava/util/List;
.registers 27
.param p2, "sorted" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;Z)",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;"
}
.end annotation
.line 949
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.local p1, "aliasMap":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;"
move-object/from16 v0, p0
move-object/from16 v1, p1
new-instance v2, Ljava/util/LinkedHashMap;
invoke-direct {v2}, Ljava/util/LinkedHashMap;-><init>()V
.line 951
.local v2, "fieldInfoMap":Ljava/util/Map;, "Ljava/util/Map<Ljava/lang/String;Lcom/alibaba/fastjson/util/FieldInfo;>;"
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;
move-result-object v3
.local v3, "arr$":[Ljava/lang/reflect/Method;
array-length v4, v3
.local v4, "len$":I
const/4 v5, 0x0
.local v5, "i$":I
:goto_f
if-ge v5, v4, :cond_2d5
aget-object v12, v3, v5
.line 952
.local v12, "method":Ljava/lang/reflect/Method;
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v13
.line 953
.local v13, "methodName":Ljava/lang/String;
const/4 v6, 0x0
.local v6, "ordinal":I
const/4 v7, 0x0
.line 955
.local v7, "serialzeFeatures":I
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getModifiers()I
move-result v8
invoke-static {v8}, Ljava/lang/reflect/Modifier;->isStatic(I)Z
move-result v8
if-eqz v8, :cond_29
.line 956
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 959
:cond_29
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;
move-result-object v8
sget-object v9, Ljava/lang/Void;->TYPE:Ljava/lang/Class;
invoke-virtual {v8, v9}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_3b
.line 960
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 963
:cond_3b
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v8
array-length v8, v8
if-eqz v8, :cond_48
.line 964
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 967
:cond_48
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;
move-result-object v8
const-class v9, Ljava/lang/ClassLoader;
if-ne v8, v9, :cond_56
.line 968
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 971
:cond_56
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v8
const-string v9, "getMetaClass"
invoke-virtual {v8, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_78
invoke-virtual {v12}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;
move-result-object v8
invoke-virtual {v8}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v8
const-string v9, "groovy.lang.MetaClass"
invoke-virtual {v8, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_78
.line 973
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 976
:cond_78
const-class v8, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-virtual {v12, v8}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v8
check-cast v8, Lcom/alibaba/fastjson/annotation/JSONField;
.line 978
.local v8, "annotation":Lcom/alibaba/fastjson/annotation/JSONField;
if-nez v8, :cond_88
.line 979
invoke-static {v0, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->getSupperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/alibaba/fastjson/annotation/JSONField;
move-result-object v8
move-object v14, v8
goto :goto_89
.line 978
:cond_88
move-object v14, v8
.line 982
.end local v8 # "annotation":Lcom/alibaba/fastjson/annotation/JSONField;
.local v14, "annotation":Lcom/alibaba/fastjson/annotation/JSONField;
:goto_89
if-eqz v14, :cond_e5
.line 983
invoke-interface {v14}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v8
if-nez v8, :cond_97
.line 984
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 987
:cond_97
invoke-interface {v14}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v15
.line 988
.end local v6 # "ordinal":I
.local v15, "ordinal":I
invoke-interface {v14}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v6
invoke-static {v6}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v16
.line 990
.end local v7 # "serialzeFeatures":I
.local v16, "serialzeFeatures":I
invoke-interface {v14}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/String;->length()I
move-result v6
if-eqz v6, :cond_df
.line 991
invoke-interface {v14}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v6
.line 993
.local v6, "propertyName":Ljava/lang/String;
if-eqz v1, :cond_c4
.line 994
invoke-interface {v1, v6}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v7
move-object v6, v7
check-cast v6, Ljava/lang/String;
.line 995
if-nez v6, :cond_c2
.line 996
move-object/from16 v18, v3
move/from16 v22, v4
goto/16 :goto_2cd
.line 995
:cond_c2
move-object v11, v6
goto :goto_c5
.line 993
:cond_c4
move-object v11, v6
.line 1000
.end local v6 # "propertyName":Ljava/lang/String;
.local v11, "propertyName":Ljava/lang/String;
:goto_c5
new-instance v10, Lcom/alibaba/fastjson/util/FieldInfo;
const/4 v9, 0x0
move-object v6, v10
move-object v7, v11
move-object v8, v12
move-object/from16 v17, v10
move v10, v15
move-object/from16 v18, v3
move-object v3, v11
.end local v11 # "propertyName":Ljava/lang/String;
.local v3, "propertyName":Ljava/lang/String;
.local v18, "arr$":[Ljava/lang/reflect/Method;
move/from16 v11, v16
invoke-direct/range {v6 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;II)V
move-object/from16 v6, v17
invoke-interface {v2, v3, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1001
move/from16 v22, v4
goto/16 :goto_2cd
.line 990
.end local v18 # "arr$":[Ljava/lang/reflect/Method;
.local v3, "arr$":[Ljava/lang/reflect/Method;
:cond_df
move-object/from16 v18, v3
.end local v3 # "arr$":[Ljava/lang/reflect/Method;
.restart local v18 # "arr$":[Ljava/lang/reflect/Method;
move v6, v15
move/from16 v7, v16
goto :goto_e7
.line 982
.end local v15 # "ordinal":I
.end local v16 # "serialzeFeatures":I
.end local v18 # "arr$":[Ljava/lang/reflect/Method;
.restart local v3 # "arr$":[Ljava/lang/reflect/Method;
.local v6, "ordinal":I
.restart local v7 # "serialzeFeatures":I
:cond_e5
move-object/from16 v18, v3
.line 1005
.end local v3 # "arr$":[Ljava/lang/reflect/Method;
.restart local v18 # "arr$":[Ljava/lang/reflect/Method;
:goto_e7
const-string v3, "get"
invoke-virtual {v13, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v3
const/16 v15, 0x66
const/16 v11, 0x5f
const/4 v10, 0x3
if-eqz v3, :cond_200
.line 1006
invoke-virtual {v13}, Ljava/lang/String;->length()I
move-result v3
const/4 v8, 0x4
if-ge v3, v8, :cond_ff
.line 1007
move/from16 v22, v4
goto/16 :goto_2cd
.line 1010
:cond_ff
const-string v3, "getClass"
invoke-virtual {v13, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_10b
.line 1011
move/from16 v22, v4
goto/16 :goto_2cd
.line 1014
:cond_10b
invoke-virtual {v13, v10}, Ljava/lang/String;->charAt(I)C
move-result v3
.line 1017
.local v3, "c3":C
invoke-static {v3}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v9
if-eqz v9, :cond_13f
.line 1018
sget-boolean v9, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
if-eqz v9, :cond_122
.line 1019
invoke-virtual {v13, v10}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v8
invoke-static {v8}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v8
.local v8, "propertyName":Ljava/lang/String;
goto :goto_169
.line 1021
.end local v8 # "propertyName":Ljava/lang/String;
:cond_122
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v13, v10}, Ljava/lang/String;->charAt(I)C
move-result v16
invoke-static/range {v16 .. v16}, Ljava/lang/Character;->toLowerCase(C)C
move-result v10
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v13, v8}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v8
invoke-virtual {v9, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v8
const/4 v10, 0x3
.restart local v8 # "propertyName":Ljava/lang/String;
goto :goto_169
.line 1023
.end local v8 # "propertyName":Ljava/lang/String;
:cond_13f
if-ne v3, v11, :cond_147
.line 1024
invoke-virtual {v13, v8}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v8
const/4 v10, 0x3
.restart local v8 # "propertyName":Ljava/lang/String;
goto :goto_169
.line 1025
.end local v8 # "propertyName":Ljava/lang/String;
:cond_147
if-ne v3, v15, :cond_14f
.line 1026
const/4 v10, 0x3
invoke-virtual {v13, v10}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v8
.restart local v8 # "propertyName":Ljava/lang/String;
goto :goto_169
.line 1027
.end local v8 # "propertyName":Ljava/lang/String;
:cond_14f
const/4 v10, 0x3
invoke-virtual {v13}, Ljava/lang/String;->length()I
move-result v9
const/4 v11, 0x5
if-lt v9, v11, :cond_1fa
invoke-virtual {v13, v8}, Ljava/lang/String;->charAt(I)C
move-result v8
invoke-static {v8}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v8
if-eqz v8, :cond_1fa
.line 1028
invoke-virtual {v13, v10}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v8
invoke-static {v8}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v8
.line 1033
.restart local v8 # "propertyName":Ljava/lang/String;
:goto_169
invoke-static {v0, v8}, Lcom/alibaba/fastjson/util/TypeUtils;->isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
move-result v17
.line 1035
.local v17, "ignore":Z
if-eqz v17, :cond_173
.line 1036
move/from16 v22, v4
goto/16 :goto_2cd
.line 1039
:cond_173
invoke-static {v0, v8}, Lcom/alibaba/fastjson/parser/ParserConfig;->getField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v11
.line 1041
.local v11, "field":Ljava/lang/reflect/Field;
if-eqz v11, :cond_1c6
.line 1042
const-class v9, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-virtual {v11, v9}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v9
check-cast v9, Lcom/alibaba/fastjson/annotation/JSONField;
.line 1044
.local v9, "fieldAnnotation":Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v9, :cond_1c6
.line 1045
invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v19
if-nez v19, :cond_18d
.line 1046
move/from16 v22, v4
goto/16 :goto_2cd
.line 1049
:cond_18d
invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v6
.line 1050
invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v19
invoke-static/range {v19 .. v19}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v7
.line 1052
invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v19
invoke-virtual/range {v19 .. v19}, Ljava/lang/String;->length()I
move-result v19
if-eqz v19, :cond_1c1
.line 1053
invoke-interface {v9}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v8
.line 1055
if-eqz v1, :cond_1bc
.line 1056
invoke-interface {v1, v8}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v19
move-object/from16 v8, v19
check-cast v8, Ljava/lang/String;
.line 1057
if-nez v8, :cond_1b7
.line 1058
move/from16 v22, v4
goto/16 :goto_2cd
.line 1057
:cond_1b7
move/from16 v19, v6
move/from16 v20, v7
goto :goto_1ca
.line 1055
:cond_1bc
move/from16 v19, v6
move/from16 v20, v7
goto :goto_1ca
.line 1052
:cond_1c1
move/from16 v19, v6
move/from16 v20, v7
goto :goto_1ca
.line 1065
.end local v9 # "fieldAnnotation":Lcom/alibaba/fastjson/annotation/JSONField;
:cond_1c6
move/from16 v19, v6
move/from16 v20, v7
.end local v6 # "ordinal":I
.end local v7 # "serialzeFeatures":I
.local v19, "ordinal":I
.local v20, "serialzeFeatures":I
:goto_1ca
if-eqz v1, :cond_1db
.line 1066
invoke-interface {v1, v8}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v6
move-object v8, v6
check-cast v8, Ljava/lang/String;
.line 1067
if-nez v8, :cond_1d9
.line 1068
move/from16 v22, v4
goto/16 :goto_2cd
.line 1067
:cond_1d9
move-object v9, v8
goto :goto_1dc
.line 1065
:cond_1db
move-object v9, v8
.line 1072
.end local v8 # "propertyName":Ljava/lang/String;
.local v9, "propertyName":Ljava/lang/String;
:goto_1dc
new-instance v8, Lcom/alibaba/fastjson/util/FieldInfo;
move-object v6, v8
move-object v7, v9
move-object v15, v8
move-object v8, v12
move/from16 v21, v3
move-object v3, v9
.end local v9 # "propertyName":Ljava/lang/String;
.local v3, "propertyName":Ljava/lang/String;
.local v21, "c3":C
move-object v9, v11
move/from16 v22, v4
const/4 v4, 0x3
.end local v4 # "len$":I
.local v22, "len$":I
move/from16 v10, v19
move-object/from16 v16, v11
.end local v11 # "field":Ljava/lang/reflect/Field;
.local v16, "field":Ljava/lang/reflect/Field;
move/from16 v11, v20
invoke-direct/range {v6 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;II)V
invoke-interface {v2, v3, v15}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move/from16 v6, v19
move/from16 v7, v20
goto :goto_203
.line 1027
.end local v16 # "field":Ljava/lang/reflect/Field;
.end local v17 # "ignore":Z
.end local v19 # "ordinal":I
.end local v20 # "serialzeFeatures":I
.end local v21 # "c3":C
.end local v22 # "len$":I
.local v3, "c3":C
.restart local v4 # "len$":I
.restart local v6 # "ordinal":I
.restart local v7 # "serialzeFeatures":I
:cond_1fa
move/from16 v21, v3
move/from16 v22, v4
.end local v3 # "c3":C
.end local v4 # "len$":I
.restart local v21 # "c3":C
.restart local v22 # "len$":I
goto/16 :goto_2cd
.line 1005
.end local v21 # "c3":C
.end local v22 # "len$":I
.restart local v4 # "len$":I
:cond_200
move/from16 v22, v4
const/4 v4, 0x3
.line 1075
.end local v4 # "len$":I
.restart local v22 # "len$":I
:goto_203
const-string v3, "is"
invoke-virtual {v13, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_2cd
.line 1076
invoke-virtual {v13}, Ljava/lang/String;->length()I
move-result v3
if-ge v3, v4, :cond_213
.line 1077
goto/16 :goto_2cd
.line 1080
:cond_213
const/4 v3, 0x2
invoke-virtual {v13, v3}, Ljava/lang/String;->charAt(I)C
move-result v15
.line 1083
.local v15, "c2":C
invoke-static {v15}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v8
if-eqz v8, :cond_247
.line 1084
sget-boolean v8, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
if-eqz v8, :cond_22b
.line 1085
invoke-virtual {v13, v3}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
.local v3, "propertyName":Ljava/lang/String;
goto :goto_258
.line 1087
.end local v3 # "propertyName":Ljava/lang/String;
:cond_22b
new-instance v8, Ljava/lang/StringBuilder;
invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v13, v3}, Ljava/lang/String;->charAt(I)C
move-result v3
invoke-static {v3}, Ljava/lang/Character;->toLowerCase(C)C
move-result v3
invoke-virtual {v8, v3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v13, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v3
invoke-virtual {v8, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
.restart local v3 # "propertyName":Ljava/lang/String;
goto :goto_258
.line 1089
.end local v3 # "propertyName":Ljava/lang/String;
:cond_247
const/16 v8, 0x5f
if-ne v15, v8, :cond_250
.line 1090
invoke-virtual {v13, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v3
.restart local v3 # "propertyName":Ljava/lang/String;
goto :goto_258
.line 1091
.end local v3 # "propertyName":Ljava/lang/String;
:cond_250
const/16 v4, 0x66
if-ne v15, v4, :cond_2cd
.line 1092
invoke-virtual {v13, v3}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v3
.line 1097
.restart local v3 # "propertyName":Ljava/lang/String;
:goto_258
invoke-static {v0, v3}, Lcom/alibaba/fastjson/parser/ParserConfig;->getField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v4
.line 1099
.local v4, "field":Ljava/lang/reflect/Field;
if-nez v4, :cond_262
.line 1100
invoke-static {v0, v13}, Lcom/alibaba/fastjson/parser/ParserConfig;->getField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v4
.line 1103
:cond_262
if-eqz v4, :cond_2aa
.line 1104
const-class v8, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-virtual {v4, v8}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v8
check-cast v8, Lcom/alibaba/fastjson/annotation/JSONField;
.line 1106
.local v8, "fieldAnnotation":Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v8, :cond_2aa
.line 1107
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v9
if-nez v9, :cond_275
.line 1108
goto :goto_2cd
.line 1111
:cond_275
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v6
.line 1112
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v9
invoke-static {v9}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v7
.line 1114
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/String;->length()I
move-result v9
if-eqz v9, :cond_2a5
.line 1115
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v3
.line 1117
if-eqz v1, :cond_2a0
.line 1118
invoke-interface {v1, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v9
move-object v3, v9
check-cast v3, Ljava/lang/String;
.line 1119
if-nez v3, :cond_29b
.line 1120
goto :goto_2cd
.line 1119
:cond_29b
move/from16 v16, v6
move/from16 v17, v7
goto :goto_2ae
.line 1117
:cond_2a0
move/from16 v16, v6
move/from16 v17, v7
goto :goto_2ae
.line 1114
:cond_2a5
move/from16 v16, v6
move/from16 v17, v7
goto :goto_2ae
.line 1127
.end local v8 # "fieldAnnotation":Lcom/alibaba/fastjson/annotation/JSONField;
:cond_2aa
move/from16 v16, v6
move/from16 v17, v7
.end local v6 # "ordinal":I
.end local v7 # "serialzeFeatures":I
.local v16, "ordinal":I
.local v17, "serialzeFeatures":I
:goto_2ae
if-eqz v1, :cond_2ba
.line 1128
invoke-interface {v1, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v6
move-object v3, v6
check-cast v3, Ljava/lang/String;
.line 1129
if-nez v3, :cond_2ba
.line 1130
goto :goto_2cd
.line 1134
:cond_2ba
new-instance v11, Lcom/alibaba/fastjson/util/FieldInfo;
move-object v6, v11
move-object v7, v3
move-object v8, v12
move-object v9, v4
move/from16 v10, v16
move-object/from16 v19, v4
move-object v4, v11
.end local v4 # "field":Ljava/lang/reflect/Field;
.local v19, "field":Ljava/lang/reflect/Field;
move/from16 v11, v17
invoke-direct/range {v6 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;II)V
invoke-interface {v2, v3, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 951
.end local v3 # "propertyName":Ljava/lang/String;
.end local v12 # "method":Ljava/lang/reflect/Method;
.end local v13 # "methodName":Ljava/lang/String;
.end local v14 # "annotation":Lcom/alibaba/fastjson/annotation/JSONField;
.end local v15 # "c2":C
.end local v16 # "ordinal":I
.end local v17 # "serialzeFeatures":I
.end local v19 # "field":Ljava/lang/reflect/Field;
:cond_2cd
:goto_2cd
add-int/lit8 v5, v5, 0x1
move-object/from16 v3, v18
move/from16 v4, v22
goto/16 :goto_f
.end local v18 # "arr$":[Ljava/lang/reflect/Method;
.end local v22 # "len$":I
.local v3, "arr$":[Ljava/lang/reflect/Method;
.local v4, "len$":I
:cond_2d5
move-object/from16 v18, v3
move/from16 v22, v4
.line 1138
.end local v3 # "arr$":[Ljava/lang/reflect/Method;
.end local v4 # "len$":I
.end local v5 # "i$":I
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getFields()[Ljava/lang/reflect/Field;
move-result-object v3
.local v3, "arr$":[Ljava/lang/reflect/Field;
array-length v4, v3
.restart local v4 # "len$":I
const/4 v5, 0x0
.restart local v5 # "i$":I
:goto_2df
if-ge v5, v4, :cond_358
aget-object v12, v3, v5
.line 1139
.local v12, "field":Ljava/lang/reflect/Field;
invoke-virtual {v12}, Ljava/lang/reflect/Field;->getModifiers()I
move-result v6
invoke-static {v6}, Ljava/lang/reflect/Modifier;->isStatic(I)Z
move-result v6
if-eqz v6, :cond_2ef
.line 1140
goto/16 :goto_353
.line 1143
:cond_2ef
const-class v6, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-virtual {v12, v6}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v6
move-object v13, v6
check-cast v13, Lcom/alibaba/fastjson/annotation/JSONField;
.line 1145
.local v13, "fieldAnnotation":Lcom/alibaba/fastjson/annotation/JSONField;
const/4 v6, 0x0
.restart local v6 # "ordinal":I
const/4 v7, 0x0
.line 1146
.restart local v7 # "serialzeFeatures":I
invoke-virtual {v12}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;
move-result-object v8
.line 1147
.local v8, "propertyName":Ljava/lang/String;
if-eqz v13, :cond_327
.line 1148
invoke-interface {v13}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v9
if-nez v9, :cond_307
.line 1149
goto :goto_353
.line 1152
:cond_307
invoke-interface {v13}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v6
.line 1153
invoke-interface {v13}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v9
invoke-static {v9}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v7
.line 1155
invoke-interface {v13}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v9
invoke-virtual {v9}, Ljava/lang/String;->length()I
move-result v9
if-eqz v9, :cond_324
.line 1156
invoke-interface {v13}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v8
move v14, v6
move v15, v7
goto :goto_329
.line 1155
:cond_324
move v14, v6
move v15, v7
goto :goto_329
.line 1147
:cond_327
move v14, v6
move v15, v7
.line 1160
.end local v6 # "ordinal":I
.end local v7 # "serialzeFeatures":I
.local v14, "ordinal":I
.local v15, "serialzeFeatures":I
:goto_329
if-eqz v1, :cond_337
.line 1161
invoke-interface {v1, v8}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v6
move-object v8, v6
check-cast v8, Ljava/lang/String;
.line 1162
if-nez v8, :cond_335
.line 1163
goto :goto_353
.line 1162
:cond_335
move-object v11, v8
goto :goto_338
.line 1160
:cond_337
move-object v11, v8
.line 1167
.end local v8 # "propertyName":Ljava/lang/String;
.local v11, "propertyName":Ljava/lang/String;
:goto_338
invoke-interface {v2, v11}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v6
if-nez v6, :cond_352
.line 1168
new-instance v10, Lcom/alibaba/fastjson/util/FieldInfo;
const/4 v8, 0x0
move-object v6, v10
move-object v7, v11
move-object v9, v12
move-object/from16 v23, v10
move v10, v14
move-object v1, v11
.end local v11 # "propertyName":Ljava/lang/String;
.local v1, "propertyName":Ljava/lang/String;
move v11, v15
invoke-direct/range {v6 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;II)V
move-object/from16 v6, v23
invoke-interface {v2, v1, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_353
.line 1167
.end local v1 # "propertyName":Ljava/lang/String;
.restart local v11 # "propertyName":Ljava/lang/String;
:cond_352
move-object v1, v11
.line 1138
.end local v11 # "propertyName":Ljava/lang/String;
.end local v12 # "field":Ljava/lang/reflect/Field;
.end local v13 # "fieldAnnotation":Lcom/alibaba/fastjson/annotation/JSONField;
.end local v14 # "ordinal":I
.end local v15 # "serialzeFeatures":I
:goto_353
add-int/lit8 v5, v5, 0x1
move-object/from16 v1, p1
goto :goto_2df
.line 1172
.end local v3 # "arr$":[Ljava/lang/reflect/Field;
.end local v4 # "len$":I
.end local v5 # "i$":I
:cond_358
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 1174
.local v1, "fieldInfoList":Ljava/util/List;, "Ljava/util/List<Lcom/alibaba/fastjson/util/FieldInfo;>;"
const/4 v3, 0x0
.line 1175
.local v3, "containsAll":Z
const/4 v4, 0x0
.line 1177
.local v4, "orders":[Ljava/lang/String;
const-class v5, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-virtual {v0, v5}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v5
check-cast v5, Lcom/alibaba/fastjson/annotation/JSONType;
.line 1178
.local v5, "annotation":Lcom/alibaba/fastjson/annotation/JSONType;
if-eqz v5, :cond_38b
.line 1179
invoke-interface {v5}, Lcom/alibaba/fastjson/annotation/JSONType;->orders()[Ljava/lang/String;
move-result-object v4
.line 1181
if-eqz v4, :cond_38a
array-length v6, v4
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v7
if-ne v6, v7, :cond_38a
.line 1182
const/4 v3, 0x1
.line 1183
move-object v6, v4
.local v6, "arr$":[Ljava/lang/String;
array-length v7, v6
.local v7, "len$":I
const/4 v8, 0x0
.local v8, "i$":I
:goto_37a
if-ge v8, v7, :cond_389
aget-object v9, v6, v8
.line 1184
.local v9, "item":Ljava/lang/String;
invoke-interface {v2, v9}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v10
if-nez v10, :cond_386
.line 1185
const/4 v3, 0x0
.line 1186
goto :goto_389
.line 1183
.end local v9 # "item":Ljava/lang/String;
:cond_386
add-int/lit8 v8, v8, 0x1
goto :goto_37a
.end local v6 # "arr$":[Ljava/lang/String;
.end local v7 # "len$":I
.end local v8 # "i$":I
:cond_389
:goto_389
goto :goto_38b
.line 1190
:cond_38a
const/4 v3, 0x0
.line 1194
:cond_38b
:goto_38b
if-eqz v3, :cond_3a1
.line 1195
move-object v6, v4
.restart local v6 # "arr$":[Ljava/lang/String;
array-length v7, v6
.restart local v7 # "len$":I
const/4 v8, 0x0
.restart local v8 # "i$":I
:goto_390
if-ge v8, v7, :cond_3a0
aget-object v9, v6, v8
.line 1196
.restart local v9 # "item":Ljava/lang/String;
invoke-interface {v2, v9}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v10
check-cast v10, Lcom/alibaba/fastjson/util/FieldInfo;
.line 1197
.local v10, "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
invoke-interface {v1, v10}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 1195
.end local v9 # "item":Ljava/lang/String;
.end local v10 # "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
add-int/lit8 v8, v8, 0x1
goto :goto_390
.end local v6 # "arr$":[Ljava/lang/String;
.end local v7 # "len$":I
.end local v8 # "i$":I
:cond_3a0
goto :goto_3be
.line 1200
:cond_3a1
invoke-interface {v2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v6
invoke-interface {v6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v6
.local v6, "i$":Ljava/util/Iterator;
:goto_3a9
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v7
if-eqz v7, :cond_3b9
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v7
check-cast v7, Lcom/alibaba/fastjson/util/FieldInfo;
.line 1201
.local v7, "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
invoke-interface {v1, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_3a9
.line 1204
.end local v6 # "i$":Ljava/util/Iterator;
.end local v7 # "fieldInfo":Lcom/alibaba/fastjson/util/FieldInfo;
:cond_3b9
if-eqz p2, :cond_3be
.line 1205
invoke-static {v1}, Ljava/util/Collections;->sort(Ljava/util/List;)V
.line 1209
:cond_3be
:goto_3be
return-object v1
.end method
.method public static decapitalize(Ljava/lang/String;)Ljava/lang/String;
.registers 4
.param p0, "name" # Ljava/lang/String;
.line 1351
if-eqz p0, :cond_38
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_9
goto :goto_38
.line 1354
:cond_9
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
const/4 v1, 0x1
const/4 v2, 0x0
if-le v0, v1, :cond_26
invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
move-result v0
invoke-static {v0}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v0
if-eqz v0, :cond_26
invoke-virtual {p0, v2}, Ljava/lang/String;->charAt(I)C
move-result v0
invoke-static {v0}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v0
if-eqz v0, :cond_26
.line 1356
return-object p0
.line 1358
:cond_26
invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C
move-result-object v0
.line 1359
.local v0, "chars":[C
aget-char v1, v0, v2
invoke-static {v1}, Ljava/lang/Character;->toLowerCase(C)C
move-result v1
aput-char v1, v0, v2
.line 1360
new-instance v1, Ljava/lang/String;
invoke-direct {v1, v0}, Ljava/lang/String;-><init>([C)V
return-object v1
.line 1352
.end local v0 # "chars":[C
:cond_38
:goto_38
return-object p0
.end method
.method public static getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
.registers 3
.param p0, "type" # Ljava/lang/reflect/Type;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Type;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 1304
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
const-class v1, Ljava/lang/Class;
if-ne v0, v1, :cond_c
.line 1305
move-object v0, p0
check-cast v0, Ljava/lang/Class;
return-object v0
.line 1308
:cond_c
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_1c
.line 1309
move-object v0, p0
check-cast v0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object v0
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object v0
return-object v0
.line 1312
:cond_1c
const-class v0, Ljava/lang/Object;
return-object v0
.end method
.method public static getField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
.registers 7
.param p1, "fieldName" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/String;",
")",
"Ljava/lang/reflect/Field;"
}
.end annotation
.line 1316
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {p0}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;
move-result-object v0
.local v0, "arr$":[Ljava/lang/reflect/Field;
array-length v1, v0
.local v1, "len$":I
const/4 v2, 0x0
.local v2, "i$":I
:goto_6
if-ge v2, v1, :cond_18
aget-object v3, v0, v2
.line 1317
.local v3, "field":Ljava/lang/reflect/Field;
invoke-virtual {v3}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;
move-result-object v4
invoke-virtual {p1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_15
.line 1318
return-object v3
.line 1316
.end local v3 # "field":Ljava/lang/reflect/Field;
:cond_15
add-int/lit8 v2, v2, 0x1
goto :goto_6
.line 1322
.end local v0 # "arr$":[Ljava/lang/reflect/Field;
.end local v1 # "len$":I
.end local v2 # "i$":I
:cond_18
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v0
.line 1323
.local v0, "superClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
if-eqz v0, :cond_27
const-class v1, Ljava/lang/Object;
if-eq v0, v1, :cond_27
.line 1324
invoke-static {v0, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v1
return-object v1
.line 1327
:cond_27
const/4 v1, 0x0
return-object v1
.end method
.method public static getGenericParamType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
.registers 2
.param p0, "type" # Ljava/lang/reflect/Type;
.line 1278
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_5
.line 1279
return-object p0
.line 1282
:cond_5
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_15
.line 1283
move-object v0, p0
check-cast v0, Ljava/lang/Class;
invoke-virtual {v0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
move-result-object v0
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getGenericParamType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v0
return-object v0
.line 1286
:cond_15
return-object p0
.end method
.method public static getParserFeatures(Ljava/lang/Class;)I
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)I"
}
.end annotation
.line 1341
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-virtual {p0, v0}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONType;
.line 1343
.local v0, "annotation":Lcom/alibaba/fastjson/annotation/JSONType;
if-nez v0, :cond_c
.line 1344
const/4 v1, 0x0
return v1
.line 1347
:cond_c
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;
move-result-object v1
invoke-static {v1}, Lcom/alibaba/fastjson/parser/Feature;->of([Lcom/alibaba/fastjson/parser/Feature;)I
move-result v1
return v1
.end method
.method public static getSerializeFeatures(Ljava/lang/Class;)I
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)I"
}
.end annotation
.line 1331
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-virtual {p0, v0}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONType;
.line 1333
.local v0, "annotation":Lcom/alibaba/fastjson/annotation/JSONType;
if-nez v0, :cond_c
.line 1334
const/4 v1, 0x0
return v1
.line 1337
:cond_c
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v1
invoke-static {v1}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v1
return v1
.end method
.method public static getSupperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/alibaba/fastjson/annotation/JSONField;
.registers 14
.param p1, "method" # Ljava/lang/reflect/Method;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/reflect/Method;",
")",
"Lcom/alibaba/fastjson/annotation/JSONField;"
}
.end annotation
.line 1213
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {p0}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;
move-result-object v0
.local v0, "arr$":[Ljava/lang/Class;
array-length v1, v0
.local v1, "len$":I
const/4 v2, 0x0
.local v2, "i$":I
:goto_6
if-ge v2, v1, :cond_64
aget-object v3, v0, v2
.line 1214
.local v3, "interfaceClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-virtual {v3}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;
move-result-object v4
.local v4, "arr$":[Ljava/lang/reflect/Method;
array-length v5, v4
.local v5, "len$":I
const/4 v6, 0x0
.local v6, "i$":I
:goto_10
if-ge v6, v5, :cond_61
aget-object v7, v4, v6
.line 1215
.local v7, "interfaceMethod":Ljava/lang/reflect/Method;
invoke-virtual {v7}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v8
invoke-virtual {p1}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v9
invoke-virtual {v8, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-nez v8, :cond_23
.line 1216
goto :goto_5e
.line 1219
:cond_23
invoke-virtual {v7}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v8
array-length v8, v8
invoke-virtual {p1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v9
array-length v9, v9
if-eq v8, v9, :cond_30
.line 1220
goto :goto_5e
.line 1223
:cond_30
const/4 v8, 0x1
.line 1224
.local v8, "match":Z
const/4 v9, 0x0
.local v9, "i":I
:goto_32
invoke-virtual {v7}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v10
array-length v10, v10
if-ge v9, v10, :cond_50
.line 1225
invoke-virtual {v7}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v10
aget-object v10, v10, v9
invoke-virtual {p1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v11
aget-object v11, v11, v9
invoke-virtual {v10, v11}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v10
if-nez v10, :cond_4d
.line 1226
const/4 v8, 0x0
.line 1227
goto :goto_50
.line 1224
:cond_4d
add-int/lit8 v9, v9, 0x1
goto :goto_32
.line 1231
.end local v9 # "i":I
:cond_50
:goto_50
if-nez v8, :cond_53
.line 1232
goto :goto_5e
.line 1235
:cond_53
const-class v9, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-virtual {v7, v9}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v9
check-cast v9, Lcom/alibaba/fastjson/annotation/JSONField;
.line 1236
.local v9, "annotation":Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v9, :cond_5e
.line 1237
return-object v9
.line 1214
.end local v7 # "interfaceMethod":Ljava/lang/reflect/Method;
.end local v8 # "match":Z
.end local v9 # "annotation":Lcom/alibaba/fastjson/annotation/JSONField;
:cond_5e
:goto_5e
add-int/lit8 v6, v6, 0x1
goto :goto_10
.line 1213
.end local v3 # "interfaceClass":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
.end local v4 # "arr$":[Ljava/lang/reflect/Method;
.end local v5 # "len$":I
.end local v6 # "i$":I
:cond_61
add-int/lit8 v2, v2, 0x1
goto :goto_6
.line 1242
.end local v0 # "arr$":[Ljava/lang/Class;
.end local v1 # "len$":I
.end local v2 # "i$":I
:cond_64
const/4 v0, 0x0
return-object v0
.end method
.method public static isGenericParamType(Ljava/lang/reflect/Type;)Z
.registers 2
.param p0, "type" # Ljava/lang/reflect/Type;
.line 1266
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_6
.line 1267
const/4 v0, 0x1
return v0
.line 1270
:cond_6
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_16
.line 1271
move-object v0, p0
check-cast v0, Ljava/lang/Class;
invoke-virtual {v0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
move-result-object v0
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->isGenericParamType(Ljava/lang/reflect/Type;)Z
move-result v0
return v0
.line 1274
:cond_16
const/4 v0, 0x0
return v0
.end method
.method private static isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
.registers 9
.param p1, "propertyName" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/String;",
")Z"
}
.end annotation
.line 1246
.local p0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-virtual {p0, v0}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONType;
.line 1248
.local v0, "jsonType":Lcom/alibaba/fastjson/annotation/JSONType;
const/4 v1, 0x1
if-eqz v0, :cond_25
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->ignores()[Ljava/lang/String;
move-result-object v2
if-eqz v2, :cond_25
.line 1249
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->ignores()[Ljava/lang/String;
move-result-object v2
.local v2, "arr$":[Ljava/lang/String;
array-length v3, v2
.local v3, "len$":I
const/4 v4, 0x0
.local v4, "i$":I
:goto_17
if-ge v4, v3, :cond_25
aget-object v5, v2, v4
.line 1250
.local v5, "item":Ljava/lang/String;
invoke-virtual {p1, v5}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v6
if-eqz v6, :cond_22
.line 1251
return v1
.line 1249
.end local v5 # "item":Ljava/lang/String;
:cond_22
add-int/lit8 v4, v4, 0x1
goto :goto_17
.line 1256
.end local v2 # "arr$":[Ljava/lang/String;
.end local v3 # "len$":I
.end local v4 # "i$":I
:cond_25
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v2
const-class v3, Ljava/lang/Object;
if-eq v2, v3, :cond_3e
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v2
if-eqz v2, :cond_3e
.line 1257
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v2
invoke-static {v2, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_3e
.line 1258
return v1
.line 1262
:cond_3e
const/4 v1, 0x0
return v1
.end method
.method public static loadClass(Ljava/lang/String;)Ljava/lang/Class;
.registers 6
.param p0, "className" # Ljava/lang/String;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 897
if-eqz p0, :cond_6d
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_9
goto :goto_6d
.line 901
:cond_9
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v0, p0}, Ljava/util/concurrent/ConcurrentMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Class;
.line 903
.local v0, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
if-eqz v0, :cond_14
.line 904
return-object v0
.line 907
:cond_14
const/4 v1, 0x0
invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
move-result v2
const/16 v3, 0x5b
const/4 v4, 0x1
if-ne v2, v3, :cond_2f
.line 908
invoke-virtual {p0, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v2
.line 909
.local v2, "componentType":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
invoke-static {v2, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
return-object v1
.line 912
.end local v2 # "componentType":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_2f
const-string v1, "L"
invoke-virtual {p0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_4d
const-string v1, ";"
invoke-virtual {p0, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_4d
.line 913
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
sub-int/2addr v1, v4
invoke-virtual {p0, v4, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v1
.line 914
.local v1, "newClassName":Ljava/lang/String;
invoke-static {v1}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v2
return-object v2
.line 918
.end local v1 # "newClassName":Ljava/lang/String;
:cond_4d
:try_start_4d
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader;
move-result-object v1
.line 920
.local v1, "classLoader":Ljava/lang/ClassLoader;
if-eqz v1, :cond_60
.line 921
invoke-virtual {v1, p0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v2
move-object v0, v2
.line 923
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->addClassMapping(Ljava/lang/String;Ljava/lang/Class;)V
:try_end_5f
.catchall {:try_start_4d .. :try_end_5f} :catchall_61
.line 925
return-object v0
.line 929
.end local v1 # "classLoader":Ljava/lang/ClassLoader;
:cond_60
goto :goto_62
.line 927
:catchall_61
move-exception v1
.line 932
:goto_62
:try_start_62
invoke-static {p0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
move-object v0, v1
.line 934
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->addClassMapping(Ljava/lang/String;Ljava/lang/Class;)V
:try_end_6a
.catchall {:try_start_62 .. :try_end_6a} :catchall_6b
.line 936
return-object v0
.line 937
:catchall_6b
move-exception v1
.line 941
return-object v0
.line 898
.end local v0 # "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
:cond_6d
:goto_6d
const/4 v0, 0x0
return-object v0
.end method
.method static setAccessible(Ljava/lang/reflect/AccessibleObject;)V
.registers 3
.param p0, "obj" # Ljava/lang/reflect/AccessibleObject;
.line 1364
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessibleEnable:Z
if-nez v0, :cond_5
.line 1365
return-void
.line 1368
:cond_5
invoke-virtual {p0}, Ljava/lang/reflect/AccessibleObject;->isAccessible()Z
move-result v0
if-eqz v0, :cond_c
.line 1369
return-void
.line 1373
:cond_c
const/4 v0, 0x1
:try_start_d
invoke-virtual {p0, v0}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V
:try_end_10
.catch Ljava/security/AccessControlException; {:try_start_d .. :try_end_10} :catch_11
.line 1376
goto :goto_15
.line 1374
:catch_11
move-exception v0
.line 1375
.local v0, "error":Ljava/security/AccessControlException;
const/4 v1, 0x0
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessibleEnable:Z
.line 1377
.end local v0 # "error":Ljava/security/AccessControlException;
:goto_15
return-void
.end method
.method public static unwrap(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
.registers 3
.param p0, "type" # Ljava/lang/reflect/Type;
.line 1290
instance-of v0, p0, Ljava/lang/reflect/GenericArrayType;
if-eqz v0, :cond_19
.line 1291
move-object v0, p0
check-cast v0, Ljava/lang/reflect/GenericArrayType;
invoke-interface {v0}, Ljava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type;
move-result-object v0
.line 1292
.local v0, "componentType":Ljava/lang/reflect/Type;
sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_12
.line 1293
const-class v1, [B
return-object v1
.line 1295
:cond_12
sget-object v1, Ljava/lang/Character;->TYPE:Ljava/lang/Class;
if-ne v0, v1, :cond_19
.line 1296
const-class v1, [C
return-object v1
.line 1300
.end local v0 # "componentType":Ljava/lang/reflect/Type;
:cond_19
return-object p0
.end method