TypeUtils.smali
.class public Lcom/alibaba/fastjson/util/TypeUtils;
.super Ljava/lang/Object;
.source "TypeUtils.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/alibaba/fastjson/util/TypeUtils$MethodInheritanceComparator;
}
.end annotation
# static fields
.field private static final NUMBER_WITH_TRAILING_ZEROS_PATTERN:Ljava/util/regex/Pattern;
.field private static OPTIONAL_EMPTY:Ljava/lang/Object; = null
.field private static OPTIONAL_ERROR:Z = false
.field private static addBaseClassMappingsFunction:Lcom/alibaba/fastjson/util/Function; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/alibaba/fastjson/util/Function<",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/Class<",
"*>;>;",
"Ljava/lang/Void;",
">;"
}
.end annotation
.end field
.field private static castFunction:Lcom/alibaba/fastjson/util/BiFunction; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/alibaba/fastjson/util/BiFunction<",
"Ljava/lang/Object;",
"Ljava/lang/Class;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field private static castToSqlDateFunction:Lcom/alibaba/fastjson/util/Function; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/alibaba/fastjson/util/Function<",
"Ljava/lang/Object;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field private static castToSqlTimeFunction:Lcom/alibaba/fastjson/util/Function; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/alibaba/fastjson/util/Function<",
"Ljava/lang/Object;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field public static castToTimestampFunction:Lcom/alibaba/fastjson/util/Function; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/alibaba/fastjson/util/Function<",
"Ljava/lang/Object;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field private static volatile classXmlAccessorType_error:Z = false
.field private static class_JacksonCreator:Ljava/lang/Class; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"+",
"Ljava/lang/annotation/Annotation;",
">;"
}
.end annotation
.end field
.field private static class_JacksonCreator_error:Z = false
.field private static class_ManyToMany:Ljava/lang/Class; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"+",
"Ljava/lang/annotation/Annotation;",
">;"
}
.end annotation
.end field
.field private static class_ManyToMany_error:Z = false
.field private static class_OneToMany:Ljava/lang/Class; = null
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"+",
"Ljava/lang/annotation/Annotation;",
">;"
}
.end annotation
.end field
.field private static class_OneToMany_error:Z = false
.field private static volatile class_XmlAccessType:Ljava/lang/Class; = null
.field private static volatile class_XmlAccessorType:Ljava/lang/Class; = null
.field private static class_deque:Ljava/lang/Class; = null
.field public static compatibleWithFieldName:Z = false
.field public static compatibleWithJavaBean:Z = false
.field private static volatile field_XmlAccessType_FIELD:Ljava/lang/reflect/Field; = null
.field private static volatile field_XmlAccessType_FIELD_VALUE:Ljava/lang/Object; = null
.field public static final fnv1a_64_magic_hashcode:J = -0x340d631b7bdddcdbL
.field public static final fnv1a_64_magic_prime:J = 0x100000001b3L
.field private static isClobFunction:Lcom/alibaba/fastjson/util/Function;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/alibaba/fastjson/util/Function<",
"Ljava/lang/Class;",
"Ljava/lang/Boolean;",
">;"
}
.end annotation
.end field
.field private static final isProxyClassNames:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
.field private static volatile kotlinIgnores:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/Class;",
"[",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
.field private static volatile kotlinIgnores_error:Z
.field private static volatile kotlin_class_klass_error:Z
.field private static volatile kotlin_error:Z
.field private static volatile kotlin_kclass_constructor:Ljava/lang/reflect/Constructor;
.field private static volatile kotlin_kclass_getConstructors:Ljava/lang/reflect/Method;
.field private static volatile kotlin_kfunction_getParameters:Ljava/lang/reflect/Method;
.field private static volatile kotlin_kparameter_getName:Ljava/lang/reflect/Method;
.field private static volatile kotlin_metadata:Ljava/lang/Class;
.field private static volatile kotlin_metadata_error: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 method_HibernateIsInitialized:Ljava/lang/reflect/Method;
.field private static method_HibernateIsInitialized_error:Z
.field private static volatile method_XmlAccessorType_value:Ljava/lang/reflect/Method;
.field private static optionalClass:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.end field
.field private static optionalClassInited:Z
.field private static oracleDateMethod:Ljava/lang/reflect/Method;
.field private static oracleDateMethodInited:Z
.field private static oracleTimestampMethod:Ljava/lang/reflect/Method;
.field private static oracleTimestampMethodInited:Z
.field private static pathClass:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.end field
.field private static pathClass_error:Z
.field private static final primitiveTypeMap:Ljava/util/Map;
.field private static setAccessibleEnable:Z
.field private static transientClass:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"+",
"Ljava/lang/annotation/Annotation;",
">;"
}
.end annotation
.end field
.field private static transientClassInited:Z
# direct methods
.method static constructor <clinit>()V
.registers 7
const-string v0, "true"
const-string v1, "\\.0*$"
.line 55
invoke-static {v1}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->NUMBER_WITH_TRAILING_ZEROS_PATTERN:Ljava/util/regex/Pattern;
const/4 v1, 0x0
.line 57
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
.line 61
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithFieldName:Z
const/4 v2, 0x1
.line 62
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessibleEnable:Z
.line 63
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethodInited:Z
.line 65
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethodInited:Z
.line 67
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->optionalClassInited:Z
.line 69
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->transientClassInited:Z
const/4 v3, 0x0
.line 72
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany:Ljava/lang/Class;
.line 73
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany_error:Z
.line 74
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany:Ljava/lang/Class;
.line 75
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany_error:Z
.line 77
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized:Ljava/lang/reflect/Method;
.line 78
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized_error:Z
.line 89
new-instance v4, Ljava/util/concurrent/ConcurrentHashMap;
const/16 v5, 0x100
const/high16 v6, 0x3f400000 # 0.75f
invoke-direct {v4, v5, v6, v2}, Ljava/util/concurrent/ConcurrentHashMap;-><init>(IFI)V
sput-object v4, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
.line 91
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->pathClass_error:Z
.line 93
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator:Ljava/lang/Class;
.line 94
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator_error:Z
.line 96
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessType:Ljava/lang/Class;
.line 97
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
.line 98
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
.line 99
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->method_XmlAccessorType_value:Ljava/lang/reflect/Method;
.line 100
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->field_XmlAccessType_FIELD:Ljava/lang/reflect/Field;
.line 101
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->field_XmlAccessType_FIELD_VALUE:Ljava/lang/Object;
.line 103
sput-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->class_deque:Ljava/lang/Class;
:try_start_46
const-string v2, "fastjson.compatibleWithJavaBean"
.line 107
invoke-static {v2}, Lcom/alibaba/fastjson/util/IOUtils;->getStringProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
const-string v2, "fastjson.compatibleWithFieldName"
.line 108
invoke-static {v2}, Lcom/alibaba/fastjson/util/IOUtils;->getStringProperty(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithFieldName:Z
:try_end_5e
.catchall {:try_start_46 .. :try_end_5e} :catchall_5e
:catchall_5e
:try_start_5e
const-string v0, "java.util.Deque"
.line 114
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_deque:Ljava/lang/Class;
:try_end_66
.catchall {:try_start_5e .. :try_end_66} :catchall_66
.line 210
:catchall_66
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$1;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/TypeUtils$1;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->isClobFunction:Lcom/alibaba/fastjson/util/Function;
.line 565
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$2;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/TypeUtils$2;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castToSqlDateFunction:Lcom/alibaba/fastjson/util/Function;
.line 624
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$3;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/TypeUtils$3;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castToSqlTimeFunction:Lcom/alibaba/fastjson/util/Function;
.line 680
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$4;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/TypeUtils$4;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castToTimestampFunction:Lcom/alibaba/fastjson/util/Function;
.line 1072
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$5;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/TypeUtils$5;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castFunction:Lcom/alibaba/fastjson/util/BiFunction;
.line 1573
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$6;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/TypeUtils$6;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->addBaseClassMappingsFunction:Lcom/alibaba/fastjson/util/Function;
.line 1592
invoke-static {}, Lcom/alibaba/fastjson/util/TypeUtils;->addBaseClassMappings()V
.line 2671
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$7;
const/16 v2, 0x8
invoke-direct {v0, v2}, Lcom/alibaba/fastjson/util/TypeUtils$7;-><init>(I)V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->primitiveTypeMap:Ljava/util/Map;
.line 2793
new-instance v0, Lcom/alibaba/fastjson/util/TypeUtils$8;
const/4 v2, 0x6
invoke-direct {v0, v2}, Lcom/alibaba/fastjson/util/TypeUtils$8;-><init>(I)V
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->isProxyClassNames:Ljava/util/Set;
.line 3405
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->OPTIONAL_ERROR:Z
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 54
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static addBaseClassMappings()V
.registers 11
.line 1596
const-class v0, [C
const-class v1, [Z
const-class v2, [D
const-class v3, [F
const-class v4, [J
const-class v5, [I
const-class v6, [S
const-class v7, [B
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
const-string v10, "byte"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1597
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
const-string v10, "short"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1598
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
const-string v10, "int"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1599
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
const-string v10, "long"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1600
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
const-string v10, "float"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1601
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
const-string v10, "double"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1602
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
const-string v10, "boolean"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1603
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
sget-object v9, Ljava/lang/Character;->TYPE:Ljava/lang/Class;
const-string v10, "char"
invoke-interface {v8, v10, v9}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1604
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[byte"
invoke-interface {v8, v9, v7}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1605
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[short"
invoke-interface {v8, v9, v6}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1606
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[int"
invoke-interface {v8, v9, v5}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1607
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[long"
invoke-interface {v8, v9, v4}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1608
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[float"
invoke-interface {v8, v9, v3}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1609
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[double"
invoke-interface {v8, v9, v2}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1610
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[boolean"
invoke-interface {v8, v9, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1611
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[char"
invoke-interface {v8, v9, v0}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1612
sget-object v8, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v9, "[B"
invoke-interface {v8, v9, v7}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1613
sget-object v7, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v8, "[S"
invoke-interface {v7, v8, v6}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1614
sget-object v6, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v7, "[I"
invoke-interface {v6, v7, v5}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1615
sget-object v5, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v6, "[J"
invoke-interface {v5, v6, v4}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1616
sget-object v4, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v5, "[F"
invoke-interface {v4, v5, v3}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1617
sget-object v3, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v4, "[D"
invoke-interface {v3, v4, v2}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1618
sget-object v2, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v3, "[C"
invoke-interface {v2, v3, v0}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 1619
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
const-string v2, "[Z"
invoke-interface {v0, v2, v1}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const/16 v0, 0x45
new-array v1, v0, [Ljava/lang/Class;
.line 1620
const-class v2, Ljava/lang/Object;
const/4 v3, 0x0
aput-object v2, v1, v3
const-class v2, Ljava/lang/Cloneable;
const/4 v4, 0x1
aput-object v2, v1, v4
const-string v2, "java.lang.AutoCloseable"
.line 1623
invoke-static {v2}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v2
const/4 v4, 0x2
aput-object v2, v1, v4
const/4 v2, 0x3
const-class v4, Ljava/lang/Exception;
aput-object v4, v1, v2
const/4 v2, 0x4
const-class v4, Ljava/lang/RuntimeException;
aput-object v4, v1, v2
const/4 v2, 0x5
const-class v4, Ljava/lang/IllegalAccessError;
aput-object v4, v1, v2
const/4 v2, 0x6
const-class v4, Ljava/lang/IllegalAccessException;
aput-object v4, v1, v2
const/4 v2, 0x7
const-class v4, Ljava/lang/IllegalArgumentException;
aput-object v4, v1, v2
const/16 v2, 0x8
const-class v4, Ljava/lang/IllegalMonitorStateException;
aput-object v4, v1, v2
const/16 v2, 0x9
const-class v4, Ljava/lang/IllegalStateException;
aput-object v4, v1, v2
const/16 v2, 0xa
const-class v4, Ljava/lang/IllegalThreadStateException;
aput-object v4, v1, v2
const/16 v2, 0xb
const-class v4, Ljava/lang/IndexOutOfBoundsException;
aput-object v4, v1, v2
const/16 v2, 0xc
const-class v4, Ljava/lang/InstantiationError;
aput-object v4, v1, v2
const/16 v2, 0xd
const-class v4, Ljava/lang/InstantiationException;
aput-object v4, v1, v2
const/16 v2, 0xe
const-class v4, Ljava/lang/InternalError;
aput-object v4, v1, v2
const/16 v2, 0xf
const-class v4, Ljava/lang/InterruptedException;
aput-object v4, v1, v2
const/16 v2, 0x10
const-class v4, Ljava/lang/LinkageError;
aput-object v4, v1, v2
const/16 v2, 0x11
const-class v4, Ljava/lang/NegativeArraySizeException;
aput-object v4, v1, v2
const/16 v2, 0x12
const-class v4, Ljava/lang/NoClassDefFoundError;
aput-object v4, v1, v2
const/16 v2, 0x13
const-class v4, Ljava/lang/NoSuchFieldError;
aput-object v4, v1, v2
const/16 v2, 0x14
const-class v4, Ljava/lang/NoSuchFieldException;
aput-object v4, v1, v2
const/16 v2, 0x15
const-class v4, Ljava/lang/NoSuchMethodError;
aput-object v4, v1, v2
const/16 v2, 0x16
const-class v4, Ljava/lang/NoSuchMethodException;
aput-object v4, v1, v2
const/16 v2, 0x17
const-class v4, Ljava/lang/NullPointerException;
aput-object v4, v1, v2
const/16 v2, 0x18
const-class v4, Ljava/lang/NumberFormatException;
aput-object v4, v1, v2
const/16 v2, 0x19
const-class v4, Ljava/lang/OutOfMemoryError;
aput-object v4, v1, v2
const/16 v2, 0x1a
const-class v4, Ljava/lang/SecurityException;
aput-object v4, v1, v2
const/16 v2, 0x1b
const-class v4, Ljava/lang/StackOverflowError;
aput-object v4, v1, v2
const/16 v2, 0x1c
const-class v4, Ljava/lang/StringIndexOutOfBoundsException;
aput-object v4, v1, v2
const/16 v2, 0x1d
const-class v4, Ljava/lang/TypeNotPresentException;
aput-object v4, v1, v2
const/16 v2, 0x1e
const-class v4, Ljava/lang/VerifyError;
aput-object v4, v1, v2
const/16 v2, 0x1f
const-class v4, Ljava/lang/StackTraceElement;
aput-object v4, v1, v2
const/16 v2, 0x20
const-class v4, Ljava/util/HashMap;
aput-object v4, v1, v2
const/16 v2, 0x21
const-class v4, Ljava/util/LinkedHashMap;
aput-object v4, v1, v2
const/16 v2, 0x22
const-class v4, Ljava/util/Hashtable;
aput-object v4, v1, v2
const/16 v2, 0x23
const-class v4, Ljava/util/TreeMap;
aput-object v4, v1, v2
const/16 v2, 0x24
const-class v4, Ljava/util/IdentityHashMap;
aput-object v4, v1, v2
const/16 v2, 0x25
const-class v4, Ljava/util/WeakHashMap;
aput-object v4, v1, v2
const/16 v2, 0x26
const-class v4, Ljava/util/LinkedHashMap;
aput-object v4, v1, v2
const/16 v2, 0x27
const-class v4, Ljava/util/HashSet;
aput-object v4, v1, v2
const/16 v2, 0x28
const-class v4, Ljava/util/LinkedHashSet;
aput-object v4, v1, v2
const/16 v2, 0x29
const-class v4, Ljava/util/TreeSet;
aput-object v4, v1, v2
const/16 v2, 0x2a
const-class v4, Ljava/util/ArrayList;
aput-object v4, v1, v2
const/16 v2, 0x2b
const-class v4, Ljava/util/concurrent/TimeUnit;
aput-object v4, v1, v2
const/16 v2, 0x2c
const-class v4, Ljava/util/concurrent/ConcurrentHashMap;
aput-object v4, v1, v2
const/16 v2, 0x2d
const-class v4, Ljava/util/concurrent/atomic/AtomicInteger;
aput-object v4, v1, v2
const/16 v2, 0x2e
const-class v4, Ljava/util/concurrent/atomic/AtomicLong;
aput-object v4, v1, v2
sget-object v2, Ljava/util/Collections;->EMPTY_MAP:Ljava/util/Map;
.line 1668
invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
const/16 v4, 0x2f
aput-object v2, v1, v4
const/16 v2, 0x30
const-class v4, Ljava/lang/Boolean;
aput-object v4, v1, v2
const/16 v2, 0x31
const-class v4, Ljava/lang/Character;
aput-object v4, v1, v2
const/16 v2, 0x32
const-class v4, Ljava/lang/Byte;
aput-object v4, v1, v2
const/16 v2, 0x33
const-class v4, Ljava/lang/Short;
aput-object v4, v1, v2
const/16 v2, 0x34
const-class v4, Ljava/lang/Integer;
aput-object v4, v1, v2
const/16 v2, 0x35
const-class v4, Ljava/lang/Long;
aput-object v4, v1, v2
const/16 v2, 0x36
const-class v4, Ljava/lang/Float;
aput-object v4, v1, v2
const/16 v2, 0x37
const-class v4, Ljava/lang/Double;
aput-object v4, v1, v2
const/16 v2, 0x38
const-class v4, Ljava/lang/Number;
aput-object v4, v1, v2
const/16 v2, 0x39
const-class v4, Ljava/lang/String;
aput-object v4, v1, v2
const/16 v2, 0x3a
const-class v4, Ljava/math/BigDecimal;
aput-object v4, v1, v2
const/16 v2, 0x3b
const-class v4, Ljava/math/BigInteger;
aput-object v4, v1, v2
const/16 v2, 0x3c
const-class v4, Ljava/util/BitSet;
aput-object v4, v1, v2
const/16 v2, 0x3d
const-class v4, Ljava/util/Calendar;
aput-object v4, v1, v2
const/16 v2, 0x3e
const-class v4, Ljava/util/Date;
aput-object v4, v1, v2
const/16 v2, 0x3f
const-class v4, Ljava/util/Locale;
aput-object v4, v1, v2
const/16 v2, 0x40
const-class v4, Ljava/util/UUID;
aput-object v4, v1, v2
const/16 v2, 0x41
const-class v4, Ljava/text/SimpleDateFormat;
aput-object v4, v1, v2
const/16 v2, 0x42
const-class v4, Lcom/alibaba/fastjson/JSONObject;
aput-object v4, v1, v2
const/16 v2, 0x43
const-class v4, Lcom/alibaba/fastjson/JSONPObject;
aput-object v4, v1, v2
const/16 v2, 0x44
const-class v4, Lcom/alibaba/fastjson/JSONArray;
aput-object v4, v1, v2
:goto_26a
if-ge v3, v0, :cond_27d
.line 1691
aget-object v2, v1, v3
if-nez v2, :cond_271
goto :goto_27a
.line 1695
:cond_271
sget-object v4, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-virtual {v2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v5
invoke-interface {v4, v5, v2}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:goto_27a
add-int/lit8 v3, v3, 0x1
goto :goto_26a
.line 1697
:cond_27d
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->addBaseClassMappingsFunction:Lcom/alibaba/fastjson/util/Function;
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-static {v0, v1}, Lcom/alibaba/fastjson/util/ModuleUtil;->callWhenHasJavaSql(Lcom/alibaba/fastjson/util/Function;Ljava/lang/Object;)Ljava/lang/Object;
return-void
.end method
.method public static addMapping(Ljava/lang/String;Ljava/lang/Class;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/lang/Class<",
"*>;)V"
}
.end annotation
.line 1706
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;
return-void
.end method
.method public static buildBeanInfo(Ljava/lang/Class;Ljava/util/Map;Lcom/alibaba/fastjson/PropertyNamingStrategy;)Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Lcom/alibaba/fastjson/PropertyNamingStrategy;",
")",
"Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;"
}
.end annotation
const/4 v0, 0x0
.line 1798
invoke-static {p0, p1, p2, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->buildBeanInfo(Ljava/lang/Class;Ljava/util/Map;Lcom/alibaba/fastjson/PropertyNamingStrategy;Z)Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;
move-result-object p0
return-object p0
.end method
.method public static buildBeanInfo(Ljava/lang/Class;Ljava/util/Map;Lcom/alibaba/fastjson/PropertyNamingStrategy;Z)Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;
.registers 20
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Lcom/alibaba/fastjson/PropertyNamingStrategy;",
"Z)",
"Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;"
}
.end annotation
move-object/from16 v6, p0
move-object/from16 v7, p1
.line 1806
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {v6, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
move-object v8, v0
check-cast v8, Lcom/alibaba/fastjson/annotation/JSONType;
const/4 v0, 0x0
const/4 v1, 0x0
if-eqz v8, :cond_8b
.line 1811
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONType;->orders()[Ljava/lang/String;
move-result-object v2
.line 1813
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONType;->typeName()Ljava/lang/String;
move-result-object v3
.line 1814
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v4
if-nez v4, :cond_20
move-object v3, v1
.line 1818
:cond_20
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONType;->naming()Lcom/alibaba/fastjson/PropertyNamingStrategy;
move-result-object v4
.line 1819
sget-object v5, Lcom/alibaba/fastjson/PropertyNamingStrategy;->NeverUseThisValueExceptDefaultValue:Lcom/alibaba/fastjson/PropertyNamingStrategy;
if-eq v4, v5, :cond_29
goto :goto_2b
:cond_29
move-object/from16 v4, p2
.line 1823
:goto_2b
invoke-interface {v8}, Lcom/alibaba/fastjson/annotation/JSONType;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v5
invoke-static {v5}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v5
.line 1824
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v9
move-object v10, v1
:goto_38
if-eqz v9, :cond_59
.line 1825
const-class v11, Ljava/lang/Object;
if-eq v9, v11, :cond_59
.line 1827
const-class v11, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {v9, v11}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v11
check-cast v11, Lcom/alibaba/fastjson/annotation/JSONType;
if-nez v11, :cond_49
goto :goto_59
.line 1831
:cond_49
invoke-interface {v11}, Lcom/alibaba/fastjson/annotation/JSONType;->typeKey()Ljava/lang/String;
move-result-object v10
.line 1832
invoke-virtual {v10}, Ljava/lang/String;->length()I
move-result v11
if-eqz v11, :cond_54
goto :goto_59
.line 1826
:cond_54
invoke-virtual {v9}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v9
goto :goto_38
.line 1837
:cond_59
:goto_59
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;
move-result-object v9
array-length v11, v9
move v12, v0
:goto_5f
if-ge v12, v11, :cond_7b
aget-object v13, v9, v12
.line 1838
const-class v14, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {v13, v14}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v13
check-cast v13, Lcom/alibaba/fastjson/annotation/JSONType;
if-eqz v13, :cond_78
.line 1840
invoke-interface {v13}, Lcom/alibaba/fastjson/annotation/JSONType;->typeKey()Ljava/lang/String;
move-result-object v10
.line 1841
invoke-virtual {v10}, Ljava/lang/String;->length()I
move-result v13
if-eqz v13, :cond_78
goto :goto_7b
:cond_78
add-int/lit8 v12, v12, 0x1
goto :goto_5f
:cond_7b
:goto_7b
if-eqz v10, :cond_84
.line 1847
invoke-virtual {v10}, Ljava/lang/String;->length()I
move-result v9
if-nez v9, :cond_84
goto :goto_85
:cond_84
move-object v1, v10
:goto_85
move-object v11, v1
move-object v9, v2
move-object v10, v3
move-object v12, v4
move v13, v5
goto :goto_91
:cond_8b
move-object/from16 v12, p2
move v13, v0
move-object v9, v1
move-object v10, v9
move-object v11, v10
.line 1854
:goto_91
new-instance v14, Ljava/util/HashMap;
invoke-direct {v14}, Ljava/util/HashMap;-><init>()V
.line 1855
invoke-static {v6, v14}, Lcom/alibaba/fastjson/parser/ParserConfig;->parserAllFieldToCache(Ljava/lang/Class;Ljava/util/Map;)V
if-eqz p3, :cond_a0
.line 1857
invoke-static {v6, v7, v0, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGettersWithFieldBase(Ljava/lang/Class;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
move-result-object v0
goto :goto_ac
:cond_a0
const/4 v4, 0x0
move-object/from16 v0, p0
move-object v1, v8
move-object/from16 v2, p1
move-object v3, v14
move-object v5, v12
.line 1858
invoke-static/range {v0 .. v5}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Lcom/alibaba/fastjson/annotation/JSONType;Ljava/util/Map;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
move-result-object v0
.line 1859
:goto_ac
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v1
new-array v15, v1, [Lcom/alibaba/fastjson/util/FieldInfo;
.line 1860
invoke-interface {v0, v15}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
if-eqz v9, :cond_cf
.line 1863
array-length v1, v9
if-eqz v1, :cond_cf
if-eqz p3, :cond_c2
const/4 v0, 0x1
.line 1865
invoke-static {v6, v7, v0, v12}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGettersWithFieldBase(Ljava/lang/Class;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
move-result-object v0
goto :goto_d8
:cond_c2
const/4 v4, 0x1
move-object/from16 v0, p0
move-object v1, v8
move-object/from16 v2, p1
move-object v3, v14
move-object v5, v12
.line 1866
invoke-static/range {v0 .. v5}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Lcom/alibaba/fastjson/annotation/JSONType;Ljava/util/Map;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
move-result-object v0
goto :goto_d8
.line 1868
:cond_cf
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 1869
invoke-static {v1}, Ljava/util/Collections;->sort(Ljava/util/List;)V
move-object v0, v1
.line 1871
:goto_d8
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v1
new-array v1, v1, [Lcom/alibaba/fastjson/util/FieldInfo;
.line 1872
invoke-interface {v0, v1}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
.line 1873
invoke-static {v1, v15}, Ljava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_e9
move-object v7, v15
goto :goto_ea
:cond_e9
move-object v7, v1
.line 1876
:goto_ea
new-instance v9, Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;
move-object v0, v9
move-object/from16 v1, p0
move-object v2, v8
move-object v3, v10
move-object v4, v11
move v5, v13
move-object v6, v15
invoke-direct/range {v0 .. v7}, Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;-><init>(Ljava/lang/Class;Lcom/alibaba/fastjson/annotation/JSONType;Ljava/lang/String;Ljava/lang/String;I[Lcom/alibaba/fastjson/util/FieldInfo;[Lcom/alibaba/fastjson/util/FieldInfo;)V
return-object v9
.end method
.method public static byteValue(Ljava/math/BigDecimal;)B
.registers 3
if-nez p0, :cond_4
const/4 p0, 0x0
return p0
.line 916
:cond_4
invoke-virtual {p0}, Ljava/math/BigDecimal;->scale()I
move-result v0
const/16 v1, -0x64
if-lt v0, v1, :cond_15
const/16 v1, 0x64
if-gt v0, v1, :cond_15
.line 918
invoke-virtual {p0}, Ljava/math/BigDecimal;->byteValue()B
move-result p0
return p0
.line 921
:cond_15
invoke-virtual {p0}, Ljava/math/BigDecimal;->byteValueExact()B
move-result p0
return p0
.end method
.method public static cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 8
.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
const/4 v0, 0x0
const/4 v1, 0x0
if-nez p0, :cond_47
.line 1092
sget-object p0, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_d
.line 1093
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
return-object p0
.line 1094
:cond_d
sget-object p0, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_18
const-wide/16 p0, 0x0
.line 1095
invoke-static {p0, p1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p0
return-object p0
.line 1096
:cond_18
sget-object p0, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_21
.line 1097
invoke-static {v1}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object p0
return-object p0
.line 1098
:cond_21
sget-object p0, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_2a
.line 1099
invoke-static {v1}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object p0
return-object p0
.line 1100
:cond_2a
sget-object p0, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_34
const/4 p0, 0x0
.line 1101
invoke-static {p0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object p0
return-object p0
.line 1102
:cond_34
sget-object p0, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_3f
const-wide/16 p0, 0x0
.line 1103
invoke-static {p0, p1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object p0
return-object p0
.line 1104
:cond_3f
sget-object p0, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-ne p1, p0, :cond_46
.line 1105
sget-object p0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object p0
:cond_46
return-object v0
:cond_47
if-eqz p1, :cond_233
.line 1114
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
if-ne p1, v2, :cond_50
return-object p0
.line 1118
:cond_50
instance-of v2, p0, Ljava/util/Map;
if-eqz v2, :cond_6e
.line 1119
const-class v0, Ljava/util/Map;
if-ne p1, v0, :cond_59
return-object p0
.line 1123
:cond_59
move-object v0, p0
check-cast v0, Ljava/util/Map;
.line 1124
const-class v1, Ljava/lang/Object;
if-ne p1, v1, :cond_69
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_69
return-object p0
.line 1127
:cond_69
invoke-static {v0, 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 p0
return-object p0
.line 1130
:cond_6e
invoke-virtual {p1}, Ljava/lang/Class;->isArray()Z
move-result v2
if-eqz v2, :cond_ac
.line 1131
instance-of v2, p0, Ljava/util/Collection;
if-eqz v2, :cond_a3
.line 1132
check-cast p0, Ljava/util/Collection;
.line 1134
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v0
invoke-interface {p0}, Ljava/util/Collection;->size()I
move-result v2
invoke-static {v0, v2}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v0
.line 1135
invoke-interface {p0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_8a
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_a2
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
.line 1136
invoke-virtual {p1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v3
invoke-static {v2, v3, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object v2
.line 1137
invoke-static {v0, v1, v2}, Ljava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V
add-int/lit8 v1, v1, 0x1
goto :goto_8a
:cond_a2
return-object v0
.line 1142
:cond_a3
const-class v1, [B
if-ne p1, v1, :cond_ac
.line 1143
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBytes(Ljava/lang/Object;)[B
move-result-object p0
return-object p0
.line 1147
:cond_ac
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_b7
return-object p0
.line 1151
:cond_b7
sget-object v1, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_22e
const-class v1, Ljava/lang/Boolean;
if-ne p1, v1, :cond_c1
goto/16 :goto_22e
.line 1155
:cond_c1
sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_229
const-class v1, Ljava/lang/Byte;
if-ne p1, v1, :cond_cb
goto/16 :goto_229
.line 1159
:cond_cb
sget-object v1, Ljava/lang/Character;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_224
const-class v1, Ljava/lang/Character;
if-ne p1, v1, :cond_d5
goto/16 :goto_224
.line 1163
:cond_d5
sget-object v1, Ljava/lang/Short;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_21f
const-class v1, Ljava/lang/Short;
if-ne p1, v1, :cond_df
goto/16 :goto_21f
.line 1167
:cond_df
sget-object v1, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_21a
const-class v1, Ljava/lang/Integer;
if-ne p1, v1, :cond_e9
goto/16 :goto_21a
.line 1171
:cond_e9
sget-object v1, Ljava/lang/Long;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_215
const-class v1, Ljava/lang/Long;
if-ne p1, v1, :cond_f3
goto/16 :goto_215
.line 1175
:cond_f3
sget-object v1, Ljava/lang/Float;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_210
const-class v1, Ljava/lang/Float;
if-ne p1, v1, :cond_fd
goto/16 :goto_210
.line 1179
:cond_fd
sget-object v1, Ljava/lang/Double;->TYPE:Ljava/lang/Class;
if-eq p1, v1, :cond_20b
const-class v1, Ljava/lang/Double;
if-ne p1, v1, :cond_107
goto/16 :goto_20b
.line 1183
:cond_107
const-class v1, Ljava/lang/String;
if-ne p1, v1, :cond_110
.line 1184
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
return-object p0
.line 1187
:cond_110
const-class v1, Ljava/math/BigDecimal;
if-ne p1, v1, :cond_119
.line 1188
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBigDecimal(Ljava/lang/Object;)Ljava/math/BigDecimal;
move-result-object p0
return-object p0
.line 1191
:cond_119
const-class v1, Ljava/math/BigInteger;
if-ne p1, v1, :cond_122
.line 1192
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBigInteger(Ljava/lang/Object;)Ljava/math/BigInteger;
move-result-object p0
return-object p0
.line 1195
:cond_122
const-class v1, Ljava/util/Date;
if-ne p1, v1, :cond_12b
.line 1196
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDate(Ljava/lang/Object;)Ljava/util/Date;
move-result-object p0
return-object p0
.line 1199
:cond_12b
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->castFunction:Lcom/alibaba/fastjson/util/BiFunction;
invoke-static {v1, p0, p1}, Lcom/alibaba/fastjson/util/ModuleUtil;->callWhenHasJavaSql(Lcom/alibaba/fastjson/util/BiFunction;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
if-eqz v1, :cond_134
return-object v1
.line 1205
:cond_134
invoke-virtual {p1}, Ljava/lang/Class;->isEnum()Z
move-result v1
if-eqz v1, :cond_13f
.line 1206
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 p0
return-object p0
.line 1209
:cond_13f
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_17f
.line 1210
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDate(Ljava/lang/Object;)Ljava/util/Date;
move-result-object p0
.line 1212
const-class p2, Ljava/util/Calendar;
if-ne p1, p2, :cond_15a
.line 1213
sget-object p1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultLocale:Ljava/util/Locale;
invoke-static {p1, p2}, Ljava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
move-result-object p1
goto :goto_161
.line 1216
:cond_15a
:try_start_15a
invoke-virtual {p1}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/util/Calendar;
:try_end_160
.catch Ljava/lang/Exception; {:try_start_15a .. :try_end_160} :catch_165
move-object p1, p2
.line 1221
:goto_161
invoke-virtual {p1, p0}, Ljava/util/Calendar;->setTime(Ljava/util/Date;)V
return-object p1
:catch_165
move-exception p0
.line 1218
new-instance p2, Lcom/alibaba/fastjson/JSONException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p2, p1, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.line 1225
:cond_17f
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v1
const-string v3, "javax.xml.datatype.XMLGregorianCalendar"
.line 1226
invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_1a1
.line 1227
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDate(Ljava/lang/Object;)Ljava/util/Date;
move-result-object p0
.line 1228
sget-object p1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
sget-object p2, Lcom/alibaba/fastjson/JSON;->defaultLocale:Ljava/util/Locale;
invoke-static {p1, p2}, Ljava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
move-result-object p1
.line 1229
invoke-virtual {p1, p0}, Ljava/util/Calendar;->setTime(Ljava/util/Date;)V
.line 1230
sget-object p0, Lcom/alibaba/fastjson/serializer/CalendarCodec;->instance:Lcom/alibaba/fastjson/serializer/CalendarCodec;
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/CalendarCodec;->createXMLGregorianCalendar(Ljava/util/Calendar;)Ljavax/xml/datatype/XMLGregorianCalendar;
move-result-object p0
return-object p0
.line 1233
:cond_1a1
instance-of v3, p0, Ljava/lang/String;
if-eqz v3, :cond_1e3
.line 1234
move-object v3, p0
check-cast v3, Ljava/lang/String;
.line 1235
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v4
if-eqz v4, :cond_1e2
const-string v4, "null"
.line 1236
invoke-virtual {v4, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_1e2
const-string v4, "NULL"
.line 1237
invoke-virtual {v4, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_1bf
goto :goto_1e2
.line 1241
:cond_1bf
const-class v0, Ljava/util/Currency;
if-ne p1, v0, :cond_1c8
.line 1242
invoke-static {v3}, Ljava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency;
move-result-object p0
return-object p0
.line 1245
:cond_1c8
const-class v0, Ljava/util/Locale;
if-ne p1, v0, :cond_1d1
.line 1246
invoke-static {v3}, Lcom/alibaba/fastjson/util/TypeUtils;->toLocale(Ljava/lang/String;)Ljava/util/Locale;
move-result-object p0
return-object p0
:cond_1d1
const-string v0, "java.time."
.line 1249
invoke-virtual {v1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_1e3
.line 1250
invoke-static {v3}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
.line 1251
invoke-static {p0, p1}, Lcom/alibaba/fastjson/JSON;->parseObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object p0
return-object p0
:cond_1e2
:goto_1e2
return-object v0
.line 1255
:cond_1e3
invoke-virtual {p2, p1}, Lcom/alibaba/fastjson/parser/ParserConfig;->get(Ljava/lang/reflect/Type;)Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
move-result-object p2
if-eqz p2, :cond_1f2
.line 1257
invoke-static {p0}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
.line 1258
invoke-static {p0, p1}, Lcom/alibaba/fastjson/JSON;->parseObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1260
:cond_1f2
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p2, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.line 1180
:cond_20b
:goto_20b
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDouble(Ljava/lang/Object;)Ljava/lang/Double;
move-result-object p0
return-object p0
.line 1176
:cond_210
:goto_210
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToFloat(Ljava/lang/Object;)Ljava/lang/Float;
move-result-object p0
return-object p0
.line 1172
:cond_215
:goto_215
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToLong(Ljava/lang/Object;)Ljava/lang/Long;
move-result-object p0
return-object p0
.line 1168
:cond_21a
:goto_21a
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToInt(Ljava/lang/Object;)Ljava/lang/Integer;
move-result-object p0
return-object p0
.line 1164
:cond_21f
:goto_21f
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToShort(Ljava/lang/Object;)Ljava/lang/Short;
move-result-object p0
return-object p0
.line 1160
:cond_224
:goto_224
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToChar(Ljava/lang/Object;)Ljava/lang/Character;
move-result-object p0
return-object p0
.line 1156
:cond_229
:goto_229
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToByte(Ljava/lang/Object;)Ljava/lang/Byte;
move-result-object p0
return-object p0
.line 1152
:cond_22e
:goto_22e
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToBoolean(Ljava/lang/Object;)Ljava/lang/Boolean;
move-result-object p0
return-object p0
.line 1111
:cond_233
new-instance p0, Ljava/lang/IllegalArgumentException;
const-string p1, "clazz is null"
invoke-direct {p0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method public static cast(Ljava/lang/Object;Ljava/lang/reflect/ParameterizedType;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 9
.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 1344
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object v0
.line 1346
const-class v1, Ljava/util/List;
const/4 v2, 0x0
if-eq v0, v1, :cond_d
const-class v1, Ljava/util/ArrayList;
if-ne v0, v1, :cond_59
.line 1347
:cond_d
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
aget-object v1, v1, v2
.line 1348
instance-of v3, p0, Ljava/util/List;
if-eqz v3, :cond_59
.line 1349
check-cast p0, Ljava/util/List;
.line 1350
new-instance p1, Ljava/util/ArrayList;
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v0
invoke-direct {p1, v0}, Ljava/util/ArrayList;-><init>(I)V
.line 1352
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_26
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_58
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
.line 1354
instance-of v3, v1, Ljava/lang/Class;
if-eqz v3, :cond_50
if-eqz v0, :cond_48
.line 1355
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v3
const-class v4, Lcom/alibaba/fastjson/JSONObject;
if-ne v3, v4, :cond_48
.line 1356
check-cast v0, Lcom/alibaba/fastjson/JSONObject;
move-object v3, v1
check-cast v3, Ljava/lang/Class;
invoke-virtual {v0, v3, p2, v2}, Lcom/alibaba/fastjson/JSONObject;->toJavaObject(Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;I)Ljava/lang/Object;
move-result-object v0
goto :goto_54
.line 1358
:cond_48
move-object v3, v1
check-cast v3, Ljava/lang/Class;
invoke-static {v0, v3, 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
goto :goto_54
.line 1361
:cond_50
invoke-static {v0, 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 v0
.line 1364
:goto_54
invoke-interface {p1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_26
:cond_58
return-object p1
.line 1370
:cond_59
const-class v1, Ljava/util/Set;
if-eq v0, v1, :cond_71
const-class v1, Ljava/util/HashSet;
if-eq v0, v1, :cond_71
const-class v1, Ljava/util/TreeSet;
if-eq v0, v1, :cond_71
const-class v1, Ljava/util/Collection;
if-eq v0, v1, :cond_71
const-class v1, Ljava/util/List;
if-eq v0, v1, :cond_71
const-class v1, Ljava/util/ArrayList;
if-ne v0, v1, :cond_d2
.line 1375
:cond_71
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
aget-object v1, v1, v2
.line 1376
instance-of v3, p0, Ljava/lang/Iterable;
if-eqz v3, :cond_d2
.line 1378
const-class p1, Ljava/util/Set;
if-eq v0, p1, :cond_94
const-class p1, Ljava/util/HashSet;
if-ne v0, p1, :cond_84
goto :goto_94
.line 1380
:cond_84
const-class p1, Ljava/util/TreeSet;
if-ne v0, p1, :cond_8e
.line 1381
new-instance p1, Ljava/util/TreeSet;
invoke-direct {p1}, Ljava/util/TreeSet;-><init>()V
goto :goto_99
.line 1383
:cond_8e
new-instance p1, Ljava/util/ArrayList;
invoke-direct {p1}, Ljava/util/ArrayList;-><init>()V
goto :goto_99
.line 1379
:cond_94
:goto_94
new-instance p1, Ljava/util/HashSet;
invoke-direct {p1}, Ljava/util/HashSet;-><init>()V
.line 1385
:goto_99
check-cast p0, Ljava/lang/Iterable;
invoke-interface {p0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_9f
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_d1
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
.line 1387
instance-of v3, v1, Ljava/lang/Class;
if-eqz v3, :cond_c9
if-eqz v0, :cond_c1
.line 1388
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v3
const-class v4, Lcom/alibaba/fastjson/JSONObject;
if-ne v3, v4, :cond_c1
.line 1389
check-cast v0, Lcom/alibaba/fastjson/JSONObject;
move-object v3, v1
check-cast v3, Ljava/lang/Class;
invoke-virtual {v0, v3, p2, v2}, Lcom/alibaba/fastjson/JSONObject;->toJavaObject(Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;I)Ljava/lang/Object;
move-result-object v0
goto :goto_cd
.line 1391
:cond_c1
move-object v3, v1
check-cast v3, Ljava/lang/Class;
invoke-static {v0, v3, 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
goto :goto_cd
.line 1394
:cond_c9
invoke-static {v0, 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 v0
.line 1397
:goto_cd
invoke-interface {p1, v0}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
goto :goto_9f
:cond_d1
return-object p1
.line 1403
:cond_d2
const-class v1, Ljava/util/Map;
const/4 v3, 0x1
if-eq v0, v1, :cond_db
const-class v1, Ljava/util/HashMap;
if-ne v0, v1, :cond_11b
.line 1404
:cond_db
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
aget-object v1, v1, v2
.line 1405
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v4
aget-object v4, v4, v3
.line 1406
instance-of v5, p0, Ljava/util/Map;
if-eqz v5, :cond_11b
.line 1407
new-instance p1, Ljava/util/HashMap;
invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
.line 1408
check-cast p0, Ljava/util/Map;
invoke-interface {p0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object p0
invoke-interface {p0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p0
:goto_fa
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_11a
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Map$Entry;
.line 1409
invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v2
invoke-static {v2, 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 v2
.line 1410
invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v0
invoke-static {v0, 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 v0
.line 1411
invoke-interface {p1, v2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_fa
:cond_11a
return-object p1
.line 1416
:cond_11b
instance-of v1, p0, Ljava/lang/String;
const/4 v4, 0x0
if-eqz v1, :cond_12a
.line 1417
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 1418
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v1
if-nez v1, :cond_12a
return-object v4
.line 1423
:cond_12a
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v1
.line 1424
array-length v5, v1
if-ne v5, v3, :cond_140
.line 1425
invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v5
aget-object v2, v5, v2
.line 1426
instance-of v2, v2, Ljava/lang/reflect/WildcardType;
if-eqz v2, :cond_140
.line 1427
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 p0
return-object p0
.line 1431
:cond_140
const-class v2, Ljava/util/Map$Entry;
if-ne v0, v2, :cond_175
instance-of v2, p0, Ljava/util/Map;
if-eqz v2, :cond_175
move-object v2, p0
check-cast v2, Ljava/util/Map;
invoke-interface {v2}, Ljava/util/Map;->size()I
move-result v5
if-ne v5, v3, :cond_175
.line 1432
invoke-interface {v2}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object p0
invoke-interface {p0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p0
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/util/Map$Entry;
.line 1433
invoke-interface {p0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object p1
.line 1434
array-length v0, v1
const/4 v2, 0x2
if-ne v0, v2, :cond_174
instance-of v0, p1, Ljava/util/Map;
if-eqz v0, :cond_174
.line 1435
aget-object v0, v1, v3
.line 1437
invoke-static {p1, 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 p1
.line 1436
invoke-interface {p0, p1}, Ljava/util/Map$Entry;->setValue(Ljava/lang/Object;)Ljava/lang/Object;
:cond_174
return-object p0
.line 1443
:cond_175
instance-of v1, v0, Ljava/lang/Class;
if-eqz v1, :cond_191
if-nez p2, :cond_17d
.line 1445
sget-object p2, Lcom/alibaba/fastjson/parser/ParserConfig;->global:Lcom/alibaba/fastjson/parser/ParserConfig;
.line 1447
:cond_17d
invoke-virtual {p2, v0}, Lcom/alibaba/fastjson/parser/ParserConfig;->getDeserializer(Ljava/lang/reflect/Type;)Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
move-result-object v0
if-eqz v0, :cond_191
.line 1449
invoke-static {p0}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
.line 1450
new-instance v1, Lcom/alibaba/fastjson/parser/DefaultJSONParser;
invoke-direct {v1, p0, p2}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;-><init>(Ljava/lang/String;Lcom/alibaba/fastjson/parser/ParserConfig;)V
.line 1451
invoke-interface {v0, v1, p1, v4}, Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;->deserialze(Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1455
:cond_191
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "can not cast to : "
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method public static cast(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 5
.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
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 1322
:cond_4
instance-of v1, p1, Ljava/lang/Class;
if-eqz v1, :cond_f
.line 1323
check-cast p1, Ljava/lang/Class;
invoke-static {p0, p1, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->cast(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1325
:cond_f
instance-of v1, p1, Ljava/lang/reflect/ParameterizedType;
if-eqz v1, :cond_1a
.line 1326
check-cast p1, Ljava/lang/reflect/ParameterizedType;
invoke-static {p0, p1, 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 p0
return-object p0
.line 1328
:cond_1a
instance-of p2, p0, Ljava/lang/String;
if-eqz p2, :cond_38
.line 1329
move-object p2, p0
check-cast p2, Ljava/lang/String;
.line 1330
invoke-virtual {p2}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_37
const-string v1, "null"
.line 1331
invoke-virtual {v1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_37
const-string v1, "NULL"
.line 1332
invoke-virtual {v1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p2
if-eqz p2, :cond_38
:cond_37
return-object v0
.line 1336
:cond_38
instance-of p2, p1, Ljava/lang/reflect/TypeVariable;
if-eqz p2, :cond_3d
return-object p0
.line 1339
:cond_3d
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "can not cast to : "
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method public static castToBigDecimal(Ljava/lang/Object;)Ljava/math/BigDecimal;
.registers 5
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 314
:cond_4
instance-of v1, p0, Ljava/lang/Float;
if-eqz v1, :cond_20
.line 315
move-object v1, p0
check-cast v1, Ljava/lang/Float;
invoke-virtual {v1}, Ljava/lang/Float;->floatValue()F
move-result v2
invoke-static {v2}, Ljava/lang/Float;->isNaN(F)Z
move-result v2
if-nez v2, :cond_1f
invoke-virtual {v1}, Ljava/lang/Float;->floatValue()F
move-result v1
invoke-static {v1}, Ljava/lang/Float;->isInfinite(F)Z
move-result v1
if-eqz v1, :cond_5d
:cond_1f
return-object v0
.line 318
:cond_20
instance-of v1, p0, Ljava/lang/Double;
if-eqz v1, :cond_3c
.line 319
move-object v1, p0
check-cast v1, Ljava/lang/Double;
invoke-virtual {v1}, Ljava/lang/Double;->doubleValue()D
move-result-wide v2
invoke-static {v2, v3}, Ljava/lang/Double;->isNaN(D)Z
move-result v2
if-nez v2, :cond_3b
invoke-virtual {v1}, Ljava/lang/Double;->doubleValue()D
move-result-wide v1
invoke-static {v1, v2}, Ljava/lang/Double;->isInfinite(D)Z
move-result v1
if-eqz v1, :cond_5d
:cond_3b
return-object v0
.line 322
:cond_3c
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_43
.line 323
check-cast p0, Ljava/math/BigDecimal;
return-object p0
.line 324
:cond_43
instance-of v1, p0, Ljava/math/BigInteger;
if-eqz v1, :cond_4f
.line 325
new-instance v0, Ljava/math/BigDecimal;
check-cast p0, Ljava/math/BigInteger;
invoke-direct {v0, p0}, Ljava/math/BigDecimal;-><init>(Ljava/math/BigInteger;)V
return-object v0
.line 326
:cond_4f
instance-of v1, p0, Ljava/util/Map;
if-eqz v1, :cond_5d
move-object v1, p0
check-cast v1, Ljava/util/Map;
invoke-interface {v1}, Ljava/util/Map;->size()I
move-result v1
if-nez v1, :cond_5d
return-object v0
.line 330
:cond_5d
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
.line 332
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_87
const-string v1, "null"
.line 333
invoke-virtual {p0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_70
goto :goto_87
.line 337
:cond_70
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
const v1, 0xffff
if-gt v0, v1, :cond_7f
.line 340
new-instance v0, Ljava/math/BigDecimal;
invoke-direct {v0, p0}, Ljava/math/BigDecimal;-><init>(Ljava/lang/String;)V
return-object v0
.line 338
:cond_7f
new-instance p0, Lcom/alibaba/fastjson/JSONException;
const-string v0, "decimal overflow"
invoke-direct {p0, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
:cond_87
:goto_87
return-object v0
.end method
.method public static castToBigInteger(Ljava/lang/Object;)Ljava/math/BigInteger;
.registers 5
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 348
:cond_4
instance-of v1, p0, Ljava/lang/Float;
if-eqz v1, :cond_29
.line 349
check-cast p0, Ljava/lang/Float;
.line 350
invoke-virtual {p0}, Ljava/lang/Float;->floatValue()F
move-result v1
invoke-static {v1}, Ljava/lang/Float;->isNaN(F)Z
move-result v1
if-nez v1, :cond_28
invoke-virtual {p0}, Ljava/lang/Float;->floatValue()F
move-result v1
invoke-static {v1}, Ljava/lang/Float;->isInfinite(F)Z
move-result v1
if-eqz v1, :cond_1f
goto :goto_28
.line 353
:cond_1f
invoke-virtual {p0}, Ljava/lang/Float;->longValue()J
move-result-wide v0
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object p0
return-object p0
:cond_28
:goto_28
return-object v0
.line 354
:cond_29
instance-of v1, p0, Ljava/lang/Double;
if-eqz v1, :cond_4e
.line 355
check-cast p0, Ljava/lang/Double;
.line 356
invoke-virtual {p0}, Ljava/lang/Double;->doubleValue()D
move-result-wide v1
invoke-static {v1, v2}, Ljava/lang/Double;->isNaN(D)Z
move-result v1
if-nez v1, :cond_4d
invoke-virtual {p0}, Ljava/lang/Double;->doubleValue()D
move-result-wide v1
invoke-static {v1, v2}, Ljava/lang/Double;->isInfinite(D)Z
move-result v1
if-eqz v1, :cond_44
goto :goto_4d
.line 359
:cond_44
invoke-virtual {p0}, Ljava/lang/Double;->longValue()J
move-result-wide v0
invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object p0
return-object p0
:cond_4d
:goto_4d
return-object v0
.line 360
:cond_4e
instance-of v1, p0, Ljava/math/BigInteger;
if-eqz v1, :cond_55
.line 361
check-cast p0, Ljava/math/BigInteger;
return-object p0
.line 362
:cond_55
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_6d
.line 363
move-object v1, p0
check-cast v1, Ljava/math/BigDecimal;
.line 364
invoke-virtual {v1}, Ljava/math/BigDecimal;->scale()I
move-result v2
const/16 v3, -0x3e8
if-le v2, v3, :cond_6d
const/16 v3, 0x3e8
if-ge v2, v3, :cond_6d
.line 366
invoke-virtual {v1}, Ljava/math/BigDecimal;->toBigInteger()Ljava/math/BigInteger;
move-result-object p0
return-object p0
.line 370
:cond_6d
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
.line 372
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_97
const-string v1, "null"
.line 373
invoke-virtual {p0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_80
goto :goto_97
.line 377
:cond_80
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
const v1, 0xffff
if-gt v0, v1, :cond_8f
.line 380
new-instance v0, Ljava/math/BigInteger;
invoke-direct {v0, p0}, Ljava/math/BigInteger;-><init>(Ljava/lang/String;)V
return-object v0
.line 378
:cond_8f
new-instance p0, Lcom/alibaba/fastjson/JSONException;
const-string v0, "decimal overflow"
invoke-direct {p0, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
:cond_97
:goto_97
return-object v0
.end method
.method public static castToBoolean(Ljava/lang/Object;)Ljava/lang/Boolean;
.registers 5
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 1029
:cond_4
instance-of v1, p0, Ljava/lang/Boolean;
if-eqz v1, :cond_b
.line 1030
check-cast p0, Ljava/lang/Boolean;
return-object p0
.line 1033
:cond_b
instance-of v1, p0, Ljava/math/BigDecimal;
const/4 v2, 0x0
const/4 v3, 0x1
if-eqz v1, :cond_1f
.line 1034
check-cast p0, Ljava/math/BigDecimal;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->intValue(Ljava/math/BigDecimal;)I
move-result p0
if-ne p0, v3, :cond_1a
move v2, v3
:cond_1a
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p0
return-object p0
.line 1037
:cond_1f
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_31
.line 1038
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->intValue()I
move-result p0
if-ne p0, v3, :cond_2c
move v2, v3
:cond_2c
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p0
return-object p0
.line 1041
:cond_31
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_9f
.line 1042
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 1043
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-eqz v2, :cond_9e
const-string v2, "null"
.line 1044
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_9e
const-string v2, "NULL"
.line 1045
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_4f
goto :goto_9e
:cond_4f
const-string v0, "true"
.line 1048
invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_9b
const-string v0, "1"
.line 1049
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_60
goto :goto_9b
:cond_60
const-string v0, "false"
.line 1052
invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_98
const-string v0, "0"
.line 1053
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_71
goto :goto_98
:cond_71
const-string v0, "Y"
.line 1056
invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_95
const-string v0, "T"
.line 1057
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_82
goto :goto_95
:cond_82
const-string v0, "F"
.line 1060
invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_92
const-string v0, "N"
.line 1061
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_9f
.line 1062
:cond_92
sget-object p0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object p0
.line 1058
:cond_95
:goto_95
sget-object p0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
return-object p0
.line 1054
:cond_98
:goto_98
sget-object p0, Ljava/lang/Boolean;->FALSE:Ljava/lang/Boolean;
return-object p0
.line 1050
:cond_9b
:goto_9b
sget-object p0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
return-object p0
:cond_9e
:goto_9e
return-object v0
.line 1065
:cond_9f
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 boolean, 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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToByte(Ljava/lang/Object;)Ljava/lang/Byte;
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 234
:cond_4
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_13
.line 235
check-cast p0, Ljava/math/BigDecimal;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->byteValue(Ljava/math/BigDecimal;)B
move-result p0
invoke-static {p0}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object p0
return-object p0
.line 238
:cond_13
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_22
.line 239
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->byteValue()B
move-result p0
invoke-static {p0}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object p0
return-object p0
.line 242
:cond_22
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_49
.line 243
check-cast p0, Ljava/lang/String;
.line 244
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_48
const-string v1, "null"
.line 245
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_48
const-string v1, "NULL"
.line 246
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_3f
goto :goto_48
.line 249
:cond_3f
invoke-static {p0}, Ljava/lang/Byte;->parseByte(Ljava/lang/String;)B
move-result p0
invoke-static {p0}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object p0
return-object p0
:cond_48
:goto_48
return-object v0
.line 252
:cond_49
instance-of v0, p0, Ljava/lang/Boolean;
if-eqz v0, :cond_58
.line 253
check-cast p0, Ljava/lang/Boolean;
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
invoke-static {p0}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
move-result-object p0
return-object p0
.line 256
:cond_58
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToBytes(Ljava/lang/Object;)[B
.registers 4
.line 1016
instance-of v0, p0, [B
if-eqz v0, :cond_9
.line 1017
check-cast p0, [B
check-cast p0, [B
return-object p0
.line 1019
:cond_9
instance-of v0, p0, Ljava/lang/String;
if-eqz v0, :cond_14
.line 1020
check-cast p0, Ljava/lang/String;
invoke-static {p0}, Lcom/alibaba/fastjson/util/IOUtils;->decodeBase64(Ljava/lang/String;)[B
move-result-object p0
return-object p0
.line 1022
:cond_14
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToChar(Ljava/lang/Object;)Ljava/lang/Character;
.registers 5
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 263
:cond_4
instance-of v1, p0, Ljava/lang/Character;
if-eqz v1, :cond_b
.line 264
check-cast p0, Ljava/lang/Character;
return-object p0
.line 266
:cond_b
instance-of v1, p0, Ljava/lang/String;
const-string v2, "can not cast to char, value : "
if-eqz v1, :cond_41
.line 267
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 268
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v3
if-nez v3, :cond_1b
return-object v0
.line 271
:cond_1b
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v0
const/4 v3, 0x1
if-ne v0, v3, :cond_2c
const/4 p0, 0x0
.line 274
invoke-virtual {v1, p0}, Ljava/lang/String;->charAt(I)C
move-result p0
invoke-static {p0}, Ljava/lang/Character;->valueOf(C)Ljava/lang/Character;
move-result-object p0
return-object p0
.line 272
:cond_2c
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.line 276
:cond_41
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToDate(Ljava/lang/Object;)Ljava/util/Date;
.registers 2
const/4 v0, 0x0
.line 438
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToDate(Ljava/lang/Object;Ljava/lang/String;)Ljava/util/Date;
move-result-object p0
return-object p0
.end method
.method public static castToDate(Ljava/lang/Object;Ljava/lang/String;)Ljava/util/Date;
.registers 10
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 446
:cond_4
instance-of v1, p0, Ljava/util/Date;
if-eqz v1, :cond_b
.line 447
check-cast p0, Ljava/util/Date;
return-object p0
.line 450
:cond_b
instance-of v1, p0, Ljava/util/Calendar;
if-eqz v1, :cond_16
.line 451
check-cast p0, Ljava/util/Calendar;
invoke-virtual {p0}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
move-result-object p0
return-object p0
.line 456
:cond_16
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_26
.line 457
check-cast p0, Ljava/math/BigDecimal;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->longValue(Ljava/math/BigDecimal;)J
move-result-wide p0
.line 458
new-instance v0, Ljava/util/Date;
invoke-direct {v0, p0, p1}, Ljava/util/Date;-><init>(J)V
return-object v0
.line 461
:cond_26
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_41
.line 462
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->longValue()J
move-result-wide v0
const-string p0, "unixtime"
.line 463
invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_3b
const-wide/16 p0, 0x3e8
mul-long/2addr v0, p0
.line 466
:cond_3b
new-instance p0, Ljava/util/Date;
invoke-direct {p0, v0, v1}, Ljava/util/Date;-><init>(J)V
return-object p0
.line 469
:cond_41
instance-of v1, p0, Ljava/lang/String;
const-string v2, "can not cast to Date, value : "
const-wide/16 v3, -0x1
const/4 v5, 0x0
if-eqz v1, :cond_12d
.line 470
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 471
new-instance v6, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {v6, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
.line 473
:try_start_52
invoke-virtual {v6, v5}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z
move-result v7
if-eqz v7, :cond_64
.line 474
invoke-virtual {v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object p0
.line 475
invoke-virtual {p0}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
move-result-object p0
:try_end_60
.catchall {:try_start_52 .. :try_end_60} :catchall_128
.line 478
invoke-virtual {v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->close()V
return-object p0
:cond_64
invoke-virtual {v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->close()V
const-string v6, "/Date("
.line 481
invoke-virtual {v1, v6}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v6
if-eqz v6, :cond_82
const-string v6, ")/"
invoke-virtual {v1, v6}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v6
if-eqz v6, :cond_82
const/4 v6, 0x6
.line 482
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v7
add-int/lit8 v7, v7, -0x2
invoke-virtual {v1, v6, v7}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v1
:cond_82
const/16 v6, 0x2d
.line 485
invoke-virtual {v1, v6}, Ljava/lang/String;->indexOf(I)I
move-result v6
if-gtz v6, :cond_a2
const/16 v6, 0x2b
invoke-virtual {v1, v6}, Ljava/lang/String;->indexOf(I)I
move-result v6
if-gtz v6, :cond_a2
if-eqz p1, :cond_95
goto :goto_a2
.line 514
:cond_95
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result p1
if-nez p1, :cond_9c
return-object v0
.line 517
:cond_9c
invoke-static {v1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v0
goto/16 :goto_12e
:cond_a2
:goto_a2
if-nez p1, :cond_102
.line 487
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result p0
.line 488
sget-object p1, Lcom/alibaba/fastjson/JSON;->DEFFAULT_DATE_FORMAT:Ljava/lang/String;
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p1
if-eq p0, p1, :cond_100
const/16 p1, 0x16
if-ne p0, p1, :cond_c0
sget-object p1, Lcom/alibaba/fastjson/JSON;->DEFFAULT_DATE_FORMAT:Ljava/lang/String;
const-string/jumbo v0, "yyyyMMddHHmmssSSSZ"
.line 489
invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_c0
goto :goto_100
:cond_c0
const/16 p1, 0xa
if-ne p0, p1, :cond_c8
const-string/jumbo p1, "yyyy-MM-dd"
goto :goto_102
:cond_c8
const/16 p1, 0x13
if-ne p0, p1, :cond_d0
const-string/jumbo p1, "yyyy-MM-dd HH:mm:ss"
goto :goto_102
:cond_d0
const/16 v0, 0x1d
if-ne p0, v0, :cond_ec
const/16 v0, 0x1a
.line 496
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
const/16 v3, 0x3a
if-ne v0, v3, :cond_ec
const/16 v0, 0x1c
.line 497
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
const/16 v3, 0x30
if-ne v0, v3, :cond_ec
const-string/jumbo p1, "yyyy-MM-dd\'T\'HH:mm:ss.SSSXXX"
goto :goto_102
:cond_ec
const/16 v0, 0x17
if-ne p0, v0, :cond_fc
.line 499
invoke-virtual {v1, p1}, Ljava/lang/String;->charAt(I)C
move-result p0
const/16 p1, 0x2c
if-ne p0, p1, :cond_fc
const-string/jumbo p1, "yyyy-MM-dd HH:mm:ss,SSS"
goto :goto_102
:cond_fc
const-string/jumbo p1, "yyyy-MM-dd HH:mm:ss.SSS"
goto :goto_102
.line 490
:cond_100
:goto_100
sget-object p1, Lcom/alibaba/fastjson/JSON;->DEFFAULT_DATE_FORMAT:Ljava/lang/String;
.line 506
:cond_102
:goto_102
new-instance p0, Ljava/text/SimpleDateFormat;
sget-object v0, Lcom/alibaba/fastjson/JSON;->defaultLocale:Ljava/util/Locale;
invoke-direct {p0, p1, v0}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
.line 507
sget-object p1, Lcom/alibaba/fastjson/JSON;->defaultTimeZone:Ljava/util/TimeZone;
invoke-virtual {p0, p1}, Ljava/text/SimpleDateFormat;->setTimeZone(Ljava/util/TimeZone;)V
.line 509
:try_start_10e
invoke-virtual {p0, v1}, Ljava/text/SimpleDateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;
move-result-object p0
:try_end_112
.catch Ljava/text/ParseException; {:try_start_10e .. :try_end_112} :catch_113
return-object p0
.line 511
:catch_113
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
:catchall_128
move-exception p0
.line 478
invoke-virtual {v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->close()V
.line 479
throw p0
:cond_12d
move-wide v0, v3
:goto_12e
cmp-long p1, v0, v3
if-nez p1, :cond_1bc
.line 521
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p1
.line 522
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
const-string v1, "oracle.sql.TIMESTAMP"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
const-string v1, "toJdbc"
const/4 v3, 0x1
if-eqz v0, :cond_170
.line 523
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethod:Ljava/lang/reflect/Method;
if-nez v0, :cond_15c
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethodInited:Z
if-nez v0, :cond_15c
:try_start_14d
new-array v0, v5, [Ljava/lang/Class;
.line 525
invoke-virtual {p1, v1, v0}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object p1
sput-object p1, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethod:Ljava/lang/reflect/Method;
:try_end_155
.catch Ljava/lang/NoSuchMethodException; {:try_start_14d .. :try_end_155} :catch_15a
.catchall {:try_start_14d .. :try_end_155} :catchall_156
goto :goto_15a
:catchall_156
move-exception p0
.line 529
sput-boolean v3, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethodInited:Z
.line 530
throw p0
.line 529
:catch_15a
:goto_15a
sput-boolean v3, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethodInited:Z
.line 534
:cond_15c
:try_start_15c
sget-object p1, Lcom/alibaba/fastjson/util/TypeUtils;->oracleTimestampMethod:Ljava/lang/reflect/Method;
new-array v0, v5, [Ljava/lang/Object;
invoke-virtual {p1, p0, v0}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
:try_end_164
.catch Ljava/lang/Exception; {:try_start_15c .. :try_end_164} :catch_167
.line 538
check-cast p0, Ljava/util/Date;
return-object p0
:catch_167
move-exception p0
.line 536
new-instance p1, Lcom/alibaba/fastjson/JSONException;
const-string v0, "can not cast oracle.sql.TIMESTAMP to Date"
invoke-direct {p1, v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p1
.line 540
:cond_170
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
const-string v4, "oracle.sql.DATE"
invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1a7
.line 541
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethod:Ljava/lang/reflect/Method;
if-nez v0, :cond_193
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethodInited:Z
if-nez v0, :cond_193
:try_start_184
new-array v0, v5, [Ljava/lang/Class;
.line 543
invoke-virtual {p1, v1, v0}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object p1
sput-object p1, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethod:Ljava/lang/reflect/Method;
:try_end_18c
.catch Ljava/lang/NoSuchMethodException; {:try_start_184 .. :try_end_18c} :catch_191
.catchall {:try_start_184 .. :try_end_18c} :catchall_18d
goto :goto_191
:catchall_18d
move-exception p0
.line 547
sput-boolean v3, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethodInited:Z
.line 548
throw p0
.line 547
:catch_191
:goto_191
sput-boolean v3, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethodInited:Z
.line 552
:cond_193
:try_start_193
sget-object p1, Lcom/alibaba/fastjson/util/TypeUtils;->oracleDateMethod:Ljava/lang/reflect/Method;
new-array v0, v5, [Ljava/lang/Object;
invoke-virtual {p1, p0, v0}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
:try_end_19b
.catch Ljava/lang/Exception; {:try_start_193 .. :try_end_19b} :catch_19e
.line 556
check-cast p0, Ljava/util/Date;
return-object p0
:catch_19e
move-exception p0
.line 554
new-instance p1, Lcom/alibaba/fastjson/JSONException;
const-string v0, "can not cast oracle.sql.DATE to Date"
invoke-direct {p1, v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p1
.line 559
:cond_1a7
new-instance p1, Lcom/alibaba/fastjson/JSONException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-direct {p1, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p1
.line 562
:cond_1bc
new-instance p0, Ljava/util/Date;
invoke-direct {p0, v0, v1}, Ljava/util/Date;-><init>(J)V
return-object p0
.end method
.method public static castToDouble(Ljava/lang/Object;)Ljava/lang/Double;
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 414
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_13
.line 415
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->doubleValue()D
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object p0
return-object p0
.line 417
:cond_13
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_4d
.line 418
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
.line 419
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_4c
const-string v1, "null"
.line 420
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_4c
const-string v1, "NULL"
.line 421
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_32
goto :goto_4c
:cond_32
const/16 v0, 0x2c
.line 424
invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(I)I
move-result v0
const/4 v1, -0x1
if-eq v0, v1, :cond_43
const-string v0, ","
const-string v1, ""
.line 425
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
.line 427
:cond_43
invoke-static {p0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object p0
return-object p0
:cond_4c
:goto_4c
return-object v0
.line 430
:cond_4d
instance-of v0, p0, Ljava/lang/Boolean;
if-eqz v0, :cond_63
.line 431
check-cast p0, Ljava/lang/Boolean;
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
if-eqz p0, :cond_5c
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
goto :goto_5e
:cond_5c
const-wide/16 v0, 0x0
:goto_5e
invoke-static {v0, v1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
move-result-object p0
return-object p0
.line 434
:cond_63
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToEnum(Ljava/lang/Object;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 6
.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
const-string v0, "can not cast to : "
.line 1277
:try_start_2
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_2e
.line 1278
check-cast p0, Ljava/lang/String;
.line 1279
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-nez v1, :cond_10
const/4 p0, 0x0
return-object p0
:cond_10
if-nez p2, :cond_16
.line 1284
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object p2
.line 1287
:cond_16
invoke-virtual {p2, p1}, Lcom/alibaba/fastjson/parser/ParserConfig;->getDeserializer(Ljava/lang/reflect/Type;)Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
move-result-object p2
.line 1288
instance-of v1, p2, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;
if-eqz v1, :cond_29
.line 1289
check-cast p2, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;
.line 1290
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->fnv1a_64(Ljava/lang/String;)J
move-result-wide v1
invoke-virtual {p2, v1, v2}, Lcom/alibaba/fastjson/parser/deserializer/EnumDeserializer;->getEnumByHashCode(J)Ljava/lang/Enum;
move-result-object p0
return-object p0
.line 1293
:cond_29
invoke-static {p1, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
move-result-object p0
return-object p0
.line 1296
:cond_2e
instance-of p2, p0, Ljava/math/BigDecimal;
if-eqz p2, :cond_43
.line 1297
move-object p2, p0
check-cast p2, Ljava/math/BigDecimal;
invoke-static {p2}, Lcom/alibaba/fastjson/util/TypeUtils;->intValue(Ljava/math/BigDecimal;)I
move-result p2
.line 1298
invoke-virtual {p1}, Ljava/lang/Class;->getEnumConstants()[Ljava/lang/Object;
move-result-object v1
.line 1299
array-length v2, v1
if-ge p2, v2, :cond_43
.line 1300
aget-object p0, v1, p2
return-object p0
.line 1304
:cond_43
instance-of p2, p0, Ljava/lang/Number;
if-eqz p2, :cond_57
.line 1305
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->intValue()I
move-result p0
.line 1306
invoke-virtual {p1}, Ljava/lang/Class;->getEnumConstants()[Ljava/lang/Object;
move-result-object p2
.line 1307
array-length v1, p2
if-ge p0, v1, :cond_57
.line 1308
aget-object p0, p2, p0
:try_end_56
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_56} :catch_70
return-object p0
.line 1314
:cond_57
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
:catch_70
move-exception p0
.line 1312
new-instance p2, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p2, p1, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.end method
.method public static castToFloat(Ljava/lang/Object;)Ljava/lang/Float;
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 387
:cond_4
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_13
.line 388
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->floatValue()F
move-result p0
invoke-static {p0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object p0
return-object p0
.line 390
:cond_13
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_4d
.line 391
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
.line 392
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_4c
const-string v1, "null"
.line 393
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_4c
const-string v1, "NULL"
.line 394
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_32
goto :goto_4c
:cond_32
const/16 v0, 0x2c
.line 397
invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(I)I
move-result v0
const/4 v1, -0x1
if-eq v0, v1, :cond_43
const-string v0, ","
const-string v1, ""
.line 398
invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
.line 400
:cond_43
invoke-static {p0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result p0
invoke-static {p0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object p0
return-object p0
:cond_4c
:goto_4c
return-object v0
.line 403
:cond_4d
instance-of v0, p0, Ljava/lang/Boolean;
if-eqz v0, :cond_62
.line 404
check-cast p0, Ljava/lang/Boolean;
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
if-eqz p0, :cond_5c
const/high16 p0, 0x3f800000 # 1.0f
goto :goto_5d
:cond_5c
const/4 p0, 0x0
:goto_5d
invoke-static {p0}, Ljava/lang/Float;->valueOf(F)Ljava/lang/Float;
move-result-object p0
return-object p0
.line 407
:cond_62
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToInt(Ljava/lang/Object;)Ljava/lang/Integer;
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 968
:cond_4
instance-of v1, p0, Ljava/lang/Integer;
if-eqz v1, :cond_b
.line 969
check-cast p0, Ljava/lang/Integer;
return-object p0
.line 972
:cond_b
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_1a
.line 973
check-cast p0, Ljava/math/BigDecimal;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->intValue(Ljava/math/BigDecimal;)I
move-result p0
invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
return-object p0
.line 976
:cond_1a
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_29
.line 977
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->intValue()I
move-result p0
invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
return-object p0
.line 980
:cond_29
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_71
.line 981
check-cast p0, Ljava/lang/String;
.line 982
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_70
const-string v1, "null"
.line 983
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_70
const-string v1, "NULL"
.line 984
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_46
goto :goto_70
:cond_46
const/16 v0, 0x2c
.line 987
invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(I)I
move-result v0
const/4 v1, -0x1
const-string v2, ""
if-eq v0, v1, :cond_57
const-string v0, ","
.line 988
invoke-virtual {p0, v0, v2}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
.line 991
:cond_57
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->NUMBER_WITH_TRAILING_ZEROS_PATTERN:Ljava/util/regex/Pattern;
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v0
.line 992
invoke-virtual {v0}, Ljava/util/regex/Matcher;->find()Z
move-result v1
if-eqz v1, :cond_67
.line 993
invoke-virtual {v0, v2}, Ljava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
move-result-object p0
.line 995
:cond_67
invoke-static {p0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
move-result p0
invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
return-object p0
:cond_70
:goto_70
return-object v0
.line 998
:cond_71
instance-of v0, p0, Ljava/lang/Boolean;
if-eqz v0, :cond_80
.line 999
check-cast p0, Ljava/lang/Boolean;
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
invoke-static {p0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p0
return-object p0
.line 1001
:cond_80
instance-of v0, p0, Ljava/util/Map;
if-eqz v0, :cond_b2
.line 1002
move-object v0, p0
check-cast v0, Ljava/util/Map;
.line 1003
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v1
const/4 v2, 0x2
if-ne v1, v2, :cond_b2
const-string v1, "andIncrement"
.line 1004
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_b2
const-string v1, "andDecrement"
.line 1005
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_b2
.line 1006
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object p0
invoke-interface {p0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object p0
.line 1007
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 1008
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p0
.line 1009
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToInt(Ljava/lang/Object;)Ljava/lang/Integer;
move-result-object p0
return-object p0
.line 1012
:cond_b2
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToJavaBean(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Object;",
"Ljava/lang/Class<",
"TT;>;)TT;"
}
.end annotation
.line 1069
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 p0
return-object p0
.end method
.method public static castToJavaBean(Ljava/util/Map;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
.registers 7
.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
.line 1461
:try_start_0
const-class v0, Ljava/lang/StackTraceElement;
const/4 v1, 0x0
if-ne p1, v0, :cond_3d
const-string p1, "className"
.line 1462
invoke-interface {p0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Ljava/lang/String;
const-string p2, "methodName"
.line 1463
invoke-interface {p0, p2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/lang/String;
const-string v0, "fileName"
.line 1464
invoke-interface {p0, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
const-string v2, "lineNumber"
.line 1467
invoke-interface {p0, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/lang/Number;
if-nez p0, :cond_28
goto :goto_37
.line 1470
:cond_28
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_33
.line 1471
check-cast p0, Ljava/math/BigDecimal;
invoke-virtual {p0}, Ljava/math/BigDecimal;->intValueExact()I
move-result v1
goto :goto_37
.line 1473
:cond_33
invoke-virtual {p0}, Ljava/lang/Number;->intValue()I
move-result v1
.line 1476
:goto_37
new-instance p0, Ljava/lang/StackTraceElement;
invoke-direct {p0, p1, p2, v0, v1}, Ljava/lang/StackTraceElement;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
return-object p0
.line 1480
:cond_3d
sget-object v0, Lcom/alibaba/fastjson/JSON;->DEFAULT_TYPE_KEY:Ljava/lang/String;
invoke-interface {p0, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 1481
instance-of v2, v0, Ljava/lang/String;
const/4 v3, 0x0
if-eqz v2, :cond_76
.line 1482
check-cast v0, Ljava/lang/String;
if-nez p2, :cond_4e
.line 1485
sget-object p2, Lcom/alibaba/fastjson/parser/ParserConfig;->global:Lcom/alibaba/fastjson/parser/ParserConfig;
.line 1487
:cond_4e
invoke-virtual {p2, v0, v3}, Lcom/alibaba/fastjson/parser/ParserConfig;->checkAutoType(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Class;
move-result-object v2
if-eqz v2, :cond_5f
.line 1491
invoke-virtual {v2, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_76
.line 1492
invoke-static {p0, v2, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->castToJavaBean(Ljava/util/Map;Ljava/lang/Class;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1489
:cond_5f
new-instance p0, Ljava/lang/ClassNotFoundException;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, " not found"
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Ljava/lang/ClassNotFoundException;-><init>(Ljava/lang/String;)V
throw p0
.line 1497
:cond_76
invoke-virtual {p1}, Ljava/lang/Class;->isInterface()Z
move-result v0
if-eqz v0, :cond_b0
.line 1499
instance-of v0, p0, Lcom/alibaba/fastjson/JSONObject;
if-eqz v0, :cond_83
.line 1500
check-cast p0, Lcom/alibaba/fastjson/JSONObject;
goto :goto_89
.line 1502
:cond_83
new-instance v0, Lcom/alibaba/fastjson/JSONObject;
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONObject;-><init>(Ljava/util/Map;)V
move-object p0, v0
:goto_89
if-nez p2, :cond_8f
.line 1505
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object p2
.line 1507
:cond_8f
invoke-virtual {p2, p1}, Lcom/alibaba/fastjson/parser/ParserConfig;->get(Ljava/lang/reflect/Type;)Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
move-result-object p2
if-eqz p2, :cond_9e
.line 1509
invoke-static {p0}, Lcom/alibaba/fastjson/JSON;->toJSONString(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p0
.line 1510
invoke-static {p0, p1}, Lcom/alibaba/fastjson/JSON;->parseObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1512
:cond_9e
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object p2
invoke-virtual {p2}, Ljava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader;
move-result-object p2
const/4 v0, 0x1
new-array v0, v0, [Ljava/lang/Class;
aput-object p1, v0, v1
invoke-static {p2, v0, p0}, Ljava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1516
:cond_b0
const-class v0, Ljava/util/Locale;
if-ne p1, v0, :cond_da
const-string v0, "language"
.line 1517
invoke-interface {p0, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
const-string v1, "country"
.line 1518
invoke-interface {p0, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
.line 1519
instance-of v2, v0, Ljava/lang/String;
if-eqz v2, :cond_da
.line 1520
check-cast v0, Ljava/lang/String;
.line 1521
instance-of v2, v1, Ljava/lang/String;
if-eqz v2, :cond_d2
.line 1522
check-cast v1, Ljava/lang/String;
.line 1523
new-instance p0, Ljava/util/Locale;
invoke-direct {p0, v0, v1}, Ljava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;)V
return-object p0
:cond_d2
if-nez v1, :cond_da
.line 1525
new-instance p0, Ljava/util/Locale;
invoke-direct {p0, v0}, Ljava/util/Locale;-><init>(Ljava/lang/String;)V
return-object p0
.line 1530
:cond_da
const-class v0, Ljava/lang/String;
if-ne p1, v0, :cond_e7
instance-of v0, p0, Lcom/alibaba/fastjson/JSONObject;
if-eqz v0, :cond_e7
.line 1531
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.line 1534
:cond_e7
const-class v0, Lcom/alibaba/fastjson/JSON;
if-ne p1, v0, :cond_f0
instance-of v0, p0, Lcom/alibaba/fastjson/JSONObject;
if-eqz v0, :cond_f0
return-object p0
.line 1538
:cond_f0
const-class v0, Ljava/util/LinkedHashMap;
if-ne p1, v0, :cond_104
instance-of v0, p0, Lcom/alibaba/fastjson/JSONObject;
if-eqz v0, :cond_104
.line 1539
move-object v0, p0
check-cast v0, Lcom/alibaba/fastjson/JSONObject;
.line 1540
invoke-virtual {v0}, Lcom/alibaba/fastjson/JSONObject;->getInnerMap()Ljava/util/Map;
move-result-object v0
.line 1541
instance-of v1, v0, Ljava/util/LinkedHashMap;
if-eqz v1, :cond_104
return-object v0
.line 1546
:cond_104
invoke-virtual {p1, p0}, Ljava/lang/Class;->isInstance(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_10b
return-object p0
.line 1550
:cond_10b
const-class v0, Lcom/alibaba/fastjson/JSONObject;
if-ne p1, v0, :cond_115
.line 1551
new-instance p1, Lcom/alibaba/fastjson/JSONObject;
invoke-direct {p1, p0}, Lcom/alibaba/fastjson/JSONObject;-><init>(Ljava/util/Map;)V
return-object p1
:cond_115
if-nez p2, :cond_11b
.line 1555
invoke-static {}, Lcom/alibaba/fastjson/parser/ParserConfig;->getGlobalInstance()Lcom/alibaba/fastjson/parser/ParserConfig;
move-result-object p2
.line 1559
:cond_11b
invoke-virtual {p2, p1}, Lcom/alibaba/fastjson/parser/ParserConfig;->getDeserializer(Ljava/lang/reflect/Type;)Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
move-result-object v0
.line 1560
instance-of v1, v0, Lcom/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer;
if-eqz v1, :cond_126
.line 1561
move-object v3, v0
check-cast v3, Lcom/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer;
:cond_126
if-eqz v3, :cond_12d
.line 1567
invoke-virtual {v3, p0, p2}, Lcom/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer;->createInstance(Ljava/util/Map;Lcom/alibaba/fastjson/parser/ParserConfig;)Ljava/lang/Object;
move-result-object p0
return-object p0
.line 1565
:cond_12d
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "can not get javaBeanDeserializer. "
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
:try_end_148
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_148} :catch_148
:catch_148
move-exception p0
.line 1569
new-instance p1, Lcom/alibaba/fastjson/JSONException;
invoke-virtual {p0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p1
.end method
.method public static castToLong(Ljava/lang/Object;)Ljava/lang/Long;
.registers 5
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 858
:cond_4
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_13
.line 859
check-cast p0, Ljava/math/BigDecimal;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->longValue(Ljava/math/BigDecimal;)J
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p0
return-object p0
.line 862
:cond_13
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_22
.line 863
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->longValue()J
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p0
return-object p0
.line 866
:cond_22
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_79
.line 867
move-object v1, p0
check-cast v1, Ljava/lang/String;
.line 868
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v2
if-eqz v2, :cond_78
const-string v2, "null"
.line 869
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_78
const-string v2, "NULL"
.line 870
invoke-virtual {v2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_40
goto :goto_78
:cond_40
const/16 v2, 0x2c
.line 873
invoke-virtual {v1, v2}, Ljava/lang/String;->indexOf(I)I
move-result v2
const/4 v3, -0x1
if-eq v2, v3, :cond_51
const-string v2, ","
const-string v3, ""
.line 874
invoke-virtual {v1, v2, v3}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
.line 877
:cond_51
:try_start_51
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 p0
:try_end_59
.catch Ljava/lang/NumberFormatException; {:try_start_51 .. :try_end_59} :catch_5a
return-object p0
.line 881
:catch_5a
new-instance v2, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {v2, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
const/4 v1, 0x0
.line 883
invoke-virtual {v2, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z
move-result v1
if-eqz v1, :cond_6a
.line 884
invoke-virtual {v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object v0
.line 886
:cond_6a
invoke-virtual {v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->close()V
if-eqz v0, :cond_79
.line 888
invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p0
return-object p0
:cond_78
:goto_78
return-object v0
.line 892
:cond_79
instance-of v0, p0, Ljava/util/Map;
if-eqz v0, :cond_ab
.line 893
move-object v0, p0
check-cast v0, Ljava/util/Map;
.line 894
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result v1
const/4 v2, 0x2
if-ne v1, v2, :cond_ab
const-string v1, "andIncrement"
.line 895
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_ab
const-string v1, "andDecrement"
.line 896
invoke-interface {v0, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_ab
.line 897
invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object p0
invoke-interface {p0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object p0
.line 898
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 899
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p0
.line 900
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->castToLong(Ljava/lang/Object;)Ljava/lang/Long;
move-result-object p0
return-object p0
.line 904
:cond_ab
instance-of v0, p0, Ljava/lang/Boolean;
if-eqz v0, :cond_c1
.line 905
check-cast p0, Ljava/lang/Boolean;
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
if-eqz p0, :cond_ba
const-wide/16 v0, 0x1
goto :goto_bc
:cond_ba
const-wide/16 v0, 0x0
:goto_bc
invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p0
return-object p0
.line 908
:cond_c1
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToShort(Ljava/lang/Object;)Ljava/lang/Short;
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return-object v0
.line 284
:cond_4
instance-of v1, p0, Ljava/math/BigDecimal;
if-eqz v1, :cond_13
.line 285
check-cast p0, Ljava/math/BigDecimal;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->shortValue(Ljava/math/BigDecimal;)S
move-result p0
invoke-static {p0}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object p0
return-object p0
.line 288
:cond_13
instance-of v1, p0, Ljava/lang/Number;
if-eqz v1, :cond_22
.line 289
check-cast p0, Ljava/lang/Number;
invoke-virtual {p0}, Ljava/lang/Number;->shortValue()S
move-result p0
invoke-static {p0}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object p0
return-object p0
.line 292
:cond_22
instance-of v1, p0, Ljava/lang/String;
if-eqz v1, :cond_49
.line 293
check-cast p0, Ljava/lang/String;
.line 294
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
if-eqz v1, :cond_48
const-string v1, "null"
.line 295
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_48
const-string v1, "NULL"
.line 296
invoke-virtual {v1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_3f
goto :goto_48
.line 299
:cond_3f
invoke-static {p0}, Ljava/lang/Short;->parseShort(Ljava/lang/String;)S
move-result p0
invoke-static {p0}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object p0
return-object p0
:cond_48
:goto_48
return-object v0
.line 302
:cond_49
instance-of v0, p0, Ljava/lang/Boolean;
if-eqz v0, :cond_58
.line 303
check-cast p0, Ljava/lang/Boolean;
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
invoke-static {p0}, Ljava/lang/Short;->valueOf(S)Ljava/lang/Short;
move-result-object p0
return-object p0
.line 306
:cond_58
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 p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static castToSqlDate(Ljava/lang/Object;)Ljava/lang/Object;
.registers 2
.line 613
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castToSqlDateFunction:Lcom/alibaba/fastjson/util/Function;
invoke-static {v0, p0}, Lcom/alibaba/fastjson/util/ModuleUtil;->callWhenHasJavaSql(Lcom/alibaba/fastjson/util/Function;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
return-object p0
.end method
.method public static castToSqlTime(Ljava/lang/Object;)Ljava/lang/Object;
.registers 2
.line 677
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castToSqlTimeFunction:Lcom/alibaba/fastjson/util/Function;
invoke-static {v0, p0}, Lcom/alibaba/fastjson/util/ModuleUtil;->callWhenHasJavaSql(Lcom/alibaba/fastjson/util/Function;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
return-object p0
.end method
.method public static castToString(Ljava/lang/Object;)Ljava/lang/String;
.registers 1
if-nez p0, :cond_4
const/4 p0, 0x0
return-object p0
.line 226
:cond_4
invoke-virtual {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static castToTimestamp(Ljava/lang/Object;)Ljava/lang/Object;
.registers 2
.line 770
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->castToTimestampFunction:Lcom/alibaba/fastjson/util/Function;
invoke-static {v0, p0}, Lcom/alibaba/fastjson/util/ModuleUtil;->callWhenHasJavaSql(Lcom/alibaba/fastjson/util/Function;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
return-object p0
.end method
.method public static checkPrimitiveArray(Ljava/lang/reflect/GenericArrayType;)Ljava/lang/reflect/Type;
.registers 4
.line 2684
invoke-interface {p0}, Ljava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type;
move-result-object v0
const-string v1, "["
.line 2687
:goto_6
instance-of v2, v0, Ljava/lang/reflect/GenericArrayType;
if-eqz v2, :cond_20
.line 2688
check-cast v0, Ljava/lang/reflect/GenericArrayType;
.line 2689
invoke-interface {v0}, Ljava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type;
move-result-object v0
.line 2690
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
goto :goto_6
.line 2693
:cond_20
instance-of v2, v0, Ljava/lang/Class;
if-eqz v2, :cond_49
.line 2694
check-cast v0, Ljava/lang/Class;
.line 2695
invoke-virtual {v0}, Ljava/lang/Class;->isPrimitive()Z
move-result v2
if-eqz v2, :cond_49
.line 2697
:try_start_2c
sget-object v2, Lcom/alibaba/fastjson/util/TypeUtils;->primitiveTypeMap:Ljava/util/Map;
invoke-interface {v2, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
if-eqz v0, :cond_49
.line 2699
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
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-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object p0
:try_end_49
.catch Ljava/lang/ClassNotFoundException; {:try_start_2c .. :try_end_49} :catch_49
:catch_49
:cond_49
return-object p0
.end method
.method public static clearClassMapping()V
.registers 1
.line 1701
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v0}, Ljava/util/concurrent/ConcurrentMap;->clear()V
.line 1702
invoke-static {}, Lcom/alibaba/fastjson/util/TypeUtils;->addBaseClassMappings()V
return-void
.end method
.method private static computeFields(Ljava/lang/Class;Ljava/util/Map;Lcom/alibaba/fastjson/PropertyNamingStrategy;Ljava/util/Map;[Ljava/lang/reflect/Field;)V
.registers 26
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Lcom/alibaba/fastjson/PropertyNamingStrategy;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;[",
"Ljava/lang/reflect/Field;",
")V"
}
.end annotation
move-object/from16 v0, p1
move-object/from16 v1, p2
move-object/from16 v2, p3
move-object/from16 v3, p4
.line 2274
array-length v4, v3
const/4 v6, 0x0
:goto_a
if-ge v6, v4, :cond_a4
aget-object v10, v3, v6
.line 2275
invoke-virtual {v10}, Ljava/lang/reflect/Field;->getModifiers()I
move-result v7
invoke-static {v7}, Ljava/lang/reflect/Modifier;->isStatic(I)Z
move-result v7
if-eqz v7, :cond_1a
goto/16 :goto_a0
.line 2278
:cond_1a
const-class v7, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v10, v7}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v7
move-object/from16 v17, v7
check-cast v17, Lcom/alibaba/fastjson/annotation/JSONField;
.line 2280
invoke-virtual {v10}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;
move-result-object v7
const/4 v8, 0x0
if-eqz v17, :cond_69
.line 2283
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v9
if-nez v9, :cond_33
goto/16 :goto_a0
.line 2286
:cond_33
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v9
.line 2287
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v11
invoke-static {v11}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v11
.line 2288
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;
move-result-object v12
invoke-static {v12}, Lcom/alibaba/fastjson/parser/Feature;->of([Lcom/alibaba/fastjson/parser/Feature;)I
move-result v12
.line 2289
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v13
invoke-virtual {v13}, Ljava/lang/String;->length()I
move-result v13
if-eqz v13, :cond_55
.line 2290
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v7
.line 2292
:cond_55
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v13
invoke-virtual {v13}, Ljava/lang/String;->length()I
move-result v13
if-eqz v13, :cond_63
.line 2293
invoke-interface/range {v17 .. v17}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v8
:cond_63
move-object/from16 v18, v8
move v13, v9
move v14, v11
move v15, v12
goto :goto_6e
:cond_69
move-object/from16 v18, v8
const/4 v13, 0x0
const/4 v14, 0x0
const/4 v15, 0x0
:goto_6e
if-eqz v0, :cond_79
.line 2297
invoke-interface {v0, v7}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/String;
if-nez v7, :cond_79
goto :goto_a0
:cond_79
if-eqz v1, :cond_7f
.line 2303
invoke-virtual {v1, v7}, Lcom/alibaba/fastjson/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;
move-result-object v7
:cond_7f
move-object v12, v7
.line 2305
invoke-interface {v2, v12}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v7
if-nez v7, :cond_a0
.line 2306
new-instance v11, Lcom/alibaba/fastjson/util/FieldInfo;
const/4 v9, 0x0
const/16 v16, 0x0
const/16 v19, 0x0
move-object v7, v11
move-object v8, v12
move-object v5, v11
move-object/from16 v11, p0
move-object/from16 v20, v12
move-object/from16 v12, v16
move-object/from16 v16, v19
invoke-direct/range {v7 .. v18}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Ljava/lang/String;)V
move-object/from16 v7, v20
.line 2308
invoke-interface {v2, v7, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:cond_a0
:goto_a0
add-int/lit8 v6, v6, 0x1
goto/16 :goto_a
:cond_a4
return-void
.end method
.method public static computeGetters(Ljava/lang/Class;Lcom/alibaba/fastjson/annotation/JSONType;Ljava/util/Map;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
.registers 44
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Lcom/alibaba/fastjson/annotation/JSONType;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/reflect/Field;",
">;Z",
"Lcom/alibaba/fastjson/PropertyNamingStrategy;",
")",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;"
}
.end annotation
move-object/from16 v12, p0
move-object/from16 v13, p2
move-object/from16 v14, p3
move-object/from16 v15, p5
.line 1910
new-instance v11, Ljava/util/LinkedHashMap;
invoke-direct {v11}, Ljava/util/LinkedHashMap;-><init>()V
.line 1911
invoke-static/range {p0 .. p0}, Lcom/alibaba/fastjson/util/TypeUtils;->isKotlin(Ljava/lang/Class;)Z
move-result v16
const/16 v17, 0x0
.line 1914
move-object/from16 v0, v17
check-cast v0, [[Ljava/lang/annotation/Annotation;
.line 1917
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;
move-result-object v10
.line 1919
:try_start_1b
new-instance v1, Lcom/alibaba/fastjson/util/TypeUtils$MethodInheritanceComparator;
invoke-direct {v1}, Lcom/alibaba/fastjson/util/TypeUtils$MethodInheritanceComparator;-><init>()V
invoke-static {v10, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V
:try_end_23
.catchall {:try_start_1b .. :try_end_23} :catchall_23
.line 1924
:catchall_23
array-length v9, v10
move-object/from16 v1, v17
move-object v2, v1
move-object v3, v2
const/4 v7, 0x0
:goto_29
if-ge v7, v9, :cond_540
aget-object v6, v10, v7
.line 1925
invoke-virtual {v6}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v5
const/16 v18, 0x0
.line 1928
invoke-virtual {v6}, Ljava/lang/reflect/Method;->getModifiers()I
move-result v4
invoke-static {v4}, Ljava/lang/reflect/Modifier;->isStatic(I)Z
move-result v4
if-eqz v4, :cond_4d
:cond_3d
:goto_3d
move-object/from16 v19, v0
:goto_3f
move-object/from16 v20, v2
move/from16 v31, v7
move/from16 v33, v9
move-object/from16 v34, v10
move-object v0, v11
move-object v14, v13
const/16 v32, 0x0
goto/16 :goto_52e
.line 1932
:cond_4d
invoke-virtual {v6}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;
move-result-object v4
.line 1933
sget-object v8, Ljava/lang/Void;->TYPE:Ljava/lang/Class;
invoke-virtual {v4, v8}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_5a
goto :goto_3d
.line 1937
:cond_5a
invoke-virtual {v6}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v8
array-length v8, v8
if-eqz v8, :cond_62
goto :goto_3d
.line 1941
:cond_62
const-class v8, Ljava/lang/ClassLoader;
if-eq v4, v8, :cond_3d
const-class v8, Ljava/io/InputStream;
if-eq v4, v8, :cond_3d
const-class v8, Ljava/io/Reader;
if-ne v4, v8, :cond_6f
goto :goto_3d
:cond_6f
const-string v8, "getMetaClass"
.line 1947
invoke-virtual {v5, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_86
.line 1948
invoke-virtual {v4}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v8
move-object/from16 v19, v0
const-string v0, "groovy.lang.MetaClass"
invoke-virtual {v8, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_88
:goto_85
goto :goto_3f
:cond_86
move-object/from16 v19, v0
:cond_88
const-string v0, "getSuppressed"
.line 1951
invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_99
.line 1952
invoke-virtual {v6}, Ljava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class;
move-result-object v0
const-class v8, Ljava/lang/Throwable;
if-ne v0, v8, :cond_99
:goto_98
goto :goto_85
:cond_99
if-eqz v16, :cond_a2
.line 1956
invoke-static {v12, v5}, Lcom/alibaba/fastjson/util/TypeUtils;->isKotlinIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_a2
goto :goto_98
:cond_a2
const/4 v0, 0x0
.line 1962
invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v8
.line 1963
const-class v0, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v6, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONField;
if-nez v0, :cond_b5
.line 1965
invoke-static {v12, v6}, Lcom/alibaba/fastjson/util/TypeUtils;->getSuperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/alibaba/fastjson/annotation/JSONField;
move-result-object v0
:cond_b5
move-object/from16 v20, v2
const-string v2, "get"
move-object/from16 v21, v11
if-nez v0, :cond_190
if-eqz v16, :cond_190
if-nez v1, :cond_10b
.line 1969
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getDeclaredConstructors()[Ljava/lang/reflect/Constructor;
move-result-object v1
.line 1970
invoke-static {v1}, Lcom/alibaba/fastjson/util/TypeUtils;->getKotlinConstructor([Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
move-result-object v22
if-eqz v22, :cond_106
.line 1972
invoke-static/range {v22 .. v22}, Lcom/alibaba/fastjson/util/TypeUtils;->getParameterAnnotations(Ljava/lang/reflect/Constructor;)[[Ljava/lang/annotation/Annotation;
move-result-object v19
.line 1973
invoke-static/range {p0 .. p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getKoltinConstructorParameters(Ljava/lang/Class;)[Ljava/lang/String;
move-result-object v11
if-eqz v11, :cond_fd
.line 1975
array-length v3, v11
new-array v3, v3, [Ljava/lang/String;
move-object/from16 v23, v0
.line 1976
array-length v0, v11
move-object/from16 v24, v8
const/4 v8, 0x0
invoke-static {v11, v8, v3, v8, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 1978
invoke-static {v3}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V
.line 1979
array-length v0, v11
new-array v0, v0, [S
move-object/from16 v25, v1
.line 1980
:goto_e9
array-length v1, v11
if-ge v8, v1, :cond_f8
.line 1981
aget-object v1, v11, v8
invoke-static {v3, v1}, Ljava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I
move-result v1
.line 1982
aput-short v8, v0, v1
add-int/lit8 v8, v8, 0x1
int-to-short v8, v8
goto :goto_e9
:cond_f8
move-object v11, v3
move-object/from16 v1, v25
move-object v3, v0
goto :goto_103
:cond_fd
move-object/from16 v23, v0
move-object/from16 v25, v1
move-object/from16 v24, v8
:goto_103
move-object/from16 v0, v19
goto :goto_113
:cond_106
move-object/from16 v23, v0
move-object/from16 v25, v1
goto :goto_10d
:cond_10b
move-object/from16 v23, v0
:goto_10d
move-object/from16 v24, v8
move-object/from16 v0, v19
move-object/from16 v11, v20
:goto_113
if-eqz v11, :cond_183
if-eqz v3, :cond_183
.line 1988
invoke-virtual {v5, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v8
if-eqz v8, :cond_183
const/4 v8, 0x3
.line 1989
invoke-virtual {v5, v8}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v19
invoke-static/range {v19 .. v19}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v8
.line 1990
invoke-static {v11, v8}, Ljava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I
move-result v19
move-object/from16 v20, v1
move-object/from16 v25, v4
if-gez v19, :cond_142
const/4 v1, 0x0
.line 1992
:goto_131
array-length v4, v11
if-ge v1, v4, :cond_142
.line 1993
aget-object v4, v11, v1
invoke-virtual {v8, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_13f
move/from16 v19, v1
goto :goto_142
:cond_13f
add-int/lit8 v1, v1, 0x1
goto :goto_131
:cond_142
:goto_142
if-ltz v19, :cond_17e
.line 2000
aget-short v1, v3, v19
.line 2001
aget-object v1, v0, v1
if-eqz v1, :cond_165
.line 2003
array-length v4, v1
move-object/from16 v19, v0
const/4 v0, 0x0
:goto_14e
move-object/from16 v26, v3
if-ge v0, v4, :cond_169
aget-object v3, v1, v0
move-object/from16 v27, v1
.line 2004
instance-of v1, v3, Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v1, :cond_15e
.line 2005
move-object v0, v3
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONField;
goto :goto_16b
:cond_15e
add-int/lit8 v0, v0, 0x1
move-object/from16 v3, v26
move-object/from16 v1, v27
goto :goto_14e
:cond_165
move-object/from16 v19, v0
move-object/from16 v26, v3
:cond_169
move-object/from16 v0, v23
:goto_16b
if-nez v0, :cond_17b
.line 2011
invoke-static {v8, v14}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v1
if-eqz v1, :cond_17b
.line 2013
const-class v0, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONField;
:cond_17b
move-object/from16 v27, v0
goto :goto_18d
:cond_17e
move-object/from16 v19, v0
move-object/from16 v26, v3
goto :goto_18b
:cond_183
move-object/from16 v19, v0
move-object/from16 v20, v1
move-object/from16 v26, v3
move-object/from16 v25, v4
:goto_18b
move-object/from16 v27, v23
:goto_18d
move-object/from16 v23, v11
goto :goto_19e
:cond_190
move-object/from16 v23, v0
move-object/from16 v25, v4
move-object/from16 v24, v8
move-object/from16 v26, v3
move-object/from16 v27, v23
move-object/from16 v23, v20
move-object/from16 v20, v1
:goto_19e
if-eqz v27, :cond_22c
.line 2020
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v0
if-nez v0, :cond_1b3
:goto_1a6
move/from16 v31, v7
move/from16 v33, v9
move-object/from16 v34, v10
move-object v14, v13
move-object/from16 v0, v21
const/16 v32, 0x0
goto/16 :goto_527
.line 2023
:cond_1b3
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v8
.line 2024
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v0
invoke-static {v0}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v11
.line 2025
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;
move-result-object v0
invoke-static {v0}, Lcom/alibaba/fastjson/parser/Feature;->of([Lcom/alibaba/fastjson/parser/Feature;)I
move-result v28
.line 2026
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
if-eqz v0, :cond_213
.line 2027
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v0
if-eqz v13, :cond_1e0
.line 2029
invoke-interface {v13, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
if-nez v0, :cond_1e0
goto :goto_1a6
:cond_1e0
move-object v5, v0
.line 2034
new-instance v4, Lcom/alibaba/fastjson/util/FieldInfo;
const/4 v3, 0x0
const/16 v22, 0x0
const/16 v24, 0x0
move-object v0, v4
move-object v1, v5
move-object v2, v6
move-object v6, v4
move-object/from16 v4, p0
move-object/from16 v29, v5
move-object/from16 v5, v22
move-object/from16 v30, v6
move v6, v8
move/from16 v31, v7
move v7, v11
const/16 v32, 0x0
move/from16 v8, v28
move/from16 v33, v9
move-object/from16 v9, v27
move-object/from16 v34, v10
move-object/from16 v10, v24
move-object/from16 v15, v21
move-object/from16 v11, v18
invoke-direct/range {v0 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Ljava/lang/String;)V
move-object/from16 v1, v29
move-object/from16 v0, v30
.line 2036
invoke-interface {v15, v1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_24c
:cond_213
move/from16 v31, v7
move/from16 v33, v9
move-object/from16 v34, v10
move-object/from16 v15, v21
const/16 v32, 0x0
.line 2039
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
if-eqz v0, :cond_23b
.line 2040
invoke-interface/range {v27 .. v27}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v18
goto :goto_23b
:cond_22c
move/from16 v31, v7
move/from16 v33, v9
move-object/from16 v34, v10
move-object/from16 v15, v21
const/16 v32, 0x0
move/from16 v8, v32
move v11, v8
move/from16 v28, v11
.line 2043
:cond_23b
:goto_23b
invoke-virtual {v5, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
const/16 v10, 0x66
const/16 v9, 0x5f
if-eqz v0, :cond_3cf
.line 2044
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v0
const/4 v1, 0x4
if-ge v0, v1, :cond_24f
:goto_24c
move-object v14, v13
goto/16 :goto_524
:cond_24f
const-string v0, "getClass"
.line 2047
invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_258
goto :goto_24c
:cond_258
const-string v0, "getDeclaringClass"
.line 2050
invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_267
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->isEnum()Z
move-result v0
if-eqz v0, :cond_267
goto :goto_24c
:cond_267
const/4 v0, 0x3
.line 2053
invoke-virtual {v5, v0}, Ljava/lang/String;->charAt(I)C
move-result v2
.line 2056
invoke-static {v2}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v3
if-nez v3, :cond_2c2
const/16 v3, 0x200
if-le v2, v3, :cond_277
goto :goto_2c2
:cond_277
if-ne v2, v9, :cond_292
.line 2066
invoke-virtual {v5, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
.line 2067
invoke-interface {v14, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/reflect/Field;
if-nez v0, :cond_2d9
.line 2070
invoke-virtual {v5, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
.line 2071
invoke-static {v0, v14}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v1
if-nez v1, :cond_290
goto :goto_2c0
:cond_290
move-object v2, v0
goto :goto_2c0
:cond_292
if-ne v2, v10, :cond_29a
const/4 v0, 0x3
.line 2077
invoke-virtual {v5, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
goto :goto_2d7
:cond_29a
const/4 v0, 0x3
.line 2078
invoke-virtual {v5}, Ljava/lang/String;->length()I
move-result v2
const/4 v3, 0x5
if-lt v2, v3, :cond_2b5
invoke-virtual {v5, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
invoke-static {v1}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v1
if-eqz v1, :cond_2b5
.line 2079
invoke-virtual {v5, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
goto :goto_2d7
.line 2081
:cond_2b5
invoke-virtual {v5, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v2
.line 2082
invoke-static {v2, v14}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v1
if-nez v1, :cond_2c0
goto :goto_24c
:cond_2c0
:goto_2c0
move-object v0, v1
goto :goto_2d9
.line 2059
:cond_2c2
:goto_2c2
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
if-eqz v1, :cond_2cf
.line 2060
invoke-virtual {v5, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
goto :goto_2d3
.line 2062
:cond_2cf
invoke-static {v5}, Lcom/alibaba/fastjson/util/TypeUtils;->getPropertyNameByMethodName(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
.line 2064
:goto_2d3
invoke-static {v14, v5, v1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getPropertyNameByCompatibleFieldName(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
move-result-object v2
:goto_2d7
move-object/from16 v0, v17
.line 2087
:cond_2d9
:goto_2d9
invoke-static {v12, v2}, Lcom/alibaba/fastjson/util/TypeUtils;->isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_2e1
goto/16 :goto_24c
:cond_2e1
if-nez v0, :cond_2e7
.line 2094
invoke-static {v2, v14}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v0
:cond_2e7
const/4 v1, 0x1
if-nez v0, :cond_30a
.line 2097
invoke-virtual {v2}, Ljava/lang/String;->length()I
move-result v3
if-le v3, v1, :cond_30a
.line 2098
invoke-virtual {v2, v1}, Ljava/lang/String;->charAt(I)C
move-result v3
const/16 v4, 0x41
if-lt v3, v4, :cond_30a
const/16 v4, 0x5a
if-gt v3, v4, :cond_30a
const/4 v7, 0x3
.line 2100
invoke-virtual {v5, v7}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
.line 2101
invoke-static {v0, v14}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v0
goto :goto_30b
:cond_30a
const/4 v7, 0x3
:goto_30b
move-object v3, v0
if-eqz v3, :cond_373
.line 2106
const-class v0, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v3, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v0, :cond_36d
.line 2108
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v4
if-nez v4, :cond_320
goto/16 :goto_24c
.line 2111
:cond_320
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v4
.line 2112
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v8
invoke-static {v8}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v8
.line 2113
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;
move-result-object v11
invoke-static {v11}, Lcom/alibaba/fastjson/parser/Feature;->of([Lcom/alibaba/fastjson/parser/Feature;)I
move-result v11
.line 2114
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v21
invoke-virtual/range {v21 .. v21}, Ljava/lang/String;->length()I
move-result v21
if-eqz v21, :cond_352
.line 2115
invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v1
.line 2116
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v2
if-eqz v13, :cond_354
.line 2118
invoke-interface {v13, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
if-nez v2, :cond_354
goto/16 :goto_24c
:cond_352
move-object/from16 v1, v24
.line 2124
:cond_354
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v21
invoke-virtual/range {v21 .. v21}, Ljava/lang/String;->length()I
move-result v21
if-eqz v21, :cond_362
.line 2125
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v18
:cond_362
move/from16 v21, v8
move/from16 v28, v11
move-object/from16 v22, v18
move-object v11, v0
move-object v8, v1
move/from16 v18, v4
goto :goto_37d
:cond_36d
move/from16 v21, v11
move-object/from16 v22, v18
move-object v11, v0
goto :goto_379
:cond_373
move/from16 v21, v11
move-object/from16 v11, v17
move-object/from16 v22, v18
:goto_379
move/from16 v18, v8
move-object/from16 v8, v24
:goto_37d
if-eqz v13, :cond_38a
.line 2130
invoke-interface {v13, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
move-object v2, v0
check-cast v2, Ljava/lang/String;
if-nez v2, :cond_38a
goto/16 :goto_24c
:cond_38a
move-object v4, v15
move-object/from16 v15, p5
if-eqz v15, :cond_399
.line 2135
invoke-virtual {v8}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
if-nez v0, :cond_399
.line 2136
invoke-virtual {v15, v2}, Lcom/alibaba/fastjson/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
:cond_399
move-object v8, v2
.line 2138
new-instance v2, Lcom/alibaba/fastjson/util/FieldInfo;
const/16 v24, 0x0
move-object v0, v2
move-object v1, v8
move-object/from16 v35, v2
move-object v2, v6
move-object v15, v4
move-object/from16 v13, v25
move-object/from16 v4, p0
move-object v12, v5
move-object/from16 v5, v24
move-object/from16 v24, v6
move/from16 v6, v18
move/from16 v25, v7
move/from16 v7, v21
move-object/from16 v36, v8
move/from16 v8, v28
move-object/from16 v9, v27
move-object v10, v11
move/from16 v14, v25
move-object/from16 v11, v22
invoke-direct/range {v0 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Ljava/lang/String;)V
move-object/from16 v0, v35
move-object/from16 v2, v36
.line 2140
invoke-interface {v15, v2, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move/from16 v8, v18
move/from16 v11, v21
move-object/from16 v18, v22
goto :goto_3d5
:cond_3cf
move-object v12, v5
move-object/from16 v24, v6
move-object/from16 v13, v25
const/4 v14, 0x3
:goto_3d5
const-string v0, "is"
.line 2142
invoke-virtual {v12, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_522
.line 2143
invoke-virtual {v12}, Ljava/lang/String;->length()I
move-result v0
if-ge v0, v14, :cond_3e5
goto/16 :goto_522
.line 2146
:cond_3e5
sget-object v0, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class;
if-eq v13, v0, :cond_3ef
const-class v0, Ljava/lang/Boolean;
if-eq v13, v0, :cond_3ef
goto/16 :goto_522
:cond_3ef
const/4 v0, 0x2
.line 2150
invoke-virtual {v12, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
.line 2153
invoke-static {v1}, Ljava/lang/Character;->isUpperCase(C)Z
move-result v2
if-eqz v2, :cond_429
.line 2154
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithJavaBean:Z
if-eqz v1, :cond_407
.line 2155
invoke-virtual {v12, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/alibaba/fastjson/util/TypeUtils;->decapitalize(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
goto :goto_422
.line 2157
:cond_407
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v12, v0}, Ljava/lang/String;->charAt(I)C
move-result v2
invoke-static {v2}, Ljava/lang/Character;->toLowerCase(C)C
move-result v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v12, v14}, Ljava/lang/String;->substring(I)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
:goto_422
move-object/from16 v13, p3
.line 2159
invoke-static {v13, v12, v1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getPropertyNameByCompatibleFieldName(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
move-result-object v0
goto :goto_453
:cond_429
move-object/from16 v13, p3
move v3, v14
const/16 v2, 0x5f
if-ne v1, v2, :cond_44b
.line 2161
invoke-virtual {v12, v3}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v1
.line 2162
invoke-interface {v13, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/reflect/Field;
if-nez v2, :cond_446
.line 2165
invoke-virtual {v12, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
.line 2166
invoke-static {v0, v13}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v2
if-nez v2, :cond_447
:cond_446
move-object v0, v1
:cond_447
move-object v1, v12
:goto_448
move-object/from16 v12, p0
goto :goto_463
:cond_44b
const/16 v2, 0x66
if-ne v1, v2, :cond_457
.line 2172
invoke-virtual {v12, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
:goto_453
move-object v1, v12
move-object/from16 v2, v17
goto :goto_448
.line 2174
:cond_457
invoke-virtual {v12, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
.line 2175
invoke-static {v0, v13}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v2
if-nez v2, :cond_447
goto/16 :goto_522
.line 2180
:goto_463
invoke-static {v12, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_46b
goto/16 :goto_522
:cond_46b
if-nez v2, :cond_471
.line 2186
invoke-static {v0, v13}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v2
:cond_471
if-nez v2, :cond_479
.line 2190
invoke-static {v1, v13}, Lcom/alibaba/fastjson/parser/ParserConfig;->getFieldFromCache(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/reflect/Field;
move-result-object v1
move-object v3, v1
goto :goto_47a
:cond_479
move-object v3, v2
:goto_47a
if-eqz v3, :cond_4e0
.line 2194
const-class v1, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v3, v1}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v1
check-cast v1, Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v1, :cond_4da
.line 2196
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->serialize()Z
move-result v2
if-nez v2, :cond_48e
goto/16 :goto_522
.line 2199
:cond_48e
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->ordinal()I
move-result v2
.line 2200
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object v4
invoke-static {v4}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result v4
.line 2201
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;
move-result-object v5
invoke-static {v5}, Lcom/alibaba/fastjson/parser/Feature;->of([Lcom/alibaba/fastjson/parser/Feature;)I
move-result v5
.line 2202
invoke-interface {v1}, 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_4bd
.line 2203
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->name()Ljava/lang/String;
move-result-object v0
move-object/from16 v14, p2
if-eqz v14, :cond_4bf
.line 2205
invoke-interface {v14, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
if-nez v0, :cond_4bf
goto :goto_4f4
:cond_4bd
move-object/from16 v14, p2
.line 2211
:cond_4bf
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/String;->length()I
move-result v6
if-eqz v6, :cond_4d3
.line 2212
invoke-interface {v1}, Lcom/alibaba/fastjson/annotation/JSONField;->label()Ljava/lang/String;
move-result-object v6
move-object v10, v1
move v7, v4
move v8, v5
move-object v11, v6
move v6, v2
goto :goto_4ea
:cond_4d3
move-object v10, v1
move v6, v2
move v7, v4
move v8, v5
move-object/from16 v11, v18
goto :goto_4ea
:cond_4da
move-object/from16 v14, p2
move-object v10, v1
move v6, v8
move v7, v11
goto :goto_4e6
:cond_4e0
move-object/from16 v14, p2
move v6, v8
move v7, v11
move-object/from16 v10, v17
:goto_4e6
move-object/from16 v11, v18
move/from16 v8, v28
:goto_4ea
if-eqz v14, :cond_4f5
.line 2217
invoke-interface {v14, v0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
if-nez v0, :cond_4f5
:goto_4f4
goto :goto_524
:cond_4f5
move-object v9, v15
move-object/from16 v15, p5
if-eqz v15, :cond_4fe
.line 2223
invoke-virtual {v15, v0}, Lcom/alibaba/fastjson/PropertyNamingStrategy;->translate(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
:cond_4fe
move-object v5, v0
.line 2226
invoke-interface {v9, v5}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_507
move-object v0, v9
goto :goto_527
.line 2229
:cond_507
new-instance v4, Lcom/alibaba/fastjson/util/FieldInfo;
const/16 v18, 0x0
move-object v0, v4
move-object v1, v5
move-object/from16 v2, v24
move-object v13, v4
move-object/from16 v4, p0
move-object v12, v5
move-object/from16 v5, v18
move-object/from16 v37, v9
move-object/from16 v9, v27
invoke-direct/range {v0 .. v11}, Lcom/alibaba/fastjson/util/FieldInfo;-><init>(Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IIILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Ljava/lang/String;)V
move-object/from16 v0, v37
.line 2231
invoke-interface {v0, v12, v13}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_527
:cond_522
:goto_522
move-object/from16 v14, p2
:goto_524
move-object v0, v15
move-object/from16 v15, p5
:goto_527
move-object/from16 v1, v20
move-object/from16 v2, v23
move-object/from16 v3, v26
goto :goto_530
:goto_52e
move-object/from16 v2, v20
:goto_530
add-int/lit8 v7, v31, 0x1
move-object/from16 v12, p0
move-object v11, v0
move-object v13, v14
move-object/from16 v0, v19
move/from16 v9, v33
move-object/from16 v10, v34
move-object/from16 v14, p3
goto/16 :goto_29
:cond_540
move-object v0, v11
move-object v14, v13
.line 2234
invoke-virtual/range {p0 .. p0}, Ljava/lang/Class;->getFields()[Ljava/lang/reflect/Field;
move-result-object v1
move-object/from16 v2, p0
.line 2235
invoke-static {v2, v14, v15, v0, v1}, Lcom/alibaba/fastjson/util/TypeUtils;->computeFields(Ljava/lang/Class;Ljava/util/Map;Lcom/alibaba/fastjson/PropertyNamingStrategy;Ljava/util/Map;[Ljava/lang/reflect/Field;)V
move/from16 v1, p4
.line 2236
invoke-static {v2, v1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getFieldInfos(Ljava/lang/Class;ZLjava/util/Map;)Ljava/util/List;
move-result-object v0
return-object v0
.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
const/4 v0, 0x1
.line 1893
invoke-static {p0, p1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Ljava/util/Map;Z)Ljava/util/List;
move-result-object p0
return-object p0
.end method
.method public static computeGetters(Ljava/lang/Class;Ljava/util/Map;Z)Ljava/util/List;
.registers 10
.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 1897
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
move-object v2, v0
check-cast v2, Lcom/alibaba/fastjson/annotation/JSONType;
.line 1898
new-instance v4, Ljava/util/HashMap;
invoke-direct {v4}, Ljava/util/HashMap;-><init>()V
.line 1899
invoke-static {p0, v4}, Lcom/alibaba/fastjson/parser/ParserConfig;->parserAllFieldToCache(Ljava/lang/Class;Ljava/util/Map;)V
.line 1900
sget-object v6, Lcom/alibaba/fastjson/PropertyNamingStrategy;->CamelCase:Lcom/alibaba/fastjson/PropertyNamingStrategy;
move-object v1, p0
move-object v3, p1
move v5, p2
invoke-static/range {v1 .. v6}, Lcom/alibaba/fastjson/util/TypeUtils;->computeGetters(Ljava/lang/Class;Lcom/alibaba/fastjson/annotation/JSONType;Ljava/util/Map;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
move-result-object p0
return-object p0
.end method
.method public static computeGettersWithFieldBase(Ljava/lang/Class;Ljava/util/Map;ZLcom/alibaba/fastjson/PropertyNamingStrategy;)Ljava/util/List;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;Z",
"Lcom/alibaba/fastjson/PropertyNamingStrategy;",
")",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;"
}
.end annotation
.line 1884
new-instance v0, Ljava/util/LinkedHashMap;
invoke-direct {v0}, Ljava/util/LinkedHashMap;-><init>()V
move-object v1, p0
:goto_6
if-eqz v1, :cond_14
.line 1886
invoke-virtual {v1}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;
move-result-object v2
.line 1887
invoke-static {v1, p1, p3, v0, v2}, Lcom/alibaba/fastjson/util/TypeUtils;->computeFields(Ljava/lang/Class;Ljava/util/Map;Lcom/alibaba/fastjson/PropertyNamingStrategy;Ljava/util/Map;[Ljava/lang/reflect/Field;)V
.line 1885
invoke-virtual {v1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v1
goto :goto_6
.line 1889
:cond_14
invoke-static {p0, p2, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getFieldInfos(Ljava/lang/Class;ZLjava/util/Map;)Ljava/util/List;
move-result-object p0
return-object p0
.end method
.method private static createActualTypeMap([Ljava/lang/reflect/TypeVariable;[Ljava/lang/reflect/Type;)Ljava/util/Map;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Ljava/lang/reflect/TypeVariable;",
"[",
"Ljava/lang/reflect/Type;",
")",
"Ljava/util/Map<",
"Ljava/lang/reflect/TypeVariable;",
"Ljava/lang/reflect/Type;",
">;"
}
.end annotation
.line 2610
array-length v0, p0
.line 2611
new-instance v1, Ljava/util/HashMap;
invoke-direct {v1, v0}, Ljava/util/HashMap;-><init>(I)V
const/4 v2, 0x0
:goto_7
if-ge v2, v0, :cond_13
.line 2613
aget-object v3, p0, v2
aget-object v4, p1, v2
invoke-interface {v1, v3, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
add-int/lit8 v2, v2, 0x1
goto :goto_7
:cond_13
return-object v1
.end method
.method public static createCollection(Ljava/lang/reflect/Type;)Ljava/util/Collection;
.registers 4
.line 2741
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object v0
.line 2743
const-class v1, Ljava/util/AbstractCollection;
if-eq v0, v1, :cond_a3
const-class v1, Ljava/util/Collection;
if-ne v0, v1, :cond_e
goto/16 :goto_a3
.line 2746
:cond_e
const-class v1, Ljava/util/HashSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_1d
.line 2747
new-instance p0, Ljava/util/HashSet;
invoke-direct {p0}, Ljava/util/HashSet;-><init>()V
goto/16 :goto_a8
.line 2748
:cond_1d
const-class v1, Ljava/util/LinkedHashSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_2c
.line 2749
new-instance p0, Ljava/util/LinkedHashSet;
invoke-direct {p0}, Ljava/util/LinkedHashSet;-><init>()V
goto/16 :goto_a8
.line 2750
:cond_2c
const-class v1, Ljava/util/TreeSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_3b
.line 2751
new-instance p0, Ljava/util/TreeSet;
invoke-direct {p0}, Ljava/util/TreeSet;-><init>()V
goto/16 :goto_a8
.line 2752
:cond_3b
const-class v1, Ljava/util/ArrayList;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_49
.line 2753
new-instance p0, Ljava/util/ArrayList;
invoke-direct {p0}, Ljava/util/ArrayList;-><init>()V
goto :goto_a8
.line 2754
:cond_49
const-class v1, Ljava/util/EnumSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_68
.line 2756
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_5f
.line 2757
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
const/4 v0, 0x0
aget-object p0, p0, v0
goto :goto_61
.line 2759
:cond_5f
const-class p0, Ljava/lang/Object;
.line 2761
:goto_61
check-cast p0, Ljava/lang/Class;
invoke-static {p0}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object p0
goto :goto_a8
.line 2762
:cond_68
const-class p0, Ljava/util/Queue;
invoke-virtual {v0, p0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
if-nez p0, :cond_9d
sget-object p0, Lcom/alibaba/fastjson/util/TypeUtils;->class_deque:Ljava/lang/Class;
if-eqz p0, :cond_7b
.line 2763
invoke-virtual {v0, p0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_7b
goto :goto_9d
.line 2767
:cond_7b
:try_start_7b
invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/util/Collection;
:try_end_81
.catch Ljava/lang/Exception; {:try_start_7b .. :try_end_81} :catch_82
goto :goto_a8
.line 2769
:catch_82
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "create instance error, class "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.line 2764
:cond_9d
:goto_9d
new-instance p0, Ljava/util/LinkedList;
invoke-direct {p0}, Ljava/util/LinkedList;-><init>()V
goto :goto_a8
.line 2745
:cond_a3
:goto_a3
new-instance p0, Ljava/util/ArrayList;
invoke-direct {p0}, Ljava/util/ArrayList;-><init>()V
:goto_a8
return-object p0
.end method
.method public static createSet(Ljava/lang/reflect/Type;)Ljava/util/Set;
.registers 4
.line 2710
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object v0
.line 2712
const-class v1, Ljava/util/AbstractCollection;
if-eq v0, v1, :cond_78
const-class v1, Ljava/util/Collection;
if-ne v0, v1, :cond_d
goto :goto_78
.line 2715
:cond_d
const-class v1, Ljava/util/HashSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_1b
.line 2716
new-instance p0, Ljava/util/HashSet;
invoke-direct {p0}, Ljava/util/HashSet;-><init>()V
goto :goto_7d
.line 2717
:cond_1b
const-class v1, Ljava/util/LinkedHashSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_29
.line 2718
new-instance p0, Ljava/util/LinkedHashSet;
invoke-direct {p0}, Ljava/util/LinkedHashSet;-><init>()V
goto :goto_7d
.line 2719
:cond_29
const-class v1, Ljava/util/TreeSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_37
.line 2720
new-instance p0, Ljava/util/TreeSet;
invoke-direct {p0}, Ljava/util/TreeSet;-><init>()V
goto :goto_7d
.line 2721
:cond_37
const-class v1, Ljava/util/EnumSet;
invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v1
if-eqz v1, :cond_56
.line 2723
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_4d
.line 2724
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
const/4 v0, 0x0
aget-object p0, p0, v0
goto :goto_4f
.line 2726
:cond_4d
const-class p0, Ljava/lang/Object;
.line 2728
:goto_4f
check-cast p0, Ljava/lang/Class;
invoke-static {p0}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object p0
goto :goto_7d
.line 2731
:cond_56
:try_start_56
invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/util/Set;
:try_end_5c
.catch Ljava/lang/Exception; {:try_start_56 .. :try_end_5c} :catch_5d
goto :goto_7d
.line 2733
:catch_5d
new-instance p0, Lcom/alibaba/fastjson/JSONException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "create instance error, class "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {p0, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.line 2714
:cond_78
:goto_78
new-instance p0, Ljava/util/HashSet;
invoke-direct {p0}, Ljava/util/HashSet;-><init>()V
:goto_7d
return-object p0
.end method
.method public static decapitalize(Ljava/lang/String;)Ljava/lang/String;
.registers 4
if-eqz p0, :cond_38
.line 2525
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_9
goto :goto_38
.line 2528
: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
return-object p0
.line 2531
:cond_26
invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C
move-result-object p0
.line 2532
aget-char v0, p0, v2
invoke-static {v0}, Ljava/lang/Character;->toLowerCase(C)C
move-result v0
aput-char v0, p0, v2
.line 2533
new-instance v0, Ljava/lang/String;
invoke-direct {v0, p0}, Ljava/lang/String;-><init>([C)V
return-object v0
:cond_38
:goto_38
return-object p0
.end method
.method public static fnv1a_64(Ljava/lang/String;)J
.registers 6
const-wide v0, -0x340d631b7bdddcdbL # -7.302176725335867E57
const/4 v2, 0x0
.line 3051
:goto_6
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v3
if-ge v2, v3, :cond_1b
.line 3052
invoke-virtual {p0, v2}, Ljava/lang/String;->charAt(I)C
move-result v3
int-to-long v3, v3
xor-long/2addr v0, v3
const-wide v3, 0x100000001b3L
mul-long/2addr v0, v3
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_1b
return-wide v0
.end method
.method public static fnv1a_64_extract(Ljava/lang/String;)J
.registers 6
const-wide v0, -0x340d631b7bdddcdbL # -7.302176725335867E57
const/4 v2, 0x0
.line 3022
:goto_6
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v3
if-ge v2, v3, :cond_2f
.line 3023
invoke-virtual {p0, v2}, Ljava/lang/String;->charAt(I)C
move-result v3
const/16 v4, 0x5f
if-eq v3, v4, :cond_2c
const/16 v4, 0x2d
if-ne v3, v4, :cond_19
goto :goto_2c
:cond_19
const/16 v4, 0x41
if-lt v3, v4, :cond_24
const/16 v4, 0x5a
if-gt v3, v4, :cond_24
add-int/lit8 v3, v3, 0x20
int-to-char v3, v3
:cond_24
int-to-long v3, v3
xor-long/2addr v0, v3
const-wide v3, 0x100000001b3L
mul-long/2addr v0, v3
:cond_2c
:goto_2c
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_2f
return-wide v0
.end method
.method public static fnv1a_64_lower(Ljava/lang/String;)J
.registers 6
const-wide v0, -0x340d631b7bdddcdbL # -7.302176725335867E57
const/4 v2, 0x0
.line 3038
:goto_6
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v3
if-ge v2, v3, :cond_26
.line 3039
invoke-virtual {p0, v2}, Ljava/lang/String;->charAt(I)C
move-result v3
const/16 v4, 0x41
if-lt v3, v4, :cond_1b
const/16 v4, 0x5a
if-gt v3, v4, :cond_1b
add-int/lit8 v3, v3, 0x20
int-to-char v3, v3
:cond_1b
int-to-long v3, v3
xor-long/2addr v0, v3
const-wide v3, 0x100000001b3L
mul-long/2addr v0, v3
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_26
return-wide v0
.end method
.method private static getActualType(Ljava/lang/reflect/Type;Ljava/util/Map;)Ljava/lang/reflect/Type;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Type;",
"Ljava/util/Map<",
"Ljava/lang/reflect/TypeVariable;",
"Ljava/lang/reflect/Type;",
">;)",
"Ljava/lang/reflect/Type;"
}
.end annotation
.line 2628
instance-of v0, p0, Ljava/lang/reflect/TypeVariable;
if-eqz v0, :cond_b
.line 2629
invoke-interface {p1, p0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/lang/reflect/Type;
return-object p0
.line 2630
:cond_b
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_1e
.line 2631
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object v0
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
invoke-static {v0, p0, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->makeParameterizedType(Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/util/Map;)Ljava/lang/reflect/ParameterizedType;
move-result-object p0
return-object p0
.line 2632
:cond_1e
instance-of v0, p0, Ljava/lang/reflect/GenericArrayType;
if-eqz v0, :cond_32
.line 2633
new-instance v0, Lcom/alibaba/fastjson/util/GenericArrayTypeImpl;
check-cast p0, Ljava/lang/reflect/GenericArrayType;
invoke-interface {p0}, Ljava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type;
move-result-object p0
invoke-static {p0, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->getActualType(Ljava/lang/reflect/Type;Ljava/util/Map;)Ljava/lang/reflect/Type;
move-result-object p0
invoke-direct {v0, p0}, Lcom/alibaba/fastjson/util/GenericArrayTypeImpl;-><init>(Ljava/lang/reflect/Type;)V
return-object v0
:cond_32
return-object p0
.end method
.method public static getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"<A::",
"Ljava/lang/annotation/Annotation;",
">(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/Class<",
"TA;>;)TA;"
}
.end annotation
.line 3195
invoke-virtual {p0, p1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
.line 3198
invoke-static {p0}, Lcom/alibaba/fastjson/JSON;->getMixInAnnotations(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v1
.line 3199
instance-of v2, v1, Ljava/lang/Class;
if-eqz v2, :cond_f
.line 3200
check-cast v1, Ljava/lang/Class;
goto :goto_10
:cond_f
const/4 v1, 0x0
:goto_10
const/4 v2, 0x0
if-eqz v1, :cond_37
.line 3204
invoke-virtual {v1, p1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v3
.line 3205
invoke-virtual {v1}, Ljava/lang/Class;->getAnnotations()[Ljava/lang/annotation/Annotation;
move-result-object v1
if-nez v3, :cond_34
.line 3206
array-length v4, v1
if-lez v4, :cond_34
.line 3207
array-length v4, v1
move v5, v2
:goto_22
if-ge v5, v4, :cond_34
aget-object v3, v1, v5
.line 3208
invoke-interface {v3}, Ljava/lang/annotation/Annotation;->annotationType()Ljava/lang/Class;
move-result-object v3
invoke-virtual {v3, p1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v3
if-eqz v3, :cond_31
goto :goto_34
:cond_31
add-int/lit8 v5, v5, 0x1
goto :goto_22
:cond_34
:goto_34
if-eqz v3, :cond_37
return-object v3
.line 3219
:cond_37
invoke-virtual {p0}, Ljava/lang/Class;->getAnnotations()[Ljava/lang/annotation/Annotation;
move-result-object p0
if-nez v0, :cond_53
.line 3220
array-length v1, p0
if-lez v1, :cond_53
.line 3221
array-length v1, p0
:goto_41
if-ge v2, v1, :cond_53
aget-object v0, p0, v2
.line 3222
invoke-interface {v0}, Ljava/lang/annotation/Annotation;->annotationType()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
if-eqz v0, :cond_50
goto :goto_53
:cond_50
add-int/lit8 v2, v2, 0x1
goto :goto_41
:cond_53
:goto_53
return-object v0
.end method
.method public static getAnnotation(Ljava/lang/reflect/Field;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<A::",
"Ljava/lang/annotation/Annotation;",
">(",
"Ljava/lang/reflect/Field;",
"Ljava/lang/Class<",
"TA;>;)TA;"
}
.end annotation
.line 3232
invoke-virtual {p0, p1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
.line 3234
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getDeclaringClass()Ljava/lang/Class;
move-result-object v1
.line 3237
invoke-static {v1}, Lcom/alibaba/fastjson/JSON;->getMixInAnnotations(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v1
.line 3238
instance-of v2, v1, Ljava/lang/Class;
const/4 v3, 0x0
if-eqz v2, :cond_14
.line 3239
check-cast v1, Ljava/lang/Class;
goto :goto_15
:cond_14
move-object v1, v3
:goto_15
if-eqz v1, :cond_35
.line 3244
invoke-virtual {p0}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;
move-result-object p0
:goto_1b
if-eqz v1, :cond_2b
.line 3246
const-class v2, Ljava/lang/Object;
if-eq v1, v2, :cond_2b
.line 3249
:try_start_21
invoke-virtual {v1, p0}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v3
:try_end_25
.catch Ljava/lang/NoSuchFieldException; {:try_start_21 .. :try_end_25} :catch_26
goto :goto_2b
.line 3247
:catch_26
invoke-virtual {v1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v1
goto :goto_1b
:cond_2b
:goto_2b
if-nez v3, :cond_2e
return-object v0
.line 3258
:cond_2e
invoke-virtual {v3, p1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
if-eqz p0, :cond_35
return-object p0
:cond_35
return-object v0
.end method
.method public static getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"<A::",
"Ljava/lang/annotation/Annotation;",
">(",
"Ljava/lang/reflect/Method;",
"Ljava/lang/Class<",
"TA;>;)TA;"
}
.end annotation
.line 3267
invoke-virtual {p0, p1}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
.line 3269
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class;
move-result-object v1
.line 3272
invoke-static {v1}, Lcom/alibaba/fastjson/JSON;->getMixInAnnotations(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v1
.line 3273
instance-of v2, v1, Ljava/lang/Class;
const/4 v3, 0x0
if-eqz v2, :cond_14
.line 3274
check-cast v1, Ljava/lang/Class;
goto :goto_15
:cond_14
move-object v1, v3
:goto_15
if-eqz v1, :cond_39
.line 3279
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v2
.line 3280
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object p0
:goto_1f
if-eqz v1, :cond_2f
.line 3282
const-class v4, Ljava/lang/Object;
if-eq v1, v4, :cond_2f
.line 3285
:try_start_25
invoke-virtual {v1, v2, p0}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v3
:try_end_29
.catch Ljava/lang/NoSuchMethodException; {:try_start_25 .. :try_end_29} :catch_2a
goto :goto_2f
.line 3283
:catch_2a
invoke-virtual {v1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v1
goto :goto_1f
:cond_2f
:goto_2f
if-nez v3, :cond_32
return-object v0
.line 3294
:cond_32
invoke-virtual {v3, p1}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
if-eqz p0, :cond_39
return-object p0
:cond_39
return-object v0
.end method
.method public static getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Type;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 2457
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_b
.line 2458
check-cast p0, Ljava/lang/Class;
return-object p0
.line 2461
:cond_b
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_1a
.line 2462
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p0
return-object p0
.line 2465
:cond_1a
instance-of v0, p0, Ljava/lang/reflect/TypeVariable;
const/4 v1, 0x0
if-eqz v0, :cond_33
.line 2466
check-cast p0, Ljava/lang/reflect/TypeVariable;
invoke-interface {p0}, Ljava/lang/reflect/TypeVariable;->getBounds()[Ljava/lang/reflect/Type;
move-result-object p0
aget-object p0, p0, v1
.line 2467
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_2e
.line 2468
check-cast p0, Ljava/lang/Class;
return-object p0
.line 2470
:cond_2e
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p0
return-object p0
.line 2473
:cond_33
instance-of v0, p0, Ljava/lang/reflect/WildcardType;
if-eqz v0, :cond_48
.line 2474
check-cast p0, Ljava/lang/reflect/WildcardType;
invoke-interface {p0}, Ljava/lang/reflect/WildcardType;->getUpperBounds()[Ljava/lang/reflect/Type;
move-result-object p0
.line 2475
array-length v0, p0
const/4 v2, 0x1
if-ne v0, v2, :cond_48
.line 2476
aget-object p0, p0, v1
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p0
return-object p0
.line 2480
:cond_48
const-class p0, Ljava/lang/Object;
return-object p0
.end method
.method public static getClassFromMapping(Ljava/lang/String;)Ljava/lang/Class;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 1728
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 p0
check-cast p0, Ljava/lang/Class;
return-object p0
.end method
.method public static getCollectionItemClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Type;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 2648
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_3d
.line 2650
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
const/4 v0, 0x0
aget-object p0, p0, v0
.line 2651
instance-of v1, p0, Ljava/lang/reflect/WildcardType;
if-eqz v1, :cond_1e
.line 2652
move-object v1, p0
check-cast v1, Ljava/lang/reflect/WildcardType;
.line 2653
invoke-interface {v1}, Ljava/lang/reflect/WildcardType;->getUpperBounds()[Ljava/lang/reflect/Type;
move-result-object v1
.line 2654
array-length v2, v1
const/4 v3, 0x1
if-ne v2, v3, :cond_1e
.line 2655
aget-object p0, v1, v0
.line 2658
:cond_1e
instance-of v0, p0, Ljava/lang/Class;
const-string v1, "can not create ASMParser"
if-eqz v0, :cond_37
.line 2659
check-cast p0, Ljava/lang/Class;
.line 2660
invoke-virtual {p0}, Ljava/lang/Class;->getModifiers()I
move-result v0
invoke-static {v0}, Ljava/lang/reflect/Modifier;->isPublic(I)Z
move-result v0
if-eqz v0, :cond_31
return-object p0
.line 2661
:cond_31
new-instance p0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {p0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.line 2664
:cond_37
new-instance p0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {p0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.line 2668
:cond_3d
const-class p0, Ljava/lang/Object;
return-object p0
.end method
.method private static getCollectionItemType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)",
"Ljava/lang/reflect/Type;"
}
.end annotation
.line 2571
invoke-virtual {p0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
const-string v1, "java."
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_f
const-class p0, Ljava/lang/Object;
goto :goto_17
.line 2573
:cond_f
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionSuperType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionItemType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object p0
:goto_17
return-object p0
.end method
.method private static getCollectionItemType(Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;
.registers 4
.line 2577
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object v0
.line 2578
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
.line 2579
const-class v1, Ljava/util/Collection;
if-ne v0, v1, :cond_14
const/4 v0, 0x0
.line 2580
aget-object p0, p0, v0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getWildcardTypeUpperBounds(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object p0
return-object p0
.line 2582
:cond_14
check-cast v0, Ljava/lang/Class;
.line 2583
invoke-virtual {v0}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable;
move-result-object v1
invoke-static {v1, p0}, Lcom/alibaba/fastjson/util/TypeUtils;->createActualTypeMap([Ljava/lang/reflect/TypeVariable;[Ljava/lang/reflect/Type;)Ljava/util/Map;
move-result-object p0
.line 2584
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionSuperType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
move-result-object v0
.line 2585
instance-of v1, v0, Ljava/lang/reflect/ParameterizedType;
if-eqz v1, :cond_41
.line 2586
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object v1
.line 2587
check-cast v0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object v0
.line 2588
array-length v2, v0
if-lez v2, :cond_3c
.line 2589
invoke-static {v1, v0, p0}, Lcom/alibaba/fastjson/util/TypeUtils;->makeParameterizedType(Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/util/Map;)Ljava/lang/reflect/ParameterizedType;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionItemType(Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;
move-result-object p0
goto :goto_40
.line 2590
:cond_3c
invoke-static {v1}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionItemType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
move-result-object p0
:goto_40
return-object p0
.line 2592
:cond_41
check-cast v0, Ljava/lang/Class;
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionItemType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
move-result-object p0
return-object p0
.end method
.method public static getCollectionItemType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
.registers 2
.line 2561
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_b
.line 2562
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionItemType(Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;
move-result-object p0
return-object p0
.line 2564
:cond_b
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_16
.line 2565
check-cast p0, Ljava/lang/Class;
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getCollectionItemType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
move-result-object p0
return-object p0
.line 2567
:cond_16
const-class p0, Ljava/lang/Object;
return-object p0
.end method
.method private static getCollectionSuperType(Ljava/lang/Class;)Ljava/lang/reflect/Type;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)",
"Ljava/lang/reflect/Type;"
}
.end annotation
.line 2597
invoke-virtual {p0}, Ljava/lang/Class;->getGenericInterfaces()[Ljava/lang/reflect/Type;
move-result-object v0
array-length v1, v0
const/4 v2, 0x0
const/4 v3, 0x0
:goto_7
if-ge v3, v1, :cond_20
aget-object v4, v0, v3
.line 2598
invoke-static {v4}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object v5
.line 2599
const-class v6, Ljava/util/Collection;
if-ne v5, v6, :cond_14
return-object v4
.line 2602
:cond_14
const-class v6, Ljava/util/Collection;
invoke-virtual {v6, v5}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result v5
if-eqz v5, :cond_1d
move-object v2, v4
:cond_1d
add-int/lit8 v3, v3, 0x1
goto :goto_7
:cond_20
if-nez v2, :cond_26
.line 2606
invoke-virtual {p0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
move-result-object v2
:cond_26
return-object v2
.end method
.method public static getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/String;",
"[",
"Ljava/lang/reflect/Field;",
")",
"Ljava/lang/reflect/Field;"
}
.end annotation
.line 2484
array-length v0, p2
const/4 v1, 0x0
move v2, v1
:goto_3
if-ge v2, v0, :cond_3c
aget-object v3, p2, v2
.line 2485
invoke-virtual {v3}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;
move-result-object v4
.line 2486
invoke-virtual {p1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_12
return-object v3
.line 2491
:cond_12
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v5
const/4 v6, 0x2
if-le v5, v6, :cond_39
.line 2492
invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
move-result v5
const/16 v6, 0x61
if-lt v5, v6, :cond_39
const/16 v6, 0x7a
if-gt v5, v6, :cond_39
const/4 v5, 0x1
.line 2493
invoke-virtual {p1, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
const/16 v6, 0x41
if-lt v5, v6, :cond_39
const/16 v6, 0x5a
if-gt v5, v6, :cond_39
.line 2494
invoke-virtual {p1, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v4
if-eqz v4, :cond_39
return-object v3
:cond_39
add-int/lit8 v2, v2, 0x1
goto :goto_3
.line 2498
:cond_3c
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object p0
if-eqz p0, :cond_4f
.line 2499
const-class p2, Ljava/lang/Object;
if-eq p0, p2, :cond_4f
.line 2500
invoke-virtual {p0}, Ljava/lang/Class;->getDeclaredFields()[Ljava/lang/reflect/Field;
move-result-object p2
invoke-static {p0, p1, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->getField(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/reflect/Field;)Ljava/lang/reflect/Field;
move-result-object p0
return-object p0
:cond_4f
const/4 p0, 0x0
return-object p0
.end method
.method private static getFieldInfos(Ljava/lang/Class;ZLjava/util/Map;)Ljava/util/List;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;Z",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;)",
"Ljava/util/List<",
"Lcom/alibaba/fastjson/util/FieldInfo;",
">;"
}
.end annotation
.line 2240
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 2242
const-class v1, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {p0, v1}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
check-cast p0, Lcom/alibaba/fastjson/annotation/JSONType;
if-eqz p0, :cond_14
.line 2244
invoke-interface {p0}, Lcom/alibaba/fastjson/annotation/JSONType;->orders()[Ljava/lang/String;
move-result-object p0
goto :goto_15
:cond_14
const/4 p0, 0x0
:goto_15
if-eqz p0, :cond_5c
.line 2246
array-length v1, p0
if-lez v1, :cond_5c
.line 2247
new-instance p1, Ljava/util/LinkedHashMap;
invoke-interface {p2}, Ljava/util/Map;->size()I
move-result v1
invoke-direct {p1, v1}, Ljava/util/LinkedHashMap;-><init>(I)V
.line 2248
invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object p2
invoke-interface {p2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object p2
:goto_2b
invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_3d
invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/alibaba/fastjson/util/FieldInfo;
.line 2249
iget-object v2, v1, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String;
invoke-virtual {p1, v2, v1}, Ljava/util/LinkedHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_2b
.line 2251
:cond_3d
array-length p2, p0
const/4 v1, 0x0
:goto_3f
if-ge v1, p2, :cond_54
aget-object v2, p0, v1
.line 2252
invoke-virtual {p1, v2}, Ljava/util/LinkedHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/alibaba/fastjson/util/FieldInfo;
if-eqz v3, :cond_51
.line 2254
invoke-interface {v0, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 2255
invoke-virtual {p1, v2}, Ljava/util/LinkedHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
:cond_51
add-int/lit8 v1, v1, 0x1
goto :goto_3f
.line 2258
:cond_54
invoke-virtual {p1}, Ljava/util/LinkedHashMap;->values()Ljava/util/Collection;
move-result-object p0
invoke-interface {v0, p0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
goto :goto_68
.line 2260
:cond_5c
invoke-interface {p2}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object p0
invoke-interface {v0, p0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
if-eqz p1, :cond_68
.line 2262
invoke-static {v0}, Ljava/util/Collections;->sort(Ljava/util/List;)V
:cond_68
:goto_68
return-object v0
.end method
.method public static getGenericParamType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
.registers 2
.line 2428
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_5
return-object p0
.line 2431
:cond_5
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_13
.line 2432
check-cast p0, Ljava/lang/Class;
invoke-virtual {p0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getGenericParamType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object p0
:cond_13
return-object p0
.end method
.method public static getKoltinConstructorParameters(Ljava/lang/Class;)[Ljava/lang/String;
.registers 9
.line 3094
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_constructor:Ljava/lang/reflect/Constructor;
const-string v1, "kotlin.reflect.jvm.internal.KClassImpl"
const/4 v2, 0x1
const/4 v3, 0x0
if-nez v0, :cond_1f
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
if-nez v0, :cond_1f
.line 3096
:try_start_c
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
new-array v4, v2, [Ljava/lang/Class;
.line 3097
const-class v5, Ljava/lang/Class;
aput-object v5, v4, v3
invoke-virtual {v0, v4}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_constructor:Ljava/lang/reflect/Constructor;
:try_end_1c
.catchall {:try_start_c .. :try_end_1c} :catchall_1d
goto :goto_1f
.line 3099
:catchall_1d
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
.line 3102
:cond_1f
:goto_1f
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_constructor:Ljava/lang/reflect/Constructor;
const/4 v4, 0x0
if-nez v0, :cond_25
return-object v4
.line 3106
:cond_25
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_getConstructors:Ljava/lang/reflect/Method;
if-nez v0, :cond_3e
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
if-nez v0, :cond_3e
.line 3108
:try_start_2d
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
const-string v1, "getConstructors"
new-array v5, v3, [Ljava/lang/Class;
.line 3109
invoke-virtual {v0, v1, v5}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_getConstructors:Ljava/lang/reflect/Method;
:try_end_3b
.catchall {:try_start_2d .. :try_end_3b} :catchall_3c
goto :goto_3e
.line 3111
:catchall_3c
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
.line 3115
:cond_3e
:goto_3e
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kfunction_getParameters:Ljava/lang/reflect/Method;
if-nez v0, :cond_59
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
if-nez v0, :cond_59
:try_start_46
const-string v0, "kotlin.reflect.KFunction"
.line 3117
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
const-string v1, "getParameters"
new-array v5, v3, [Ljava/lang/Class;
.line 3118
invoke-virtual {v0, v1, v5}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kfunction_getParameters:Ljava/lang/reflect/Method;
:try_end_56
.catchall {:try_start_46 .. :try_end_56} :catchall_57
goto :goto_59
.line 3120
:catchall_57
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
.line 3124
:cond_59
:goto_59
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kparameter_getName:Ljava/lang/reflect/Method;
if-nez v0, :cond_74
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
if-nez v0, :cond_74
:try_start_61
const-string v0, "kotlin.reflect.KParameter"
.line 3126
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
const-string v1, "getName"
new-array v5, v3, [Ljava/lang/Class;
.line 3127
invoke-virtual {v0, v1, v5}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kparameter_getName:Ljava/lang/reflect/Method;
:try_end_71
.catchall {:try_start_61 .. :try_end_71} :catchall_72
goto :goto_74
.line 3129
:catchall_72
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_class_klass_error:Z
.line 3133
:cond_74
:goto_74
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_error:Z
if-eqz v0, :cond_79
return-object v4
.line 3139
:cond_79
:try_start_79
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_constructor:Ljava/lang/reflect/Constructor;
new-array v1, v2, [Ljava/lang/Object;
aput-object p0, v1, v3
invoke-virtual {v0, v1}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
.line 3140
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kclass_getConstructors:Ljava/lang/reflect/Method;
new-array v1, v3, [Ljava/lang/Object;
invoke-virtual {v0, p0, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/lang/Iterable;
.line 3141
invoke-interface {p0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object p0
move-object v0, v4
:goto_92
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_b4
.line 3142
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
.line 3143
sget-object v5, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kfunction_getParameters:Ljava/lang/reflect/Method;
new-array v6, v3, [Ljava/lang/Object;
invoke-virtual {v5, v1, v6}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/util/List;
if-eqz v0, :cond_af
.line 3144
invoke-interface {v5}, Ljava/util/List;->size()I
move-result v5
if-nez v5, :cond_af
goto :goto_b0
:cond_af
move-object v0, v1
.line 3141
:goto_b0
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
goto :goto_92
:cond_b4
if-nez v0, :cond_b7
return-object v4
.line 3154
:cond_b7
sget-object p0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kfunction_getParameters:Ljava/lang/reflect/Method;
new-array v1, v3, [Ljava/lang/Object;
invoke-virtual {p0, v0, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/util/List;
.line 3155
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v0
new-array v0, v0, [Ljava/lang/String;
move v1, v3
.line 3156
:goto_c8
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v5
if-ge v1, v5, :cond_e1
.line 3157
invoke-interface {p0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
.line 3158
sget-object v6, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_kparameter_getName:Ljava/lang/reflect/Method;
new-array v7, v3, [Ljava/lang/Object;
invoke-virtual {v6, v5, v7}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/lang/String;
aput-object v5, v0, v1
:try_end_de
.catchall {:try_start_79 .. :try_end_de} :catchall_e2
add-int/lit8 v1, v1, 0x1
goto :goto_c8
:cond_e1
return-object v0
:catchall_e2
move-exception p0
.line 3162
invoke-virtual {p0}, Ljava/lang/Throwable;->printStackTrace()V
.line 3163
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_error:Z
return-object v4
.end method
.method public static getKotlinConstructor([Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
.registers 2
const/4 v0, 0x0
.line 3071
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getKotlinConstructor([Ljava/lang/reflect/Constructor;[Ljava/lang/String;)Ljava/lang/reflect/Constructor;
move-result-object p0
return-object p0
.end method
.method public static getKotlinConstructor([Ljava/lang/reflect/Constructor;[Ljava/lang/String;)Ljava/lang/reflect/Constructor;
.registers 9
.line 3076
array-length v0, p0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_3
if-ge v2, v0, :cond_36
aget-object v3, p0, v2
.line 3077
invoke-virtual {v3}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;
move-result-object v4
if-eqz p1, :cond_12
.line 3078
array-length v5, v4
array-length v6, p1
if-eq v5, v6, :cond_12
goto :goto_33
.line 3082
:cond_12
array-length v5, v4
if-lez v5, :cond_27
array-length v5, v4
add-int/lit8 v5, v5, -0x1
aget-object v5, v4, v5
invoke-virtual {v5}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v5
const-string v6, "kotlin.jvm.internal.DefaultConstructorMarker"
invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_27
goto :goto_33
:cond_27
if-eqz v1, :cond_32
.line 3085
invoke-virtual {v1}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;
move-result-object v5
array-length v5, v5
array-length v4, v4
if-lt v5, v4, :cond_32
goto :goto_33
:cond_32
move-object v1, v3
:goto_33
add-int/lit8 v2, v2, 0x1
goto :goto_3
:cond_36
return-object v1
.end method
.method public static getParameterAnnotations(Ljava/lang/reflect/Constructor;)[[Ljava/lang/annotation/Annotation;
.registers 11
.line 3339
invoke-virtual {p0}, Ljava/lang/reflect/Constructor;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
move-result-object v0
.line 3341
invoke-virtual {p0}, Ljava/lang/reflect/Constructor;->getDeclaringClass()Ljava/lang/Class;
move-result-object v1
.line 3344
invoke-static {v1}, Lcom/alibaba/fastjson/JSON;->getMixInAnnotations(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v1
.line 3345
instance-of v2, v1, Ljava/lang/Class;
const/4 v3, 0x0
if-eqz v2, :cond_14
.line 3346
check-cast v1, Ljava/lang/Class;
goto :goto_15
:cond_14
move-object v1, v3
:goto_15
if-eqz v1, :cond_71
.line 3351
invoke-virtual {p0}, Ljava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;
move-result-object p0
.line 3353
new-instance v2, Ljava/util/ArrayList;
const/4 v4, 0x2
invoke-direct {v2, v4}, Ljava/util/ArrayList;-><init>(I)V
.line 3354
invoke-virtual {v1}, Ljava/lang/Class;->getEnclosingClass()Ljava/lang/Class;
move-result-object v4
:goto_25
if-eqz v4, :cond_2f
.line 3355
invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 3354
invoke-virtual {v4}, Ljava/lang/Class;->getEnclosingClass()Ljava/lang/Class;
move-result-object v4
goto :goto_25
.line 3357
:cond_2f
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v4
move-object v5, v1
:goto_34
if-eqz v5, :cond_67
.line 3359
const-class v6, Ljava/lang/Object;
if-eq v5, v6, :cond_67
if-eqz v4, :cond_5a
.line 3363
:try_start_3c
array-length v6, p0
add-int/2addr v6, v4
new-array v6, v6, [Ljava/lang/Class;
const/4 v7, 0x0
.line 3364
array-length v8, p0
invoke-static {p0, v7, v6, v4, v8}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
move v7, v4
:goto_46
if-lez v7, :cond_55
add-int/lit8 v8, v7, -0x1
.line 3366
invoke-interface {v2, v8}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v9
check-cast v9, Ljava/lang/Class;
aput-object v9, v6, v8
add-int/lit8 v7, v7, -0x1
goto :goto_46
.line 3368
:cond_55
invoke-virtual {v1, v6}, Ljava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object p0
goto :goto_5e
.line 3370
:cond_5a
invoke-virtual {v1, p0}, Ljava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object p0
:try_end_5e
.catch Ljava/lang/NoSuchMethodException; {:try_start_3c .. :try_end_5e} :catch_60
:goto_5e
move-object v3, p0
goto :goto_67
:catch_60
add-int/lit8 v4, v4, -0x1
.line 3360
invoke-virtual {v5}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v5
goto :goto_34
:cond_67
:goto_67
if-nez v3, :cond_6a
return-object v0
.line 3380
:cond_6a
invoke-virtual {v3}, Ljava/lang/reflect/Constructor;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
move-result-object p0
if-eqz p0, :cond_71
return-object p0
:cond_71
return-object v0
.end method
.method public static getParameterAnnotations(Ljava/lang/reflect/Method;)[[Ljava/lang/annotation/Annotation;
.registers 6
.line 3303
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
move-result-object v0
.line 3305
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class;
move-result-object v1
.line 3308
invoke-static {v1}, Lcom/alibaba/fastjson/JSON;->getMixInAnnotations(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
move-result-object v1
.line 3309
instance-of v2, v1, Ljava/lang/Class;
const/4 v3, 0x0
if-eqz v2, :cond_14
.line 3310
check-cast v1, Ljava/lang/Class;
goto :goto_15
:cond_14
move-object v1, v3
:goto_15
if-eqz v1, :cond_39
.line 3315
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v2
.line 3316
invoke-virtual {p0}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object p0
:goto_1f
if-eqz v1, :cond_2f
.line 3318
const-class v4, Ljava/lang/Object;
if-eq v1, v4, :cond_2f
.line 3321
:try_start_25
invoke-virtual {v1, v2, p0}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v3
:try_end_29
.catch Ljava/lang/NoSuchMethodException; {:try_start_25 .. :try_end_29} :catch_2a
goto :goto_2f
.line 3319
:catch_2a
invoke-virtual {v1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v1
goto :goto_1f
:cond_2f
:goto_2f
if-nez v3, :cond_32
return-object v0
.line 3330
:cond_32
invoke-virtual {v3}, Ljava/lang/reflect/Method;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
move-result-object p0
if-eqz p0, :cond_39
return-object p0
:cond_39
return-object v0
.end method
.method public static getParserFeatures(Ljava/lang/Class;)I
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)I"
}
.end annotation
.line 2517
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
check-cast p0, Lcom/alibaba/fastjson/annotation/JSONType;
if-nez p0, :cond_c
const/4 p0, 0x0
return p0
.line 2521
:cond_c
invoke-interface {p0}, Lcom/alibaba/fastjson/annotation/JSONType;->parseFeatures()[Lcom/alibaba/fastjson/parser/Feature;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/parser/Feature;->of([Lcom/alibaba/fastjson/parser/Feature;)I
move-result p0
return p0
.end method
.method private static getPropertyNameByCompatibleFieldName(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/reflect/Field;",
">;",
"Ljava/lang/String;",
"Ljava/lang/String;",
"I)",
"Ljava/lang/String;"
}
.end annotation
.line 2315
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->compatibleWithFieldName:Z
if-eqz v0, :cond_15
.line 2316
invoke-interface {p0, p2}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_15
.line 2317
invoke-virtual {p1, p3}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object p1
.line 2318
invoke-interface {p0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_15
move-object p2, p1
:cond_15
return-object p2
.end method
.method public static getPropertyNameByMethodName(Ljava/lang/String;)Ljava/lang/String;
.registers 3
.line 2543
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const/4 v1, 0x3
invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
invoke-static {v1}, Ljava/lang/Character;->toLowerCase(C)C
move-result v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
const/4 v1, 0x4
invoke-virtual {p0, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object p0
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
return-object p0
.end method
.method public static getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/reflect/Type;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.line 2776
instance-of v0, p0, Ljava/lang/Class;
if-eqz v0, :cond_7
.line 2777
check-cast p0, Ljava/lang/Class;
return-object p0
.line 2778
:cond_7
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_16
.line 2779
check-cast p0, Ljava/lang/reflect/ParameterizedType;
invoke-interface {p0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p0
return-object p0
.line 2780
:cond_16
instance-of v0, p0, Ljava/lang/reflect/WildcardType;
const-string v1, "TODO"
if-eqz v0, :cond_34
.line 2781
check-cast p0, Ljava/lang/reflect/WildcardType;
.line 2782
invoke-interface {p0}, Ljava/lang/reflect/WildcardType;->getUpperBounds()[Ljava/lang/reflect/Type;
move-result-object p0
.line 2783
array-length v0, p0
const/4 v2, 0x1
if-ne v0, v2, :cond_2e
const/4 v0, 0x0
.line 2784
aget-object p0, p0, v0
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getRawClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p0
return-object p0
.line 2786
:cond_2e
new-instance p0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {p0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.line 2789
:cond_34
new-instance p0, Lcom/alibaba/fastjson/JSONException;
invoke-direct {p0, v1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method public static getSerializeFeatures(Ljava/lang/Class;)I
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)I"
}
.end annotation
.line 2509
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
check-cast p0, Lcom/alibaba/fastjson/annotation/JSONType;
if-nez p0, :cond_c
const/4 p0, 0x0
return p0
.line 2513
:cond_c
invoke-interface {p0}, Lcom/alibaba/fastjson/annotation/JSONType;->serialzeFeatures()[Lcom/alibaba/fastjson/serializer/SerializerFeature;
move-result-object p0
invoke-static {p0}, Lcom/alibaba/fastjson/serializer/SerializerFeature;->of([Lcom/alibaba/fastjson/serializer/SerializerFeature;)I
move-result p0
return p0
.end method
.method public static getSuperMethodAnnotation(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lcom/alibaba/fastjson/annotation/JSONField;
.registers 16
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/reflect/Method;",
")",
"Lcom/alibaba/fastjson/annotation/JSONField;"
}
.end annotation
.line 2325
invoke-virtual {p0}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;
move-result-object v0
.line 2326
array-length v1, v0
const/4 v2, 0x1
const/4 v3, 0x0
if-lez v1, :cond_5d
.line 2327
invoke-virtual {p1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v1
.line 2328
array-length v4, v0
move v5, v3
:goto_f
if-ge v5, v4, :cond_5d
aget-object v6, v0, v5
.line 2329
invoke-virtual {v6}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;
move-result-object v6
array-length v7, v6
move v8, v3
:goto_19
if-ge v8, v7, :cond_5a
aget-object v9, v6, v8
.line 2330
invoke-virtual {v9}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v10
.line 2331
array-length v11, v10
array-length v12, v1
if-eq v11, v12, :cond_26
goto :goto_57
.line 2334
:cond_26
invoke-virtual {v9}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v11
invoke-virtual {p1}, Ljava/lang/reflect/Method;->getName()Ljava/lang/String;
move-result-object v12
invoke-virtual {v11, v12}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v11
if-nez v11, :cond_35
goto :goto_57
:cond_35
move v11, v3
.line 2338
:goto_36
array-length v12, v1
if-ge v11, v12, :cond_48
.line 2339
aget-object v12, v10, v11
aget-object v13, v1, v11
invoke-virtual {v12, v13}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v12
if-nez v12, :cond_45
move v10, v3
goto :goto_49
:cond_45
add-int/lit8 v11, v11, 0x1
goto :goto_36
:cond_48
move v10, v2
:goto_49
if-nez v10, :cond_4c
goto :goto_57
.line 2347
:cond_4c
const-class v10, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v9, v10}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v9
check-cast v9, Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v9, :cond_57
return-object v9
:cond_57
:goto_57
add-int/lit8 v8, v8, 0x1
goto :goto_19
:cond_5a
add-int/lit8 v5, v5, 0x1
goto :goto_f
.line 2354
:cond_5d
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object p0
const/4 v0, 0x0
if-nez p0, :cond_65
return-object v0
.line 2358
:cond_65
invoke-virtual {p0}, Ljava/lang/Class;->getModifiers()I
move-result v1
invoke-static {v1}, Ljava/lang/reflect/Modifier;->isAbstract(I)Z
move-result v1
if-eqz v1, :cond_ba
.line 2359
invoke-virtual {p1}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v1
.line 2360
invoke-virtual {p0}, Ljava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;
move-result-object p0
array-length v4, p0
move v5, v3
:goto_79
if-ge v5, v4, :cond_ba
aget-object v6, p0, v5
.line 2361
invoke-virtual {v6}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
move-result-object v7
.line 2362
array-length v8, v7
array-length v9, v1
if-eq v8, v9, :cond_86
goto :goto_b7
.line 2365
:cond_86
invoke-virtual {v6}, 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_95
goto :goto_b7
:cond_95
move v8, v3
.line 2369
:goto_96
array-length v9, v1
if-ge v8, v9, :cond_a8
.line 2370
aget-object v9, v7, v8
aget-object v10, v1, v8
invoke-virtual {v9, v10}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v9
if-nez v9, :cond_a5
move v7, v3
goto :goto_a9
:cond_a5
add-int/lit8 v8, v8, 0x1
goto :goto_96
:cond_a8
move v7, v2
:goto_a9
if-nez v7, :cond_ac
goto :goto_b7
.line 2378
:cond_ac
const-class v7, Lcom/alibaba/fastjson/annotation/JSONField;
invoke-static {v6, v7}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v6
check-cast v6, Lcom/alibaba/fastjson/annotation/JSONField;
if-eqz v6, :cond_b7
return-object v6
:cond_b7
:goto_b7
add-int/lit8 v5, v5, 0x1
goto :goto_79
:cond_ba
return-object v0
.end method
.method private static getWildcardTypeUpperBounds(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
.registers 2
.line 2639
instance-of v0, p0, Ljava/lang/reflect/WildcardType;
if-eqz v0, :cond_13
.line 2640
check-cast p0, Ljava/lang/reflect/WildcardType;
.line 2641
invoke-interface {p0}, Ljava/lang/reflect/WildcardType;->getUpperBounds()[Ljava/lang/reflect/Type;
move-result-object p0
.line 2642
array-length v0, p0
if-lez v0, :cond_11
const/4 v0, 0x0
aget-object p0, p0, v0
goto :goto_13
:cond_11
const-class p0, Ljava/lang/Object;
:cond_13
:goto_13
return-object p0
.end method
.method public static getXmlAccessorType(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
.registers 2
.line 176
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
if-nez v0, :cond_14
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
if-nez v0, :cond_14
:try_start_8
const-string v0, "javax.xml.bind.annotation.XmlAccessorType"
.line 179
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
:try_end_10
.catchall {:try_start_8 .. :try_end_10} :catchall_11
goto :goto_14
:catchall_11
const/4 v0, 0x1
.line 181
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
.line 185
:cond_14
:goto_14
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
if-nez v0, :cond_1a
const/4 p0, 0x0
return-object p0
.line 189
:cond_1a
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
return-object p0
.end method
.method public static intValue(Ljava/math/BigDecimal;)I
.registers 3
if-nez p0, :cond_4
const/4 p0, 0x0
return p0
.line 942
:cond_4
invoke-virtual {p0}, Ljava/math/BigDecimal;->scale()I
move-result v0
const/16 v1, -0x64
if-lt v0, v1, :cond_15
const/16 v1, 0x64
if-gt v0, v1, :cond_15
.line 944
invoke-virtual {p0}, Ljava/math/BigDecimal;->intValue()I
move-result p0
return p0
.line 947
:cond_15
invoke-virtual {p0}, Ljava/math/BigDecimal;->intValueExact()I
move-result p0
return p0
.end method
.method public static isAnnotationPresentManyToMany(Ljava/lang/reflect/Method;)Z
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 2855
:cond_4
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany:Ljava/lang/Class;
const/4 v2, 0x1
if-nez v1, :cond_18
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany_error:Z
if-nez v1, :cond_18
:try_start_d
const-string v1, "javax.persistence.ManyToMany"
.line 2857
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany:Ljava/lang/Class;
:try_end_15
.catchall {:try_start_d .. :try_end_15} :catchall_16
goto :goto_18
.line 2860
:catchall_16
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany_error:Z
.line 2863
:cond_18
:goto_18
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany:Ljava/lang/Class;
if-eqz v1, :cond_2d
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany:Ljava/lang/Class;
invoke-virtual {p0, v1}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z
move-result v1
if-nez v1, :cond_2c
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_ManyToMany:Ljava/lang/Class;
invoke-virtual {p0, v1}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_2d
:cond_2c
move v0, v2
:cond_2d
return v0
.end method
.method public static isAnnotationPresentOneToMany(Ljava/lang/reflect/Method;)Z
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 2838
:cond_4
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany:Ljava/lang/Class;
const/4 v2, 0x1
if-nez v1, :cond_18
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany_error:Z
if-nez v1, :cond_18
:try_start_d
const-string v1, "javax.persistence.OneToMany"
.line 2840
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany:Ljava/lang/Class;
:try_end_15
.catchall {:try_start_d .. :try_end_15} :catchall_16
goto :goto_18
.line 2843
:catchall_16
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany_error:Z
.line 2846
:cond_18
:goto_18
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_OneToMany:Ljava/lang/Class;
if-eqz v1, :cond_23
invoke-virtual {p0, v1}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_23
move v0, v2
:cond_23
return v0
.end method
.method public static isClob(Ljava/lang/Class;)Z
.registers 2
.line 217
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->isClobFunction:Lcom/alibaba/fastjson/util/Function;
invoke-static {v0, p0}, Lcom/alibaba/fastjson/util/ModuleUtil;->callWhenHasJavaSql(Lcom/alibaba/fastjson/util/Function;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/lang/Boolean;
if-eqz p0, :cond_f
.line 219
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
goto :goto_10
:cond_f
const/4 p0, 0x0
:goto_10
return p0
.end method
.method public static isGenericParamType(Ljava/lang/reflect/Type;)Z
.registers 4
.line 2417
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
const/4 v1, 0x1
if-eqz v0, :cond_6
return v1
.line 2420
:cond_6
instance-of v0, p0, Ljava/lang/Class;
const/4 v2, 0x0
if-eqz v0, :cond_1e
.line 2421
check-cast p0, Ljava/lang/Class;
invoke-virtual {p0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
move-result-object p0
.line 2422
const-class v0, Ljava/lang/Object;
if-eq p0, v0, :cond_1c
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->isGenericParamType(Ljava/lang/reflect/Type;)Z
move-result p0
if-eqz p0, :cond_1c
goto :goto_1d
:cond_1c
move v1, v2
:goto_1d
return v1
:cond_1e
return v2
.end method
.method public static isHibernateInitialized(Ljava/lang/Object;)Z
.registers 7
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 2871
:cond_4
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized:Ljava/lang/reflect/Method;
const/4 v2, 0x1
if-nez v1, :cond_24
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized_error:Z
if-nez v1, :cond_24
:try_start_d
const-string v1, "org.hibernate.Hibernate"
.line 2873
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
const-string v3, "isInitialized"
new-array v4, v2, [Ljava/lang/Class;
.line 2874
const-class v5, Ljava/lang/Object;
aput-object v5, v4, v0
invoke-virtual {v1, v3, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized:Ljava/lang/reflect/Method;
:try_end_21
.catchall {:try_start_d .. :try_end_21} :catchall_22
goto :goto_24
.line 2877
:catchall_22
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized_error:Z
.line 2880
:cond_24
:goto_24
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->method_HibernateIsInitialized:Ljava/lang/reflect/Method;
if-eqz v1, :cond_38
const/4 v3, 0x0
:try_start_29
new-array v4, v2, [Ljava/lang/Object;
aput-object p0, v4, v0
.line 2882
invoke-virtual {v1, v3, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Ljava/lang/Boolean;
.line 2883
invoke-virtual {p0}, Ljava/lang/Boolean;->booleanValue()Z
move-result p0
:try_end_37
.catchall {:try_start_29 .. :try_end_37} :catchall_38
return p0
:catchall_38
:cond_38
return v2
.end method
.method private static isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;",
"Ljava/lang/String;",
")Z"
}
.end annotation
.line 2388
const-class v0, Lcom/alibaba/fastjson/annotation/JSONType;
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object v0
check-cast v0, Lcom/alibaba/fastjson/annotation/JSONType;
const/4 v1, 0x0
if-eqz v0, :cond_38
.line 2393
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->includes()[Ljava/lang/String;
move-result-object v2
.line 2394
array-length v3, v2
const/4 v4, 0x1
if-lez v3, :cond_24
.line 2395
array-length p0, v2
move v0, v1
:goto_15
if-ge v0, p0, :cond_23
aget-object v3, v2, v0
.line 2396
invoke-virtual {p1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_20
return v1
:cond_20
add-int/lit8 v0, v0, 0x1
goto :goto_15
:cond_23
return v4
.line 2402
:cond_24
invoke-interface {v0}, Lcom/alibaba/fastjson/annotation/JSONType;->ignores()[Ljava/lang/String;
move-result-object v0
.line 2403
array-length v2, v0
move v3, v1
:goto_2a
if-ge v3, v2, :cond_38
aget-object v5, v0, v3
.line 2404
invoke-virtual {p1, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_35
return v4
:cond_35
add-int/lit8 v3, v3, 0x1
goto :goto_2a
.line 2410
:cond_38
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v0
const-class v2, Ljava/lang/Object;
if-eq v0, v2, :cond_4f
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object v0
if-eqz v0, :cond_4f
.line 2411
invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object p0
invoke-static {p0, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->isJSONTypeIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
move-result p0
return p0
:cond_4f
return v1
.end method
.method public static isJacksonCreator(Ljava/lang/reflect/Method;)Z
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 3393
:cond_4
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator:Ljava/lang/Class;
const/4 v2, 0x1
if-nez v1, :cond_18
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator_error:Z
if-nez v1, :cond_18
:try_start_d
const-string v1, "com.fasterxml.jackson.annotation.JsonCreator"
.line 3395
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator:Ljava/lang/Class;
:try_end_15
.catchall {:try_start_d .. :try_end_15} :catchall_16
goto :goto_18
.line 3398
:catchall_16
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator_error:Z
.line 3401
:cond_18
:goto_18
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->class_JacksonCreator:Ljava/lang/Class;
if-eqz v1, :cond_23
invoke-virtual {p0, v1}, Ljava/lang/reflect/Method;->isAnnotationPresent(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_23
move v0, v2
:cond_23
return v0
.end method
.method public static isKotlin(Ljava/lang/Class;)Z
.registers 3
.line 3060
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_metadata:Ljava/lang/Class;
const/4 v1, 0x1
if-nez v0, :cond_14
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_metadata_error:Z
if-nez v0, :cond_14
:try_start_9
const-string v0, "kotlin.Metadata"
.line 3062
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_metadata:Ljava/lang/Class;
:try_end_11
.catchall {:try_start_9 .. :try_end_11} :catchall_12
goto :goto_14
.line 3064
:catchall_12
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_metadata_error:Z
.line 3067
:cond_14
:goto_14
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_metadata:Ljava/lang/Class;
if-eqz v0, :cond_21
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlin_metadata:Ljava/lang/Class;
invoke-virtual {p0, v0}, Ljava/lang/Class;->isAnnotationPresent(Ljava/lang/Class;)Z
move-result p0
if-eqz p0, :cond_21
goto :goto_22
:cond_21
const/4 v1, 0x0
:goto_22
return v1
.end method
.method private static isKotlinIgnore(Ljava/lang/Class;Ljava/lang/String;)Z
.registers 8
const-string v0, "isEmpty"
const-string v1, "getEndInclusive"
.line 3169
sget-object v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlinIgnores:Ljava/util/Map;
const/4 v3, 0x1
if-nez v2, :cond_58
sget-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlinIgnores_error:Z
if-nez v2, :cond_58
.line 3171
:try_start_d
new-instance v2, Ljava/util/HashMap;
invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
const-string v4, "kotlin.ranges.CharRange"
.line 3172
invoke-static {v4}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v4
.line 3173
filled-new-array {v1, v0}, [Ljava/lang/String;
move-result-object v5
invoke-interface {v2, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const-string v4, "kotlin.ranges.IntRange"
.line 3174
invoke-static {v4}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v4
.line 3175
filled-new-array {v1, v0}, [Ljava/lang/String;
move-result-object v5
invoke-interface {v2, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const-string v4, "kotlin.ranges.LongRange"
.line 3176
invoke-static {v4}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v4
.line 3177
filled-new-array {v1, v0}, [Ljava/lang/String;
move-result-object v5
invoke-interface {v2, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const-string v4, "kotlin.ranges.ClosedFloatRange"
.line 3178
invoke-static {v4}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v4
.line 3179
filled-new-array {v1, v0}, [Ljava/lang/String;
move-result-object v5
invoke-interface {v2, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const-string v4, "kotlin.ranges.ClosedDoubleRange"
.line 3180
invoke-static {v4}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v4
.line 3181
filled-new-array {v1, v0}, [Ljava/lang/String;
move-result-object v0
invoke-interface {v2, v4, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 3182
sput-object v2, Lcom/alibaba/fastjson/util/TypeUtils;->kotlinIgnores:Ljava/util/Map;
:try_end_55
.catchall {:try_start_d .. :try_end_55} :catchall_56
goto :goto_58
.line 3184
:catchall_56
sput-boolean v3, Lcom/alibaba/fastjson/util/TypeUtils;->kotlinIgnores_error:Z
.line 3187
:cond_58
:goto_58
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlinIgnores:Ljava/util/Map;
const/4 v1, 0x0
if-nez v0, :cond_5e
return v1
.line 3190
:cond_5e
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->kotlinIgnores:Ljava/util/Map;
invoke-interface {v0, p0}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, [Ljava/lang/String;
if-eqz p0, :cond_6f
.line 3191
invoke-static {p0, p1}, Ljava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I
move-result p0
if-ltz p0, :cond_6f
goto :goto_70
:cond_6f
move v3, v1
:goto_70
return v3
.end method
.method public static isNumber(Ljava/lang/String;)Z
.registers 5
const/4 v0, 0x0
move v1, v0
.line 840
:goto_2
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v2
if-ge v1, v2, :cond_24
.line 841
invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
move-result v2
const/16 v3, 0x2b
if-eq v2, v3, :cond_1e
const/16 v3, 0x2d
if-ne v2, v3, :cond_15
goto :goto_1e
:cond_15
const/16 v3, 0x30
if-lt v2, v3, :cond_1d
const/16 v3, 0x39
if-le v2, v3, :cond_21
:cond_1d
return v0
:cond_1e
:goto_1e
if-eqz v1, :cond_21
return v0
:cond_21
add-int/lit8 v1, v1, 0x1
goto :goto_2
:cond_24
const/4 p0, 0x1
return p0
.end method
.method public static isPath(Ljava/lang/Class;)Z
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)Z"
}
.end annotation
.line 1714
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->pathClass:Ljava/lang/Class;
if-nez v0, :cond_14
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->pathClass_error:Z
if-nez v0, :cond_14
:try_start_8
const-string v0, "java.nio.file.Path"
.line 1716
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->pathClass:Ljava/lang/Class;
:try_end_10
.catchall {:try_start_8 .. :try_end_10} :catchall_11
goto :goto_14
:catchall_11
const/4 v0, 0x1
.line 1718
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->pathClass_error:Z
.line 1721
:cond_14
:goto_14
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->pathClass:Ljava/lang/Class;
if-eqz v0, :cond_1d
.line 1722
invoke-virtual {v0, p0}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
move-result p0
return p0
:cond_1d
const/4 p0, 0x0
return p0
.end method
.method public static isProxy(Ljava/lang/Class;)Z
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)Z"
}
.end annotation
.line 2804
invoke-virtual {p0}, Ljava/lang/Class;->getInterfaces()[Ljava/lang/Class;
move-result-object p0
array-length v0, p0
const/4 v1, 0x0
move v2, v1
:goto_7
if-ge v2, v0, :cond_1c
aget-object v3, p0, v2
.line 2805
invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v3
.line 2806
sget-object v4, Lcom/alibaba/fastjson/util/TypeUtils;->isProxyClassNames:Ljava/util/Set;
invoke-interface {v4, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_19
const/4 p0, 0x1
return p0
:cond_19
add-int/lit8 v2, v2, 0x1
goto :goto_7
:cond_1c
return v1
.end method
.method public static isTransient(Ljava/lang/reflect/Method;)Z
.registers 4
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 2817
:cond_4
sget-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->transientClassInited:Z
const/4 v2, 0x1
if-nez v1, :cond_18
:try_start_9
const-string v1, "java.beans.Transient"
.line 2819
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->transientClass:Ljava/lang/Class;
:try_end_11
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_11} :catch_16
.catchall {:try_start_9 .. :try_end_11} :catchall_12
goto :goto_16
:catchall_12
move-exception p0
.line 2823
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->transientClassInited:Z
.line 2824
throw p0
.line 2823
:catch_16
:goto_16
sput-boolean v2, Lcom/alibaba/fastjson/util/TypeUtils;->transientClassInited:Z
.line 2826
:cond_18
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->transientClass:Ljava/lang/Class;
if-eqz v1, :cond_23
.line 2827
invoke-static {p0, v1}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
if-eqz p0, :cond_23
move v0, v2
:cond_23
return v0
.end method
.method public static isXmlField(Ljava/lang/Class;)Z
.registers 6
.line 121
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
const/4 v1, 0x1
if-nez v0, :cond_14
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
if-nez v0, :cond_14
:try_start_9
const-string v0, "javax.xml.bind.annotation.XmlAccessorType"
.line 123
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
:try_end_11
.catchall {:try_start_9 .. :try_end_11} :catchall_12
goto :goto_14
.line 125
:catchall_12
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
.line 129
:cond_14
:goto_14
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
const/4 v2, 0x0
if-nez v0, :cond_1a
return v2
.line 133
:cond_1a
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getAnnotation(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
move-result-object p0
if-nez p0, :cond_23
return v2
.line 138
:cond_23
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->method_XmlAccessorType_value:Ljava/lang/reflect/Method;
if-nez v0, :cond_3a
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
if-nez v0, :cond_3a
.line 140
:try_start_2b
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessorType:Ljava/lang/Class;
const-string v3, "value"
new-array v4, v2, [Ljava/lang/Class;
invoke-virtual {v0, v3, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->method_XmlAccessorType_value:Ljava/lang/reflect/Method;
:try_end_37
.catchall {:try_start_2b .. :try_end_37} :catchall_38
goto :goto_3a
.line 142
:catchall_38
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
.line 146
:cond_3a
:goto_3a
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->method_XmlAccessorType_value:Ljava/lang/reflect/Method;
if-nez v0, :cond_3f
return v2
.line 151
:cond_3f
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
const/4 v3, 0x0
if-nez v0, :cond_4f
.line 153
:try_start_44
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->method_XmlAccessorType_value:Ljava/lang/reflect/Method;
new-array v4, v2, [Ljava/lang/Object;
invoke-virtual {v0, p0, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
:try_end_4c
.catchall {:try_start_44 .. :try_end_4c} :catchall_4d
goto :goto_50
.line 155
:catchall_4d
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
:cond_4f
move-object p0, v3
:goto_50
if-nez p0, :cond_53
return v2
.line 162
:cond_53
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessType:Ljava/lang/Class;
if-nez v0, :cond_78
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
if-nez v0, :cond_78
:try_start_5b
const-string v0, "javax.xml.bind.annotation.XmlAccessType"
.line 164
invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessType:Ljava/lang/Class;
.line 165
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->class_XmlAccessType:Ljava/lang/Class;
const-string v4, "FIELD"
invoke-virtual {v0, v4}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->field_XmlAccessType_FIELD:Ljava/lang/reflect/Field;
.line 166
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->field_XmlAccessType_FIELD:Ljava/lang/reflect/Field;
invoke-virtual {v0, v3}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
sput-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->field_XmlAccessType_FIELD_VALUE:Ljava/lang/Object;
:try_end_75
.catchall {:try_start_5b .. :try_end_75} :catchall_76
goto :goto_78
.line 168
:catchall_76
sput-boolean v1, Lcom/alibaba/fastjson/util/TypeUtils;->classXmlAccessorType_error:Z
.line 172
:cond_78
:goto_78
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->field_XmlAccessType_FIELD_VALUE:Ljava/lang/Object;
if-ne p0, v0, :cond_7d
goto :goto_7e
:cond_7d
move v1, v2
:goto_7e
return v1
.end method
.method public static loadClass(Ljava/lang/String;)Ljava/lang/Class;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
const/4 v0, 0x0
.line 1710
invoke-static {p0, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
move-result-object p0
return-object p0
.end method
.method public static loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/lang/ClassLoader;",
")",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
const/4 v0, 0x0
.line 1732
invoke-static {p0, p1, v0}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/lang/Class;
move-result-object p0
return-object p0
.end method
.method public static loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/lang/Class;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/lang/ClassLoader;",
"Z)",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
if-eqz p0, :cond_a6
.line 1736
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
if-nez v0, :cond_a
goto/16 :goto_a6
.line 1740
:cond_a
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
const/16 v1, 0xc6
if-gt v0, v1, :cond_8f
.line 1744
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;
if-eqz v0, :cond_1d
return-object v0
:cond_1d
const/4 v1, 0x0
.line 1749
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_38
.line 1750
invoke-virtual {p0, v4}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object p0
invoke-static {p0, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
move-result-object p0
.line 1751
invoke-static {p0, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object p0
return-object p0
:cond_38
const-string v1, "L"
.line 1754
invoke-virtual {p0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_56
const-string v1, ";"
invoke-virtual {p0, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_56
.line 1755
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result p2
sub-int/2addr p2, v4
invoke-virtual {p0, v4, p2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object p0
.line 1756
invoke-static {p0, p1}, Lcom/alibaba/fastjson/util/TypeUtils;->loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
move-result-object p0
return-object p0
:cond_56
if-eqz p1, :cond_68
.line 1761
:try_start_58
invoke-virtual {p1, p0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
if-eqz p2, :cond_63
.line 1763
sget-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {v1, p0, v0}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_63
.catchall {:try_start_58 .. :try_end_63} :catchall_64
:cond_63
return-object v0
:catchall_64
move-exception v1
.line 1768
invoke-virtual {v1}, Ljava/lang/Throwable;->printStackTrace()V
.line 1772
:cond_68
:try_start_68
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
if-eqz v1, :cond_83
if-eq v1, p1, :cond_83
.line 1774
invoke-virtual {v1, p0}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
move-result-object p1
:try_end_78
.catchall {:try_start_68 .. :try_end_78} :catchall_83
if-eqz p2, :cond_82
.line 1776
:try_start_7a
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;
:try_end_7f
.catchall {:try_start_7a .. :try_end_7f} :catchall_80
goto :goto_82
:catchall_80
move-object v0, p1
goto :goto_83
:cond_82
:goto_82
return-object p1
.line 1784
:catchall_83
:cond_83
:goto_83
:try_start_83
invoke-static {p0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v0
if-eqz p2, :cond_8e
.line 1786
sget-object p1, Lcom/alibaba/fastjson/util/TypeUtils;->mappings:Ljava/util/concurrent/ConcurrentMap;
invoke-interface {p1, p0, v0}, Ljava/util/concurrent/ConcurrentMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_8e
.catchall {:try_start_83 .. :try_end_8e} :catchall_8e
:catchall_8e
:cond_8e
return-object v0
.line 1741
:cond_8f
new-instance p1, Lcom/alibaba/fastjson/JSONException;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "illegal className : "
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-direct {p1, p0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw p1
:cond_a6
:goto_a6
const/4 p0, 0x0
return-object p0
.end method
.method public static longExtractValue(Ljava/lang/Number;)J
.registers 3
.line 617
instance-of v0, p0, Ljava/math/BigDecimal;
if-eqz v0, :cond_b
.line 618
check-cast p0, Ljava/math/BigDecimal;
invoke-virtual {p0}, Ljava/math/BigDecimal;->longValueExact()J
move-result-wide v0
return-wide v0
.line 621
:cond_b
invoke-virtual {p0}, Ljava/lang/Number;->longValue()J
move-result-wide v0
return-wide v0
.end method
.method public static longValue(Ljava/math/BigDecimal;)J
.registers 3
if-nez p0, :cond_5
const-wide/16 v0, 0x0
return-wide v0
.line 955
:cond_5
invoke-virtual {p0}, Ljava/math/BigDecimal;->scale()I
move-result v0
const/16 v1, -0x64
if-lt v0, v1, :cond_16
const/16 v1, 0x64
if-gt v0, v1, :cond_16
.line 957
invoke-virtual {p0}, Ljava/math/BigDecimal;->longValue()J
move-result-wide v0
return-wide v0
.line 960
:cond_16
invoke-virtual {p0}, Ljava/math/BigDecimal;->longValueExact()J
move-result-wide v0
return-wide v0
.end method
.method private static makeParameterizedType(Ljava/lang/Class;[Ljava/lang/reflect/Type;Ljava/util/Map;)Ljava/lang/reflect/ParameterizedType;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;[",
"Ljava/lang/reflect/Type;",
"Ljava/util/Map<",
"Ljava/lang/reflect/TypeVariable;",
"Ljava/lang/reflect/Type;",
">;)",
"Ljava/lang/reflect/ParameterizedType;"
}
.end annotation
.line 2619
array-length v0, p1
.line 2620
new-array v1, v0, [Ljava/lang/reflect/Type;
const/4 v2, 0x0
:goto_4
if-ge v2, v0, :cond_11
.line 2622
aget-object v3, p1, v2
invoke-static {v3, p2}, Lcom/alibaba/fastjson/util/TypeUtils;->getActualType(Ljava/lang/reflect/Type;Ljava/util/Map;)Ljava/lang/reflect/Type;
move-result-object v3
aput-object v3, v1, v2
add-int/lit8 v2, v2, 0x1
goto :goto_4
.line 2624
:cond_11
new-instance p1, Lcom/alibaba/fastjson/util/ParameterizedTypeImpl;
const/4 p2, 0x0
invoke-direct {p1, v1, p2, p0}, Lcom/alibaba/fastjson/util/ParameterizedTypeImpl;-><init>([Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V
return-object p1
.end method
.method static num(CC)I
.registers 4
const/16 v0, 0x30
if-lt p0, v0, :cond_12
const/16 v1, 0x39
if-gt p0, v1, :cond_12
if-lt p1, v0, :cond_12
if-gt p1, v1, :cond_12
sub-int/2addr p0, v0
mul-int/lit8 p0, p0, 0xa
sub-int/2addr p1, v0
add-int/2addr p0, p1
return p0
:cond_12
const/4 p0, -0x1
return p0
.end method
.method static num(CCCC)I
.registers 6
const/16 v0, 0x30
if-lt p0, v0, :cond_22
const/16 v1, 0x39
if-gt p0, v1, :cond_22
if-lt p1, v0, :cond_22
if-gt p1, v1, :cond_22
if-lt p2, v0, :cond_22
if-gt p2, v1, :cond_22
if-lt p3, v0, :cond_22
if-gt p3, v1, :cond_22
sub-int/2addr p0, v0
mul-int/lit16 p0, p0, 0x3e8
sub-int/2addr p1, v0
mul-int/lit8 p1, p1, 0x64
add-int/2addr p0, p1
sub-int/2addr p2, v0
mul-int/lit8 p2, p2, 0xa
add-int/2addr p0, p2
sub-int/2addr p3, v0
add-int/2addr p0, p3
return p0
:cond_22
const/4 p0, -0x1
return p0
.end method
.method static num(CCCCCCCCC)I
.registers 11
const/16 v0, 0x30
if-lt p0, v0, :cond_52
const/16 v1, 0x39
if-gt p0, v1, :cond_52
if-lt p1, v0, :cond_52
if-gt p1, v1, :cond_52
if-lt p2, v0, :cond_52
if-gt p2, v1, :cond_52
if-lt p3, v0, :cond_52
if-gt p3, v1, :cond_52
if-lt p4, v0, :cond_52
if-gt p4, v1, :cond_52
if-lt p5, v0, :cond_52
if-gt p5, v1, :cond_52
if-lt p6, v0, :cond_52
if-gt p6, v1, :cond_52
if-lt p7, v0, :cond_52
if-gt p7, v1, :cond_52
if-lt p8, v0, :cond_52
if-gt p8, v1, :cond_52
sub-int/2addr p0, v0
const v1, 0x5f5e100
mul-int/2addr p0, v1
sub-int/2addr p1, v0
const v1, 0x989680
mul-int/2addr p1, v1
add-int/2addr p0, p1
sub-int/2addr p2, v0
const p1, 0xf4240
mul-int/2addr p2, p1
add-int/2addr p0, p2
sub-int/2addr p3, v0
const p1, 0x186a0
mul-int/2addr p3, p1
add-int/2addr p0, p3
sub-int/2addr p4, v0
mul-int/lit16 p4, p4, 0x2710
add-int/2addr p0, p4
sub-int/2addr p5, v0
mul-int/lit16 p5, p5, 0x3e8
add-int/2addr p0, p5
sub-int/2addr p6, v0
mul-int/lit8 p6, p6, 0x64
add-int/2addr p0, p6
sub-int/2addr p7, v0
mul-int/lit8 p7, p7, 0xa
add-int/2addr p0, p7
sub-int/2addr p8, v0
add-int/2addr p0, p8
return p0
:cond_52
const/4 p0, -0x1
return p0
.end method
.method public static optionalEmpty(Ljava/lang/reflect/Type;)Ljava/lang/Object;
.registers 5
.line 3408
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->OPTIONAL_ERROR:Z
const/4 v1, 0x0
if-eqz v0, :cond_6
return-object v1
.line 3412
:cond_6
invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class;
move-result-object p0
if-nez p0, :cond_d
return-object v1
.line 3417
:cond_d
invoke-virtual {p0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object p0
const-string v0, "java.util.Optional"
.line 3419
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_39
.line 3420
sget-object v0, Lcom/alibaba/fastjson/util/TypeUtils;->OPTIONAL_EMPTY:Ljava/lang/Object;
if-nez v0, :cond_36
.line 3422
:try_start_1d
invoke-static {p0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object p0
const-string v0, "empty"
const/4 v2, 0x0
new-array v3, v2, [Ljava/lang/Class;
invoke-virtual {p0, v0, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object p0
new-array v0, v2, [Ljava/lang/Object;
.line 3423
invoke-virtual {p0, v1, v0}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
sput-object p0, Lcom/alibaba/fastjson/util/TypeUtils;->OPTIONAL_EMPTY:Ljava/lang/Object;
:try_end_32
.catchall {:try_start_1d .. :try_end_32} :catchall_33
goto :goto_36
:catchall_33
const/4 p0, 0x1
.line 3425
sput-boolean p0, Lcom/alibaba/fastjson/util/TypeUtils;->OPTIONAL_ERROR:Z
.line 3428
:cond_36
:goto_36
sget-object p0, Lcom/alibaba/fastjson/util/TypeUtils;->OPTIONAL_EMPTY:Ljava/lang/Object;
return-object p0
:cond_39
return-object v1
.end method
.method public static parseDouble(Ljava/lang/String;)D
.registers 10
.line 2892
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
const/16 v1, 0xa
if-le v0, v1, :cond_d
.line 2894
invoke-static {p0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
return-wide v0
:cond_d
const-wide/16 v1, 0x0
const/4 v3, 0x0
move v4, v3
move v5, v4
:goto_12
if-ge v3, v0, :cond_47
.line 2902
invoke-virtual {p0, v3}, Ljava/lang/String;->charAt(I)C
move-result v6
const/16 v7, 0x2d
const/4 v8, 0x1
if-ne v6, v7, :cond_21
if-nez v3, :cond_21
move v4, v8
goto :goto_3f
:cond_21
const/16 v7, 0x2e
if-ne v6, v7, :cond_30
if-eqz v5, :cond_2c
.line 2910
invoke-static {p0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
return-wide v0
:cond_2c
sub-int v5, v0, v3
sub-int/2addr v5, v8
goto :goto_3f
:cond_30
const/16 v7, 0x30
if-lt v6, v7, :cond_42
const/16 v7, 0x39
if-gt v6, v7, :cond_42
add-int/lit8 v6, v6, -0x30
const-wide/16 v7, 0xa
mul-long/2addr v1, v7
int-to-long v6, v6
add-long/2addr v1, v6
:goto_3f
add-int/lit8 v3, v3, 0x1
goto :goto_12
.line 2920
:cond_42
invoke-static {p0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
return-wide v0
:cond_47
if-eqz v4, :cond_4a
neg-long v1, v1
:cond_4a
packed-switch v5, :pswitch_data_8e
.line 2951
invoke-static {p0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
return-wide v0
:pswitch_52
long-to-double v0, v1
const-wide v2, 0x41cdcd6500000000L # 1.0E9
:goto_58
div-double/2addr v0, v2
return-wide v0
:pswitch_5a
long-to-double v0, v1
const-wide v2, 0x4197d78400000000L # 1.0E8
goto :goto_58
:pswitch_61
long-to-double v0, v1
const-wide v2, 0x416312d000000000L # 1.0E7
goto :goto_58
:pswitch_68
long-to-double v0, v1
const-wide v2, 0x412e848000000000L # 1000000.0
goto :goto_58
:pswitch_6f
long-to-double v0, v1
const-wide v2, 0x40f86a0000000000L # 100000.0
goto :goto_58
:pswitch_76
long-to-double v0, v1
const-wide v2, 0x40c3880000000000L # 10000.0
goto :goto_58
:pswitch_7d
long-to-double v0, v1
const-wide v2, 0x408f400000000000L # 1000.0
goto :goto_58
:pswitch_84
long-to-double v0, v1
const-wide/high16 v2, 0x4059000000000000L # 100.0
goto :goto_58
:pswitch_88
long-to-double v0, v1
const-wide/high16 v2, 0x4024000000000000L # 10.0
goto :goto_58
:pswitch_8c
long-to-double v0, v1
return-wide v0
:pswitch_data_8e
.packed-switch 0x0
:pswitch_8c
:pswitch_88
:pswitch_84
:pswitch_7d
:pswitch_76
:pswitch_6f
:pswitch_68
:pswitch_61
:pswitch_5a
:pswitch_52
.end packed-switch
.end method
.method public static parseFloat(Ljava/lang/String;)F
.registers 10
.line 2955
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
const/16 v1, 0xa
if-lt v0, v1, :cond_d
.line 2957
invoke-static {p0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result p0
return p0
:cond_d
const-wide/16 v1, 0x0
const/4 v3, 0x0
move v4, v3
move v5, v4
:goto_12
if-ge v3, v0, :cond_47
.line 2965
invoke-virtual {p0, v3}, Ljava/lang/String;->charAt(I)C
move-result v6
const/16 v7, 0x2d
const/4 v8, 0x1
if-ne v6, v7, :cond_21
if-nez v3, :cond_21
move v4, v8
goto :goto_3f
:cond_21
const/16 v7, 0x2e
if-ne v6, v7, :cond_30
if-eqz v5, :cond_2c
.line 2973
invoke-static {p0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result p0
return p0
:cond_2c
sub-int v5, v0, v3
sub-int/2addr v5, v8
goto :goto_3f
:cond_30
const/16 v7, 0x30
if-lt v6, v7, :cond_42
const/16 v7, 0x39
if-gt v6, v7, :cond_42
add-int/lit8 v6, v6, -0x30
const-wide/16 v7, 0xa
mul-long/2addr v1, v7
int-to-long v6, v6
add-long/2addr v1, v6
:goto_3f
add-int/lit8 v3, v3, 0x1
goto :goto_12
.line 2983
:cond_42
invoke-static {p0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result p0
return p0
:cond_47
if-eqz v4, :cond_4a
neg-long v1, v1
:cond_4a
packed-switch v5, :pswitch_data_80
.line 3014
invoke-static {p0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result p0
return p0
:pswitch_52
long-to-float p0, v1
const v0, 0x4e6e6b28 # 1.0E9f
:goto_56
div-float/2addr p0, v0
return p0
:pswitch_58
long-to-float p0, v1
const v0, 0x4cbebc20 # 1.0E8f
goto :goto_56
:pswitch_5d
long-to-float p0, v1
const v0, 0x4b189680 # 1.0E7f
goto :goto_56
:pswitch_62
long-to-float p0, v1
const v0, 0x49742400 # 1000000.0f
goto :goto_56
:pswitch_67
long-to-float p0, v1
const v0, 0x47c35000 # 100000.0f
goto :goto_56
:pswitch_6c
long-to-float p0, v1
const v0, 0x461c4000 # 10000.0f
goto :goto_56
:pswitch_71
long-to-float p0, v1
const/high16 v0, 0x447a0000 # 1000.0f
goto :goto_56
:pswitch_75
long-to-float p0, v1
const/high16 v0, 0x42c80000 # 100.0f
goto :goto_56
:pswitch_79
long-to-float p0, v1
const/high16 v0, 0x41200000 # 10.0f
goto :goto_56
:pswitch_7d
long-to-float p0, v1
return p0
nop
:pswitch_data_80
.packed-switch 0x0
:pswitch_7d
:pswitch_79
:pswitch_75
:pswitch_71
:pswitch_6c
:pswitch_67
:pswitch_62
:pswitch_5d
:pswitch_58
:pswitch_52
.end packed-switch
.end method
.method static setAccessible(Ljava/lang/reflect/AccessibleObject;)V
.registers 2
.line 2547
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessibleEnable:Z
if-nez v0, :cond_5
return-void
.line 2550
:cond_5
invoke-virtual {p0}, Ljava/lang/reflect/AccessibleObject;->isAccessible()Z
move-result v0
if-eqz v0, :cond_c
return-void
:cond_c
const/4 v0, 0x1
.line 2554
:try_start_d
invoke-virtual {p0, v0}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V
:try_end_10
.catchall {:try_start_d .. :try_end_10} :catchall_11
goto :goto_14
:catchall_11
const/4 p0, 0x0
.line 2556
sput-boolean p0, Lcom/alibaba/fastjson/util/TypeUtils;->setAccessibleEnable:Z
:goto_14
return-void
.end method
.method public static shortValue(Ljava/math/BigDecimal;)S
.registers 3
if-nez p0, :cond_4
const/4 p0, 0x0
return p0
.line 929
:cond_4
invoke-virtual {p0}, Ljava/math/BigDecimal;->scale()I
move-result v0
const/16 v1, -0x64
if-lt v0, v1, :cond_15
const/16 v1, 0x64
if-gt v0, v1, :cond_15
.line 931
invoke-virtual {p0}, Ljava/math/BigDecimal;->shortValue()S
move-result p0
return p0
.line 934
:cond_15
invoke-virtual {p0}, Ljava/math/BigDecimal;->shortValueExact()S
move-result p0
return p0
.end method
.method public static toLocale(Ljava/lang/String;)Ljava/util/Locale;
.registers 5
const-string v0, "_"
.line 1264
invoke-virtual {p0, v0}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object p0
.line 1265
array-length v0, p0
const/4 v1, 0x0
const/4 v2, 0x1
if-ne v0, v2, :cond_13
.line 1266
new-instance v0, Ljava/util/Locale;
aget-object p0, p0, v1
invoke-direct {v0, p0}, Ljava/util/Locale;-><init>(Ljava/lang/String;)V
return-object v0
.line 1268
:cond_13
array-length v0, p0
const/4 v3, 0x2
if-ne v0, v3, :cond_21
.line 1269
new-instance v0, Ljava/util/Locale;
aget-object v1, p0, v1
aget-object p0, p0, v2
invoke-direct {v0, v1, p0}, Ljava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;)V
return-object v0
.line 1271
:cond_21
new-instance v0, Ljava/util/Locale;
aget-object v1, p0, v1
aget-object v2, p0, v2
aget-object p0, p0, v3
invoke-direct {v0, v1, v2, p0}, Ljava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
return-object v0
.end method
.method public static unwrapOptional(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
.registers 4
.line 2438
sget-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->optionalClassInited:Z
if-nez v0, :cond_14
const/4 v0, 0x1
:try_start_5
const-string v1, "java.util.Optional"
.line 2440
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
sput-object v1, Lcom/alibaba/fastjson/util/TypeUtils;->optionalClass:Ljava/lang/Class;
:try_end_d
.catch Ljava/lang/Exception; {:try_start_5 .. :try_end_d} :catch_12
.catchall {:try_start_5 .. :try_end_d} :catchall_e
goto :goto_12
:catchall_e
move-exception p0
.line 2444
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->optionalClassInited:Z
.line 2445
throw p0
.line 2444
:catch_12
:goto_12
sput-boolean v0, Lcom/alibaba/fastjson/util/TypeUtils;->optionalClassInited:Z
.line 2447
:cond_14
instance-of v0, p0, Ljava/lang/reflect/ParameterizedType;
if-eqz v0, :cond_2a
.line 2448
move-object v0, p0
check-cast v0, Ljava/lang/reflect/ParameterizedType;
.line 2449
invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type;
move-result-object v1
sget-object v2, Lcom/alibaba/fastjson/util/TypeUtils;->optionalClass:Ljava/lang/Class;
if-ne v1, v2, :cond_2a
.line 2450
invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type;
move-result-object p0
const/4 v0, 0x0
aget-object p0, p0, v0
:cond_2a
return-object p0
.end method