Fixed NullPointerExceptionS in upload cancelations

This commit is contained in:
David A. Velasco 2015-07-21 16:51:29 +02:00
parent 9b5506f81e
commit c0c52fa16a
4 changed files with 45 additions and 53 deletions

View file

@ -438,13 +438,8 @@ public class FileDownloader extends Service
saveDownloadedFile();
}
} catch (AccountsException e) {
Log_OC.e(TAG, "Error while trying to get authorization for "
+ mCurrentAccount.name, e);
downloadResult = new RemoteOperationResult(e);
} catch (IOException e) {
Log_OC.e(TAG, "Error while trying to get authorization for "
+ mCurrentAccount.name, e);
} catch (Exception e) {
Log_OC.e(TAG, "Error downloading", e);
downloadResult = new RemoteOperationResult(e);
} finally {

View file

@ -583,14 +583,8 @@ public class FileUploader extends Service
uploadResult = grantResult;
}
} catch (AccountsException e) {
Log_OC.e(TAG, "Error while trying to get autorization for " +
mCurrentAccount.name, e);
uploadResult = new RemoteOperationResult(e);
} catch (IOException e) {
Log_OC.e(TAG, "Error while trying to get autorization for " +
mCurrentAccount.name, e);
} catch (Exception e) {
Log_OC.e(TAG, "Error uploading", e);
uploadResult = new RemoteOperationResult(e);
} finally {

View file

@ -221,6 +221,12 @@ public class SynchronizeFileOperation extends SyncOperation {
mLocalFile.getLocalModificationTimestamp() > mLocalFile.getLastSyncDateForData()
);
Log_OC.d(TAG, "TOKENs checked to SYNC " + mRemotePath );
Log_OC.d(TAG, " server#modificationTimestamp " + mServerFile.getModificationTimestamp());
Log_OC.d(TAG, " local#modificationTimestampAtLastSyncForData " + mServerFile.getModificationTimestampAtLastSyncForData());
Log_OC.d(TAG, " local#modificationTimestamp " + mLocalFile.getLocalModificationTimestamp());
Log_OC.d(TAG, " local#lastSyncDateForData " + mLocalFile.getLastSyncDateForData());
/// decide action to perform depending upon changes
//if (!mLocalFile.getEtag().isEmpty() && localChanged && serverChanged) {
if (localChanged && serverChanged) {

View file

@ -321,52 +321,49 @@ public class UploadFileOperation extends RemoteOperation {
while (listener.hasNext()) {
mUploadOperation.addDatatransferProgressListener(listener.next());
}
if (!mCancellationRequested.get()) {
result = mUploadOperation.execute(client);
if (mCancellationRequested.get()) {
throw new OperationCancelledException();
}
/// move local temporal file or original file to its corresponding
// location in the ownCloud local folder
if (result.isSuccess()) {
if (mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_FORGET) {
mFile.setStoragePath(null);
result = mUploadOperation.execute(client);
} else {
mFile.setStoragePath(expectedPath);
File fileToMove = null;
if (temporalFile != null) { // FileUploader.LOCAL_BEHAVIOUR_COPY
// ; see where temporalFile was
// set
fileToMove = temporalFile;
} else { // FileUploader.LOCAL_BEHAVIOUR_MOVE
fileToMove = originalFile;
}
if (!expectedFile.equals(fileToMove)) {
File expectedFolder = expectedFile.getParentFile();
expectedFolder.mkdirs();
if (!expectedFolder.isDirectory() || !fileToMove.renameTo(expectedFile)) {
mFile.setStoragePath(null); // forget the local file
// by now, treat this as a success; the file was
// uploaded; the user won't like that the local file
// is not linked, but this should be a very rare
// fail;
// the best option could be show a warning message
// (but not a fail)
// result = new
// RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_MOVED);
// return result;
}
/// move local temporal file or original file to its corresponding
// location in the ownCloud local folder
if (result.isSuccess()) {
if (mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_FORGET) {
mFile.setStoragePath(null);
} else {
mFile.setStoragePath(expectedPath);
File fileToMove = null;
if (temporalFile != null) { // FileUploader.LOCAL_BEHAVIOUR_COPY
// ; see where temporalFile was
// set
fileToMove = temporalFile;
} else { // FileUploader.LOCAL_BEHAVIOUR_MOVE
fileToMove = originalFile;
}
if (!expectedFile.equals(fileToMove)) {
File expectedFolder = expectedFile.getParentFile();
expectedFolder.mkdirs();
if (!expectedFolder.isDirectory() || !fileToMove.renameTo(expectedFile)) {
mFile.setStoragePath(null); // forget the local file
// by now, treat this as a success; the file was
// uploaded; the user won't like that the local file
// is not linked, but this should be a very rare
// fail;
// the best option could be show a warning message
// (but not a fail)
// result = new
// RemoteOperationResult(ResultCode.LOCAL_STORAGE_NOT_MOVED);
// return result;
}
}
}
}
} catch (Exception e) {
// TODO something cleaner with cancellations
if (mCancellationRequested.get()) {
result = new RemoteOperationResult(new OperationCancelledException());
} else {
result = new RemoteOperationResult(e);
}
result = new RemoteOperationResult(e);
} finally {
if (temporalFile != null && !originalFile.equals(temporalFile)) {