From fa09d9cd6200282fd8d9f9808c9e1e98c724980a Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Thu, 27 Mar 2014 05:59:30 +0100 Subject: [PATCH] Bug fix: retry initialization if it failed first time (allows to sync after enabling network again) Further logging improvements --- .../GoogleDriveFileStorage.java | 50 +++++++++++++------ .../javafilestorage/JavaFileStorageBase.java | 6 +-- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/java/JavaFileStorage/src/keepass2android/javafilestorage/GoogleDriveFileStorage.java b/src/java/JavaFileStorage/src/keepass2android/javafilestorage/GoogleDriveFileStorage.java index 3a92f0ab..8573b666 100644 --- a/src/java/JavaFileStorage/src/keepass2android/javafilestorage/GoogleDriveFileStorage.java +++ b/src/java/JavaFileStorage/src/keepass2android/javafilestorage/GoogleDriveFileStorage.java @@ -11,8 +11,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; -import keepass2android.javafilestorage.JavaFileStorageBase.InvalidPathException; - import com.google.api.client.extensions.android.http.AndroidHttp; import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential; import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException; @@ -34,7 +32,7 @@ import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; -import android.util.Log; +import android.text.TextUtils; public class GoogleDriveFileStorage extends JavaFileStorageBase { @@ -56,10 +54,13 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase { class AccountData { + //guaranteed to be set if AccountData is in HashMap Drive drive; + //may be null if first initialization failed HashMap mFolderCache; + //may be null if first initialization failed protected String mRootFolderId; }; @@ -126,7 +127,7 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase { } //make sure the path exists - private void verify() throws FileNotFoundException, UnsupportedEncodingException { + private void verify() throws IOException { if (mAccountLocalPath.equals("")) return; @@ -139,6 +140,9 @@ public class GoogleDriveFileStorage extends JavaFileStorageBase { throw new IllegalStateException("Looks like account "+mAccount+" was not properly initialized!"); } + //if initialization failed, try to repeat: + finishInitialization(accountData, mAccount); + String parentId = accountData.mRootFolderId; for (int i=0;i buildFoldersCache(String accountName) throws IOException { diff --git a/src/java/JavaFileStorage/src/keepass2android/javafilestorage/JavaFileStorageBase.java b/src/java/JavaFileStorage/src/keepass2android/javafilestorage/JavaFileStorageBase.java index a26cd65d..b2a8f999 100644 --- a/src/java/JavaFileStorage/src/keepass2android/javafilestorage/JavaFileStorageBase.java +++ b/src/java/JavaFileStorage/src/keepass2android/javafilestorage/JavaFileStorageBase.java @@ -96,7 +96,7 @@ public abstract class JavaFileStorageBase implements JavaFileStorage{ protected void finishWithError(final FileStorageSetupActivity setupAct, Exception error) { - Log.e("KP2AJ", "Exception: " + error.toString()); + logDebug( "Exception: " + error.toString()); error.printStackTrace(); final Activity activity = (Activity)setupAct; @@ -107,7 +107,7 @@ public abstract class JavaFileStorageBase implements JavaFileStorage{ //This can make sense if there is a higher-level FileStorage which has the file cached. if (activity.getIntent().getBooleanExtra(EXTRA_ALWAYS_RETURN_SUCCESS, false)) { - Log.d(TAG, "Returning success as desired in intent despite of exception."); + logDebug("Returning success as desired in intent despite of exception."); finishActivityWithSuccess(setupAct); return; } @@ -143,7 +143,7 @@ public abstract class JavaFileStorageBase implements JavaFileStorage{ return; } - Log.w("KP2AJ", "Unknown process: " + setupActivity.getProcessName()); + logDebug("Unknown process: " + setupActivity.getProcessName()); }