ObjectTypeAdapter.smali 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. .class public final Lcom/google/gson/internal/bind/ObjectTypeAdapter;
  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/lang/Object;",
  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 gson:Lcom/google/gson/Gson;
  16. # direct methods
  17. .method static constructor <clinit>()V
  18. .locals 1
  19. new-instance v0, Lcom/google/gson/internal/bind/ObjectTypeAdapter$1;
  20. invoke-direct {v0}, Lcom/google/gson/internal/bind/ObjectTypeAdapter$1;-><init>()V
  21. sput-object v0, Lcom/google/gson/internal/bind/ObjectTypeAdapter;->FACTORY:Lcom/google/gson/TypeAdapterFactory;
  22. return-void
  23. .end method
  24. .method constructor <init>(Lcom/google/gson/Gson;)V
  25. .locals 0
  26. invoke-direct {p0}, Lcom/google/gson/TypeAdapter;-><init>()V
  27. iput-object p1, p0, Lcom/google/gson/internal/bind/ObjectTypeAdapter;->gson:Lcom/google/gson/Gson;
  28. return-void
  29. .end method
  30. # virtual methods
  31. .method public read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  32. .locals 3
  33. .annotation system Ldalvik/annotation/Throws;
  34. value = {
  35. Ljava/io/IOException;
  36. }
  37. .end annotation
  38. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->peek()Lcom/google/gson/stream/JsonToken;
  39. move-result-object v0
  40. sget-object v1, Lcom/google/gson/internal/bind/ObjectTypeAdapter$2;->$SwitchMap$com$google$gson$stream$JsonToken:[I
  41. invoke-virtual {v0}, Ljava/lang/Enum;->ordinal()I
  42. move-result v0
  43. aget v0, v1, v0
  44. packed-switch v0, :pswitch_data_0
  45. new-instance p1, Ljava/lang/IllegalStateException;
  46. invoke-direct {p1}, Ljava/lang/IllegalStateException;-><init>()V
  47. throw p1
  48. :pswitch_0
  49. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextNull()V
  50. const/4 p1, 0x0
  51. return-object p1
  52. :pswitch_1
  53. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextBoolean()Z
  54. move-result p1
  55. invoke-static {p1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
  56. move-result-object p1
  57. return-object p1
  58. :pswitch_2
  59. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextDouble()D
  60. move-result-wide v0
  61. invoke-static {v0, v1}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
  62. move-result-object p1
  63. return-object p1
  64. :pswitch_3
  65. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextString()Ljava/lang/String;
  66. move-result-object p1
  67. return-object p1
  68. :pswitch_4
  69. new-instance v0, Lcom/google/gson/internal/LinkedTreeMap;
  70. invoke-direct {v0}, Lcom/google/gson/internal/LinkedTreeMap;-><init>()V
  71. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->beginObject()V
  72. :goto_0
  73. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->hasNext()Z
  74. move-result v1
  75. if-eqz v1, :cond_0
  76. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->nextName()Ljava/lang/String;
  77. move-result-object v1
  78. invoke-virtual {p0, p1}, Lcom/google/gson/internal/bind/ObjectTypeAdapter;->read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  79. move-result-object v2
  80. invoke-interface {v0, v1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  81. goto :goto_0
  82. :cond_0
  83. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->endObject()V
  84. return-object v0
  85. :pswitch_5
  86. new-instance v0, Ljava/util/ArrayList;
  87. invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
  88. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->beginArray()V
  89. :goto_1
  90. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->hasNext()Z
  91. move-result v1
  92. if-eqz v1, :cond_1
  93. invoke-virtual {p0, p1}, Lcom/google/gson/internal/bind/ObjectTypeAdapter;->read(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;
  94. move-result-object v1
  95. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  96. goto :goto_1
  97. :cond_1
  98. invoke-virtual {p1}, Lcom/google/gson/stream/JsonReader;->endArray()V
  99. return-object v0
  100. nop
  101. :pswitch_data_0
  102. .packed-switch 0x1
  103. :pswitch_5
  104. :pswitch_4
  105. :pswitch_3
  106. :pswitch_2
  107. :pswitch_1
  108. :pswitch_0
  109. .end packed-switch
  110. .end method
  111. .method public write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  112. .locals 2
  113. .annotation system Ldalvik/annotation/Throws;
  114. value = {
  115. Ljava/io/IOException;
  116. }
  117. .end annotation
  118. if-nez p2, :cond_0
  119. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->nullValue()Lcom/google/gson/stream/JsonWriter;
  120. return-void
  121. :cond_0
  122. iget-object v0, p0, Lcom/google/gson/internal/bind/ObjectTypeAdapter;->gson:Lcom/google/gson/Gson;
  123. invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
  124. move-result-object v1
  125. invoke-virtual {v0, v1}, Lcom/google/gson/Gson;->getAdapter(Ljava/lang/Class;)Lcom/google/gson/TypeAdapter;
  126. move-result-object v0
  127. instance-of v1, v0, Lcom/google/gson/internal/bind/ObjectTypeAdapter;
  128. if-eqz v1, :cond_1
  129. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->beginObject()Lcom/google/gson/stream/JsonWriter;
  130. invoke-virtual {p1}, Lcom/google/gson/stream/JsonWriter;->endObject()Lcom/google/gson/stream/JsonWriter;
  131. return-void
  132. :cond_1
  133. invoke-virtual {v0, p1, p2}, Lcom/google/gson/TypeAdapter;->write(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V
  134. return-void
  135. .end method