Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-04-29 13:58:56 +0300
committerStefan Niedermann <info@niedermann.it>2021-04-29 13:58:56 +0300
commit1768b2b4a84605801c413928766b067d3b2cb5f4 (patch)
tree600a975bc8d60ad3c0d6b93f0769bb48f6dc98b8 /app
parent1b5b26650b696c84abf494b9402e5518d39613a5 (diff)
#1167 Enhance exception handling
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java16
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java7
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java24
5 files changed, 26 insertions, 25 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
index e383091c..47dfca95 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
@@ -672,7 +672,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
runOnUiThread(() -> ExceptionDialogFragment.newInstance(t).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()));
}
});
- } catch (Exception e) {
+ } catch (Throwable e) {
SSOClient.invalidateAPICache(ssoAccount);
// Happens when importing an already existing account the second time
if (e instanceof TokenMismatchException && mainViewModel.getLocalAccountByAccountName(ssoAccount.name) != null) {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
index 1eca83a5..ec0e71c7 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainViewModel.java
@@ -21,7 +21,6 @@ import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundExce
import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
-import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -59,6 +58,7 @@ import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.
import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.RECENT;
import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.UNCATEGORIZED;
import static it.niedermann.owncloud.notes.shared.util.DisplayUtils.convertToCategoryNavigationItem;
+import static java.net.HttpURLConnection.HTTP_NOT_MODIFIED;
public class MainViewModel extends AndroidViewModel {
@@ -405,17 +405,15 @@ public class MainViewModel extends AndroidViewModel {
} catch (NextcloudFilesAppAccountNotFoundException e) {
repo.deleteAccount(localAccount);
callback.onError(e);
- } catch (Exception e) {
- if (e instanceof NextcloudHttpRequestFailedException) {
- if (((NextcloudHttpRequestFailedException) e).getStatusCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
- Log.i(TAG, "[synchronizeCapabilities] Capabilities not modified.");
+ } catch (Throwable t) {
+ if (t.getClass() == NextcloudHttpRequestFailedException.class || t instanceof NextcloudHttpRequestFailedException) {
+ if (((NextcloudHttpRequestFailedException) t).getStatusCode() == HTTP_NOT_MODIFIED) {
+ Log.d(TAG, "Server returned HTTP Status Code " + ((NextcloudHttpRequestFailedException) t).getStatusCode() + " - Capabilities not modified.");
callback.onSuccess(null);
- } else {
- callback.onError(e);
+ return;
}
- } else {
- callback.onError(e);
}
+ callback.onError(t);
}
} else {
if (repo.isNetworkConnected() && repo.isSyncOnlyOnWifi()) {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java
index ffa5fd82..206195c8 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesClient.java
@@ -27,7 +27,7 @@ public class CapabilitiesClient {
private static final String API_ENDPOINT_OCS = "/ocs/v2.php/cloud/";
private static final String HEADER_KEY_ETAG = "ETag";
- public static Capabilities getCapabilities(@NonNull Context context, @NonNull SingleSignOnAccount ssoAccount, @Nullable String lastETag) throws NextcloudHttpRequestFailedException, IOException {
+ public static Capabilities getCapabilities(@NonNull Context context, @NonNull SingleSignOnAccount ssoAccount, @Nullable String lastETag) throws Throwable {
final NextcloudAPI nextcloudAPI = SSOClient.getNextcloudAPI(context.getApplicationContext(), ssoAccount);
final OcsAPI ocsAPI = new NextcloudRetrofitApiBuilder(nextcloudAPI, API_ENDPOINT_OCS).create(OcsAPI.class);
try {
@@ -41,8 +41,9 @@ public class CapabilitiesClient {
}
return capabilities;
} catch (RuntimeException e) {
- if (e.getCause() instanceof NextcloudHttpRequestFailedException) {
- throw (NextcloudHttpRequestFailedException) e.getCause();
+ final Throwable cause = e.getCause();
+ if(cause != null) {
+ throw cause;
} else {
throw e;
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java
index 6a14f8f6..1dff46cf 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/CapabilitiesWorker.java
@@ -52,7 +52,7 @@ public class CapabilitiesWorker extends Worker {
repo.updateBrand(account.getId(), capabilities.getColor(), capabilities.getTextColor());
repo.updateApiVersion(account.getId(), capabilities.getApiVersion());
Log.i(TAG, capabilities.toString());
- } catch (Exception e) {
+ } catch (Throwable e) {
if (e instanceof NextcloudHttpRequestFailedException) {
if (((NextcloudHttpRequestFailedException) e).getStatusCode() == HttpURLConnection.HTTP_NOT_MODIFIED) {
Log.i(TAG, "Capabilities not modified.");
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java
index d1604695..1059e622 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesServerSyncTask.java
@@ -264,19 +264,21 @@ abstract class NotesServerSyncTask extends Thread {
exceptions.add(e);
}
return true;
- } catch (Exception e) {
- if (e.getClass() == RuntimeException.class && e.getCause() instanceof NextcloudHttpRequestFailedException) {
- if (((NextcloudHttpRequestFailedException) e.getCause()).getStatusCode() == HTTP_NOT_MODIFIED) {
- Log.d(TAG, "Server returned HTTP Status Code " + ((NextcloudHttpRequestFailedException) e.getCause()).getStatusCode() + " - Notes not modified.");
- return true;
- } else if (((NextcloudHttpRequestFailedException) e.getCause()).getStatusCode() == HTTP_UNAVAILABLE) {
- Log.d(TAG, "Server returned HTTP Status Code " + ((NextcloudHttpRequestFailedException) e.getCause()).getStatusCode() + " - Server is in maintenance mode.");
- return true;
+ } catch (Throwable t) {
+ final Throwable cause = t.getCause();
+ if (t.getClass() == RuntimeException.class && cause != null) {
+ if (cause.getClass() == NextcloudHttpRequestFailedException.class || cause instanceof NextcloudHttpRequestFailedException) {
+ final NextcloudHttpRequestFailedException httpException = (NextcloudHttpRequestFailedException) cause;
+ if (httpException.getStatusCode() == HTTP_NOT_MODIFIED) {
+ Log.d(TAG, "Server returned HTTP Status Code " + httpException.getStatusCode() + " - Notes not modified.");
+ return true;
+ } else if (httpException.getStatusCode() == HTTP_UNAVAILABLE) {
+ Log.d(TAG, "Server returned HTTP Status Code " + httpException.getStatusCode() + " - Server is in maintenance mode.");
+ return true;
+ }
}
- } else if (e instanceof TokenMismatchException) {
- SSOClient.invalidateAPICache(ssoAccount);
}
- exceptions.add(e);
+ exceptions.add(t);
return false;
}
}