RoomDatabase$Builder.smali
.class public Landroidx/room/RoomDatabase$Builder;
.super Ljava/lang/Object;
.source "RoomDatabase.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Landroidx/room/RoomDatabase;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "Builder"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Landroidx/room/RoomDatabase;",
">",
"Ljava/lang/Object;"
}
.end annotation
# instance fields
.field private final a:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"TT;>;"
}
.end annotation
.end field
.field private final b:Ljava/lang/String;
.field private final c:Landroid/content/Context;
.field private d:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Landroidx/room/RoomDatabase$a;",
">;"
}
.end annotation
.end field
.field private e:Ljava/util/concurrent/Executor;
.field private f:Ljava/util/concurrent/Executor;
.field private g:Landroidx/sqlite/db/c$c;
.field private h:Z
.field private i:Landroidx/room/RoomDatabase$JournalMode;
.field private j:Z
.field private k:Z
.field private l:Z
.field private final m:Landroidx/room/RoomDatabase$b;
.field private n:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private o:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private p:Ljava/lang/String;
.field private q:Ljava/io/File;
# direct methods
.method constructor <init>(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/content/Context;",
"Ljava/lang/Class<",
"TT;>;",
"Ljava/lang/String;",
")V"
}
.end annotation
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iput-object p1, p0, Landroidx/room/RoomDatabase$Builder;->c:Landroid/content/Context;
.line 3
iput-object p2, p0, Landroidx/room/RoomDatabase$Builder;->a:Ljava/lang/Class;
.line 4
iput-object p3, p0, Landroidx/room/RoomDatabase$Builder;->b:Ljava/lang/String;
.line 5
sget-object p1, Landroidx/room/RoomDatabase$JournalMode;->AUTOMATIC:Landroidx/room/RoomDatabase$JournalMode;
iput-object p1, p0, Landroidx/room/RoomDatabase$Builder;->i:Landroidx/room/RoomDatabase$JournalMode;
const/4 p1, 0x1
.line 6
iput-boolean p1, p0, Landroidx/room/RoomDatabase$Builder;->k:Z
.line 7
new-instance p1, Landroidx/room/RoomDatabase$b;
invoke-direct {p1}, Landroidx/room/RoomDatabase$b;-><init>()V
iput-object p1, p0, Landroidx/room/RoomDatabase$Builder;->m:Landroidx/room/RoomDatabase$b;
return-void
.end method
# virtual methods
.method public a()Landroidx/room/RoomDatabase$Builder;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Landroidx/room/RoomDatabase$Builder<",
"TT;>;"
}
.end annotation
const/4 v0, 0x1
.line 8
iput-boolean v0, p0, Landroidx/room/RoomDatabase$Builder;->h:Z
return-object p0
.end method
.method public a(Landroidx/sqlite/db/c$c;)Landroidx/room/RoomDatabase$Builder;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroidx/sqlite/db/c$c;",
")",
"Landroidx/room/RoomDatabase$Builder<",
"TT;>;"
}
.end annotation
.line 1
iput-object p1, p0, Landroidx/room/RoomDatabase$Builder;->g:Landroidx/sqlite/db/c$c;
return-object p0
.end method
.method public a(Ljava/util/concurrent/Executor;)Landroidx/room/RoomDatabase$Builder;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/concurrent/Executor;",
")",
"Landroidx/room/RoomDatabase$Builder<",
"TT;>;"
}
.end annotation
.line 9
iput-object p1, p0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
return-object p0
.end method
.method public varargs a([Landroidx/room/a/a;)Landroidx/room/RoomDatabase$Builder;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Landroidx/room/a/a;",
")",
"Landroidx/room/RoomDatabase$Builder<",
"TT;>;"
}
.end annotation
.line 2
iget-object v0, p0, Landroidx/room/RoomDatabase$Builder;->o:Ljava/util/Set;
if-nez v0, :cond_b
.line 3
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
iput-object v0, p0, Landroidx/room/RoomDatabase$Builder;->o:Ljava/util/Set;
.line 4
:cond_b
array-length v0, p1
const/4 v1, 0x0
:goto_d
if-ge v1, v0, :cond_2a
aget-object v2, p1, v1
.line 5
iget-object v3, p0, Landroidx/room/RoomDatabase$Builder;->o:Ljava/util/Set;
iget v4, v2, Landroidx/room/a/a;->a:I
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v4
invoke-interface {v3, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 6
iget-object v3, p0, Landroidx/room/RoomDatabase$Builder;->o:Ljava/util/Set;
iget v2, v2, Landroidx/room/a/a;->b:I
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-interface {v3, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
add-int/lit8 v1, v1, 0x1
goto :goto_d
.line 7
:cond_2a
iget-object v0, p0, Landroidx/room/RoomDatabase$Builder;->m:Landroidx/room/RoomDatabase$b;
invoke-virtual {v0, p1}, Landroidx/room/RoomDatabase$b;->a([Landroidx/room/a/a;)V
return-object p0
.end method
.method public addCallback(Landroidx/room/RoomDatabase$a;)Landroidx/room/RoomDatabase$Builder;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroidx/room/RoomDatabase$a;",
")",
"Landroidx/room/RoomDatabase$Builder<",
"TT;>;"
}
.end annotation
.line 1
iget-object v0, p0, Landroidx/room/RoomDatabase$Builder;->d:Ljava/util/ArrayList;
if-nez v0, :cond_b
.line 2
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Landroidx/room/RoomDatabase$Builder;->d:Ljava/util/ArrayList;
.line 3
:cond_b
iget-object v0, p0, Landroidx/room/RoomDatabase$Builder;->d:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-object p0
.end method
.method public b()Landroidx/room/RoomDatabase;
.registers 22
.annotation build Landroid/annotation/SuppressLint;
value = {
"RestrictedApi"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
move-object/from16 v0, p0
.line 1
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->c:Landroid/content/Context;
if-eqz v1, :cond_ed
.line 2
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->a:Ljava/lang/Class;
if-eqz v1, :cond_e5
.line 3
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
if-nez v1, :cond_1b
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->f:Ljava/util/concurrent/Executor;
if-nez v1, :cond_1b
.line 4
invoke-static {}, Landroidx/arch/core/a/c;->b()Ljava/util/concurrent/Executor;
move-result-object v1
iput-object v1, v0, Landroidx/room/RoomDatabase$Builder;->f:Ljava/util/concurrent/Executor;
iput-object v1, v0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
goto :goto_30
.line 5
:cond_1b
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
if-eqz v1, :cond_26
iget-object v2, v0, Landroidx/room/RoomDatabase$Builder;->f:Ljava/util/concurrent/Executor;
if-nez v2, :cond_26
.line 6
iput-object v1, v0, Landroidx/room/RoomDatabase$Builder;->f:Ljava/util/concurrent/Executor;
goto :goto_30
.line 7
:cond_26
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
if-nez v1, :cond_30
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->f:Ljava/util/concurrent/Executor;
if-eqz v1, :cond_30
.line 8
iput-object v1, v0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
.line 9
:cond_30
:goto_30
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->o:Ljava/util/Set;
if-eqz v1, :cond_68
iget-object v2, v0, Landroidx/room/RoomDatabase$Builder;->n:Ljava/util/Set;
if-eqz v2, :cond_68
.line 10
invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_3c
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_68
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/Integer;
.line 11
iget-object v3, v0, Landroidx/room/RoomDatabase$Builder;->n:Ljava/util/Set;
invoke-interface {v3, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_51
goto :goto_3c
.line 12
:cond_51
new-instance v1, Ljava/lang/IllegalArgumentException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "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 {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.line 13
:cond_68
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->g:Landroidx/sqlite/db/c$c;
if-nez v1, :cond_73
.line 14
new-instance v1, Landroidx/sqlite/db/framework/f;
invoke-direct {v1}, Landroidx/sqlite/db/framework/f;-><init>()V
iput-object v1, v0, Landroidx/room/RoomDatabase$Builder;->g:Landroidx/sqlite/db/c$c;
.line 15
:cond_73
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->p:Ljava/lang/String;
if-nez v1, :cond_7b
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->q:Ljava/io/File;
if-eqz v1, :cond_9d
.line 16
:cond_7b
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->b:Ljava/lang/String;
if-eqz v1, :cond_dd
.line 17
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->p:Ljava/lang/String;
if-eqz v1, :cond_90
iget-object v1, v0, Landroidx/room/RoomDatabase$Builder;->q:Ljava/io/File;
if-nez v1, :cond_88
goto :goto_90
.line 18
:cond_88
new-instance v1, Ljava/lang/IllegalArgumentException;
const-string v2, "Both createFromAsset() and createFromFile() was called on this Builder but the database can only be created using one of the two configurations."
invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.line 19
:cond_90
:goto_90
new-instance v1, Landroidx/room/u;
iget-object v2, v0, Landroidx/room/RoomDatabase$Builder;->p:Ljava/lang/String;
iget-object v3, v0, Landroidx/room/RoomDatabase$Builder;->q:Ljava/io/File;
iget-object v4, v0, Landroidx/room/RoomDatabase$Builder;->g:Landroidx/sqlite/db/c$c;
invoke-direct {v1, v2, v3, v4}, Landroidx/room/u;-><init>(Ljava/lang/String;Ljava/io/File;Landroidx/sqlite/db/c$c;)V
iput-object v1, v0, Landroidx/room/RoomDatabase$Builder;->g:Landroidx/sqlite/db/c$c;
.line 20
:cond_9d
new-instance v1, Landroidx/room/a;
iget-object v6, v0, Landroidx/room/RoomDatabase$Builder;->c:Landroid/content/Context;
iget-object v7, v0, Landroidx/room/RoomDatabase$Builder;->b:Ljava/lang/String;
iget-object v8, v0, Landroidx/room/RoomDatabase$Builder;->g:Landroidx/sqlite/db/c$c;
iget-object v9, v0, Landroidx/room/RoomDatabase$Builder;->m:Landroidx/room/RoomDatabase$b;
iget-object v10, v0, Landroidx/room/RoomDatabase$Builder;->d:Ljava/util/ArrayList;
iget-boolean v11, v0, Landroidx/room/RoomDatabase$Builder;->h:Z
iget-object v2, v0, Landroidx/room/RoomDatabase$Builder;->i:Landroidx/room/RoomDatabase$JournalMode;
.line 21
invoke-virtual {v2, v6}, Landroidx/room/RoomDatabase$JournalMode;->resolve(Landroid/content/Context;)Landroidx/room/RoomDatabase$JournalMode;
move-result-object v12
iget-object v13, v0, Landroidx/room/RoomDatabase$Builder;->e:Ljava/util/concurrent/Executor;
iget-object v14, v0, Landroidx/room/RoomDatabase$Builder;->f:Ljava/util/concurrent/Executor;
iget-boolean v15, v0, Landroidx/room/RoomDatabase$Builder;->j:Z
iget-boolean v2, v0, Landroidx/room/RoomDatabase$Builder;->k:Z
iget-boolean v3, v0, Landroidx/room/RoomDatabase$Builder;->l:Z
iget-object v4, v0, Landroidx/room/RoomDatabase$Builder;->n:Ljava/util/Set;
iget-object v5, v0, Landroidx/room/RoomDatabase$Builder;->p:Ljava/lang/String;
move-object/from16 v18, v4
iget-object v4, v0, Landroidx/room/RoomDatabase$Builder;->q:Ljava/io/File;
move-object/from16 v19, v5
move-object v5, v1
move/from16 v16, v2
move/from16 v17, v3
move-object/from16 v20, v4
invoke-direct/range {v5 .. v20}, Landroidx/room/a;-><init>(Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/c$c;Landroidx/room/RoomDatabase$b;Ljava/util/List;ZLandroidx/room/RoomDatabase$JournalMode;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;ZZZLjava/util/Set;Ljava/lang/String;Ljava/io/File;)V
.line 22
iget-object v2, v0, Landroidx/room/RoomDatabase$Builder;->a:Ljava/lang/Class;
const-string v3, "_Impl"
invoke-static {v2, v3}, Landroidx/room/p;->a(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/room/RoomDatabase;
.line 23
invoke-virtual {v2, v1}, Landroidx/room/RoomDatabase;->b(Landroidx/room/a;)V
return-object v2
.line 24
:cond_dd
new-instance v1, Ljava/lang/IllegalArgumentException;
const-string v2, "Cannot create from asset or file for an in-memory database."
invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.line 25
:cond_e5
new-instance v1, Ljava/lang/IllegalArgumentException;
const-string v2, "Must provide an abstract class that extends RoomDatabase"
invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v1
.line 26
:cond_ed
new-instance v1, Ljava/lang/IllegalArgumentException;
const-string v2, "Cannot provide null context for the database."
invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
goto :goto_f6
:goto_f5
throw v1
:goto_f6
goto :goto_f5
.end method
.method public c()Landroidx/room/RoomDatabase$Builder;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Landroidx/room/RoomDatabase$Builder<",
"TT;>;"
}
.end annotation
const/4 v0, 0x0
.line 1
iput-boolean v0, p0, Landroidx/room/RoomDatabase$Builder;->k:Z
const/4 v0, 0x1
.line 2
iput-boolean v0, p0, Landroidx/room/RoomDatabase$Builder;->l:Z
return-object p0
.end method