m.smali
.class public final Lcom/alibaba/fastjson/serializer/m;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/alibaba/fastjson/serializer/o0;
.implements Lcom/alibaba/fastjson/parser/deserializer/r;
# static fields
.field public static final b:Lcom/alibaba/fastjson/serializer/m;
# instance fields
.field public a:Ljavax/xml/datatype/DatatypeFactory;
# direct methods
.method public static constructor <clinit>()V
.registers 1
new-instance v0, Lcom/alibaba/fastjson/serializer/m;
invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/m;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/serializer/m;->b:Lcom/alibaba/fastjson/serializer/m;
return-void
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public final b()I
.registers 2
const/4 v0, 0x2
return v0
.end method
.method public final c(Lcom/alibaba/fastjson/parser/a;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Lcom/alibaba/fastjson/parser/a;",
"Ljava/lang/reflect/Type;",
"Ljava/lang/Object;",
")TT;"
}
.end annotation
.line 1
sget-object v0, Lcom/alibaba/fastjson/serializer/t;->a:Lcom/alibaba/fastjson/serializer/t;
invoke-virtual {v0, p1, p2, p3}, Lcom/alibaba/fastjson/parser/deserializer/b;->c(Lcom/alibaba/fastjson/parser/a;Ljava/lang/reflect/Type;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p3
.line 2
instance-of v0, p3, Ljava/util/Calendar;
if-eqz v0, :cond_b
return-object p3
.line 3
:cond_b
check-cast p3, Ljava/util/Date;
if-nez p3, :cond_11
const/4 p1, 0x0
return-object p1
.line 4
:cond_11
iget-object p1, p1, Lcom/alibaba/fastjson/parser/a;->f:Lcom/alibaba/fastjson/parser/c;
.line 5
invoke-interface {p1}, Lcom/alibaba/fastjson/parser/c;->H()Ljava/util/TimeZone;
move-result-object v0
invoke-interface {p1}, Lcom/alibaba/fastjson/parser/c;->a()Ljava/util/Locale;
move-result-object p1
invoke-static {v0, p1}, Ljava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
move-result-object p1
.line 6
invoke-virtual {p1, p3}, Ljava/util/Calendar;->setTime(Ljava/util/Date;)V
.line 7
const-class p3, Ljavax/xml/datatype/XMLGregorianCalendar;
if-ne p2, p3, :cond_42
.line 8
iget-object p2, p0, Lcom/alibaba/fastjson/serializer/m;->a:Ljavax/xml/datatype/DatatypeFactory;
if-nez p2, :cond_3a
.line 9
:try_start_2a
invoke-static {}, Ljavax/xml/datatype/DatatypeFactory;->newInstance()Ljavax/xml/datatype/DatatypeFactory;
move-result-object p2
iput-object p2, p0, Lcom/alibaba/fastjson/serializer/m;->a:Ljavax/xml/datatype/DatatypeFactory;
:try_end_30
.catch Ljavax/xml/datatype/DatatypeConfigurationException; {:try_start_2a .. :try_end_30} :catch_31
goto :goto_3a
:catch_31
move-exception p1
.line 10
new-instance p2, Ljava/lang/IllegalStateException;
const-string p3, "Could not obtain an instance of DatatypeFactory."
invoke-direct {p2, p3, p1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.line 11
:cond_3a
:goto_3a
iget-object p2, p0, Lcom/alibaba/fastjson/serializer/m;->a:Ljavax/xml/datatype/DatatypeFactory;
check-cast p1, Ljava/util/GregorianCalendar;
invoke-virtual {p2, p1}, Ljavax/xml/datatype/DatatypeFactory;->newXMLGregorianCalendar(Ljava/util/GregorianCalendar;)Ljavax/xml/datatype/XMLGregorianCalendar;
move-result-object p1
:cond_42
return-object p1
.end method
.method public final d(Lcom/alibaba/fastjson/serializer/e0;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V
.registers 23
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
move-object/from16 v0, p1
move-object/from16 v1, p2
.line 1
iget-object v2, v0, Lcom/alibaba/fastjson/serializer/e0;->j:Lcom/alibaba/fastjson/serializer/y0;
if-nez v1, :cond_c
.line 2
invoke-virtual {v2}, Lcom/alibaba/fastjson/serializer/y0;->K()V
return-void
.line 3
:cond_c
instance-of v3, v1, Ljavax/xml/datatype/XMLGregorianCalendar;
if-eqz v3, :cond_17
.line 4
check-cast v1, Ljavax/xml/datatype/XMLGregorianCalendar;
invoke-virtual {v1}, Ljavax/xml/datatype/XMLGregorianCalendar;->toGregorianCalendar()Ljava/util/GregorianCalendar;
move-result-object v1
goto :goto_19
.line 5
:cond_17
check-cast v1, Ljava/util/Calendar;
.line 6
:goto_19
sget-object v3, Lcom/alibaba/fastjson/serializer/z0;->UseISO8601DateFormat:Lcom/alibaba/fastjson/serializer/z0;
invoke-virtual {v2, v3}, Lcom/alibaba/fastjson/serializer/y0;->u(Lcom/alibaba/fastjson/serializer/z0;)Z
move-result v3
if-eqz v3, :cond_107
.line 7
sget-object v0, Lcom/alibaba/fastjson/serializer/z0;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/z0;
invoke-virtual {v2, v0}, Lcom/alibaba/fastjson/serializer/y0;->u(Lcom/alibaba/fastjson/serializer/z0;)Z
move-result v0
if-eqz v0, :cond_2c
const/16 v0, 0x27
goto :goto_2e
:cond_2c
const/16 v0, 0x22
.line 8
:goto_2e
invoke-virtual {v2, v0}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V
const/4 v3, 0x1
.line 9
invoke-virtual {v1, v3}, Ljava/util/Calendar;->get(I)I
move-result v4
const/4 v5, 0x2
.line 10
invoke-virtual {v1, v5}, Ljava/util/Calendar;->get(I)I
move-result v5
add-int/2addr v5, v3
const/4 v6, 0x5
.line 11
invoke-virtual {v1, v6}, Ljava/util/Calendar;->get(I)I
move-result v6
const/16 v7, 0xb
.line 12
invoke-virtual {v1, v7}, Ljava/util/Calendar;->get(I)I
move-result v7
const/16 v8, 0xc
.line 13
invoke-virtual {v1, v8}, Ljava/util/Calendar;->get(I)I
move-result v8
const/16 v9, 0xd
.line 14
invoke-virtual {v1, v9}, Ljava/util/Calendar;->get(I)I
move-result v10
const/16 v11, 0xe
.line 15
invoke-virtual {v1, v11}, Ljava/util/Calendar;->get(I)I
move-result v11
const/16 v12, 0x10
const/16 v13, 0x13
const/16 v14, 0xa
if-eqz v11, :cond_81
const-string v16, "0000-00-00T00:00:00.000"
.line 16
invoke-virtual/range {v16 .. v16}, Ljava/lang/String;->toCharArray()[C
move-result-object v15
const/16 v3, 0x17
.line 17
invoke-static {v11, v3, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 18
invoke-static {v10, v13, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 19
invoke-static {v8, v12, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 20
invoke-static {v7, v9, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 21
invoke-static {v6, v14, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
const/4 v3, 0x7
.line 22
invoke-static {v5, v3, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
const/4 v11, 0x4
.line 23
invoke-static {v4, v11, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
goto :goto_b3
:cond_81
const/4 v3, 0x7
const/4 v11, 0x4
if-nez v10, :cond_99
if-nez v8, :cond_99
if-nez v7, :cond_99
const-string v7, "0000-00-00"
.line 24
invoke-virtual {v7}, Ljava/lang/String;->toCharArray()[C
move-result-object v15
.line 25
invoke-static {v6, v14, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 26
invoke-static {v5, v3, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 27
invoke-static {v4, v11, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
goto :goto_b3
:cond_99
const-string v3, "0000-00-00T00:00:00"
.line 28
invoke-virtual {v3}, Ljava/lang/String;->toCharArray()[C
move-result-object v15
.line 29
invoke-static {v10, v13, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 30
invoke-static {v8, v12, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 31
invoke-static {v7, v9, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 32
invoke-static {v6, v14, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
const/4 v3, 0x7
.line 33
invoke-static {v5, v3, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
const/4 v3, 0x4
.line 34
invoke-static {v4, v3, v15}, Lcom/alibaba/fastjson/util/e;->b(II[C)V
.line 35
:goto_b3
invoke-virtual {v2, v15}, Ljava/io/Writer;->write([C)V
.line 36
invoke-virtual {v1}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone;
move-result-object v1
invoke-virtual {v1}, Ljava/util/TimeZone;->getRawOffset()I
move-result v1
const v3, 0x36ee80
div-int/2addr v1, v3
if-nez v1, :cond_ca
const-string v1, "Z"
.line 37
invoke-virtual {v2, v1}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
goto :goto_103
:cond_ca
const-string v3, ":00"
const/4 v4, 0x0
const-string v5, "%02d"
if-lez v1, :cond_ea
const-string v6, "+"
.line 38
invoke-virtual {v2, v6}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
const/4 v6, 0x1
new-array v6, v6, [Ljava/lang/Object;
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
aput-object v1, v6, v4
invoke-static {v5, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v2, v1}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
invoke-virtual {v2, v3}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
goto :goto_103
:cond_ea
const/4 v6, 0x1
const-string v7, "-"
.line 39
invoke-virtual {v2, v7}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
new-array v6, v6, [Ljava/lang/Object;
neg-int v1, v1
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
aput-object v1, v6, v4
invoke-static {v5, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v2, v1}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
invoke-virtual {v2, v3}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;
.line 40
:goto_103
invoke-virtual {v2, v0}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V
goto :goto_10e
.line 41
:cond_107
invoke-virtual {v1}, Ljava/util/Calendar;->getTime()Ljava/util/Date;
move-result-object v1
.line 42
invoke-virtual {v0, v1}, Lcom/alibaba/fastjson/serializer/e0;->r(Ljava/lang/Object;)V
:goto_10e
return-void
.end method