From 92908b9a608613b0763a9d3b57354e987d7c1e54 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Fri, 11 Jan 2019 16:12:53 +0000 Subject: [PATCH] Handle readonly journal exceptions. --- .../main/java/com/etesync/syncadapter/NotificationHelper.kt | 3 +++ .../com/etesync/syncadapter/journalmanager/BaseManager.kt | 5 +++-- .../com/etesync/syncadapter/journalmanager/Exceptions.kt | 2 ++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt b/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt index a3f9fdb2..9f25cd4a 100644 --- a/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt +++ b/app/src/main/java/com/etesync/syncadapter/NotificationHelper.kt @@ -44,6 +44,9 @@ class NotificationHelper(internal val context: Context, internal val notificatio } else if (e is Exceptions.ServiceUnavailableException) { App.log.log(Level.SEVERE, "Service unavailable") messageString = R.string.sync_error_unavailable + } else if (e is Exceptions.ReadOnlyException) { + App.log.log(Level.SEVERE, "Journal is read only", e) + messageString = R.string.sync_error_journal_readonly } else if (e is Exceptions.HttpException) { App.log.log(Level.SEVERE, "HTTP Exception during sync", e) messageString = R.string.sync_error_http_dav diff --git a/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt b/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt index 9ba89835..a57dab8b 100644 --- a/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt +++ b/app/src/main/java/com/etesync/syncadapter/journalmanager/BaseManager.kt @@ -34,8 +34,9 @@ abstract class BaseManager { throw Exceptions.UserInactiveException(response, apiError.detail) } else if (apiError.code == "associate_not_allowed") { throw Exceptions.AssociateNotAllowedException(response, apiError.detail) - } - } + } else if (apiError.code == "journal_owner_inactive") { + throw Exceptions.ReadOnlyException(response, apiError.detail) + } } }// Fall through. We want to always throw when unsuccessful. throw Exceptions.HttpException(response, apiError.detail) diff --git a/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt b/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt index b45a9077..cf4ffe8a 100644 --- a/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt +++ b/app/src/main/java/com/etesync/syncadapter/journalmanager/Exceptions.kt @@ -10,6 +10,8 @@ import java.security.GeneralSecurityException class Exceptions { class AssociateNotAllowedException(response: Response, message: String?) : HttpException(response, message) + class ReadOnlyException(response: Response, message: String?) : HttpException(response, message) + class UnauthorizedException(response: Response, message: String?) : HttpException(response, message) class UserInactiveException(response: Response, message: String?) : HttpException(response, message) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index efce8efd..d8f38515 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -315,6 +315,7 @@ Server error while %s Could not connect to server while %s Database error while %s + Journal is read only preparing synchronization syncronizing journals querying capabilities