.class Lorg/greenrobot/greendao/async/AsyncOperationExecutor; .super Ljava/lang/Object; .source "AsyncOperationExecutor.java" # interfaces .implements Ljava/lang/Runnable; .implements Landroid/os/Handler$Callback; # static fields .field private static executorService:Ljava/util/concurrent/ExecutorService; # instance fields .field private countOperationsCompleted:I .field private countOperationsEnqueued:I .field private volatile executorRunning:Z .field private handlerMainThread:Landroid/os/Handler; .field private lastSequenceNumber:I .field private volatile listener:Lorg/greenrobot/greendao/async/AsyncOperationListener; .field private volatile listenerMainThread:Lorg/greenrobot/greendao/async/AsyncOperationListener; .field private volatile maxOperationCountToMerge:I .field private final queue:Ljava/util/concurrent/BlockingQueue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/concurrent/BlockingQueue<", "Lorg/greenrobot/greendao/async/AsyncOperation;", ">;" } .end annotation .end field .field private volatile waitForMergeMillis:I # direct methods .method static constructor ()V .registers 1 .line 36 invoke-static {}, Ljava/util/concurrent/Executors;->newCachedThreadPool()Ljava/util/concurrent/ExecutorService; move-result-object v0 sput-object v0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorService:Ljava/util/concurrent/ExecutorService; return-void .end method .method constructor ()V .registers 2 .line 51 invoke-direct {p0}, Ljava/lang/Object;->()V .line 52 new-instance v0, Ljava/util/concurrent/LinkedBlockingQueue; invoke-direct {v0}, Ljava/util/concurrent/LinkedBlockingQueue;->()V iput-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; const/16 v0, 0x32 .line 53 iput v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->maxOperationCountToMerge:I .line 54 iput v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->waitForMergeMillis:I return-void .end method .method private executeOperation(Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 5 const-string v0, "Unsupported operation: " .line 265 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v1 iput-wide v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->timeStarted:J .line 267 :try_start_8 sget-object v1, Lorg/greenrobot/greendao/async/AsyncOperationExecutor$1;->$SwitchMap$org$greenrobot$greendao$async$AsyncOperation$OperationType:[I iget-object v2, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->type:Lorg/greenrobot/greendao/async/AsyncOperation$OperationType; invoke-virtual {v2}, Lorg/greenrobot/greendao/async/AsyncOperation$OperationType;->ordinal()I move-result v2 aget v1, v1, v2 packed-switch v1, :pswitch_data_118 .line 335 new-instance v1, Lorg/greenrobot/greendao/DaoException; goto/16 :goto_fb .line 332 :pswitch_19 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->refresh(Ljava/lang/Object;)V goto/16 :goto_111 .line 329 :pswitch_22 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; invoke-virtual {v0}, Lorg/greenrobot/greendao/AbstractDao;->count()J move-result-wide v0 invoke-static {v0, v1}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v0 iput-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->result:Ljava/lang/Object; goto/16 :goto_111 .line 326 :pswitch_30 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; invoke-virtual {v0}, Lorg/greenrobot/greendao/AbstractDao;->loadAll()Ljava/util/List; move-result-object v0 iput-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->result:Ljava/lang/Object; goto/16 :goto_111 .line 323 :pswitch_3a iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->load(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 iput-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->result:Ljava/lang/Object; goto/16 :goto_111 .line 320 :pswitch_46 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; invoke-virtual {v0}, Lorg/greenrobot/greendao/AbstractDao;->deleteAll()V goto/16 :goto_111 .line 317 :pswitch_4d iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->deleteByKey(Ljava/lang/Object;)V goto/16 :goto_111 .line 314 :pswitch_56 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v0, Lorg/greenrobot/greendao/query/Query; invoke-virtual {v0}, Lorg/greenrobot/greendao/query/Query;->forCurrentThread()Lorg/greenrobot/greendao/query/Query; move-result-object v0 invoke-virtual {v0}, Lorg/greenrobot/greendao/query/Query;->unique()Ljava/lang/Object; move-result-object v0 iput-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->result:Ljava/lang/Object; goto/16 :goto_111 .line 311 :pswitch_66 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v0, Lorg/greenrobot/greendao/query/Query; invoke-virtual {v0}, Lorg/greenrobot/greendao/query/Query;->forCurrentThread()Lorg/greenrobot/greendao/query/Query; move-result-object v0 invoke-virtual {v0}, Lorg/greenrobot/greendao/query/Query;->list()Ljava/util/List; move-result-object v0 iput-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->result:Ljava/lang/Object; goto/16 :goto_111 .line 308 :pswitch_76 invoke-direct {p0, p1}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeTransactionCallable(Lorg/greenrobot/greendao/async/AsyncOperation;)V goto/16 :goto_111 .line 305 :pswitch_7b invoke-direct {p0, p1}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeTransactionRunnable(Lorg/greenrobot/greendao/async/AsyncOperation;)V goto/16 :goto_111 .line 302 :pswitch_80 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->updateInTx([Ljava/lang/Object;)V goto/16 :goto_111 .line 299 :pswitch_8d iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, Ljava/lang/Iterable; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->updateInTx(Ljava/lang/Iterable;)V goto/16 :goto_111 .line 296 :pswitch_98 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->update(Ljava/lang/Object;)V goto/16 :goto_111 .line 293 :pswitch_a1 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->insertOrReplaceInTx([Ljava/lang/Object;)V goto :goto_111 .line 290 :pswitch_ad iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, Ljava/lang/Iterable; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->insertOrReplaceInTx(Ljava/lang/Iterable;)V goto :goto_111 .line 287 :pswitch_b7 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->insertOrReplace(Ljava/lang/Object;)J goto :goto_111 .line 284 :pswitch_bf iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->insertInTx([Ljava/lang/Object;)V goto :goto_111 .line 281 :pswitch_cb iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, Ljava/lang/Iterable; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->insertInTx(Ljava/lang/Iterable;)V goto :goto_111 .line 278 :pswitch_d5 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->insert(Ljava/lang/Object;)J goto :goto_111 .line 275 :pswitch_dd iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; check-cast v1, [Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->deleteInTx([Ljava/lang/Object;)V goto :goto_111 .line 272 :pswitch_e9 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, Ljava/lang/Iterable; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->deleteInTx(Ljava/lang/Iterable;)V goto :goto_111 .line 269 :pswitch_f3 iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->dao:Lorg/greenrobot/greendao/AbstractDao; iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; invoke-virtual {v0, v1}, Lorg/greenrobot/greendao/AbstractDao;->delete(Ljava/lang/Object;)V goto :goto_111 .line 335 :goto_fb new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V iget-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->type:Lorg/greenrobot/greendao/async/AsyncOperation$OperationType; invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {v1, v0}, Lorg/greenrobot/greendao/DaoException;->(Ljava/lang/String;)V throw v1 :try_end_10e .catchall {:try_start_8 .. :try_end_10e} :catchall_10e :catchall_10e move-exception v0 .line 338 iput-object v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->throwable:Ljava/lang/Throwable; .line 340 :goto_111 invoke-static {}, Ljava/lang/System;->currentTimeMillis()J move-result-wide v0 iput-wide v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->timeCompleted:J return-void :pswitch_data_118 .packed-switch 0x1 :pswitch_f3 :pswitch_e9 :pswitch_dd :pswitch_d5 :pswitch_cb :pswitch_bf :pswitch_b7 :pswitch_ad :pswitch_a1 :pswitch_98 :pswitch_8d :pswitch_80 :pswitch_7b :pswitch_76 :pswitch_66 :pswitch_56 :pswitch_4d :pswitch_46 :pswitch_3a :pswitch_30 :pswitch_22 :pswitch_19 .end packed-switch .end method .method private executeOperationAndPostCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 2 .line 259 invoke-direct {p0, p1}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeOperation(Lorg/greenrobot/greendao/async/AsyncOperation;)V .line 260 invoke-direct {p0, p1}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->handleOperationCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V return-void .end method .method private executeTransactionCallable(Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/lang/Exception; } .end annotation .line 357 invoke-virtual {p1}, Lorg/greenrobot/greendao/async/AsyncOperation;->getDatabase()Lorg/greenrobot/greendao/database/Database; move-result-object v0 .line 358 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->beginTransaction()V .line 360 :try_start_7 iget-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast v1, Ljava/util/concurrent/Callable; invoke-interface {v1}, Ljava/util/concurrent/Callable;->call()Ljava/lang/Object; move-result-object v1 iput-object v1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->result:Ljava/lang/Object; .line 361 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->setTransactionSuccessful()V :try_end_14 .catchall {:try_start_7 .. :try_end_14} :catchall_18 .line 363 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->endTransaction()V return-void :catchall_18 move-exception p1 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->endTransaction()V throw p1 .end method .method private executeTransactionRunnable(Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 3 .line 345 invoke-virtual {p1}, Lorg/greenrobot/greendao/async/AsyncOperation;->getDatabase()Lorg/greenrobot/greendao/database/Database; move-result-object v0 .line 346 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->beginTransaction()V .line 348 :try_start_7 iget-object p1, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->parameter:Ljava/lang/Object; check-cast p1, Ljava/lang/Runnable; invoke-interface {p1}, Ljava/lang/Runnable;->run()V .line 349 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->setTransactionSuccessful()V :try_end_11 .catchall {:try_start_7 .. :try_end_11} :catchall_15 .line 351 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->endTransaction()V return-void :catchall_15 move-exception p1 invoke-interface {v0}, Lorg/greenrobot/greendao/database/Database;->endTransaction()V throw p1 .end method .method private handleOperationCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 5 .line 237 invoke-virtual {p1}, Lorg/greenrobot/greendao/async/AsyncOperation;->setCompleted()V .line 239 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listener:Lorg/greenrobot/greendao/async/AsyncOperationListener; if-eqz v0, :cond_a .line 241 invoke-interface {v0, p1}, Lorg/greenrobot/greendao/async/AsyncOperationListener;->onAsyncOperationCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V .line 243 :cond_a iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listenerMainThread:Lorg/greenrobot/greendao/async/AsyncOperationListener; const/4 v1, 0x1 if-eqz v0, :cond_29 .line 244 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->handlerMainThread:Landroid/os/Handler; if-nez v0, :cond_1e .line 245 new-instance v0, Landroid/os/Handler; invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper; move-result-object v2 invoke-direct {v0, v2, p0}, Landroid/os/Handler;->(Landroid/os/Looper;Landroid/os/Handler$Callback;)V iput-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->handlerMainThread:Landroid/os/Handler; .line 247 :cond_1e iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->handlerMainThread:Landroid/os/Handler; invoke-virtual {v0, v1, p1}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; move-result-object p1 .line 248 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->handlerMainThread:Landroid/os/Handler; invoke-virtual {v0, p1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z .line 250 :cond_29 monitor-enter p0 .line 251 :try_start_2a iget p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsCompleted:I add-int/2addr p1, v1 iput p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsCompleted:I .line 252 iget v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsEnqueued:I if-ne p1, v0, :cond_36 .line 253 invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V .line 255 :cond_36 monitor-exit p0 return-void :catchall_38 move-exception p1 monitor-exit p0 :try_end_3a .catchall {:try_start_2a .. :try_end_3a} :catchall_38 throw p1 .end method .method private mergeTxAndExecute(Lorg/greenrobot/greendao/async/AsyncOperation;Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 9 .line 180 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V .line 181 invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 182 invoke-virtual {v0, p2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z .line 184 invoke-virtual {p1}, Lorg/greenrobot/greendao/async/AsyncOperation;->getDatabase()Lorg/greenrobot/greendao/database/Database; move-result-object p1 .line 185 invoke-interface {p1}, Lorg/greenrobot/greendao/database/Database;->beginTransaction()V const/4 p2, 0x0 move v1, p2 .line 188 :goto_14 :try_start_14 invoke-virtual {v0}, Ljava/util/ArrayList;->size()I move-result v2 if-ge v1, v2, :cond_61 .line 189 invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; move-result-object v2 check-cast v2, Lorg/greenrobot/greendao/async/AsyncOperation; .line 190 invoke-direct {p0, v2}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeOperation(Lorg/greenrobot/greendao/async/AsyncOperation;)V .line 191 invoke-virtual {v2}, Lorg/greenrobot/greendao/async/AsyncOperation;->isFailed()Z move-result v3 if-eqz v3, :cond_2a goto :goto_61 .line 195 :cond_2a invoke-virtual {v0}, Ljava/util/ArrayList;->size()I move-result v3 const/4 v4, 0x1 sub-int/2addr v3, v4 if-ne v1, v3, :cond_5e .line 196 iget-object v3, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; invoke-interface {v3}, Ljava/util/concurrent/BlockingQueue;->peek()Ljava/lang/Object; move-result-object v3 check-cast v3, Lorg/greenrobot/greendao/async/AsyncOperation; .line 197 iget v5, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->maxOperationCountToMerge:I if-ge v1, v5, :cond_5a invoke-virtual {v2, v3}, Lorg/greenrobot/greendao/async/AsyncOperation;->isMergeableWith(Lorg/greenrobot/greendao/async/AsyncOperation;)Z move-result v2 if-eqz v2, :cond_5a .line 198 iget-object v2, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; invoke-interface {v2}, Ljava/util/concurrent/BlockingQueue;->remove()Ljava/lang/Object; move-result-object v2 check-cast v2, Lorg/greenrobot/greendao/async/AsyncOperation; if-ne v2, v3, :cond_52 .line 203 invoke-virtual {v0, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z goto :goto_5e .line 201 :cond_52 new-instance p2, Lorg/greenrobot/greendao/DaoException; const-string v0, "Internal error: peeked op did not match removed op" invoke-direct {p2, v0}, Lorg/greenrobot/greendao/DaoException;->(Ljava/lang/String;)V throw p2 .line 206 :cond_5a invoke-interface {p1}, Lorg/greenrobot/greendao/database/Database;->setTransactionSuccessful()V :try_end_5d .catchall {:try_start_14 .. :try_end_5d} :catchall_b3 goto :goto_62 :cond_5e :goto_5e add-int/lit8 v1, v1, 0x1 goto :goto_14 :cond_61 :goto_61 move v4, p2 .line 214 :goto_62 :try_start_62 invoke-interface {p1}, Lorg/greenrobot/greendao/database/Database;->endTransaction()V :try_end_65 .catch Ljava/lang/RuntimeException; {:try_start_62 .. :try_end_65} :catch_67 move p2, v4 goto :goto_7a :catch_67 move-exception p1 .line 216 new-instance v1, Ljava/lang/StringBuilder; const-string v2, "Async transaction could not be ended, success so far was: " invoke-direct {v1, v2}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-static {v1, p1}, Lorg/greenrobot/greendao/DaoLog;->i(Ljava/lang/String;Ljava/lang/Throwable;)I :goto_7a if-eqz p2, :cond_96 .line 221 invoke-virtual {v0}, Ljava/util/ArrayList;->size()I move-result p1 .line 222 invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; move-result-object p2 :goto_84 invoke-interface {p2}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_b2 invoke-interface {p2}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Lorg/greenrobot/greendao/async/AsyncOperation; .line 223 iput p1, v0, Lorg/greenrobot/greendao/async/AsyncOperation;->mergedOperationsCount:I .line 224 invoke-direct {p0, v0}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->handleOperationCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V goto :goto_84 .line 227 :cond_96 const-string p1, "Reverted merged transaction because one of the operations failed. Executing operations one by one instead..." invoke-static {p1}, Lorg/greenrobot/greendao/DaoLog;->i(Ljava/lang/String;)I .line 229 invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_9f invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result p2 if-eqz p2, :cond_b2 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object p2 check-cast p2, Lorg/greenrobot/greendao/async/AsyncOperation; .line 230 invoke-virtual {p2}, Lorg/greenrobot/greendao/async/AsyncOperation;->reset()V .line 231 invoke-direct {p0, p2}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeOperationAndPostCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V goto :goto_9f :cond_b2 return-void :catchall_b3 move-exception p2 .line 214 :try_start_b4 invoke-interface {p1}, Lorg/greenrobot/greendao/database/Database;->endTransaction()V :try_end_b7 .catch Ljava/lang/RuntimeException; {:try_start_b4 .. :try_end_b7} :catch_b8 goto :goto_be :catch_b8 move-exception p1 .line 216 const-string v0, "Async transaction could not be ended, success so far was: false" invoke-static {v0, p1}, Lorg/greenrobot/greendao/DaoLog;->i(Ljava/lang/String;Ljava/lang/Throwable;)I .line 218 :goto_be throw p2 .end method # virtual methods .method public enqueue(Lorg/greenrobot/greendao/async/AsyncOperation;)V .registers 4 .line 58 monitor-enter p0 .line 59 :try_start_1 iget v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->lastSequenceNumber:I const/4 v1, 0x1 add-int/2addr v0, v1 iput v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->lastSequenceNumber:I iput v0, p1, Lorg/greenrobot/greendao/async/AsyncOperation;->sequenceNumber:I .line 60 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; invoke-interface {v0, p1}, Ljava/util/concurrent/BlockingQueue;->add(Ljava/lang/Object;)Z .line 61 iget p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsEnqueued:I add-int/2addr p1, v1 iput p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsEnqueued:I .line 62 iget-boolean p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorRunning:Z if-nez p1, :cond_1e .line 63 iput-boolean v1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorRunning:Z .line 64 sget-object p1, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorService:Ljava/util/concurrent/ExecutorService; invoke-interface {p1, p0}, Ljava/util/concurrent/ExecutorService;->execute(Ljava/lang/Runnable;)V .line 66 :cond_1e monitor-exit p0 return-void :catchall_20 move-exception p1 monitor-exit p0 :try_end_22 .catchall {:try_start_1 .. :try_end_22} :catchall_20 throw p1 .end method .method public getListener()Lorg/greenrobot/greendao/async/AsyncOperationListener; .registers 2 .line 86 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listener:Lorg/greenrobot/greendao/async/AsyncOperationListener; return-object v0 .end method .method public getListenerMainThread()Lorg/greenrobot/greendao/async/AsyncOperationListener; .registers 2 .line 94 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listenerMainThread:Lorg/greenrobot/greendao/async/AsyncOperationListener; return-object v0 .end method .method public getMaxOperationCountToMerge()I .registers 2 .line 70 iget v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->maxOperationCountToMerge:I return v0 .end method .method public getWaitForMergeMillis()I .registers 2 .line 78 iget v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->waitForMergeMillis:I return v0 .end method .method public handleMessage(Landroid/os/Message;)Z .registers 3 .line 369 iget-object v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listenerMainThread:Lorg/greenrobot/greendao/async/AsyncOperationListener; if-eqz v0, :cond_b .line 371 iget-object p1, p1, Landroid/os/Message;->obj:Ljava/lang/Object; check-cast p1, Lorg/greenrobot/greendao/async/AsyncOperation; invoke-interface {v0, p1}, Lorg/greenrobot/greendao/async/AsyncOperationListener;->onAsyncOperationCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V :cond_b const/4 p1, 0x0 return p1 .end method .method public declared-synchronized isCompleted()Z .registers 3 monitor-enter p0 .line 102 :try_start_1 iget v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsEnqueued:I iget v1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->countOperationsCompleted:I :try_end_5 .catchall {:try_start_1 .. :try_end_5} :catchall_c if-ne v0, v1, :cond_9 const/4 v0, 0x1 goto :goto_a :cond_9 const/4 v0, 0x0 :goto_a monitor-exit p0 return v0 :catchall_c move-exception v0 :try_start_d monitor-exit p0 :try_end_e .catchall {:try_start_d .. :try_end_e} :catchall_c throw v0 .end method .method public run()V .registers 7 :goto_0 const/4 v0, 0x0 .line 141 :try_start_1 iget-object v1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; sget-object v2, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit; const-wide/16 v3, 0x1 invoke-interface {v1, v3, v4, v2}, Ljava/util/concurrent/BlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; move-result-object v1 check-cast v1, Lorg/greenrobot/greendao/async/AsyncOperation; if-nez v1, :cond_25 .line 143 monitor-enter p0 :try_end_10 .catch Ljava/lang/InterruptedException; {:try_start_1 .. :try_end_10} :catch_51 .catchall {:try_start_1 .. :try_end_10} :catchall_4f .line 145 :try_start_10 iget-object v1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; invoke-interface {v1}, Ljava/util/concurrent/BlockingQueue;->poll()Ljava/lang/Object; move-result-object v1 check-cast v1, Lorg/greenrobot/greendao/async/AsyncOperation; if-nez v1, :cond_20 .line 148 iput-boolean v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorRunning:Z .line 149 monitor-exit p0 :try_end_1d .catchall {:try_start_10 .. :try_end_1d} :catchall_22 .line 173 iput-boolean v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorRunning:Z return-void .line 151 :cond_20 :try_start_20 monitor-exit p0 goto :goto_25 :catchall_22 move-exception v1 monitor-exit p0 :try_end_24 .catchall {:try_start_20 .. :try_end_24} :catchall_22 :try_start_24 throw v1 .line 153 :cond_25 :goto_25 invoke-virtual {v1}, Lorg/greenrobot/greendao/async/AsyncOperation;->isMergeTx()Z move-result v2 if-eqz v2, :cond_4b .line 155 iget-object v2, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->queue:Ljava/util/concurrent/BlockingQueue; iget v3, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->waitForMergeMillis:I int-to-long v3, v3 sget-object v5, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit; invoke-interface {v2, v3, v4, v5}, Ljava/util/concurrent/BlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; move-result-object v2 check-cast v2, Lorg/greenrobot/greendao/async/AsyncOperation; if-eqz v2, :cond_4b .line 157 invoke-virtual {v1, v2}, Lorg/greenrobot/greendao/async/AsyncOperation;->isMergeableWith(Lorg/greenrobot/greendao/async/AsyncOperation;)Z move-result v3 if-eqz v3, :cond_44 .line 158 invoke-direct {p0, v1, v2}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->mergeTxAndExecute(Lorg/greenrobot/greendao/async/AsyncOperation;Lorg/greenrobot/greendao/async/AsyncOperation;)V goto :goto_0 .line 161 :cond_44 invoke-direct {p0, v1}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeOperationAndPostCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V .line 162 invoke-direct {p0, v2}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeOperationAndPostCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V goto :goto_0 .line 167 :cond_4b invoke-direct {p0, v1}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executeOperationAndPostCompleted(Lorg/greenrobot/greendao/async/AsyncOperation;)V :try_end_4e .catch Ljava/lang/InterruptedException; {:try_start_24 .. :try_end_4e} :catch_51 .catchall {:try_start_24 .. :try_end_4e} :catchall_4f goto :goto_0 :catchall_4f move-exception v1 goto :goto_73 :catch_51 move-exception v1 .line 170 :try_start_52 new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; move-result-object v3 invoke-virtual {v3}, Ljava/lang/Thread;->getName()Ljava/lang/String; move-result-object v3 invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 const-string v3, " was interruppted" invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 invoke-static {v2, v1}, Lorg/greenrobot/greendao/DaoLog;->w(Ljava/lang/String;Ljava/lang/Throwable;)I :try_end_70 .catchall {:try_start_52 .. :try_end_70} :catchall_4f .line 173 iput-boolean v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorRunning:Z return-void :goto_73 iput-boolean v0, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->executorRunning:Z throw v1 .end method .method public setListener(Lorg/greenrobot/greendao/async/AsyncOperationListener;)V .registers 2 .line 90 iput-object p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listener:Lorg/greenrobot/greendao/async/AsyncOperationListener; return-void .end method .method public setListenerMainThread(Lorg/greenrobot/greendao/async/AsyncOperationListener;)V .registers 2 .line 98 iput-object p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->listenerMainThread:Lorg/greenrobot/greendao/async/AsyncOperationListener; return-void .end method .method public setMaxOperationCountToMerge(I)V .registers 2 .line 74 iput p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->maxOperationCountToMerge:I return-void .end method .method public setWaitForMergeMillis(I)V .registers 2 .line 82 iput p1, p0, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->waitForMergeMillis:I return-void .end method .method public declared-synchronized waitForCompletion()V .registers 4 monitor-enter p0 .line 110 :goto_1 :try_start_1 invoke-virtual {p0}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->isCompleted()Z move-result v0 :try_end_5 .catchall {:try_start_1 .. :try_end_5} :catchall_16 if-nez v0, :cond_14 .line 112 :try_start_7 invoke-virtual {p0}, Ljava/lang/Object;->wait()V :try_end_a .catch Ljava/lang/InterruptedException; {:try_start_7 .. :try_end_a} :catch_b .catchall {:try_start_7 .. :try_end_a} :catchall_16 goto :goto_1 :catch_b move-exception v0 .line 114 :try_start_c new-instance v1, Lorg/greenrobot/greendao/DaoException; const-string v2, "Interrupted while waiting for all operations to complete" invoke-direct {v1, v2, v0}, Lorg/greenrobot/greendao/DaoException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw v1 :try_end_14 .catchall {:try_start_c .. :try_end_14} :catchall_16 .line 117 :cond_14 monitor-exit p0 return-void :catchall_16 move-exception v0 :try_start_17 monitor-exit p0 :try_end_18 .catchall {:try_start_17 .. :try_end_18} :catchall_16 throw v0 .end method .method public declared-synchronized waitForCompletion(I)Z .registers 4 monitor-enter p0 .line 126 :try_start_1 invoke-virtual {p0}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->isCompleted()Z move-result v0 :try_end_5 .catchall {:try_start_1 .. :try_end_5} :catchall_1b if-nez v0, :cond_15 int-to-long v0, p1 .line 128 :try_start_8 invoke-virtual {p0, v0, v1}, Ljava/lang/Object;->wait(J)V :try_end_b .catch Ljava/lang/InterruptedException; {:try_start_8 .. :try_end_b} :catch_c .catchall {:try_start_8 .. :try_end_b} :catchall_1b goto :goto_15 :catch_c move-exception p1 .line 130 :try_start_d new-instance v0, Lorg/greenrobot/greendao/DaoException; const-string v1, "Interrupted while waiting for all operations to complete" invoke-direct {v0, v1, p1}, Lorg/greenrobot/greendao/DaoException;->(Ljava/lang/String;Ljava/lang/Throwable;)V throw v0 .line 133 :cond_15 :goto_15 invoke-virtual {p0}, Lorg/greenrobot/greendao/async/AsyncOperationExecutor;->isCompleted()Z move-result p1 :try_end_19 .catchall {:try_start_d .. :try_end_19} :catchall_1b monitor-exit p0 return p1 :catchall_1b move-exception p1 :try_start_1c monitor-exit p0 :try_end_1d .catchall {:try_start_1c .. :try_end_1d} :catchall_1b throw p1 .end method