DateTypeAdapter.smali 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. .class public final Lcom/google/gson/internal/bind/DateTypeAdapter;
  2. .super Lcom/google/gson/TypeAdapter;
  3. .source ""
  4. # annotations
  5. .annotation system Ldalvik/annotation/Signature;
  6. value = {
  7. "Lcom/google/gson/TypeAdapter<",
  8. "Ljava/util/Date;",
  9. ">;"
  10. }
  11. .end annotation
  12. # static fields
  13. .field public static final FACTORY:Lcom/google/gson/TypeAdapterFactory;
  14. # instance fields
  15. .field private final enUsFormat:Ljava/text/DateFormat;
  16. .field private final localFormat:Ljava/text/DateFormat;
  17. # direct methods
  18. .method static constructor <clinit>()V
  19. .locals 1
  20. new-instance v0, Lcom/google/gson/internal/bind/DateTypeAdapter$1;
  21. invoke-direct {v0}, Lcom/google/gson/internal/bind/DateTypeAdapter$1;-><init>()V
  22. sput-object v0, Lcom/google/gson/internal/bind/DateTypeAdapter;->FACTORY:Lcom/google/gson/TypeAdapterFactory;
  23. return-void
  24. .end method
  25. .method public constructor <init>()V
  26. .locals 2
  27. invoke-direct {p0}, Lcom/google/gson/TypeAdapter;-><init>()V
  28. sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;
  29. const/4 v1, 0x2
  30. invoke-static {v1, v1, v0}, Ljava/text/DateFormat;->getDateTimeInstance(IILjava/util/Locale;)Ljava/text/DateFormat;
  31. move-result-object v0
  32. iput-object v0, p0, Lcom/google/gson/internal/bind/DateTypeAdapter;->enUsFormat:Ljava/text/DateFormat;
  33. invoke-static {v1, v1}, Ljava/text/DateFormat;->getDateTimeInstance(II)Ljava/text/DateFormat;
  34. move-result-object v0
  35. iput-object v0, p0, Lcom/google/gson/internal/bind/DateTypeAdapter;->localFormat:Ljava/text/DateFormat;
  36. return-void
  37. .end method
  38. .method private declared-synchronized deserializeToDate(Ljava/lang/String;)Ljava/util/Date;
  39. .locals 2
  40. monitor-enter p0
  41. :try_start_0
  42. iget-object v0, p0, Lcom/google/gson/internal/bind/DateTypeAdapter;->localFormat:Ljava/text/DateFormat;
  43. invoke-virtual {v0, p1}, Ljava/text/DateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;
  44. move-result-object p1
  45. :try_end_0
  46. .catch Ljava/text/ParseException; {:try_start_0 .. :try_end_0} :catch_0
  47. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  48. monitor-exit p0
  49. return-object p1
  50. :catchall_0
  51. move-exception p1
  52. goto :goto_0
  53. :catch_0
  54. :try_start_1
  55. iget-object v0, p0, Lcom/google/gson/internal/bind/DateTypeAdapter;->enUsFormat:Ljava/text/DateFormat;
  56. invoke-virtual {v0, p1}, Ljava/text/DateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;
  57. move-result-object p1
  58. :try_end_1
  59. .catch Ljava/text/ParseException; {:try_start_1 .. :try_end_1} :catch_1
  60. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  61. monitor-exit p0
  62. return-object p1
  63. :catch_1
  64. :try_start_2
  65. new-instance v0, Ljava/text/ParsePosition;
  66. const/4 v1, 0x0
  67. invoke-direct {v0, v1}, Ljava/text/ParsePosition;-><init>(I)V
  68. invoke-static {p1, v0}, Lcom/google/gson/internal/bind/util/ISO8601Utils;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
  69. move-result-object p1
  70. :try_end_2
  71. .catch Ljava/text/ParseException; {:try_start_2 .. :try_end_2} :catch_2
  72. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  73. monitor-exit p0
  74. return-object p1
  75. :catch_2
  76. move-exception v0
  77. :try_start_3
  78. new-instance v1, Lcom/google/gson/JsonSyntaxException;
  79. invoke-direct {v1, p1, v0}, Lcom/google/gson/JsonSyntaxException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
  80. throw v1
  81. :try_end_3
  82. .catchall {:try_start_3 .. :try_end_3} :catchall_0
  83. :goto_0
  84. monitor-exit p0
  85. throw p1
  86. .end method
  87. # virtual methods
  88. .method public bridge synthetic read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  89. .locals 0
  90. .annotation system Ldalvik/annotation/Throws;
  91. value = {
  92. Ljava/io/IOException;
  93. }
  94. .end annotation
  95. invoke-virtual {p0, p1}, Lcom/google/gson/internal/bind/DateTypeAdapter;->read(Lcom/google/gson/stream/JsonReader;)Ljava/util/Date;
  96. move-result-object p1
  97. return-object p1
  98. .end method
  99. .method public read(Lcom/google/gson/stream/JsonReader;)Ljava/util/Date;
  100. .locals 2
  101. .annotation system Ldalvik/annotation/Throws;
  102. value = {
  103. Ljava/io/IOException;
  104. }
  105. .end annotation
  106. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->peek()Lcom/google/gson/stream/JsonToken;
  107. move-result-object v0
  108. sget-object v1, Lcom/google/gson/stream/JsonToken;->NULL:Lcom/google/gson/stream/JsonToken;
  109. if-ne v0, v1, :cond_0
  110. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextNull()V
  111. const/4 p1, 0x0
  112. return-object p1
  113. :cond_0
  114. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextString()Ljava/lang/String;
  115. move-result-object p1
  116. invoke-direct {p0, p1}, Lcom/google/gson/internal/bind/DateTypeAdapter;->deserializeToDate(Ljava/lang/String;)Ljava/util/Date;
  117. move-result-object p1
  118. return-object p1
  119. .end method
  120. .method public bridge synthetic write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  121. .locals 0
  122. .annotation system Ldalvik/annotation/Throws;
  123. value = {
  124. Ljava/io/IOException;
  125. }
  126. .end annotation
  127. check-cast p2, Ljava/util/Date;
  128. invoke-virtual {p0, p1, p2}, Lcom/google/gson/internal/bind/DateTypeAdapter;->write(Lcom/google/gson/stream/JsonWriter;Ljava/util/Date;)V
  129. return-void
  130. .end method
  131. .method public declared-synchronized write(Lcom/google/gson/stream/JsonWriter;Ljava/util/Date;)V
  132. .locals 1
  133. .annotation system Ldalvik/annotation/Throws;
  134. value = {
  135. Ljava/io/IOException;
  136. }
  137. .end annotation
  138. monitor-enter p0
  139. if-nez p2, :cond_0
  140. :try_start_0
  141. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->nullValue()Lcom/google/gson/stream/JsonWriter;
  142. :try_end_0
  143. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  144. monitor-exit p0
  145. return-void
  146. :cond_0
  147. :try_start_1
  148. iget-object v0, p0, Lcom/google/gson/internal/bind/DateTypeAdapter;->enUsFormat:Ljava/text/DateFormat;
  149. invoke-virtual {v0, p2}, Ljava/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String;
  150. move-result-object p2
  151. invoke-virtual {p1, p2}, Lcom/google/gson/stream/JsonWriter;->value(Ljava/lang/String;)Lcom/google/gson/stream/JsonWriter;
  152. :try_end_1
  153. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  154. monitor-exit p0
  155. return-void
  156. :catchall_0
  157. move-exception p1
  158. monitor-exit p0
  159. throw p1
  160. .end method