private JobOpenHelper(Context context, String databasePath) { super(context, databasePath, null, DATABASE_VERSION, new JobStorageDatabaseErrorHandler()); }
@NonNull @VisibleForTesting /*package*/ SQLiteDatabase getDatabase() { if (mInjectedDatabase != null) { return mInjectedDatabase; } else { try { return mDbHelper.getWritableDatabase(); } catch (SQLiteCantOpenDatabaseException e) { CAT.e(e); // that's bad, delete the database and try again, otherwise users may get stuck in a loop new JobStorageDatabaseErrorHandler().deleteDatabaseFile(DATABASE_NAME); return mDbHelper.getWritableDatabase(); } } }
@Test public void verifyDeleteAfterCorruptionWhileOpen() { Context context = RuntimeEnvironment.application; JobStorage jobStorage = new JobStorage(context); SQLiteDatabase database = jobStorage.getDatabase(); assertThat(database).isNotNull(); assertThat(database.isOpen()).isTrue(); File file = new File(database.getPath()); assertThat(file.exists()).isTrue(); assertThat(file.isFile()).isTrue(); new JobStorageDatabaseErrorHandler().onCorruption(database); assertThat(file.exists()).isFalse(); }
@Test public void verifyDeleteAfterCorruptionWhileClosed() { Context context = RuntimeEnvironment.application; JobStorage jobStorage = new JobStorage(context); SQLiteDatabase database = jobStorage.getDatabase(); assertThat(database).isNotNull(); assertThat(database.isOpen()).isTrue(); File file = new File(database.getPath()); assertThat(file.exists()).isTrue(); assertThat(file.isFile()).isTrue(); database.close(); new JobStorageDatabaseErrorHandler().onCorruption(database); assertThat(file.exists()).isFalse(); }
@Test public void verifyDeleteWithApi14() { Context context = RuntimeEnvironment.application; JobStorage jobStorage = new JobStorage(context); SQLiteDatabase database = jobStorage.getDatabase(); assertThat(database).isNotNull(); assertThat(database.isOpen()).isTrue(); File file = new File(database.getPath()); assertThat(file.exists()).isTrue(); assertThat(file.isFile()).isTrue(); new JobStorageDatabaseErrorHandler().deleteApi14(context, file); assertThat(file.exists()).isFalse(); }
private JobOpenHelper(Context context, String databasePath) { super(context, databasePath, null, DATABASE_VERSION, new JobStorageDatabaseErrorHandler()); }
@NonNull @VisibleForTesting /*package*/ SQLiteDatabase getDatabase() { if (mInjectedDatabase != null) { return mInjectedDatabase; } else { try { return mDbHelper.getWritableDatabase(); } catch (SQLiteCantOpenDatabaseException e) { CAT.e(e); // that's bad, delete the database and try again, otherwise users may get stuck in a loop new JobStorageDatabaseErrorHandler().deleteDatabaseFile(DATABASE_NAME); return mDbHelper.getWritableDatabase(); } } }