mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +00:00
Retry uploads
This commit is contained in:
parent
c2bdea1c91
commit
d013d93ac9
@ -1 +1 @@
|
|||||||
Subproject commit fab24c4727d4a201cbb0bb1e7f2f45bc5b5e0756
|
Subproject commit d519949bcc53896becb7ad92bc643938f189d04e
|
@ -60,6 +60,7 @@ public abstract class HttpBaseMethod {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Connection parameters
|
||||||
public void setReadTimeout(long readTimeout, TimeUnit timeUnit) {
|
public void setReadTimeout(long readTimeout, TimeUnit timeUnit) {
|
||||||
mOkHttpClient = mOkHttpClient.newBuilder()
|
mOkHttpClient = mOkHttpClient.newBuilder()
|
||||||
.readTimeout(readTimeout, timeUnit)
|
.readTimeout(readTimeout, timeUnit)
|
||||||
@ -78,6 +79,16 @@ public abstract class HttpBaseMethod {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRetryOnConnectionFailure(boolean retryOnConnectionFailure) {
|
||||||
|
mOkHttpClient = mOkHttpClient.newBuilder()
|
||||||
|
.retryOnConnectionFailure(retryOnConnectionFailure)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getRetryOnConnectionFailure() {
|
||||||
|
return mOkHttpClient.retryOnConnectionFailure();
|
||||||
|
}
|
||||||
|
|
||||||
// Request
|
// Request
|
||||||
public String getRequestHeader(String name) {
|
public String getRequestHeader(String name) {
|
||||||
return mRequest.header(name);
|
return mRequest.header(name);
|
||||||
|
@ -26,6 +26,8 @@ package com.owncloud.android.lib.common.http.methods.webdav;
|
|||||||
|
|
||||||
import com.owncloud.android.lib.common.http.methods.HttpBaseMethod;
|
import com.owncloud.android.lib.common.http.methods.HttpBaseMethod;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import at.bitfire.dav4android.DavOCResource;
|
import at.bitfire.dav4android.DavOCResource;
|
||||||
import at.bitfire.dav4android.DavResource;
|
import at.bitfire.dav4android.DavResource;
|
||||||
import okhttp3.HttpUrl;
|
import okhttp3.HttpUrl;
|
||||||
@ -59,4 +61,14 @@ public abstract class DavMethod extends HttpBaseMethod {
|
|||||||
public boolean isAborted() {
|
public boolean isAborted() {
|
||||||
return mDavResource.isCallAborted();
|
return mDavResource.isCallAborted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRetryOnConnectionFailure(boolean retryOnConnectionFailure) {
|
||||||
|
mDavResource.setRetryOnConnectionFailure(retryOnConnectionFailure);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getRetryOnConnectionFailure() {
|
||||||
|
return mDavResource.isRetryOnConnectionFailure();
|
||||||
|
}
|
||||||
}
|
}
|
@ -34,6 +34,7 @@ import com.owncloud.android.lib.common.network.WebdavUtils;
|
|||||||
import com.owncloud.android.lib.common.operations.OperationCancelledException;
|
import com.owncloud.android.lib.common.operations.OperationCancelledException;
|
||||||
import com.owncloud.android.lib.common.operations.RemoteOperation;
|
import com.owncloud.android.lib.common.operations.RemoteOperation;
|
||||||
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
|
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
|
||||||
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -86,20 +87,12 @@ public class UploadRemoteFileOperation extends RemoteOperation {
|
|||||||
protected RemoteOperationResult run(OwnCloudClient client) {
|
protected RemoteOperationResult run(OwnCloudClient client) {
|
||||||
RemoteOperationResult result = null;
|
RemoteOperationResult result = null;
|
||||||
|
|
||||||
// DefaultHttpMethodRetryHandler oldRetryHandler =
|
|
||||||
// (DefaultHttpMethodRetryHandler) client.getParams().getParameter(HttpMethodParams.RETRY_HANDLER);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// TODO
|
|
||||||
// prevent that uploads are retried automatically by network library
|
|
||||||
// client.getParams().setParameter(
|
|
||||||
// HttpMethodParams.RETRY_HANDLER,
|
|
||||||
// new DefaultHttpMethodRetryHandler(0, false)
|
|
||||||
// );
|
|
||||||
|
|
||||||
mPutMethod = new PutMethod(
|
mPutMethod = new PutMethod(
|
||||||
HttpUtils.stringUrlToHttpUrl(client.getNewWebDavUri() + WebdavUtils.encodePath(mRemotePath)));
|
HttpUtils.stringUrlToHttpUrl(client.getNewWebDavUri() + WebdavUtils.encodePath(mRemotePath)));
|
||||||
|
|
||||||
|
mPutMethod.setRetryOnConnectionFailure(false);
|
||||||
|
|
||||||
if (mCancellationRequested.get()) {
|
if (mCancellationRequested.get()) {
|
||||||
// the operation was cancelled before getting it's turn to be executed in the queue of uploads
|
// the operation was cancelled before getting it's turn to be executed in the queue of uploads
|
||||||
result = new RemoteOperationResult(new OperationCancelledException());
|
result = new RemoteOperationResult(new OperationCancelledException());
|
||||||
@ -107,22 +100,23 @@ public class UploadRemoteFileOperation extends RemoteOperation {
|
|||||||
} else {
|
} else {
|
||||||
// perform the upload
|
// perform the upload
|
||||||
result = uploadFile(client);
|
result = uploadFile(client);
|
||||||
|
Log_OC.i(TAG, "Upload of " + mLocalPath + " to " + mRemotePath + ": " +
|
||||||
|
result.getLogMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
if (mPutMethod != null && mPutMethod.isAborted()) {
|
if (mPutMethod != null && mPutMethod.isAborted()) {
|
||||||
result = new RemoteOperationResult(new OperationCancelledException());
|
result = new RemoteOperationResult(new OperationCancelledException());
|
||||||
|
Log_OC.e(TAG, "Upload of " + mLocalPath + " to " + mRemotePath + ": " +
|
||||||
|
result.getLogMessage(), new OperationCancelledException());
|
||||||
} else {
|
} else {
|
||||||
result = new RemoteOperationResult(e);
|
result = new RemoteOperationResult(e);
|
||||||
|
Log_OC.e(TAG, "Upload of " + mLocalPath + " to " + mRemotePath + ": " +
|
||||||
|
result.getLogMessage(), e);
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
// TODO
|
|
||||||
// reset previous retry handler
|
|
||||||
// client.getParams().setParameter(
|
|
||||||
// HttpMethodParams.RETRY_HANDLER,
|
|
||||||
// oldRetryHandler
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user