CompositeException.smali 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. .class public final Lio/reactivex/exceptions/CompositeException;
  2. .super Ljava/lang/RuntimeException;
  3. .source "CompositeException.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/MemberClasses;
  6. value = {
  7. Lio/reactivex/exceptions/CompositeException$CompositeExceptionCausalChain;,
  8. Lio/reactivex/exceptions/CompositeException$WrappedPrintWriter;,
  9. Lio/reactivex/exceptions/CompositeException$WrappedPrintStream;,
  10. Lio/reactivex/exceptions/CompositeException$PrintStreamOrWriter;
  11. }
  12. .end annotation
  13. # static fields
  14. .field private static final serialVersionUID:J = 0x29ffcc6947b49592L
  15. # instance fields
  16. .field private cause:Ljava/lang/Throwable;
  17. .field private final exceptions:Ljava/util/List;
  18. .annotation system Ldalvik/annotation/Signature;
  19. value = {
  20. "Ljava/util/List<",
  21. "Ljava/lang/Throwable;",
  22. ">;"
  23. }
  24. .end annotation
  25. .end field
  26. .field private final message:Ljava/lang/String;
  27. # direct methods
  28. .method public constructor <init>(Ljava/lang/Iterable;)V
  29. .locals 4
  30. .annotation system Ldalvik/annotation/Signature;
  31. value = {
  32. "(",
  33. "Ljava/lang/Iterable<",
  34. "+",
  35. "Ljava/lang/Throwable;",
  36. ">;)V"
  37. }
  38. .end annotation
  39. .line 62
  40. invoke-direct {p0}, Ljava/lang/RuntimeException;-><init>()V
  41. .line 63
  42. new-instance v0, Ljava/util/LinkedHashSet;
  43. invoke-direct {v0}, Ljava/util/LinkedHashSet;-><init>()V
  44. .line 64
  45. new-instance v1, Ljava/util/ArrayList;
  46. invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
  47. if-eqz p1, :cond_2
  48. .line 66
  49. invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
  50. move-result-object p1
  51. :goto_0
  52. invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
  53. move-result v2
  54. if-eqz v2, :cond_3
  55. invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  56. move-result-object v2
  57. check-cast v2, Ljava/lang/Throwable;
  58. .line 67
  59. instance-of v3, v2, Lio/reactivex/exceptions/CompositeException;
  60. if-eqz v3, :cond_0
  61. .line 68
  62. check-cast v2, Lio/reactivex/exceptions/CompositeException;
  63. invoke-virtual {v2}, Lio/reactivex/exceptions/CompositeException;->getExceptions()Ljava/util/List;
  64. move-result-object v2
  65. invoke-interface {v0, v2}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
  66. goto :goto_0
  67. :cond_0
  68. if-eqz v2, :cond_1
  69. .line 71
  70. invoke-interface {v0, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  71. goto :goto_0
  72. .line 73
  73. :cond_1
  74. new-instance v2, Ljava/lang/NullPointerException;
  75. const-string v3, "Throwable was null!"
  76. invoke-direct {v2, v3}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  77. invoke-interface {v0, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  78. goto :goto_0
  79. .line 77
  80. :cond_2
  81. new-instance p1, Ljava/lang/NullPointerException;
  82. const-string v2, "errors was null"
  83. invoke-direct {p1, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  84. invoke-interface {v0, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  85. .line 79
  86. :cond_3
  87. invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
  88. move-result p1
  89. if-nez p1, :cond_4
  90. .line 82
  91. invoke-interface {v1, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
  92. .line 83
  93. invoke-static {v1}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
  94. move-result-object p1
  95. iput-object p1, p0, Lio/reactivex/exceptions/CompositeException;->exceptions:Ljava/util/List;
  96. .line 84
  97. new-instance p1, Ljava/lang/StringBuilder;
  98. invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
  99. iget-object v0, p0, Lio/reactivex/exceptions/CompositeException;->exceptions:Ljava/util/List;
  100. invoke-interface {v0}, Ljava/util/List;->size()I
  101. move-result v0
  102. invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  103. const-string v0, " exceptions occurred. "
  104. invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  105. invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  106. move-result-object p1
  107. iput-object p1, p0, Lio/reactivex/exceptions/CompositeException;->message:Ljava/lang/String;
  108. return-void
  109. .line 80
  110. :cond_4
  111. new-instance p1, Ljava/lang/IllegalArgumentException;
  112. const-string v0, "errors is empty"
  113. invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  114. goto :goto_2
  115. :goto_1
  116. throw p1
  117. :goto_2
  118. goto :goto_1
  119. .end method
  120. .method public varargs constructor <init>([Ljava/lang/Throwable;)V
  121. .locals 3
  122. if-nez p1, :cond_0
  123. const/4 p1, 0x1
  124. .line 51
  125. new-array p1, p1, [Ljava/lang/NullPointerException;
  126. const/4 v0, 0x0
  127. new-instance v1, Ljava/lang/NullPointerException;
  128. const-string v2, "exceptions was null"
  129. invoke-direct {v1, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
  130. aput-object v1, p1, v0
  131. invoke-static {p1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
  132. move-result-object p1
  133. goto :goto_0
  134. :cond_0
  135. invoke-static {p1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
  136. move-result-object p1
  137. :goto_0
  138. invoke-direct {p0, p1}, Lio/reactivex/exceptions/CompositeException;-><init>(Ljava/lang/Iterable;)V
  139. return-void
  140. .end method
  141. .method private appendStackTrace(Ljava/lang/StringBuilder;Ljava/lang/Throwable;Ljava/lang/String;)V
  142. .locals 5
  143. .line 190
  144. invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  145. invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  146. const/16 p3, 0xa
  147. invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  148. .line 191
  149. invoke-virtual {p2}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement;
  150. move-result-object v0
  151. array-length v1, v0
  152. const/4 v2, 0x0
  153. :goto_0
  154. if-ge v2, v1, :cond_0
  155. aget-object v3, v0, v2
  156. const-string v4, "\t\tat "
  157. .line 192
  158. invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  159. invoke-virtual {p1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  160. invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  161. add-int/lit8 v2, v2, 0x1
  162. goto :goto_0
  163. .line 194
  164. :cond_0
  165. invoke-virtual {p2}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;
  166. move-result-object p3
  167. if-eqz p3, :cond_1
  168. const-string p3, "\tCaused by: "
  169. .line 195
  170. invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  171. .line 196
  172. invoke-virtual {p2}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;
  173. move-result-object p2
  174. const-string p3, ""
  175. invoke-direct {p0, p1, p2, p3}, Lio/reactivex/exceptions/CompositeException;->appendStackTrace(Ljava/lang/StringBuilder;Ljava/lang/Throwable;Ljava/lang/String;)V
  176. :cond_1
  177. return-void
  178. .end method
  179. .method private getListOfCauses(Ljava/lang/Throwable;)Ljava/util/List;
  180. .locals 2
  181. .annotation system Ldalvik/annotation/Signature;
  182. value = {
  183. "(",
  184. "Ljava/lang/Throwable;",
  185. ")",
  186. "Ljava/util/List<",
  187. "Ljava/lang/Throwable;",
  188. ">;"
  189. }
  190. .end annotation
  191. .line 245
  192. new-instance v0, Ljava/util/ArrayList;
  193. invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
  194. .line 246
  195. invoke-virtual {p1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;
  196. move-result-object v1
  197. if-eqz v1, :cond_2
  198. if-ne v1, p1, :cond_0
  199. goto :goto_1
  200. .line 251
  201. :cond_0
  202. :goto_0
  203. invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  204. .line 252
  205. invoke-virtual {v1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;
  206. move-result-object p1
  207. if-eqz p1, :cond_2
  208. if-ne p1, v1, :cond_1
  209. goto :goto_1
  210. :cond_1
  211. move-object v1, p1
  212. goto :goto_0
  213. :cond_2
  214. :goto_1
  215. return-object v0
  216. .end method
  217. .method private getRootCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
  218. .locals 2
  219. .line 277
  220. invoke-virtual {p1}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;
  221. move-result-object v0
  222. if-eqz v0, :cond_3
  223. .line 278
  224. iget-object v1, p0, Lio/reactivex/exceptions/CompositeException;->cause:Ljava/lang/Throwable;
  225. if-ne v1, v0, :cond_0
  226. goto :goto_2
  227. .line 282
  228. :cond_0
  229. :goto_0
  230. invoke-virtual {v0}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;
  231. move-result-object p1
  232. if-eqz p1, :cond_2
  233. if-ne p1, v0, :cond_1
  234. goto :goto_1
  235. :cond_1
  236. move-object v0, p1
  237. goto :goto_0
  238. :cond_2
  239. :goto_1
  240. return-object v0
  241. :cond_3
  242. :goto_2
  243. return-object p1
  244. .end method
  245. .method private printStackTrace(Lio/reactivex/exceptions/CompositeException$PrintStreamOrWriter;)V
  246. .locals 7
  247. .line 175
  248. new-instance v0, Ljava/lang/StringBuilder;
  249. const/16 v1, 0x80
  250. invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(I)V
  251. .line 176
  252. invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  253. const/16 v1, 0xa
  254. invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  255. .line 177
  256. invoke-virtual {p0}, Lio/reactivex/exceptions/CompositeException;->getStackTrace()[Ljava/lang/StackTraceElement;
  257. move-result-object v2
  258. array-length v3, v2
  259. const/4 v4, 0x0
  260. :goto_0
  261. if-ge v4, v3, :cond_0
  262. aget-object v5, v2, v4
  263. const-string v6, "\tat "
  264. .line 178
  265. invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  266. invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  267. invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
  268. add-int/lit8 v4, v4, 0x1
  269. goto :goto_0
  270. .line 181
  271. :cond_0
  272. iget-object v1, p0, Lio/reactivex/exceptions/CompositeException;->exceptions:Ljava/util/List;
  273. invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  274. move-result-object v1
  275. const/4 v2, 0x1
  276. const/4 v3, 0x1
  277. :goto_1
  278. invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
  279. move-result v4
  280. if-eqz v4, :cond_1
  281. invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  282. move-result-object v4
  283. check-cast v4, Ljava/lang/Throwable;
  284. const-string v5, " ComposedException "
  285. .line 182
  286. invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  287. invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  288. const-string v5, " :\n"
  289. invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  290. const-string v5, "\t"
  291. .line 183
  292. invoke-direct {p0, v0, v4, v5}, Lio/reactivex/exceptions/CompositeException;->appendStackTrace(Ljava/lang/StringBuilder;Ljava/lang/Throwable;Ljava/lang/String;)V
  293. add-int/2addr v3, v2
  294. goto :goto_1
  295. .line 186
  296. :cond_1
  297. invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  298. move-result-object v0
  299. invoke-virtual {p1, v0}, Lio/reactivex/exceptions/CompositeException$PrintStreamOrWriter;->println(Ljava/lang/Object;)V
  300. return-void
  301. .end method
  302. # virtual methods
  303. .method public declared-synchronized getCause()Ljava/lang/Throwable;
  304. .locals 8
  305. monitor-enter p0
  306. .line 103
  307. :try_start_0
  308. iget-object v0, p0, Lio/reactivex/exceptions/CompositeException;->cause:Ljava/lang/Throwable;
  309. if-nez v0, :cond_4
  310. .line 105
  311. new-instance v0, Lio/reactivex/exceptions/CompositeException$CompositeExceptionCausalChain;
  312. invoke-direct {v0}, Lio/reactivex/exceptions/CompositeException$CompositeExceptionCausalChain;-><init>()V
  313. .line 106
  314. new-instance v1, Ljava/util/HashSet;
  315. invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
  316. .line 109
  317. iget-object v2, p0, Lio/reactivex/exceptions/CompositeException;->exceptions:Ljava/util/List;
  318. invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  319. move-result-object v2
  320. move-object v3, v0
  321. :goto_0
  322. invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
  323. move-result v4
  324. if-eqz v4, :cond_3
  325. invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  326. move-result-object v4
  327. check-cast v4, Ljava/lang/Throwable;
  328. .line 110
  329. invoke-interface {v1, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
  330. move-result v5
  331. if-eqz v5, :cond_0
  332. goto :goto_0
  333. .line 114
  334. :cond_0
  335. invoke-interface {v1, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  336. .line 116
  337. invoke-direct {p0, v4}, Lio/reactivex/exceptions/CompositeException;->getListOfCauses(Ljava/lang/Throwable;)Ljava/util/List;
  338. move-result-object v5
  339. .line 118
  340. invoke-interface {v5}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  341. move-result-object v5
  342. :goto_1
  343. invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
  344. move-result v6
  345. if-eqz v6, :cond_2
  346. invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  347. move-result-object v6
  348. check-cast v6, Ljava/lang/Throwable;
  349. .line 119
  350. invoke-interface {v1, v6}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
  351. move-result v7
  352. if-eqz v7, :cond_1
  353. .line 121
  354. new-instance v4, Ljava/lang/RuntimeException;
  355. const-string v6, "Duplicate found in causal chain so cropping to prevent loop ..."
  356. invoke-direct {v4, v6}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
  357. goto :goto_1
  358. .line 124
  359. :cond_1
  360. invoke-interface {v1, v6}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
  361. :try_end_0
  362. .catchall {:try_start_0 .. :try_end_0} :catchall_0
  363. goto :goto_1
  364. .line 129
  365. :cond_2
  366. :try_start_1
  367. invoke-virtual {v3, v4}, Ljava/lang/Throwable;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
  368. :try_end_1
  369. .catch Ljava/lang/Throwable; {:try_start_1 .. :try_end_1} :catch_0
  370. .catchall {:try_start_1 .. :try_end_1} :catchall_0
  371. .line 135
  372. :catch_0
  373. :try_start_2
  374. invoke-direct {p0, v3}, Lio/reactivex/exceptions/CompositeException;->getRootCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
  375. move-result-object v3
  376. goto :goto_0
  377. .line 137
  378. :cond_3
  379. iput-object v0, p0, Lio/reactivex/exceptions/CompositeException;->cause:Ljava/lang/Throwable;
  380. .line 139
  381. :cond_4
  382. iget-object v0, p0, Lio/reactivex/exceptions/CompositeException;->cause:Ljava/lang/Throwable;
  383. :try_end_2
  384. .catchall {:try_start_2 .. :try_end_2} :catchall_0
  385. monitor-exit p0
  386. return-object v0
  387. :catchall_0
  388. move-exception v0
  389. monitor-exit p0
  390. goto :goto_3
  391. :goto_2
  392. throw v0
  393. :goto_3
  394. goto :goto_2
  395. .end method
  396. .method public getExceptions()Ljava/util/List;
  397. .locals 1
  398. .annotation system Ldalvik/annotation/Signature;
  399. value = {
  400. "()",
  401. "Ljava/util/List<",
  402. "Ljava/lang/Throwable;",
  403. ">;"
  404. }
  405. .end annotation
  406. .line 93
  407. iget-object v0, p0, Lio/reactivex/exceptions/CompositeException;->exceptions:Ljava/util/List;
  408. return-object v0
  409. .end method
  410. .method public getMessage()Ljava/lang/String;
  411. .locals 1
  412. .line 98
  413. iget-object v0, p0, Lio/reactivex/exceptions/CompositeException;->message:Ljava/lang/String;
  414. return-object v0
  415. .end method
  416. .method public printStackTrace()V
  417. .locals 1
  418. .line 154
  419. sget-object v0, Ljava/lang/System;->err:Ljava/io/PrintStream;
  420. invoke-virtual {p0, v0}, Lio/reactivex/exceptions/CompositeException;->printStackTrace(Ljava/io/PrintStream;)V
  421. return-void
  422. .end method
  423. .method public printStackTrace(Ljava/io/PrintStream;)V
  424. .locals 1
  425. .line 159
  426. new-instance v0, Lio/reactivex/exceptions/CompositeException$WrappedPrintStream;
  427. invoke-direct {v0, p1}, Lio/reactivex/exceptions/CompositeException$WrappedPrintStream;-><init>(Ljava/io/PrintStream;)V
  428. invoke-direct {p0, v0}, Lio/reactivex/exceptions/CompositeException;->printStackTrace(Lio/reactivex/exceptions/CompositeException$PrintStreamOrWriter;)V
  429. return-void
  430. .end method
  431. .method public printStackTrace(Ljava/io/PrintWriter;)V
  432. .locals 1
  433. .line 164
  434. new-instance v0, Lio/reactivex/exceptions/CompositeException$WrappedPrintWriter;
  435. invoke-direct {v0, p1}, Lio/reactivex/exceptions/CompositeException$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V
  436. invoke-direct {p0, v0}, Lio/reactivex/exceptions/CompositeException;->printStackTrace(Lio/reactivex/exceptions/CompositeException$PrintStreamOrWriter;)V
  437. return-void
  438. .end method
  439. .method public size()I
  440. .locals 1
  441. .line 267
  442. iget-object v0, p0, Lio/reactivex/exceptions/CompositeException;->exceptions:Ljava/util/List;
  443. invoke-interface {v0}, Ljava/util/List;->size()I
  444. move-result v0
  445. return v0
  446. .end method