TreeTypeAdapter.smali 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. .class public final Lcom/google/gson/internal/bind/TreeTypeAdapter;
  2. .super Lcom/google/gson/TypeAdapter;
  3. .source ""
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;,
  8. Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;
  9. }
  10. .end annotation
  11. .annotation system Ldalvik/annotation/Signature;
  12. value = {
  13. "<T:",
  14. "Ljava/lang/Object;",
  15. ">",
  16. "Lcom/google/gson/TypeAdapter<",
  17. "TT;>;"
  18. }
  19. .end annotation
  20. # instance fields
  21. .field private final context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
  22. .annotation system Ldalvik/annotation/Signature;
  23. value = {
  24. "Lcom/google/gson/internal/bind/TreeTypeAdapter<",
  25. "TT;>.GsonContextImpl;"
  26. }
  27. .end annotation
  28. .end field
  29. .field private delegate:Lcom/google/gson/TypeAdapter;
  30. .annotation system Ldalvik/annotation/Signature;
  31. value = {
  32. "Lcom/google/gson/TypeAdapter<",
  33. "TT;>;"
  34. }
  35. .end annotation
  36. .end field
  37. .field private final deserializer:Lcom/google/gson/JsonDeserializer;
  38. .annotation system Ldalvik/annotation/Signature;
  39. value = {
  40. "Lcom/google/gson/JsonDeserializer<",
  41. "TT;>;"
  42. }
  43. .end annotation
  44. .end field
  45. .field final gson:Lcom/google/gson/Gson;
  46. .field private final serializer:Lcom/google/gson/JsonSerializer;
  47. .annotation system Ldalvik/annotation/Signature;
  48. value = {
  49. "Lcom/google/gson/JsonSerializer<",
  50. "TT;>;"
  51. }
  52. .end annotation
  53. .end field
  54. .field private final skipPast:Lcom/google/gson/TypeAdapterFactory;
  55. .field private final typeToken:Lcom/google/gson/reflect/TypeToken;
  56. .annotation system Ldalvik/annotation/Signature;
  57. value = {
  58. "Lcom/google/gson/reflect/TypeToken<",
  59. "TT;>;"
  60. }
  61. .end annotation
  62. .end field
  63. # direct methods
  64. .method public constructor <init>(Lcom/google/gson/JsonSerializer;Lcom/google/gson/JsonDeserializer;Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;Lcom/google/gson/TypeAdapterFactory;)V
  65. .locals 2
  66. .annotation system Ldalvik/annotation/Signature;
  67. value = {
  68. "(",
  69. "Lcom/google/gson/JsonSerializer<",
  70. "TT;>;",
  71. "Lcom/google/gson/JsonDeserializer<",
  72. "TT;>;",
  73. "Lcom/google/gson/Gson;",
  74. "Lcom/google/gson/reflect/TypeToken<",
  75. "TT;>;",
  76. "Lcom/google/gson/TypeAdapterFactory;",
  77. ")V"
  78. }
  79. .end annotation
  80. invoke-direct {p0}, Lcom/google/gson/TypeAdapter;-><init>()V
  81. new-instance v0, Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
  82. const/4 v1, 0x0
  83. invoke-direct {v0, p0, v1}, Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;-><init>(Lcom/google/gson/internal/bind/TreeTypeAdapter;Lcom/google/gson/internal/bind/TreeTypeAdapter$1;)V
  84. iput-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
  85. iput-object p1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->serializer:Lcom/google/gson/JsonSerializer;
  86. iput-object p2, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->deserializer:Lcom/google/gson/JsonDeserializer;
  87. iput-object p3, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->gson:Lcom/google/gson/Gson;
  88. iput-object p4, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->typeToken:Lcom/google/gson/reflect/TypeToken;
  89. iput-object p5, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->skipPast:Lcom/google/gson/TypeAdapterFactory;
  90. return-void
  91. .end method
  92. .method private delegate()Lcom/google/gson/TypeAdapter;
  93. .locals 3
  94. .annotation system Ldalvik/annotation/Signature;
  95. value = {
  96. "()",
  97. "Lcom/google/gson/TypeAdapter<",
  98. "TT;>;"
  99. }
  100. .end annotation
  101. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->delegate:Lcom/google/gson/TypeAdapter;
  102. if-eqz v0, :cond_0
  103. goto :goto_0
  104. :cond_0
  105. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->gson:Lcom/google/gson/Gson;
  106. iget-object v1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->skipPast:Lcom/google/gson/TypeAdapterFactory;
  107. iget-object v2, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->typeToken:Lcom/google/gson/reflect/TypeToken;
  108. invoke-virtual {v0, v1, v2}, Lcom/google/gson/Gson;->getDelegateAdapter(Lcom/google/gson/TypeAdapterFactory;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter;
  109. move-result-object v0
  110. iput-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->delegate:Lcom/google/gson/TypeAdapter;
  111. :goto_0
  112. return-object v0
  113. .end method
  114. .method public static newFactory(Lcom/google/gson/reflect/TypeToken;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
  115. .locals 3
  116. .annotation system Ldalvik/annotation/Signature;
  117. value = {
  118. "(",
  119. "Lcom/google/gson/reflect/TypeToken<",
  120. "*>;",
  121. "Ljava/lang/Object;",
  122. ")",
  123. "Lcom/google/gson/TypeAdapterFactory;"
  124. }
  125. .end annotation
  126. new-instance v0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;
  127. const/4 v1, 0x0
  128. const/4 v2, 0x0
  129. invoke-direct {v0, p1, p0, v1, v2}, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;-><init>(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
  130. return-object v0
  131. .end method
  132. .method public static newFactoryWithMatchRawType(Lcom/google/gson/reflect/TypeToken;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
  133. .locals 3
  134. .annotation system Ldalvik/annotation/Signature;
  135. value = {
  136. "(",
  137. "Lcom/google/gson/reflect/TypeToken<",
  138. "*>;",
  139. "Ljava/lang/Object;",
  140. ")",
  141. "Lcom/google/gson/TypeAdapterFactory;"
  142. }
  143. .end annotation
  144. invoke-virtual {p0}, Lcom/google/gson/reflect/TypeToken;->getType()Ljava/lang/reflect/Type;
  145. move-result-object v0
  146. invoke-virtual {p0}, Lcom/google/gson/reflect/TypeToken;->getRawType()Ljava/lang/Class;
  147. move-result-object v1
  148. if-ne v0, v1, :cond_0
  149. const/4 v0, 0x1
  150. goto :goto_0
  151. :cond_0
  152. const/4 v0, 0x0
  153. :goto_0
  154. new-instance v1, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;
  155. const/4 v2, 0x0
  156. invoke-direct {v1, p1, p0, v0, v2}, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;-><init>(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
  157. return-object v1
  158. .end method
  159. .method public static newTypeHierarchyFactory(Ljava/lang/Class;Ljava/lang/Object;)Lcom/google/gson/TypeAdapterFactory;
  160. .locals 3
  161. .annotation system Ldalvik/annotation/Signature;
  162. value = {
  163. "(",
  164. "Ljava/lang/Class<",
  165. "*>;",
  166. "Ljava/lang/Object;",
  167. ")",
  168. "Lcom/google/gson/TypeAdapterFactory;"
  169. }
  170. .end annotation
  171. new-instance v0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;
  172. const/4 v1, 0x0
  173. const/4 v2, 0x0
  174. invoke-direct {v0, p1, v1, v2, p0}, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;-><init>(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
  175. return-object v0
  176. .end method
  177. # virtual methods
  178. .method public read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  179. .locals 3
  180. .annotation system Ldalvik/annotation/Signature;
  181. value = {
  182. "(",
  183. "Lcom/google/gson/stream/JsonReader;",
  184. ")TT;"
  185. }
  186. .end annotation
  187. .annotation system Ldalvik/annotation/Throws;
  188. value = {
  189. Ljava/io/IOException;
  190. }
  191. .end annotation
  192. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->deserializer:Lcom/google/gson/JsonDeserializer;
  193. if-nez v0, :cond_0
  194. invoke-direct {p0}, Lcom/google/gson/internal/bind/TreeTypeAdapter;->delegate()Lcom/google/gson/TypeAdapter;
  195. move-result-object v0
  196. invoke-virtual {v0, p1}, Lcom/google/gson/TypeAdapter;->read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  197. move-result-object p1
  198. return-object p1
  199. :cond_0
  200. invoke-static {p1}, Lcom/google/gson/internal/Streams;->parse(Lcom/google/gson/stream/JsonReader;)Lcom/google/gson/JsonElement;
  201. move-result-object p1
  202. invoke-virtual {p1}, Lcom/google/gson/JsonElement;->isJsonNull()Z
  203. move-result v0
  204. if-eqz v0, :cond_1
  205. const/4 p1, 0x0
  206. return-object p1
  207. :cond_1
  208. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->deserializer:Lcom/google/gson/JsonDeserializer;
  209. iget-object v1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->typeToken:Lcom/google/gson/reflect/TypeToken;
  210. invoke-virtual {v1}, Lcom/google/gson/reflect/TypeToken;->getType()Ljava/lang/reflect/Type;
  211. move-result-object v1
  212. iget-object v2, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
  213. invoke-interface {v0, p1, v1, v2}, Lcom/google/gson/JsonDeserializer;->deserialize(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/lang/Object;
  214. move-result-object p1
  215. return-object p1
  216. .end method
  217. .method public write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  218. .locals 3
  219. .annotation system Ldalvik/annotation/Signature;
  220. value = {
  221. "(",
  222. "Lcom/google/gson/stream/JsonWriter;",
  223. "TT;)V"
  224. }
  225. .end annotation
  226. .annotation system Ldalvik/annotation/Throws;
  227. value = {
  228. Ljava/io/IOException;
  229. }
  230. .end annotation
  231. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->serializer:Lcom/google/gson/JsonSerializer;
  232. if-nez v0, :cond_0
  233. invoke-direct {p0}, Lcom/google/gson/internal/bind/TreeTypeAdapter;->delegate()Lcom/google/gson/TypeAdapter;
  234. move-result-object v0
  235. invoke-virtual {v0, p1, p2}, Lcom/google/gson/TypeAdapter;->write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  236. return-void
  237. :cond_0
  238. if-nez p2, :cond_1
  239. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->nullValue()Lcom/google/gson/stream/JsonWriter;
  240. return-void
  241. :cond_1
  242. iget-object v1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->typeToken:Lcom/google/gson/reflect/TypeToken;
  243. invoke-virtual {v1}, Lcom/google/gson/reflect/TypeToken;->getType()Ljava/lang/reflect/Type;
  244. move-result-object v1
  245. iget-object v2, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter;->context:Lcom/google/gson/internal/bind/TreeTypeAdapter$GsonContextImpl;
  246. invoke-interface {v0, p2, v1, v2}, Lcom/google/gson/JsonSerializer;->serialize(Ljava/lang/Object;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement;
  247. move-result-object p2
  248. invoke-static {p2, p1}, Lcom/google/gson/internal/Streams;->write(Lcom/google/gson/JsonElement;Lcom/google/gson/stream/JsonWriter;)V
  249. return-void
  250. .end method