Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.owncloud.android.lib.common.operations.RemoteOperationResult;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
Expand All @@ -53,9 +54,10 @@
* @author masensio
*/

public class UploadFileRemoteOperation extends RemoteOperation {
public class UploadFileRemoteOperation extends RemoteOperation<String> {
private static final String OC_TOTAL_LENGTH_HEADER = "OC-Total-Length";
private static final String IF_MATCH_HEADER = "If-Match";
protected static final String RESULT_ETAG_HEADER = "etag";
protected static final String OC_X_OC_MTIME_HEADER = "X-OC-Mtime";
protected static final String OC_X_OC_CTIME_HEADER = "X-OC-Ctime";

Expand Down Expand Up @@ -155,8 +157,8 @@ public UploadFileRemoteOperation(String localPath,
}

@Override
protected RemoteOperationResult run(OwnCloudClient client) {
RemoteOperationResult result;
protected RemoteOperationResult<String> run(OwnCloudClient client) {
RemoteOperationResult<String> result;
DefaultHttpMethodRetryHandler oldRetryHandler =
(DefaultHttpMethodRetryHandler) client.getParams().getParameter(HttpMethodParams.RETRY_HANDLER);

Expand All @@ -175,7 +177,7 @@ protected RemoteOperationResult run(OwnCloudClient client) {

if (cancellationRequested.get()) {
// 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());

} else {
// perform the upload
Expand All @@ -185,12 +187,12 @@ protected RemoteOperationResult run(OwnCloudClient client) {
} catch (Exception e) {
if (putMethod != null && putMethod.isAborted()) {
if (cancellationRequested.get() && cancellationReason != null) {
result = new RemoteOperationResult(cancellationReason);
result = new RemoteOperationResult<>(cancellationReason);
} else {
result = new RemoteOperationResult(new OperationCancelledException());
result = new RemoteOperationResult<>(new OperationCancelledException());
}
} else {
result = new RemoteOperationResult(e);
result = new RemoteOperationResult<>(e);
}
} finally {
if (disableRetries) {
Expand All @@ -206,9 +208,9 @@ public boolean isSuccess(int status) {
status == HttpStatus.SC_NO_CONTENT));
}

protected RemoteOperationResult uploadFile(OwnCloudClient client) throws IOException {
protected RemoteOperationResult<String> uploadFile(OwnCloudClient client) throws IOException {
int status;
RemoteOperationResult result;
RemoteOperationResult<String> result;

try {
File f = new File(localPath);
Expand All @@ -230,7 +232,12 @@ protected RemoteOperationResult uploadFile(OwnCloudClient client) throws IOExcep
putMethod.setRequestEntity(entity);
status = client.executeMethod(putMethod);

result = new RemoteOperationResult(isSuccess(status), putMethod);
result = new RemoteOperationResult<>(isSuccess(status), putMethod);

final Header resultEtagHeader = putMethod.getResponseHeader(RESULT_ETAG_HEADER);
if (resultEtagHeader != null) {
result.setResultData(resultEtagHeader.getValue());
}

client.exhaustResponse(putMethod.getResponseBodyAsStream());

Expand Down