TimeDeserializer.smali
.class public Lcom/alibaba/fastjson/parser/deserializer/TimeDeserializer;
.super Ljava/lang/Object;
.source "TimeDeserializer.java"
# interfaces
.implements Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
# static fields
.field public static final instance:Lcom/alibaba/fastjson/parser/deserializer/TimeDeserializer;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 13
new-instance v0, Lcom/alibaba/fastjson/parser/deserializer/TimeDeserializer;
invoke-direct {v0}, Lcom/alibaba/fastjson/parser/deserializer/TimeDeserializer;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/parser/deserializer/TimeDeserializer;->instance:Lcom/alibaba/fastjson/parser/deserializer/TimeDeserializer;
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 11
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public deserialze(Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
.registers 11
.param p1, "parser" # Lcom/alibaba/fastjson/parser/DefaultJSONParser;
.param p2, "clazz" # Ljava/lang/reflect/Type;
.param p3, "fieldName" # Ljava/lang/Object;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/alibaba/fastjson/parser/DefaultJSONParser;",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Object;",
")TT;"
}
.end annotation
.line 17
invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->getLexer()Lcom/alibaba/fastjson/parser/JSONLexer;
move-result-object v0
.line 19
.local v0, "lexer":Lcom/alibaba/fastjson/parser/JSONLexer;
invoke-interface {v0}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v1
const/16 v2, 0x10
if-ne v1, v2, :cond_4d
.line 20
const/4 v1, 0x4
invoke-interface {v0, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
.line 22
invoke-interface {v0}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v3
const-string/jumbo v4, "syntax error"
if-ne v3, v1, :cond_47
.line 26
const/4 v1, 0x2
invoke-interface {v0, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextTokenWithColon(I)V
.line 28
invoke-interface {v0}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v3
if-ne v3, v1, :cond_41
.line 32
invoke-interface {v0}, Lcom/alibaba/fastjson/parser/JSONLexer;->longValue()J
move-result-wide v5
.line 33
.local v5, "time":J
const/16 v1, 0xd
invoke-interface {v0, v1}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
.line 34
invoke-interface {v0}, Lcom/alibaba/fastjson/parser/JSONLexer;->token()I
move-result v3
if-ne v3, v1, :cond_3b
.line 37
invoke-interface {v0, v2}, Lcom/alibaba/fastjson/parser/JSONLexer;->nextToken(I)V
.line 39
new-instance v1, Ljava/sql/Time;
invoke-direct {v1, v5, v6}, Ljava/sql/Time;-><init>(J)V
return-object v1
.line 35
:cond_3b
new-instance v1, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v1, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v1
.line 29
.end local v5 # "time":J
:cond_41
new-instance v1, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v1, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v1
.line 23
:cond_47
new-instance v1, Lcom/alibaba/fastjson/JSONException;
invoke-direct {v1, v4}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v1
.line 42
:cond_4d
invoke-virtual {p1}, Lcom/alibaba/fastjson/parser/DefaultJSONParser;->parse()Ljava/lang/Object;
move-result-object v1
.line 44
.local v1, "val":Ljava/lang/Object;
const/4 v2, 0x0
if-nez v1, :cond_55
.line 45
return-object v2
.line 48
:cond_55
instance-of v3, v1, Ljava/sql/Time;
if-eqz v3, :cond_5a
.line 49
return-object v1
.line 50
:cond_5a
instance-of v3, v1, Ljava/lang/Number;
if-eqz v3, :cond_6b
.line 51
new-instance v2, Ljava/sql/Time;
move-object v3, v1
check-cast v3, Ljava/lang/Number;
invoke-virtual {v3}, Ljava/lang/Number;->longValue()J
move-result-wide v3
invoke-direct {v2, v3, v4}, Ljava/sql/Time;-><init>(J)V
return-object v2
.line 52
:cond_6b
instance-of v3, v1, Ljava/lang/String;
if-eqz v3, :cond_9a
.line 53
move-object v3, v1
check-cast v3, Ljava/lang/String;
.line 54
.local v3, "strVal":Ljava/lang/String;
invoke-virtual {v3}, Ljava/lang/String;->length()I
move-result v4
if-nez v4, :cond_79
.line 55
return-object v2
.line 59
:cond_79
new-instance v2, Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-direct {v2, v3}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;)V
.line 60
.local v2, "dateLexer":Lcom/alibaba/fastjson/parser/JSONScanner;
invoke-virtual {v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch()Z
move-result v4
if-eqz v4, :cond_8d
.line 61
invoke-virtual {v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->getCalendar()Ljava/util/Calendar;
move-result-object v4
invoke-virtual {v4}, Ljava/util/Calendar;->getTimeInMillis()J
move-result-wide v4
.local v4, "longVal":J
goto :goto_91
.line 63
.end local v4 # "longVal":J
:cond_8d
invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v4
.line 65
.restart local v4 # "longVal":J
:goto_91
invoke-virtual {v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->close()V
.line 66
new-instance v6, Ljava/sql/Time;
invoke-direct {v6, v4, v5}, Ljava/sql/Time;-><init>(J)V
return-object v6
.line 69
.end local v2 # "dateLexer":Lcom/alibaba/fastjson/parser/JSONScanner;
.end local v3 # "strVal":Ljava/lang/String;
.end local v4 # "longVal":J
:cond_9a
new-instance v2, Lcom/alibaba/fastjson/JSONException;
const-string v3, "parse error"
invoke-direct {v2, v3}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;)V
throw v2
.end method
.method public getFastMatchToken()I
.registers 2
.line 73
const/4 v0, 0x2
return v0
.end method