ReflectiveTypeAdapterFactory$Adapter.smali 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. .class public final Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$Adapter;
  2. .super Lcom/google/gson/TypeAdapter;
  3. .source ""
  4. # annotations
  5. .annotation system Ldalvik/annotation/EnclosingClass;
  6. value = Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory;
  7. .end annotation
  8. .annotation system Ldalvik/annotation/InnerClass;
  9. accessFlags = 0x19
  10. name = "Adapter"
  11. .end annotation
  12. .annotation system Ldalvik/annotation/Signature;
  13. value = {
  14. "<T:",
  15. "Ljava/lang/Object;",
  16. ">",
  17. "Lcom/google/gson/TypeAdapter<",
  18. "TT;>;"
  19. }
  20. .end annotation
  21. # instance fields
  22. .field private final boundFields:Ljava/util/Map;
  23. .annotation system Ldalvik/annotation/Signature;
  24. value = {
  25. "Ljava/util/Map<",
  26. "Ljava/lang/String;",
  27. "Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;",
  28. ">;"
  29. }
  30. .end annotation
  31. .end field
  32. .field private final constructor:Lcom/google/gson/internal/ObjectConstructor;
  33. .annotation system Ldalvik/annotation/Signature;
  34. value = {
  35. "Lcom/google/gson/internal/ObjectConstructor<",
  36. "TT;>;"
  37. }
  38. .end annotation
  39. .end field
  40. # direct methods
  41. .method constructor <init>(Lcom/google/gson/internal/ObjectConstructor;Ljava/util/Map;)V
  42. .locals 0
  43. .annotation system Ldalvik/annotation/Signature;
  44. value = {
  45. "(",
  46. "Lcom/google/gson/internal/ObjectConstructor<",
  47. "TT;>;",
  48. "Ljava/util/Map<",
  49. "Ljava/lang/String;",
  50. "Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;",
  51. ">;)V"
  52. }
  53. .end annotation
  54. invoke-direct {p0}, Lcom/google/gson/TypeAdapter;-><init>()V
  55. iput-object p1, p0, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$Adapter;->constructor:Lcom/google/gson/internal/ObjectConstructor;
  56. iput-object p2, p0, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$Adapter;->boundFields:Ljava/util/Map;
  57. return-void
  58. .end method
  59. # virtual methods
  60. .method public read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  61. .locals 3
  62. .annotation system Ldalvik/annotation/Signature;
  63. value = {
  64. "(",
  65. "Lcom/google/gson/stream/JsonReader;",
  66. ")TT;"
  67. }
  68. .end annotation
  69. .annotation system Ldalvik/annotation/Throws;
  70. value = {
  71. Ljava/io/IOException;
  72. }
  73. .end annotation
  74. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->peek()Lcom/google/gson/stream/JsonToken;
  75. move-result-object v0
  76. sget-object v1, Lcom/google/gson/stream/JsonToken;->NULL:Lcom/google/gson/stream/JsonToken;
  77. if-ne v0, v1, :cond_0
  78. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextNull()V
  79. const/4 p1, 0x0
  80. return-object p1
  81. :cond_0
  82. iget-object v0, p0, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$Adapter;->constructor:Lcom/google/gson/internal/ObjectConstructor;
  83. invoke-interface {v0}, Lcom/google/gson/internal/ObjectConstructor;->construct()Ljava/lang/Object;
  84. move-result-object v0
  85. :try_start_0
  86. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->beginObject()V
  87. :goto_0
  88. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->hasNext()Z
  89. move-result v1
  90. if-eqz v1, :cond_3
  91. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextName()Ljava/lang/String;
  92. move-result-object v1
  93. iget-object v2, p0, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$Adapter;->boundFields:Ljava/util/Map;
  94. invoke-interface {v2, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
  95. move-result-object v1
  96. check-cast v1, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;
  97. if-eqz v1, :cond_2
  98. iget-boolean v2, v1, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;->deserialized:Z
  99. if-nez v2, :cond_1
  100. goto :goto_1
  101. :cond_1
  102. invoke-virtual {v1, p1, v0}, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;->read(Lcom/google/gson/stream/JsonReader;Ljava/lang/Object;)V
  103. goto :goto_0
  104. :cond_2
  105. :goto_1
  106. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->skipValue()V
  107. :try_end_0
  108. .catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_0} :catch_1
  109. .catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_0} :catch_0
  110. goto :goto_0
  111. :cond_3
  112. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->endObject()V
  113. return-object v0
  114. :catch_0
  115. move-exception p1
  116. new-instance v0, Ljava/lang/AssertionError;
  117. invoke-direct {v0, p1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
  118. throw v0
  119. :catch_1
  120. move-exception p1
  121. new-instance v0, Lcom/google/gson/JsonSyntaxException;
  122. invoke-direct {v0, p1}, Lcom/google/gson/JsonSyntaxException;-><init>(Ljava/lang/Throwable;)V
  123. goto :goto_3
  124. :goto_2
  125. throw v0
  126. :goto_3
  127. goto :goto_2
  128. .end method
  129. .method public write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  130. .locals 3
  131. .annotation system Ldalvik/annotation/Signature;
  132. value = {
  133. "(",
  134. "Lcom/google/gson/stream/JsonWriter;",
  135. "TT;)V"
  136. }
  137. .end annotation
  138. .annotation system Ldalvik/annotation/Throws;
  139. value = {
  140. Ljava/io/IOException;
  141. }
  142. .end annotation
  143. if-nez p2, :cond_0
  144. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->nullValue()Lcom/google/gson/stream/JsonWriter;
  145. return-void
  146. :cond_0
  147. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->beginObject()Lcom/google/gson/stream/JsonWriter;
  148. :try_start_0
  149. iget-object v0, p0, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$Adapter;->boundFields:Ljava/util/Map;
  150. invoke-interface {v0}, Ljava/util/Map;->values()Ljava/util/Collection;
  151. move-result-object v0
  152. invoke-interface {v0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
  153. move-result-object v0
  154. :cond_1
  155. :goto_0
  156. invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
  157. move-result v1
  158. if-eqz v1, :cond_2
  159. invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  160. move-result-object v1
  161. check-cast v1, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;
  162. invoke-virtual {v1, p2}, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;->writeField(Ljava/lang/Object;)Z
  163. move-result v2
  164. if-eqz v2, :cond_1
  165. iget-object v2, v1, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;->name:Ljava/lang/String;
  166. invoke-virtual {p1, v2}, Lcom/google/gson/stream/JsonWriter;->name(Ljava/lang/String;)Lcom/google/gson/stream/JsonWriter;
  167. invoke-virtual {v1, p1, p2}, Lcom/google/gson/internal/bind/ReflectiveTypeAdapterFactory$BoundField;->write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  168. :try_end_0
  169. .catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_0} :catch_0
  170. goto :goto_0
  171. :cond_2
  172. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->endObject()Lcom/google/gson/stream/JsonWriter;
  173. return-void
  174. :catch_0
  175. move-exception p1
  176. new-instance p2, Ljava/lang/AssertionError;
  177. invoke-direct {p2, p1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
  178. goto :goto_2
  179. :goto_1
  180. throw p2
  181. :goto_2
  182. goto :goto_1
  183. .end method