mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-31 10:27:45 +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