TypeUtils$4.smali
.class final Lcom/alibaba/fastjson/util/TypeUtils$4;
.super Ljava/lang/Object;
.source "TypeUtils.java"
# interfaces
.implements Lcom/alibaba/fastjson/util/Function;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/alibaba/fastjson/util/TypeUtils;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x8
name = null
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Lcom/alibaba/fastjson/util/Function<",
"Ljava/lang/Object;",
"Ljava/lang/Object;",
">;"
}
.end annotation
# direct methods
.method constructor <init>()V
.registers 1
.line 680
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public apply(Ljava/lang/Object;)Ljava/lang/Object;
.registers 24
move-object/from16 v0, p1
const/4 v1, 0x0
if-nez v0, :cond_6
return-object v1
.line 685
:cond_6
instance-of v2, v0, Ljava/util/Calendar;
if-eqz v2, :cond_16
.line 686
new-instance v1, Ljava/sql/Timestamp;
check-cast v0, Ljava/util/Calendar;
invoke-virtual {v0}, Ljava/util/Calendar;->getTimeInMillis()J
move-result-wide v2
invoke-direct {v1, v2, v3}, Ljava/sql/Timestamp;-><init>(J)V
return-object v1
.line 688
:cond_16
instance-of v2, v0, Ljava/sql/Timestamp;
if-eqz v2, :cond_1d
.line 689
check-cast v0, Ljava/sql/Timestamp;
return-object v0
.line 691
:cond_1d
instance-of v2, v0, Ljava/util/Date;
if-eqz v2, :cond_2d
.line 692
new-instance v1, Ljava/sql/Timestamp;
check-cast v0, Ljava/util/Date;
invoke-virtual {v0}, Ljava/util/Date;->getTime()J
move-result-wide v2
invoke-direct {v1, v2, v3}, Ljava/sql/Timestamp;-><init>(J)V
return-object v1
:cond_2d
const-wide/16 v2, 0x0
.line 695
instance-of v4, v0, Ljava/math/BigDecimal;
if-eqz v4, :cond_3b
.line 696
move-object v2, v0
check-cast v2, Ljava/math/BigDecimal;
invoke-static {v2}, Lcom/alibaba/fastjson/util/TypeUtils;->longValue(Ljava/math/BigDecimal;)J
move-result-wide v2
goto :goto_46
.line 697
:cond_3b
instance-of v4, v0, Ljava/lang/Number;
if-eqz v4, :cond_46
.line 698
move-object v2, v0
check-cast v2, Ljava/lang/Number;
invoke-virtual {v2}, Ljava/lang/Number;->longValue()J
move-result-wide v2
.line 700
:cond_46
:goto_46
instance-of v4, v0, Ljava/lang/String;
if-eqz v4, :cond_1ab
.line 701
check-cast v0, Ljava/lang/String;
.line 702
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v2
if-eqz v2, :cond_1aa
const-string v2, "null"
.line 703
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_1aa
const-string v2, "NULL"
.line 704
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_64
goto/16 :goto_1aa
:cond_64
const-string v1, ".000000000"
.line 707
invoke-virtual {v0, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v1
const/4 v2, 0x7
const/16 v3, 0xa
const/4 v4, 0x0
if-eqz v1, :cond_7a
.line 708
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v1
sub-int/2addr v1, v3
invoke-virtual {v0, v4, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
goto :goto_8b
:cond_7a
const-string v1, ".000000"
.line 709
invoke-virtual {v0, v1}, Ljava/lang/String;->endsWith(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_8b
.line 710
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v1
sub-int/2addr v1, v2
invoke-virtual {v0, v4, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
.line 713
:cond_8b
:goto_8b
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v1
const/16 v5, 0x1d
if-ne v1, v5, :cond_170
const/4 v1, 0x4
.line 714
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v5, 0x2d
if-ne v1, v5, :cond_170
.line 715
invoke-virtual {v0, v2}, Ljava/lang/String;->charAt(I)C
move-result v1
if-ne v1, v5, :cond_170
.line 716
invoke-virtual {v0, v3}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v2, 0x20
if-ne v1, v2, :cond_170
const/16 v1, 0xd
.line 717
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v2, 0x3a
if-ne v1, v2, :cond_170
const/16 v1, 0x10
.line 718
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
if-ne v1, v2, :cond_170
const/16 v1, 0x13
.line 719
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v2, 0x2e
if-ne v1, v2, :cond_170
.line 721
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v1
const/4 v2, 0x1
.line 722
invoke-virtual {v0, v2}, Ljava/lang/String;->charAt(I)C
move-result v3
const/4 v4, 0x2
.line 723
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v4
const/4 v5, 0x3
.line 724
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 720
invoke-static {v1, v3, v4, v5}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CCCC)I
move-result v1
const/4 v3, 0x5
.line 726
invoke-virtual {v0, v3}, Ljava/lang/String;->charAt(I)C
move-result v3
const/4 v4, 0x6
.line 727
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v4
.line 725
invoke-static {v3, v4}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CC)I
move-result v3
const/16 v4, 0x8
.line 729
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v4
const/16 v5, 0x9
.line 730
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 728
invoke-static {v4, v5}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CC)I
move-result v9
const/16 v4, 0xb
.line 732
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v4
const/16 v5, 0xc
.line 733
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 731
invoke-static {v4, v5}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CC)I
move-result v10
const/16 v4, 0xe
.line 735
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v4
const/16 v5, 0xf
.line 736
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 734
invoke-static {v4, v5}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CC)I
move-result v11
const/16 v4, 0x11
.line 738
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v4
const/16 v5, 0x12
.line 739
invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 737
invoke-static {v4, v5}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CC)I
move-result v12
const/16 v4, 0x14
.line 741
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v13
const/16 v4, 0x15
.line 742
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v14
const/16 v4, 0x16
.line 743
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v15
const/16 v4, 0x17
.line 744
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v16
const/16 v4, 0x18
.line 745
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v17
const/16 v4, 0x19
.line 746
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v18
const/16 v4, 0x1a
.line 747
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v19
const/16 v4, 0x1b
.line 748
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v20
const/16 v4, 0x1c
.line 749
invoke-virtual {v0, v4}, Ljava/lang/String;->charAt(I)C
move-result v21
.line 740
invoke-static/range {v13 .. v21}, Lcom/alibaba/fastjson/util/TypeUtils;->num(CCCCCCCCC)I
move-result v13
.line 750
new-instance v0, Ljava/sql/Timestamp;
add-int/lit16 v7, v1, -0x76c
add-int/lit8 v8, v3, -0x1
move-object v6, v0
invoke-direct/range {v6 .. v13}, Ljava/sql/Timestamp;-><init>(IIIIIII)V
return-object v0
.line 753
:cond_170
invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->isNumber(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_17b
.line 754
invoke-static {v0}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v2
goto :goto_1ab
.line 756
:cond_17b
new-instance v1, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {v1, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
.line 757
invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z
move-result v2
if-eqz v2, :cond_193
.line 758
invoke-virtual {v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object v0
invoke-virtual {v0}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
move-result-object v0
invoke-virtual {v0}, Ljava/util/Date;->getTime()J
move-result-wide v2
goto :goto_1ab
.line 760
:cond_193
new-instance v1, Lcom/alibaba/fastjson/JSONException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "can not cast to Timestamp, value : "
invoke-virtual {v2, v3}, 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-direct {v1, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v1
:cond_1aa
:goto_1aa
return-object v1
.line 765
:cond_1ab
:goto_1ab
new-instance v0, Ljava/sql/Timestamp;
invoke-direct {v0, v2, v3}, Ljava/sql/Timestamp;-><init>(J)V
return-object v0
.end method