From 21d1265ca5319dbe944aaff874e872f33cd8c313 Mon Sep 17 00:00:00 2001 From: davigonz Date: Mon, 6 Feb 2017 11:54:02 +0100 Subject: [PATCH] Show error message when there is an external storage error --- .../operations/RemoteOperationResult.java | 24 +++++++++++++++++-- .../files/ReadRemoteFolderOperation.java | 1 - 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/com/owncloud/android/lib/common/operations/RemoteOperationResult.java b/src/com/owncloud/android/lib/common/operations/RemoteOperationResult.java index 6c3cefd3..8256b031 100644 --- a/src/com/owncloud/android/lib/common/operations/RemoteOperationResult.java +++ b/src/com/owncloud/android/lib/common/operations/RemoteOperationResult.java @@ -118,7 +118,8 @@ public class RemoteOperationResult implements Serializable { INVALID_CHARACTER_DETECT_IN_SERVER, DELAYED_FOR_WIFI, LOCAL_FILE_NOT_FOUND, - MAINTENANCE_MODE + MAINTENANCE_MODE, + SPECIFIC_SERVICE_UNAVAILABLE } private boolean mSuccess = false; @@ -254,7 +255,7 @@ public class RemoteOperationResult implements Serializable { ErrorMessageParser xmlParser = new ErrorMessageParser(); try { String errorMessage = xmlParser.parseXMLResponse(is); - if (errorMessage != null && errorMessage != "") { + if (errorMessage != "" && errorMessage != null) { mCode = ResultCode.SPECIFIC_FORBIDDEN; mHttpPhrase = errorMessage; } @@ -264,6 +265,25 @@ public class RemoteOperationResult implements Serializable { } } } + + if (mHttpCode == HttpStatus.SC_SERVICE_UNAVAILABLE) { + String bodyResponse = httpMethod.getResponseBodyAsString(); + + if (bodyResponse != null && bodyResponse.length() > 0) { + InputStream is = new ByteArrayInputStream(bodyResponse.getBytes()); + ErrorMessageParser xmlParser = new ErrorMessageParser(); + try { + String errorMessage = xmlParser.parseXMLResponse(is); + if (errorMessage != "" && errorMessage != null) { + mCode = ResultCode.SPECIFIC_SERVICE_UNAVAILABLE; + mHttpPhrase = errorMessage; + } + } catch (Exception e) { + Log_OC.w(TAG, "Error reading exception from server: " + e.getMessage()); + // mCode stays as set in this(success, httpCode, headers) + } + } + } } /** diff --git a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java index 42ea3529..2b260e2f 100644 --- a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java @@ -96,7 +96,6 @@ public class ReadRemoteFolderOperation extends RemoteOperation { } } else { // synchronization failed - client.exhaustResponse(query.getResponseBodyAsStream()); result = new RemoteOperationResult(false, query); }