TreeTypeAdapter$SingleTypeFactory.smali 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. .class final Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;
  2. .super Ljava/lang/Object;
  3. .source ""
  4. # interfaces
  5. .implements Lcom/google/gson/TypeAdapterFactory;
  6. # annotations
  7. .annotation system Ldalvik/annotation/EnclosingClass;
  8. value = Lcom/google/gson/internal/bind/TreeTypeAdapter;
  9. .end annotation
  10. .annotation system Ldalvik/annotation/InnerClass;
  11. accessFlags = 0x1a
  12. name = "SingleTypeFactory"
  13. .end annotation
  14. # instance fields
  15. .field private final deserializer:Lcom/google/gson/JsonDeserializer;
  16. .annotation system Ldalvik/annotation/Signature;
  17. value = {
  18. "Lcom/google/gson/JsonDeserializer<",
  19. "*>;"
  20. }
  21. .end annotation
  22. .end field
  23. .field private final exactType:Lcom/google/gson/reflect/TypeToken;
  24. .annotation system Ldalvik/annotation/Signature;
  25. value = {
  26. "Lcom/google/gson/reflect/TypeToken<",
  27. "*>;"
  28. }
  29. .end annotation
  30. .end field
  31. .field private final hierarchyType:Ljava/lang/Class;
  32. .annotation system Ldalvik/annotation/Signature;
  33. value = {
  34. "Ljava/lang/Class<",
  35. "*>;"
  36. }
  37. .end annotation
  38. .end field
  39. .field private final matchRawType:Z
  40. .field private final serializer:Lcom/google/gson/JsonSerializer;
  41. .annotation system Ldalvik/annotation/Signature;
  42. value = {
  43. "Lcom/google/gson/JsonSerializer<",
  44. "*>;"
  45. }
  46. .end annotation
  47. .end field
  48. # direct methods
  49. .method constructor <init>(Ljava/lang/Object;Lcom/google/gson/reflect/TypeToken;ZLjava/lang/Class;)V
  50. .locals 2
  51. .annotation system Ldalvik/annotation/Signature;
  52. value = {
  53. "(",
  54. "Ljava/lang/Object;",
  55. "Lcom/google/gson/reflect/TypeToken<",
  56. "*>;Z",
  57. "Ljava/lang/Class<",
  58. "*>;)V"
  59. }
  60. .end annotation
  61. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  62. instance-of v0, p1, Lcom/google/gson/JsonSerializer;
  63. const/4 v1, 0x0
  64. if-eqz v0, :cond_0
  65. move-object v0, p1
  66. check-cast v0, Lcom/google/gson/JsonSerializer;
  67. goto :goto_0
  68. :cond_0
  69. move-object v0, v1
  70. :goto_0
  71. iput-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->serializer:Lcom/google/gson/JsonSerializer;
  72. instance-of v0, p1, Lcom/google/gson/JsonDeserializer;
  73. if-eqz v0, :cond_1
  74. move-object v1, p1
  75. check-cast v1, Lcom/google/gson/JsonDeserializer;
  76. :cond_1
  77. iput-object v1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->deserializer:Lcom/google/gson/JsonDeserializer;
  78. iget-object p1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->serializer:Lcom/google/gson/JsonSerializer;
  79. if-nez p1, :cond_3
  80. iget-object p1, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->deserializer:Lcom/google/gson/JsonDeserializer;
  81. if-eqz p1, :cond_2
  82. goto :goto_1
  83. :cond_2
  84. const/4 p1, 0x0
  85. goto :goto_2
  86. :cond_3
  87. :goto_1
  88. const/4 p1, 0x1
  89. :goto_2
  90. invoke-static {p1}, Lcom/google/gson/internal/$Gson$Preconditions;->checkArgument(Z)V
  91. iput-object p2, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->exactType:Lcom/google/gson/reflect/TypeToken;
  92. iput-boolean p3, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->matchRawType:Z
  93. iput-object p4, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->hierarchyType:Ljava/lang/Class;
  94. return-void
  95. .end method
  96. # virtual methods
  97. .method public create(Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter;
  98. .locals 7
  99. .annotation system Ldalvik/annotation/Signature;
  100. value = {
  101. "<T:",
  102. "Ljava/lang/Object;",
  103. ">(",
  104. "Lcom/google/gson/Gson;",
  105. "Lcom/google/gson/reflect/TypeToken<",
  106. "TT;>;)",
  107. "Lcom/google/gson/TypeAdapter<",
  108. "TT;>;"
  109. }
  110. .end annotation
  111. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->exactType:Lcom/google/gson/reflect/TypeToken;
  112. if-eqz v0, :cond_2
  113. invoke-virtual {v0, p2}, Lcom/google/gson/reflect/TypeToken;->equals(Ljava/lang/Object;)Z
  114. move-result v0
  115. if-nez v0, :cond_1
  116. iget-boolean v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->matchRawType:Z
  117. if-eqz v0, :cond_0
  118. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->exactType:Lcom/google/gson/reflect/TypeToken;
  119. invoke-virtual {v0}, Lcom/google/gson/reflect/TypeToken;->getType()Ljava/lang/reflect/Type;
  120. move-result-object v0
  121. invoke-virtual {p2}, Lcom/google/gson/reflect/TypeToken;->getRawType()Ljava/lang/Class;
  122. move-result-object v1
  123. if-ne v0, v1, :cond_0
  124. goto :goto_0
  125. :cond_0
  126. const/4 v0, 0x0
  127. goto :goto_1
  128. :cond_1
  129. :goto_0
  130. const/4 v0, 0x1
  131. goto :goto_1
  132. :cond_2
  133. iget-object v0, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->hierarchyType:Ljava/lang/Class;
  134. invoke-virtual {p2}, Lcom/google/gson/reflect/TypeToken;->getRawType()Ljava/lang/Class;
  135. move-result-object v1
  136. invoke-virtual {v0, v1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
  137. move-result v0
  138. :goto_1
  139. if-eqz v0, :cond_3
  140. new-instance v0, Lcom/google/gson/internal/bind/TreeTypeAdapter;
  141. iget-object v2, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->serializer:Lcom/google/gson/JsonSerializer;
  142. iget-object v3, p0, Lcom/google/gson/internal/bind/TreeTypeAdapter$SingleTypeFactory;->deserializer:Lcom/google/gson/JsonDeserializer;
  143. move-object v1, v0
  144. move-object v4, p1
  145. move-object v5, p2
  146. move-object v6, p0
  147. invoke-direct/range {v1 .. v6}, Lcom/google/gson/internal/bind/TreeTypeAdapter;-><init>(Lcom/google/gson/JsonSerializer;Lcom/google/gson/JsonDeserializer;Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;Lcom/google/gson/TypeAdapterFactory;)V
  148. goto :goto_2
  149. :cond_3
  150. const/4 v0, 0x0
  151. :goto_2
  152. return-object v0
  153. .end method