@Override
public void handleMessage(Message msg) {
Pair<Account, String> itemSyncKey = (Pair<Account, String>) msg.obj;
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Handling sync folder " + itemSyncKey.second);*/
doOperation(itemSyncKey.first, itemSyncKey.second);
mService.stopSelf(msg.arg1);
}
*/
private void doOperation(Account account, String remotePath) {
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Getting sync folder " + remotePath);*/
mCurrentSyncOperation = mPendingOperations.get(account, remotePath);
if (mCurrentSyncOperation != null) {
RemoteOperationResult result = null;
try {
- if (mOwnCloudClient == null || !account.equals(mCurrentAccount)) {
- /// get client object to send the request to the ownCloud server, if cannot
+
+ if (mCurrentAccount == null || !mCurrentAccount.equals(account)) {
mCurrentAccount = account;
mStorageManager = new FileDataStorageManager(
account,
mService.getContentResolver()
);
- OwnCloudAccount ocAccount = new OwnCloudAccount(account, mService);
- mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton().
- getClientFor(ocAccount, mService);
+ } // else, reuse storage manager from previous operation
- } // else, reuse client from previous operation
+ // always get client from client manager, to get fresh credentials in case of update
+ OwnCloudAccount ocAccount = new OwnCloudAccount(account, mService);
+ mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton().
+ getClientFor(ocAccount, mService);
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Executing sync folder " + remotePath);*/
result = mCurrentSyncOperation.execute(mOwnCloudClient, mStorageManager);
} catch (AccountsException e) {
- Log_OC.e(TAG, "Error while trying to get autorization", e);
+ Log_OC.e(TAG, "Error while trying to get authorization", e);
} catch (IOException e) {
- Log_OC.e(TAG, "Error while trying to get autorization", e);
+ Log_OC.e(TAG, "Error while trying to get authorization", e);
} finally {
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Removing payload " + remotePath);*/
+
mPendingOperations.removePayload(account, remotePath);
mService.dispatchResultToOperationListeners(null, mCurrentSyncOperation, result);
Log_OC.e(TAG, "Cannot cancel with NULL parameters");
return;
}
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Removing sync folder " + file.getRemotePath());*/
Pair<SynchronizeFolderOperation, String> removeResult =
mPendingOperations.remove(account, file.getRemotePath());
SynchronizeFolderOperation synchronization = removeResult.first;
if (synchronization != null) {
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Canceling returned sync of " + file.getRemotePath());*/
synchronization.cancel();
} else {
- // TODO synchronize
+ // TODO synchronize?
if (mCurrentSyncOperation != null && mCurrentAccount != null &&
- mCurrentSyncOperation.getFolderPath().startsWith(file.getRemotePath()) &&
+ mCurrentSyncOperation.getRemotePath().startsWith(file.getRemotePath()) &&
account.name.equals(mCurrentAccount.name)) {
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Canceling current sync as descendant: " + mCurrentSyncOperation.getRemotePath());*/
mCurrentSyncOperation.cancel();
+ } else {
+ /*Log_OC.v( "NOW " + TAG + ", thread " + Thread.currentThread().getName(),
+ "Nothing else in cancelation of " + file.getRemotePath());*/
}
}