2019-07-24 11:27:29 +00:00
.class public L androidx/room/RoomDatabase$Builder ;
.super L java/lang/Object ;
.source "RoomDatabase.java"
# annotations
.annotation system L dalvik/annotation/EnclosingClass ;
value = L androidx/room/RoomDatabase ;
.end annotation
.annotation system L dalvik/annotation/InnerClass ;
accessFlags = 0x9
name = "Builder"
.end annotation
.annotation system L dalvik/annotation/Signature ;
value = {
"<T:" ,
"Landroidx/room/RoomDatabase;" ,
">" ,
"Ljava/lang/Object;"
}
.end annotation
# instance fields
2019-10-07 23:23:22 +00:00
.field private mAllowDestructiveMigrationOnDowngrade : Z
2019-07-24 11:27:29 +00:00
.field private mAllowMainThreadQueries : Z
.field private mCallbacks : L java/util/ArrayList ;
.annotation system L dalvik/annotation/Signature ;
value = {
"Ljava/util/ArrayList<" ,
"Landroidx/room/RoomDatabase$Callback;" ,
">;"
}
.end annotation
.end field
.field private final mContext : L android/content/Context ;
.field private final mDatabaseClass : L java/lang/Class ;
.annotation system L dalvik/annotation/Signature ;
value = {
"Ljava/lang/Class<" ,
"TT;>;"
}
.end annotation
.end field
.field private mFactory : L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;
.field private mJournalMode : L androidx/room/RoomDatabase$JournalMode ;
.field private final mMigrationContainer : L androidx/room/RoomDatabase$MigrationContainer ;
.field private mMigrationStartAndEndVersions : L java/util/Set ;
.annotation system L dalvik/annotation/Signature ;
value = {
"Ljava/util/Set<" ,
"Ljava/lang/Integer;" ,
">;"
}
.end annotation
.end field
.field private mMigrationsNotRequiredFrom : L java/util/Set ;
.annotation system L dalvik/annotation/Signature ;
value = {
"Ljava/util/Set<" ,
"Ljava/lang/Integer;" ,
">;"
}
.end annotation
.end field
2019-10-07 23:23:22 +00:00
.field private mMultiInstanceInvalidation : Z
2019-07-24 11:27:29 +00:00
.field private final mName : L java/lang/String ;
.field private mQueryExecutor : L java/util/concurrent/Executor ;
.field private mRequireMigration : Z
2019-10-07 23:23:22 +00:00
.field private mTransactionExecutor : L java/util/concurrent/Executor ;
2019-07-24 11:27:29 +00:00
# direct methods
.method constructor <init> ( L android/content/Context ;L java/lang/Class ;L java/lang/String ;) V
.locals 0
.annotation system L dalvik/annotation/Signature ;
value = {
"(" ,
"Landroid/content/Context;" ,
"Ljava/lang/Class<" ,
"TT;>;" ,
"Ljava/lang/String;" ,
")V"
}
.end annotation
invoke-direct { p0 } , L java/lang/Object ;-> <init> ( ) V
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mContext : L android/content/Context ;
iput-object p2 , p0 , L androidx/room/RoomDatabase$Builder ;-> mDatabaseClass : L java/lang/Class ;
iput-object p3 , p0 , L androidx/room/RoomDatabase$Builder ;-> mName : L java/lang/String ;
sget-object p1 , L androidx/room/RoomDatabase$JournalMode ;-> AUTOMATIC : L androidx/room/RoomDatabase$JournalMode ;
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mJournalMode : L androidx/room/RoomDatabase$JournalMode ;
const/4 p1 , 0x1
iput-boolean p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mRequireMigration : Z
new-instance p1 , L androidx/room/RoomDatabase$MigrationContainer ;
invoke-direct { p1 } , L androidx/room/RoomDatabase$MigrationContainer ;-> <init> ( ) V
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationContainer : L androidx/room/RoomDatabase$MigrationContainer ;
return-void
.end method
# virtual methods
.method public addCallback ( L androidx/room/RoomDatabase$Callback ;) L androidx/room/RoomDatabase$Builder ;
.locals 1
.annotation system L dalvik/annotation/Signature ;
value = {
"(" ,
"Landroidx/room/RoomDatabase$Callback;" ,
")" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mCallbacks : L java/util/ArrayList ;
if-nez v0 , :cond_0
new-instance v0 , L java/util/ArrayList ;
invoke-direct { v0 } , L java/util/ArrayList ;-> <init> ( ) V
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mCallbacks : L java/util/ArrayList ;
:cond_0
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mCallbacks : L java/util/ArrayList ;
invoke-virtual { v0 , p1 } , L java/util/ArrayList ;-> add ( L java/lang/Object ;) Z
return-object p0
.end method
.method public varargs addMigrations ( [ L androidx/room/migration/Migration ;) L androidx/room/RoomDatabase$Builder ;
.locals 5
.annotation system L dalvik/annotation/Signature ;
value = {
"([" ,
"Landroidx/room/migration/Migration;" ,
")" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationStartAndEndVersions : L java/util/Set ;
if-nez v0 , :cond_0
new-instance v0 , L java/util/HashSet ;
invoke-direct { v0 } , L java/util/HashSet ;-> <init> ( ) V
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationStartAndEndVersions : L java/util/Set ;
:cond_0
array-length v0 , p1
const/4 v1 , 0x0
:goto_0
if-ge v1 , v0 , :cond_1
aget-object v2 , p1 , v1
iget-object v3 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationStartAndEndVersions : L java/util/Set ;
iget v4 , v2 , L androidx/room/migration/Migration ;-> startVersion : I
invoke-static { v4 } , L java/lang/Integer ;-> valueOf ( I ) L java/lang/Integer ;
move-result-object v4
invoke-interface { v3 , v4 } , L java/util/Set ;-> add ( L java/lang/Object ;) Z
iget-object v3 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationStartAndEndVersions : L java/util/Set ;
iget v2 , v2 , L androidx/room/migration/Migration ;-> endVersion : I
invoke-static { v2 } , L java/lang/Integer ;-> valueOf ( I ) L java/lang/Integer ;
move-result-object v2
invoke-interface { v3 , v2 } , L java/util/Set ;-> add ( L java/lang/Object ;) Z
add-int/lit8 v1 , v1 , 0x1
goto :goto_0
:cond_1
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationContainer : L androidx/room/RoomDatabase$MigrationContainer ;
invoke-virtual { v0 , p1 } , L androidx/room/RoomDatabase$MigrationContainer ;-> addMigrations ( [ L androidx/room/migration/Migration ;) V
return-object p0
.end method
.method public allowMainThreadQueries ( ) L androidx/room/RoomDatabase$Builder ;
.locals 1
.annotation system L dalvik/annotation/Signature ;
value = {
"()" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
const/4 v0 , 0x1
iput-boolean v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mAllowMainThreadQueries : Z
return-object p0
.end method
.method public build ( ) L androidx/room/RoomDatabase ;
2019-10-07 23:23:22 +00:00
.locals 15
2019-07-24 11:27:29 +00:00
.annotation system L dalvik/annotation/Signature ;
value = {
"()TT;"
}
.end annotation
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mContext : L android/content/Context ;
2019-10-07 23:23:22 +00:00
if-eqz v0 , :cond_7
2019-07-24 11:27:29 +00:00
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mDatabaseClass : L java/lang/Class ;
2019-10-07 23:23:22 +00:00
if-eqz v0 , :cond_6
2019-07-24 11:27:29 +00:00
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
if-nez v0 , :cond_0
2019-10-07 23:23:22 +00:00
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
if-nez v0 , :cond_0
2019-07-24 11:27:29 +00:00
invoke-static { } , L androidx/arch/core/executor/ArchTaskExecutor ;-> getIOThreadExecutor ( ) L java/util/concurrent/Executor ;
move-result-object v0
2019-10-07 23:23:22 +00:00
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
2019-07-24 11:27:29 +00:00
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
2019-10-07 23:23:22 +00:00
goto :goto_0
2019-07-24 11:27:29 +00:00
:cond_0
2019-10-07 23:23:22 +00:00
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
if-eqz v0 , :cond_1
iget-object v1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
if-nez v1 , :cond_1
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
goto :goto_0
:cond_1
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
if-nez v0 , :cond_2
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
2019-07-24 11:27:29 +00:00
if-eqz v0 , :cond_2
2019-10-07 23:23:22 +00:00
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
:cond_2
:goto_0
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationStartAndEndVersions : L java/util/Set ;
if-eqz v0 , :cond_4
2019-07-24 11:27:29 +00:00
iget-object v1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationsNotRequiredFrom : L java/util/Set ;
2019-10-07 23:23:22 +00:00
if-eqz v1 , :cond_4
2019-07-24 11:27:29 +00:00
invoke-interface { v0 } , L java/util/Set ;-> iterator ( ) L java/util/Iterator ;
move-result-object v0
2019-10-07 23:23:22 +00:00
:goto_1
2019-07-24 11:27:29 +00:00
invoke-interface { v0 } , L java/util/Iterator ;-> hasNext ( ) Z
move-result v1
2019-10-07 23:23:22 +00:00
if-eqz v1 , :cond_4
2019-07-24 11:27:29 +00:00
invoke-interface { v0 } , L java/util/Iterator ;-> next ( ) L java/lang/Object ;
move-result-object v1
check-cast v1 , L java/lang/Integer ;
iget-object v2 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationsNotRequiredFrom : L java/util/Set ;
invoke-interface { v2 , v1 } , L java/util/Set ;-> contains ( L java/lang/Object ;) Z
move-result v2
2019-10-07 23:23:22 +00:00
if-nez v2 , :cond_3
2019-07-24 11:27:29 +00:00
2019-10-07 23:23:22 +00:00
goto :goto_1
2019-07-24 11:27:29 +00:00
2019-10-07 23:23:22 +00:00
:cond_3
2019-07-24 11:27:29 +00:00
new-instance v0 , L java/lang/IllegalArgumentException ;
invoke-static { v1 } , L java/lang/String ;-> valueOf ( L java/lang/Object ;) L java/lang/String ;
move-result-object v1
const-string v2 , "Inconsistency detected. A Migration was supplied to addMigration(Migration... migrations) that has a start or end version equal to a start version supplied to fallbackToDestructiveMigrationFrom(int... startVersions). Start version: "
invoke-virtual { v2 , v1 } , L java/lang/String ;-> concat ( L java/lang/String ;) L java/lang/String ;
move-result-object v1
invoke-direct { v0 , v1 } , L java/lang/IllegalArgumentException ;-> <init> ( L java/lang/String ;) V
throw v0
2019-10-07 23:23:22 +00:00
:cond_4
2019-07-24 11:27:29 +00:00
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mFactory : L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;
2019-10-07 23:23:22 +00:00
if-nez v0 , :cond_5
2019-07-24 11:27:29 +00:00
new-instance v0 , L androidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory ;
invoke-direct { v0 } , L androidx/sqlite/db/framework/FrameworkSQLiteOpenHelperFactory ;-> <init> ( ) V
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mFactory : L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;
2019-10-07 23:23:22 +00:00
:cond_5
2019-07-24 11:27:29 +00:00
new-instance v0 , L androidx/room/DatabaseConfiguration ;
iget-object v2 , p0 , L androidx/room/RoomDatabase$Builder ;-> mContext : L android/content/Context ;
iget-object v3 , p0 , L androidx/room/RoomDatabase$Builder ;-> mName : L java/lang/String ;
iget-object v4 , p0 , L androidx/room/RoomDatabase$Builder ;-> mFactory : L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;
iget-object v5 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationContainer : L androidx/room/RoomDatabase$MigrationContainer ;
iget-object v6 , p0 , L androidx/room/RoomDatabase$Builder ;-> mCallbacks : L java/util/ArrayList ;
iget-boolean v7 , p0 , L androidx/room/RoomDatabase$Builder ;-> mAllowMainThreadQueries : Z
iget-object v1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mJournalMode : L androidx/room/RoomDatabase$JournalMode ;
invoke-virtual { v1 , v2 } , L androidx/room/RoomDatabase$JournalMode ;-> resolve ( L android/content/Context ;) L androidx/room/RoomDatabase$JournalMode ;
move-result-object v8
iget-object v9 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
2019-10-07 23:23:22 +00:00
iget-object v10 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
iget-boolean v11 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMultiInstanceInvalidation : Z
2019-07-24 11:27:29 +00:00
2019-10-07 23:23:22 +00:00
iget-boolean v12 , p0 , L androidx/room/RoomDatabase$Builder ;-> mRequireMigration : Z
iget-boolean v13 , p0 , L androidx/room/RoomDatabase$Builder ;-> mAllowDestructiveMigrationOnDowngrade : Z
iget-object v14 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationsNotRequiredFrom : L java/util/Set ;
2019-07-24 11:27:29 +00:00
move-object v1 , v0
2019-10-07 23:23:22 +00:00
invoke-direct/range { v1 . . v14 } , L androidx/room/DatabaseConfiguration ;-> <init> ( L android/content/Context ;L java/lang/String ;L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;L androidx/room/RoomDatabase$MigrationContainer ;L java/util/List ;Z L androidx/room/RoomDatabase$JournalMode ;L java/util/concurrent/Executor ;L java/util/concurrent/Executor ;ZZZ L java/util/Set ;) V
2019-07-24 11:27:29 +00:00
iget-object v1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mDatabaseClass : L java/lang/Class ;
const-string v2 , "_Impl"
invoke-static { v1 , v2 } , L androidx/room/Room ;-> getGeneratedImplementation ( L java/lang/Class ;L java/lang/String ;) L java/lang/Object ;
move-result-object v1
check-cast v1 , L androidx/room/RoomDatabase ;
invoke-virtual { v1 , v0 } , L androidx/room/RoomDatabase ;-> init ( L androidx/room/DatabaseConfiguration ;) V
return-object v1
2019-10-07 23:23:22 +00:00
:cond_6
2019-07-24 11:27:29 +00:00
new-instance v0 , L java/lang/IllegalArgumentException ;
const-string v1 , "Must provide an abstract class that extends RoomDatabase"
invoke-direct { v0 , v1 } , L java/lang/IllegalArgumentException ;-> <init> ( L java/lang/String ;) V
throw v0
2019-10-07 23:23:22 +00:00
:cond_7
2019-07-24 11:27:29 +00:00
new-instance v0 , L java/lang/IllegalArgumentException ;
const-string v1 , "Cannot provide null context for the database."
invoke-direct { v0 , v1 } , L java/lang/IllegalArgumentException ;-> <init> ( L java/lang/String ;) V
throw v0
2019-10-07 23:23:22 +00:00
.end method
.method public enableMultiInstanceInvalidation ( ) L androidx/room/RoomDatabase$Builder ;
.locals 1
.annotation system L dalvik/annotation/Signature ;
value = {
"()" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mName : L java/lang/String ;
if-eqz v0 , :cond_0
const/4 v0 , 0x1
goto :goto_0
:cond_0
const/4 v0 , 0x0
:goto_0
iput-boolean v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMultiInstanceInvalidation : Z
return-object p0
2019-07-24 11:27:29 +00:00
.end method
.method public fallbackToDestructiveMigration ( ) L androidx/room/RoomDatabase$Builder ;
.locals 1
.annotation system L dalvik/annotation/Signature ;
value = {
"()" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
const/4 v0 , 0x0
iput-boolean v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mRequireMigration : Z
2019-10-07 23:23:22 +00:00
const/4 v0 , 0x1
iput-boolean v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mAllowDestructiveMigrationOnDowngrade : Z
2019-07-24 11:27:29 +00:00
return-object p0
.end method
.method public varargs fallbackToDestructiveMigrationFrom ( [I ) L androidx/room/RoomDatabase$Builder ;
.locals 4
.annotation system L dalvik/annotation/Signature ;
value = {
"([I)" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iget-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationsNotRequiredFrom : L java/util/Set ;
if-nez v0 , :cond_0
new-instance v0 , L java/util/HashSet ;
array-length v1 , p1
invoke-direct { v0 , v1 } , L java/util/HashSet ;-> <init> ( I ) V
iput-object v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationsNotRequiredFrom : L java/util/Set ;
:cond_0
array-length v0 , p1
const/4 v1 , 0x0
:goto_0
if-ge v1 , v0 , :cond_1
aget v2 , p1 , v1
iget-object v3 , p0 , L androidx/room/RoomDatabase$Builder ;-> mMigrationsNotRequiredFrom : L java/util/Set ;
invoke-static { v2 } , L java/lang/Integer ;-> valueOf ( I ) L java/lang/Integer ;
move-result-object v2
invoke-interface { v3 , v2 } , L java/util/Set ;-> add ( L java/lang/Object ;) Z
add-int/lit8 v1 , v1 , 0x1
goto :goto_0
:cond_1
return-object p0
.end method
2019-10-07 23:23:22 +00:00
.method public fallbackToDestructiveMigrationOnDowngrade ( ) L androidx/room/RoomDatabase$Builder ;
.locals 1
.annotation system L dalvik/annotation/Signature ;
value = {
"()" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
const/4 v0 , 0x1
iput-boolean v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mRequireMigration : Z
iput-boolean v0 , p0 , L androidx/room/RoomDatabase$Builder ;-> mAllowDestructiveMigrationOnDowngrade : Z
return-object p0
.end method
2019-07-24 11:27:29 +00:00
.method public openHelperFactory ( L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;) L androidx/room/RoomDatabase$Builder ;
.locals 0
.annotation system L dalvik/annotation/Signature ;
value = {
"(" ,
"Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;" ,
")" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mFactory : L androidx/sqlite/db/SupportSQLiteOpenHelper$Factory ;
return-object p0
.end method
.method public setJournalMode ( L androidx/room/RoomDatabase$JournalMode ;) L androidx/room/RoomDatabase$Builder ;
.locals 0
.annotation system L dalvik/annotation/Signature ;
value = {
"(" ,
"Landroidx/room/RoomDatabase$JournalMode;" ,
")" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mJournalMode : L androidx/room/RoomDatabase$JournalMode ;
return-object p0
.end method
.method public setQueryExecutor ( L java/util/concurrent/Executor ;) L androidx/room/RoomDatabase$Builder ;
.locals 0
.annotation system L dalvik/annotation/Signature ;
value = {
"(" ,
"Ljava/util/concurrent/Executor;" ,
")" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mQueryExecutor : L java/util/concurrent/Executor ;
return-object p0
.end method
2019-10-07 23:23:22 +00:00
.method public setTransactionExecutor ( L java/util/concurrent/Executor ;) L androidx/room/RoomDatabase$Builder ;
.locals 0
.annotation system L dalvik/annotation/Signature ;
value = {
"(" ,
"Ljava/util/concurrent/Executor;" ,
")" ,
"Landroidx/room/RoomDatabase$Builder<" ,
"TT;>;"
}
.end annotation
iput-object p1 , p0 , L androidx/room/RoomDatabase$Builder ;-> mTransactionExecutor : L java/util/concurrent/Executor ;
return-object p0
.end method