Excluder.smali 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997
  1. .class public final Lcom/google/gson/internal/Excluder;
  2. .super Ljava/lang/Object;
  3. .source "Excluder.java"
  4. # interfaces
  5. .implements Lcom/google/gson/TypeAdapterFactory;
  6. .implements Ljava/lang/Cloneable;
  7. # static fields
  8. .field public static final DEFAULT:Lcom/google/gson/internal/Excluder;
  9. .field private static final IGNORE_VERSIONS:D = -1.0
  10. # instance fields
  11. .field private deserializationStrategies:Ljava/util/List;
  12. .annotation system Ldalvik/annotation/Signature;
  13. value = {
  14. "Ljava/util/List<",
  15. "Lcom/google/gson/ExclusionStrategy;",
  16. ">;"
  17. }
  18. .end annotation
  19. .end field
  20. .field private modifiers:I
  21. .field private requireExpose:Z
  22. .field private serializationStrategies:Ljava/util/List;
  23. .annotation system Ldalvik/annotation/Signature;
  24. value = {
  25. "Ljava/util/List<",
  26. "Lcom/google/gson/ExclusionStrategy;",
  27. ">;"
  28. }
  29. .end annotation
  30. .end field
  31. .field private serializeInnerClasses:Z
  32. .field private version:D
  33. # direct methods
  34. .method static constructor <clinit>()V
  35. .locals 1
  36. .line 52
  37. new-instance v0, Lcom/google/gson/internal/Excluder;
  38. invoke-direct {v0}, Lcom/google/gson/internal/Excluder;-><init>()V
  39. sput-object v0, Lcom/google/gson/internal/Excluder;->DEFAULT:Lcom/google/gson/internal/Excluder;
  40. return-void
  41. .end method
  42. .method public constructor <init>()V
  43. .locals 2
  44. .line 50
  45. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  46. .line 54
  47. const-wide/high16 v0, -0x4010000000000000L # -1.0
  48. iput-wide v0, p0, Lcom/google/gson/internal/Excluder;->version:D
  49. .line 55
  50. const/16 v0, 0x88
  51. iput v0, p0, Lcom/google/gson/internal/Excluder;->modifiers:I
  52. .line 56
  53. const/4 v0, 0x1
  54. iput-boolean v0, p0, Lcom/google/gson/internal/Excluder;->serializeInnerClasses:Z
  55. .line 58
  56. invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;
  57. move-result-object v0
  58. iput-object v0, p0, Lcom/google/gson/internal/Excluder;->serializationStrategies:Ljava/util/List;
  59. .line 59
  60. invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;
  61. move-result-object v0
  62. iput-object v0, p0, Lcom/google/gson/internal/Excluder;->deserializationStrategies:Ljava/util/List;
  63. return-void
  64. .end method
  65. .method private excludeClassChecks(Ljava/lang/Class;)Z
  66. .locals 6
  67. .annotation system Ldalvik/annotation/Signature;
  68. value = {
  69. "(",
  70. "Ljava/lang/Class<",
  71. "*>;)Z"
  72. }
  73. .end annotation
  74. .line 194
  75. .local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  76. iget-wide v0, p0, Lcom/google/gson/internal/Excluder;->version:D
  77. const/4 v2, 0x1
  78. const-wide/high16 v3, -0x4010000000000000L # -1.0
  79. cmpl-double v5, v0, v3
  80. if-eqz v5, :cond_0
  81. const-class v0, Lcom/google/gson/annotations/Since;
  82. invoke-virtual {p1, v0}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
  83. move-result-object v0
  84. check-cast v0, Lcom/google/gson/annotations/Since;
  85. const-class v1, Lcom/google/gson/annotations/Until;
  86. invoke-virtual {p1, v1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
  87. move-result-object v1
  88. check-cast v1, Lcom/google/gson/annotations/Until;
  89. invoke-direct {p0, v0, v1}, Lcom/google/gson/internal/Excluder;->isValidVersion(Lcom/google/gson/annotations/Since;Lcom/google/gson/annotations/Until;)Z
  90. move-result v0
  91. if-nez v0, :cond_0
  92. .line 195
  93. return v2
  94. .line 198
  95. :cond_0
  96. iget-boolean v0, p0, Lcom/google/gson/internal/Excluder;->serializeInnerClasses:Z
  97. if-nez v0, :cond_1
  98. invoke-direct {p0, p1}, Lcom/google/gson/internal/Excluder;->isInnerClass(Ljava/lang/Class;)Z
  99. move-result v0
  100. if-eqz v0, :cond_1
  101. .line 199
  102. return v2
  103. .line 202
  104. :cond_1
  105. invoke-direct {p0, p1}, Lcom/google/gson/internal/Excluder;->isAnonymousOrLocal(Ljava/lang/Class;)Z
  106. move-result v0
  107. if-eqz v0, :cond_2
  108. .line 203
  109. return v2
  110. .line 206
  111. :cond_2
  112. const/4 v0, 0x0
  113. return v0
  114. .end method
  115. .method private excludeClassInStrategy(Ljava/lang/Class;Z)Z
  116. .locals 4
  117. .param p2, "serialize" # Z
  118. .annotation system Ldalvik/annotation/Signature;
  119. value = {
  120. "(",
  121. "Ljava/lang/Class<",
  122. "*>;Z)Z"
  123. }
  124. .end annotation
  125. .line 215
  126. .local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  127. if-eqz p2, :cond_0
  128. iget-object v0, p0, Lcom/google/gson/internal/Excluder;->serializationStrategies:Ljava/util/List;
  129. goto :goto_0
  130. :cond_0
  131. iget-object v0, p0, Lcom/google/gson/internal/Excluder;->deserializationStrategies:Ljava/util/List;
  132. .line 216
  133. .local v0, "list":Ljava/util/List;, "Ljava/util/List<Lcom/google/gson/ExclusionStrategy;>;"
  134. :goto_0
  135. invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  136. move-result-object v1
  137. :goto_1
  138. invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
  139. move-result v2
  140. if-eqz v2, :cond_2
  141. invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  142. move-result-object v2
  143. check-cast v2, Lcom/google/gson/ExclusionStrategy;
  144. .line 217
  145. .local v2, "exclusionStrategy":Lcom/google/gson/ExclusionStrategy;
  146. invoke-interface {v2, p1}, Lcom/google/gson/ExclusionStrategy;->shouldSkipClass(Ljava/lang/Class;)Z
  147. move-result v3
  148. if-eqz v3, :cond_1
  149. .line 218
  150. const/4 v1, 0x1
  151. return v1
  152. .line 220
  153. .end local v2 # "exclusionStrategy":Lcom/google/gson/ExclusionStrategy;
  154. :cond_1
  155. goto :goto_1
  156. .line 221
  157. :cond_2
  158. const/4 v1, 0x0
  159. return v1
  160. .end method
  161. .method private isAnonymousOrLocal(Ljava/lang/Class;)Z
  162. .locals 1
  163. .annotation system Ldalvik/annotation/Signature;
  164. value = {
  165. "(",
  166. "Ljava/lang/Class<",
  167. "*>;)Z"
  168. }
  169. .end annotation
  170. .line 225
  171. .local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  172. const-class v0, Ljava/lang/Enum;
  173. invoke-virtual {v0, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z
  174. move-result v0
  175. if-nez v0, :cond_1
  176. .line 226
  177. invoke-virtual {p1}, Ljava/lang/Class;->isAnonymousClass()Z
  178. move-result v0
  179. if-nez v0, :cond_0
  180. invoke-virtual {p1}, Ljava/lang/Class;->isLocalClass()Z
  181. move-result v0
  182. if-eqz v0, :cond_1
  183. :cond_0
  184. const/4 v0, 0x1
  185. goto :goto_0
  186. :cond_1
  187. const/4 v0, 0x0
  188. .line 225
  189. :goto_0
  190. return v0
  191. .end method
  192. .method private isInnerClass(Ljava/lang/Class;)Z
  193. .locals 1
  194. .annotation system Ldalvik/annotation/Signature;
  195. value = {
  196. "(",
  197. "Ljava/lang/Class<",
  198. "*>;)Z"
  199. }
  200. .end annotation
  201. .line 230
  202. .local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  203. invoke-virtual {p1}, Ljava/lang/Class;->isMemberClass()Z
  204. move-result v0
  205. if-eqz v0, :cond_0
  206. invoke-direct {p0, p1}, Lcom/google/gson/internal/Excluder;->isStatic(Ljava/lang/Class;)Z
  207. move-result v0
  208. if-nez v0, :cond_0
  209. const/4 v0, 0x1
  210. goto :goto_0
  211. :cond_0
  212. const/4 v0, 0x0
  213. :goto_0
  214. return v0
  215. .end method
  216. .method private isStatic(Ljava/lang/Class;)Z
  217. .locals 1
  218. .annotation system Ldalvik/annotation/Signature;
  219. value = {
  220. "(",
  221. "Ljava/lang/Class<",
  222. "*>;)Z"
  223. }
  224. .end annotation
  225. .line 234
  226. .local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  227. invoke-virtual {p1}, Ljava/lang/Class;->getModifiers()I
  228. move-result v0
  229. and-int/lit8 v0, v0, 0x8
  230. if-eqz v0, :cond_0
  231. const/4 v0, 0x1
  232. goto :goto_0
  233. :cond_0
  234. const/4 v0, 0x0
  235. :goto_0
  236. return v0
  237. .end method
  238. .method private isValidSince(Lcom/google/gson/annotations/Since;)Z
  239. .locals 5
  240. .param p1, "annotation" # Lcom/google/gson/annotations/Since;
  241. .line 242
  242. if-eqz p1, :cond_0
  243. .line 243
  244. invoke-interface {p1}, Lcom/google/gson/annotations/Since;->value()D
  245. move-result-wide v0
  246. .line 244
  247. .local v0, "annotationVersion":D
  248. iget-wide v2, p0, Lcom/google/gson/internal/Excluder;->version:D
  249. cmpl-double v4, v0, v2
  250. if-lez v4, :cond_0
  251. .line 245
  252. const/4 v2, 0x0
  253. return v2
  254. .line 248
  255. .end local v0 # "annotationVersion":D
  256. :cond_0
  257. const/4 v0, 0x1
  258. return v0
  259. .end method
  260. .method private isValidUntil(Lcom/google/gson/annotations/Until;)Z
  261. .locals 5
  262. .param p1, "annotation" # Lcom/google/gson/annotations/Until;
  263. .line 252
  264. if-eqz p1, :cond_0
  265. .line 253
  266. invoke-interface {p1}, Lcom/google/gson/annotations/Until;->value()D
  267. move-result-wide v0
  268. .line 254
  269. .local v0, "annotationVersion":D
  270. iget-wide v2, p0, Lcom/google/gson/internal/Excluder;->version:D
  271. cmpg-double v4, v0, v2
  272. if-gtz v4, :cond_0
  273. .line 255
  274. const/4 v2, 0x0
  275. return v2
  276. .line 258
  277. .end local v0 # "annotationVersion":D
  278. :cond_0
  279. const/4 v0, 0x1
  280. return v0
  281. .end method
  282. .method private isValidVersion(Lcom/google/gson/annotations/Since;Lcom/google/gson/annotations/Until;)Z
  283. .locals 1
  284. .param p1, "since" # Lcom/google/gson/annotations/Since;
  285. .param p2, "until" # Lcom/google/gson/annotations/Until;
  286. .line 238
  287. invoke-direct {p0, p1}, Lcom/google/gson/internal/Excluder;->isValidSince(Lcom/google/gson/annotations/Since;)Z
  288. move-result v0
  289. if-eqz v0, :cond_0
  290. invoke-direct {p0, p2}, Lcom/google/gson/internal/Excluder;->isValidUntil(Lcom/google/gson/annotations/Until;)Z
  291. move-result v0
  292. if-eqz v0, :cond_0
  293. const/4 v0, 0x1
  294. goto :goto_0
  295. :cond_0
  296. const/4 v0, 0x0
  297. :goto_0
  298. return v0
  299. .end method
  300. # virtual methods
  301. .method protected clone()Lcom/google/gson/internal/Excluder;
  302. .locals 2
  303. .line 63
  304. :try_start_0
  305. invoke-super {p0}, Ljava/lang/Object;->clone()Ljava/lang/Object;
  306. move-result-object v0
  307. check-cast v0, Lcom/google/gson/internal/Excluder;
  308. :try_end_0
  309. .catch Ljava/lang/CloneNotSupportedException; {:try_start_0 .. :try_end_0} :catch_0
  310. return-object v0
  311. .line 64
  312. :catch_0
  313. move-exception v0
  314. .line 65
  315. .local v0, "e":Ljava/lang/CloneNotSupportedException;
  316. new-instance v1, Ljava/lang/AssertionError;
  317. invoke-direct {v1, v0}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
  318. throw v1
  319. .end method
  320. .method protected bridge synthetic clone()Ljava/lang/Object;
  321. .locals 1
  322. .annotation system Ldalvik/annotation/Throws;
  323. value = {
  324. Ljava/lang/CloneNotSupportedException;
  325. }
  326. .end annotation
  327. .line 50
  328. invoke-virtual {p0}, Lcom/google/gson/internal/Excluder;->clone()Lcom/google/gson/internal/Excluder;
  329. move-result-object v0
  330. return-object v0
  331. .end method
  332. .method public create(Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter;
  333. .locals 11
  334. .param p1, "gson" # Lcom/google/gson/Gson;
  335. .annotation system Ldalvik/annotation/Signature;
  336. value = {
  337. "<T:",
  338. "Ljava/lang/Object;",
  339. ">(",
  340. "Lcom/google/gson/Gson;",
  341. "Lcom/google/gson/reflect/TypeToken<",
  342. "TT;>;)",
  343. "Lcom/google/gson/TypeAdapter<",
  344. "TT;>;"
  345. }
  346. .end annotation
  347. .line 112
  348. .local p2, "type":Lcom/google/gson/reflect/TypeToken;, "Lcom/google/gson/reflect/TypeToken<TT;>;"
  349. invoke-virtual {p2}, Lcom/google/gson/reflect/TypeToken;->getRawType()Ljava/lang/Class;
  350. move-result-object v0
  351. .line 113
  352. .local v0, "rawType":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  353. invoke-direct {p0, v0}, Lcom/google/gson/internal/Excluder;->excludeClassChecks(Ljava/lang/Class;)Z
  354. move-result v1
  355. .line 115
  356. .local v1, "excludeClass":Z
  357. const/4 v2, 0x0
  358. const/4 v3, 0x1
  359. if-nez v1, :cond_1
  360. invoke-direct {p0, v0, v3}, Lcom/google/gson/internal/Excluder;->excludeClassInStrategy(Ljava/lang/Class;Z)Z
  361. move-result v4
  362. if-eqz v4, :cond_0
  363. goto :goto_0
  364. :cond_0
  365. const/4 v4, 0x0
  366. goto :goto_1
  367. :cond_1
  368. :goto_0
  369. const/4 v4, 0x1
  370. .line 116
  371. .local v4, "skipSerialize":Z
  372. :goto_1
  373. if-nez v1, :cond_2
  374. invoke-direct {p0, v0, v2}, Lcom/google/gson/internal/Excluder;->excludeClassInStrategy(Ljava/lang/Class;Z)Z
  375. move-result v5
  376. if-eqz v5, :cond_3
  377. :cond_2
  378. const/4 v2, 0x1
  379. .line 118
  380. .local v2, "skipDeserialize":Z
  381. :cond_3
  382. if-nez v4, :cond_4
  383. if-nez v2, :cond_4
  384. .line 119
  385. const/4 v3, 0x0
  386. return-object v3
  387. .line 122
  388. :cond_4
  389. new-instance v3, Lcom/google/gson/internal/Excluder$1;
  390. move-object v5, v3
  391. move-object v6, p0
  392. move v7, v2
  393. move v8, v4
  394. move-object v9, p1
  395. move-object v10, p2
  396. invoke-direct/range {v5 .. v10}, Lcom/google/gson/internal/Excluder$1;-><init>(Lcom/google/gson/internal/Excluder;ZZLcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)V
  397. return-object v3
  398. .end method
  399. .method public disableInnerClassSerialization()Lcom/google/gson/internal/Excluder;
  400. .locals 2
  401. .line 85
  402. invoke-virtual {p0}, Lcom/google/gson/internal/Excluder;->clone()Lcom/google/gson/internal/Excluder;
  403. move-result-object v0
  404. .line 86
  405. .local v0, "result":Lcom/google/gson/internal/Excluder;
  406. const/4 v1, 0x0
  407. iput-boolean v1, v0, Lcom/google/gson/internal/Excluder;->serializeInnerClasses:Z
  408. .line 87
  409. return-object v0
  410. .end method
  411. .method public excludeClass(Ljava/lang/Class;Z)Z
  412. .locals 1
  413. .param p2, "serialize" # Z
  414. .annotation system Ldalvik/annotation/Signature;
  415. value = {
  416. "(",
  417. "Ljava/lang/Class<",
  418. "*>;Z)Z"
  419. }
  420. .end annotation
  421. .line 210
  422. .local p1, "clazz":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  423. invoke-direct {p0, p1}, Lcom/google/gson/internal/Excluder;->excludeClassChecks(Ljava/lang/Class;)Z
  424. move-result v0
  425. if-nez v0, :cond_1
  426. .line 211
  427. invoke-direct {p0, p1, p2}, Lcom/google/gson/internal/Excluder;->excludeClassInStrategy(Ljava/lang/Class;Z)Z
  428. move-result v0
  429. if-eqz v0, :cond_0
  430. goto :goto_0
  431. :cond_0
  432. const/4 v0, 0x0
  433. goto :goto_1
  434. :cond_1
  435. :goto_0
  436. const/4 v0, 0x1
  437. .line 210
  438. :goto_1
  439. return v0
  440. .end method
  441. .method public excludeField(Ljava/lang/reflect/Field;Z)Z
  442. .locals 6
  443. .param p1, "field" # Ljava/lang/reflect/Field;
  444. .param p2, "serialize" # Z
  445. .line 152
  446. iget v0, p0, Lcom/google/gson/internal/Excluder;->modifiers:I
  447. invoke-virtual {p1}, Ljava/lang/reflect/Field;->getModifiers()I
  448. move-result v1
  449. and-int/2addr v0, v1
  450. const/4 v1, 0x1
  451. if-eqz v0, :cond_0
  452. .line 153
  453. return v1
  454. .line 156
  455. :cond_0
  456. iget-wide v2, p0, Lcom/google/gson/internal/Excluder;->version:D
  457. const-wide/high16 v4, -0x4010000000000000L # -1.0
  458. cmpl-double v0, v2, v4
  459. if-eqz v0, :cond_1
  460. const-class v0, Lcom/google/gson/annotations/Since;
  461. .line 157
  462. invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
  463. move-result-object v0
  464. check-cast v0, Lcom/google/gson/annotations/Since;
  465. const-class v2, Lcom/google/gson/annotations/Until;
  466. invoke-virtual {p1, v2}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
  467. move-result-object v2
  468. check-cast v2, Lcom/google/gson/annotations/Until;
  469. invoke-direct {p0, v0, v2}, Lcom/google/gson/internal/Excluder;->isValidVersion(Lcom/google/gson/annotations/Since;Lcom/google/gson/annotations/Until;)Z
  470. move-result v0
  471. if-nez v0, :cond_1
  472. .line 158
  473. return v1
  474. .line 161
  475. :cond_1
  476. invoke-virtual {p1}, Ljava/lang/reflect/Field;->isSynthetic()Z
  477. move-result v0
  478. if-eqz v0, :cond_2
  479. .line 162
  480. return v1
  481. .line 165
  482. :cond_2
  483. iget-boolean v0, p0, Lcom/google/gson/internal/Excluder;->requireExpose:Z
  484. if-eqz v0, :cond_5
  485. .line 166
  486. const-class v0, Lcom/google/gson/annotations/Expose;
  487. invoke-virtual {p1, v0}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
  488. move-result-object v0
  489. check-cast v0, Lcom/google/gson/annotations/Expose;
  490. .line 167
  491. .local v0, "annotation":Lcom/google/gson/annotations/Expose;
  492. if-eqz v0, :cond_4
  493. if-eqz p2, :cond_3
  494. invoke-interface {v0}, Lcom/google/gson/annotations/Expose;->serialize()Z
  495. move-result v2
  496. if-nez v2, :cond_5
  497. goto :goto_0
  498. :cond_3
  499. invoke-interface {v0}, Lcom/google/gson/annotations/Expose;->deserialize()Z
  500. move-result v2
  501. if-nez v2, :cond_5
  502. .line 168
  503. :cond_4
  504. :goto_0
  505. return v1
  506. .line 172
  507. .end local v0 # "annotation":Lcom/google/gson/annotations/Expose;
  508. :cond_5
  509. iget-boolean v0, p0, Lcom/google/gson/internal/Excluder;->serializeInnerClasses:Z
  510. if-nez v0, :cond_6
  511. invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
  512. move-result-object v0
  513. invoke-direct {p0, v0}, Lcom/google/gson/internal/Excluder;->isInnerClass(Ljava/lang/Class;)Z
  514. move-result v0
  515. if-eqz v0, :cond_6
  516. .line 173
  517. return v1
  518. .line 176
  519. :cond_6
  520. invoke-virtual {p1}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class;
  521. move-result-object v0
  522. invoke-direct {p0, v0}, Lcom/google/gson/internal/Excluder;->isAnonymousOrLocal(Ljava/lang/Class;)Z
  523. move-result v0
  524. if-eqz v0, :cond_7
  525. .line 177
  526. return v1
  527. .line 180
  528. :cond_7
  529. if-eqz p2, :cond_8
  530. iget-object v0, p0, Lcom/google/gson/internal/Excluder;->serializationStrategies:Ljava/util/List;
  531. goto :goto_1
  532. :cond_8
  533. iget-object v0, p0, Lcom/google/gson/internal/Excluder;->deserializationStrategies:Ljava/util/List;
  534. .line 181
  535. .local v0, "list":Ljava/util/List;, "Ljava/util/List<Lcom/google/gson/ExclusionStrategy;>;"
  536. :goto_1
  537. invoke-interface {v0}, Ljava/util/List;->isEmpty()Z
  538. move-result v2
  539. if-nez v2, :cond_a
  540. .line 182
  541. new-instance v2, Lcom/google/gson/FieldAttributes;
  542. invoke-direct {v2, p1}, Lcom/google/gson/FieldAttributes;-><init>(Ljava/lang/reflect/Field;)V
  543. .line 183
  544. .local v2, "fieldAttributes":Lcom/google/gson/FieldAttributes;
  545. invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  546. move-result-object v3
  547. :goto_2
  548. invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
  549. move-result v4
  550. if-eqz v4, :cond_a
  551. invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  552. move-result-object v4
  553. check-cast v4, Lcom/google/gson/ExclusionStrategy;
  554. .line 184
  555. .local v4, "exclusionStrategy":Lcom/google/gson/ExclusionStrategy;
  556. invoke-interface {v4, v2}, Lcom/google/gson/ExclusionStrategy;->shouldSkipField(Lcom/google/gson/FieldAttributes;)Z
  557. move-result v5
  558. if-eqz v5, :cond_9
  559. .line 185
  560. return v1
  561. .line 187
  562. .end local v4 # "exclusionStrategy":Lcom/google/gson/ExclusionStrategy;
  563. :cond_9
  564. goto :goto_2
  565. .line 190
  566. .end local v2 # "fieldAttributes":Lcom/google/gson/FieldAttributes;
  567. :cond_a
  568. const/4 v1, 0x0
  569. return v1
  570. .end method
  571. .method public excludeFieldsWithoutExposeAnnotation()Lcom/google/gson/internal/Excluder;
  572. .locals 2
  573. .line 91
  574. invoke-virtual {p0}, Lcom/google/gson/internal/Excluder;->clone()Lcom/google/gson/internal/Excluder;
  575. move-result-object v0
  576. .line 92
  577. .local v0, "result":Lcom/google/gson/internal/Excluder;
  578. const/4 v1, 0x1
  579. iput-boolean v1, v0, Lcom/google/gson/internal/Excluder;->requireExpose:Z
  580. .line 93
  581. return-object v0
  582. .end method
  583. .method public withExclusionStrategy(Lcom/google/gson/ExclusionStrategy;ZZ)Lcom/google/gson/internal/Excluder;
  584. .locals 3
  585. .param p1, "exclusionStrategy" # Lcom/google/gson/ExclusionStrategy;
  586. .param p2, "serialization" # Z
  587. .param p3, "deserialization" # Z
  588. .line 98
  589. invoke-virtual {p0}, Lcom/google/gson/internal/Excluder;->clone()Lcom/google/gson/internal/Excluder;
  590. move-result-object v0
  591. .line 99
  592. .local v0, "result":Lcom/google/gson/internal/Excluder;
  593. if-eqz p2, :cond_0
  594. .line 100
  595. new-instance v1, Ljava/util/ArrayList;
  596. iget-object v2, p0, Lcom/google/gson/internal/Excluder;->serializationStrategies:Ljava/util/List;
  597. invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
  598. iput-object v1, v0, Lcom/google/gson/internal/Excluder;->serializationStrategies:Ljava/util/List;
  599. .line 101
  600. iget-object v1, v0, Lcom/google/gson/internal/Excluder;->serializationStrategies:Ljava/util/List;
  601. invoke-interface {v1, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  602. .line 103
  603. :cond_0
  604. if-eqz p3, :cond_1
  605. .line 104
  606. new-instance v1, Ljava/util/ArrayList;
  607. iget-object v2, p0, Lcom/google/gson/internal/Excluder;->deserializationStrategies:Ljava/util/List;
  608. invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
  609. iput-object v1, v0, Lcom/google/gson/internal/Excluder;->deserializationStrategies:Ljava/util/List;
  610. .line 106
  611. iget-object v1, v0, Lcom/google/gson/internal/Excluder;->deserializationStrategies:Ljava/util/List;
  612. invoke-interface {v1, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  613. .line 108
  614. :cond_1
  615. return-object v0
  616. .end method
  617. .method public varargs withModifiers([I)Lcom/google/gson/internal/Excluder;
  618. .locals 5
  619. .param p1, "modifiers" # [I
  620. .line 76
  621. invoke-virtual {p0}, Lcom/google/gson/internal/Excluder;->clone()Lcom/google/gson/internal/Excluder;
  622. move-result-object v0
  623. .line 77
  624. .local v0, "result":Lcom/google/gson/internal/Excluder;
  625. const/4 v1, 0x0
  626. iput v1, v0, Lcom/google/gson/internal/Excluder;->modifiers:I
  627. .line 78
  628. array-length v2, p1
  629. :goto_0
  630. if-ge v1, v2, :cond_0
  631. aget v3, p1, v1
  632. .line 79
  633. .local v3, "modifier":I
  634. iget v4, v0, Lcom/google/gson/internal/Excluder;->modifiers:I
  635. or-int/2addr v4, v3
  636. iput v4, v0, Lcom/google/gson/internal/Excluder;->modifiers:I
  637. .line 78
  638. .end local v3 # "modifier":I
  639. add-int/lit8 v1, v1, 0x1
  640. goto :goto_0
  641. .line 81
  642. :cond_0
  643. return-object v0
  644. .end method
  645. .method public withVersion(D)Lcom/google/gson/internal/Excluder;
  646. .locals 1
  647. .param p1, "ignoreVersionsAfter" # D
  648. .line 70
  649. invoke-virtual {p0}, Lcom/google/gson/internal/Excluder;->clone()Lcom/google/gson/internal/Excluder;
  650. move-result-object v0
  651. .line 71
  652. .local v0, "result":Lcom/google/gson/internal/Excluder;
  653. iput-wide p1, v0, Lcom/google/gson/internal/Excluder;->version:D
  654. .line 72
  655. return-object v0
  656. .end method