diff --git a/src/com/owncloud/android/lib/common/network/ChunkFromFileRequestBody.java b/src/com/owncloud/android/lib/common/network/ChunkFromFileRequestBody.java index 2639217b..e78fd153 100644 --- a/src/com/owncloud/android/lib/common/network/ChunkFromFileRequestBody.java +++ b/src/com/owncloud/android/lib/common/network/ChunkFromFileRequestBody.java @@ -24,8 +24,11 @@ package com.owncloud.android.lib.common.network; +import android.util.Log; + +import com.owncloud.android.lib.common.utils.Log_OC; + import java.io.File; -import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.util.Iterator; @@ -33,9 +36,14 @@ import java.util.Iterator; import okhttp3.MediaType; import okio.BufferedSink; +/** + * A Request body that represents a file chunk and include information about the progress when uploading it + * + * @author David González Verdugo + */ public class ChunkFromFileRequestBody extends FileRequestBody { - private static final String TAG = ChunkFromFileChannelRequestEntity.class.getSimpleName(); + private static final String TAG = ChunkFromFileRequestBody.class.getSimpleName(); //private final File mFile; private final FileChannel mChannel; @@ -58,6 +66,10 @@ public class ChunkFromFileRequestBody extends FileRequestBody { mTransferred = 0; } + @Override + public long contentLength() { + return mChunkSize; + } @Override public void writeTo(BufferedSink sink) { @@ -70,8 +82,19 @@ public class ChunkFromFileRequestBody extends FileRequestBody { if (size == 0) size = -1; long maxCount = Math.min(mOffset + mChunkSize, mChannel.size()); while (mChannel.position() < maxCount) { + + Log_OC.d(TAG, "Sink buffer size: " + sink.buffer().size()); + readCount = mChannel.read(mBuffer); - sink.write(mBuffer.array(), 0 ,readCount); + + Log_OC.d(TAG, "Read " + readCount + " bytes from file channel to " + mBuffer.toString()); + + sink.buffer().write(mBuffer.array(), 0 ,readCount); + + sink.flush(); + + Log_OC.d(TAG, "Write " + readCount + " bytes to sink buffer with size " + sink.buffer().size()); + mBuffer.clear(); if (mTransferred < maxCount) { // condition to avoid accumulate progress for repeated chunks mTransferred += readCount; @@ -84,9 +107,11 @@ public class ChunkFromFileRequestBody extends FileRequestBody { } } - sink.flush(); + Log.d(TAG, "Chunk with size " + mChunkSize + " written in request body"); - } catch (IOException io) { + } catch (Exception exception) { + + Log.e(TAG, exception.toString()); // // any read problem will be handled as if the file is not there // if (io instanceof FileNotFoundException) { // throw io; diff --git a/src/com/owncloud/android/lib/common/network/FileRequestBody.java b/src/com/owncloud/android/lib/common/network/FileRequestBody.java index bec7f041..56575827 100644 --- a/src/com/owncloud/android/lib/common/network/FileRequestBody.java +++ b/src/com/owncloud/android/lib/common/network/FileRequestBody.java @@ -24,6 +24,10 @@ package com.owncloud.android.lib.common.network; +import android.util.Log; + +import com.owncloud.android.lib.common.utils.Log_OC; + import java.io.File; import java.util.Collection; import java.util.HashSet; @@ -43,6 +47,8 @@ import okio.Source; */ public class FileRequestBody extends RequestBody implements ProgressiveDataTransferer { + private static final String TAG = FileRequestBody.class.getSimpleName(); + protected File mFile; private MediaType mContentType; Set mDataTransferListeners = new HashSet<>(); @@ -68,6 +74,7 @@ public class FileRequestBody extends RequestBody implements ProgressiveDataTrans Iterator it; try { source = Okio.source(mFile); + long transferred = 0; long read; @@ -82,6 +89,9 @@ public class FileRequestBody extends RequestBody implements ProgressiveDataTrans } } + Log.d(TAG, "File with name " + mFile.getName() + " and size " + mFile.length() + + " written in request body"); + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java b/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java index df454407..7b12df8a 100644 --- a/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ChunkedUploadRemoteFileOperation.java @@ -106,11 +106,10 @@ public class ChunkedUploadRemoteFileOperation extends UploadRemoteFileOperation if (mRequiredEtag != null && mRequiredEtag.length() > 0) { mPutMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + mRequiredEtag + "\""); } -// mPutMethod.addRequestHeader(OC_CHUNKED_HEADER, OC_CHUNKED_HEADER); -// mPutMethod.addRequestHeader(OC_CHUNK_SIZE_HEADER, chunkSizeStr); + mPutMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, totalLengthStr); - mPutMethod.addRequestHeader(OC_CHUNK_X_OC_MTIME_HEADER, mFileLastModifTimestamp); +// mPutMethod.addRequestHeader(OC_CHUNK_X_OC_MTIME_HEADER, mFileLastModifTimestamp); // ((ChunkFromFileChannelRequestEntity) mEntity).setOffset(offset); // mPutMethod.setRequestEntity(mEntity); diff --git a/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java index 798d9d51..ae4a0034 100644 --- a/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/CreateRemoteFolderOperation.java @@ -77,7 +77,7 @@ public class CreateRemoteFolderOperation extends RemoteOperation { */ @Override protected RemoteOperationResult run(OwnCloudClient client) { - RemoteOperationResult result = null; + RemoteOperationResult result; OwnCloudVersion version = client.getOwnCloudVersion(); boolean versionWithForbiddenChars = (version != null && version.isVersionWithForbiddenCharacters());