Skip to content

fixes for package renaming and open helper #45

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 7, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion jni/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ LOCAL_SRC_FILES:= \
net_sqlcipher_database_SQLiteStatement.cpp \
net_sqlcipher_CursorWindow.cpp \
CursorWindow.cpp
# info_guardianproject_database_sqlcipher_SQLiteDebug.cpp
# net_sqlcipher_database_sqlcipher_SQLiteDebug.cpp

LOCAL_C_INCLUDES += \
$(JNI_H_INCLUDE) \
Expand Down
2 changes: 1 addition & 1 deletion jni/net_sqlcipher_database_SQLiteDatabase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ void throw_sqlite3_exception(JNIEnv* env, int errcode,
exceptionClass = "net/sqlcipher/database/SQLiteMisuseException";
break;
default:
exceptionClass = "info/guardianproject/database/sqlcipher/SQLiteException";
exceptionClass = "net/sqlcipher/database/sqlcipher/SQLiteException";
break;
}

Expand Down
2 changes: 1 addition & 1 deletion src/net/sqlcipher/database/SQLiteCursor.java
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ public void fillWindow(int startPos, android.database.CursorWindow window) {

/*
window.setStartPosition(startPos);
mCount = mQuery.fillWindow((info.guardianproject.database.CursorWindow)window, mInitialRead, 0);
mCount = mQuery.fillWindow((net.sqlcipher.database.CursorWindow)window, mInitialRead, 0);
// return -1 means not finished
if (mCount == NO_COUNT){
mCount = startPos + mInitialRead;
Expand Down
46 changes: 22 additions & 24 deletions src/net/sqlcipher/database/SQLiteOpenHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public abstract class SQLiteOpenHelper {
private final CursorFactory mFactory;
private final int mNewVersion;

private SQLiteDatabase mDatabase = null;
private SQLiteDatabase mDatabaseRO, mDatabaseRW = null;
private boolean mIsInitializing = false;

/**
Expand Down Expand Up @@ -75,8 +75,8 @@ public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int
* @return a read/write database object valid until {@link #close} is called
*/
public synchronized SQLiteDatabase getWritableDatabase(String password) {
if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) {
return mDatabase; // The database is already open for business
if (mDatabaseRW != null && mDatabaseRW.isOpen()) {
return mDatabaseRW; // The database is already open for business
}

if (mIsInitializing) {
Expand All @@ -91,7 +91,7 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {

boolean success = false;
SQLiteDatabase db = null;
if (mDatabase != null) mDatabase.lock();
if (mDatabaseRW != null) mDatabaseRW.lock();
try {
mIsInitializing = true;
if (mName == null) {
Expand Down Expand Up @@ -135,13 +135,13 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {
} finally {
mIsInitializing = false;
if (success) {
if (mDatabase != null) {
try { mDatabase.close(); } catch (Exception e) { }
mDatabase.unlock();
if (mDatabaseRW != null) {
try { mDatabaseRW.close(); } catch (Exception e) { }
mDatabaseRW.unlock();
}
mDatabase = db;
mDatabaseRW = db;
} else {
if (mDatabase != null) mDatabase.unlock();
if (mDatabaseRW != null) mDatabaseRW.unlock();
if (db != null) db.close();
}
}
Expand All @@ -161,21 +161,14 @@ public synchronized SQLiteDatabase getWritableDatabase(String password) {
* or {@link #close} is called.
*/
public synchronized SQLiteDatabase getReadableDatabase(String password) {
if (mDatabase != null && mDatabase.isOpen()) {
return mDatabase; // The database is already open for business
if (mDatabaseRO != null && mDatabaseRO.isOpen()) {
return mDatabaseRO; // The database is already open for business
}

if (mIsInitializing) {
throw new IllegalStateException("getReadableDatabase called recursively");
}

try {
return getWritableDatabase(password);
} catch (SQLiteException e) {
if (mName == null) throw e; // Can't open a temp database read-only!
Log.e(TAG, "Couldn't open " + mName + " for writing (will try read-only):", e);
}

SQLiteDatabase db = null;
try {
mIsInitializing = true;
Expand All @@ -188,11 +181,11 @@ public synchronized SQLiteDatabase getReadableDatabase(String password) {

onOpen(db);
Log.w(TAG, "Opened " + mName + " in read-only mode");
mDatabase = db;
return mDatabase;
mDatabaseRO = db;
return mDatabaseRO;
} finally {
mIsInitializing = false;
if (db != null && db != mDatabase) db.close();
if (db != null && db != mDatabaseRO) db.close();
}
}

Expand All @@ -202,9 +195,14 @@ public synchronized SQLiteDatabase getReadableDatabase(String password) {
public synchronized void close() {
if (mIsInitializing) throw new IllegalStateException("Closed during initialization");

if (mDatabase != null && mDatabase.isOpen()) {
mDatabase.close();
mDatabase = null;
if (mDatabaseRO != null && mDatabaseRO.isOpen()) {
mDatabaseRO.close();
mDatabaseRO = null;
}

if (mDatabaseRW != null && mDatabaseRW.isOpen()) {
mDatabaseRW.close();
mDatabaseRW = null;
}
}

Expand Down