1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

Revert "Allow conditional read of list of files in a folder based on ETag"; server does not work that way

This reverts commit 5ff9062ea8fefb1bf2b3952b9d64daa4f9922a39.
This commit is contained in:
David A. Velasco 2016-11-22 17:04:33 +01:00
parent b87d2c9e7c
commit 67d7217d13
2 changed files with 32 additions and 52 deletions

View File

@ -61,8 +61,8 @@ import javax.net.ssl.SSLException;
*/ */
public class RemoteOperationResult implements Serializable { public class RemoteOperationResult implements Serializable {
/** Generated - should be refreshed every time the class changes!! */; /** Generated - should be refreshed every time the class changes!! */;
private static final long serialVersionUID = -1909603208238358633L; private static final long serialVersionUID = 1129130415603799707L;
private static final String TAG = RemoteOperationResult.class.getSimpleName(); private static final String TAG = RemoteOperationResult.class.getSimpleName();
@ -100,20 +100,19 @@ public class RemoteOperationResult implements Serializable {
ACCOUNT_NOT_THE_SAME, ACCOUNT_NOT_THE_SAME,
INVALID_CHARACTER_IN_NAME, INVALID_CHARACTER_IN_NAME,
SHARE_NOT_FOUND, SHARE_NOT_FOUND,
LOCAL_STORAGE_NOT_REMOVED, LOCAL_STORAGE_NOT_REMOVED,
FORBIDDEN, FORBIDDEN,
SHARE_FORBIDDEN, SHARE_FORBIDDEN,
OK_REDIRECT_TO_NON_SECURE_CONNECTION, OK_REDIRECT_TO_NON_SECURE_CONNECTION,
INVALID_MOVE_INTO_DESCENDANT, INVALID_MOVE_INTO_DESCENDANT,
INVALID_COPY_INTO_DESCENDANT, INVALID_COPY_INTO_DESCENDANT,
PARTIAL_MOVE_DONE, PARTIAL_MOVE_DONE,
PARTIAL_COPY_DONE, PARTIAL_COPY_DONE,
SHARE_WRONG_PARAMETER, SHARE_WRONG_PARAMETER,
WRONG_SERVER_RESPONSE, WRONG_SERVER_RESPONSE,
INVALID_CHARACTER_DETECT_IN_SERVER, INVALID_CHARACTER_DETECT_IN_SERVER,
DELAYED_FOR_WIFI, DELAYED_FOR_WIFI,
LOCAL_FILE_NOT_FOUND, LOCAL_FILE_NOT_FOUND
NOT_MODIFIED
} }
private boolean mSuccess = false; private boolean mSuccess = false;
@ -128,7 +127,7 @@ public class RemoteOperationResult implements Serializable {
public RemoteOperationResult(ResultCode code) { public RemoteOperationResult(ResultCode code) {
mCode = code; mCode = code;
mSuccess = (code == ResultCode.OK || code == ResultCode.OK_SSL || mSuccess = (code == ResultCode.OK || code == ResultCode.OK_SSL ||
code == ResultCode.OK_NO_SSL || code == ResultCode.OK_NO_SSL ||
code == ResultCode.OK_REDIRECT_TO_NON_SECURE_CONNECTION); code == ResultCode.OK_REDIRECT_TO_NON_SECURE_CONNECTION);
mData = null; mData = null;
@ -158,11 +157,9 @@ public class RemoteOperationResult implements Serializable {
case HttpStatus.SC_INSUFFICIENT_STORAGE: case HttpStatus.SC_INSUFFICIENT_STORAGE:
mCode = ResultCode.QUOTA_EXCEEDED; mCode = ResultCode.QUOTA_EXCEEDED;
break; break;
case HttpStatus.SC_FORBIDDEN: case HttpStatus.SC_FORBIDDEN:
mCode = ResultCode.FORBIDDEN; mCode = ResultCode.FORBIDDEN;
break; break;
case HttpStatus.SC_NOT_MODIFIED:
mCode = ResultCode.NOT_MODIFIED;
default: default:
mCode = ResultCode.UNHANDLED_HTTP_CODE; mCode = ResultCode.UNHANDLED_HTTP_CODE;
Log_OC.d(TAG, "RemoteOperationResult has processed UNHANDLED_HTTP_CODE: " + Log_OC.d(TAG, "RemoteOperationResult has processed UNHANDLED_HTTP_CODE: " +
@ -409,13 +406,10 @@ public class RemoteOperationResult implements Serializable {
return "The file name contains an forbidden character"; return "The file name contains an forbidden character";
} else if (mCode == ResultCode.FILE_NOT_FOUND) { } else if (mCode == ResultCode.FILE_NOT_FOUND) {
return "Local file does not exist"; return "Local file does not exist";
} else if (mCode == ResultCode.SYNC_CONFLICT) { } else if (mCode == ResultCode.SYNC_CONFLICT) {
return "Synchronization conflict"; return "Synchronization conflict";
} else if (mCode == ResultCode.NOT_MODIFIED) {
return "Resource in server was not modified";
} }
return "Operation finished with HTTP status code " + mHttpCode + " (" + return "Operation finished with HTTP status code " + mHttpCode + " (" +

View File

@ -47,42 +47,28 @@ import com.owncloud.android.lib.common.utils.Log_OC;
public class ReadRemoteFolderOperation extends RemoteOperation { public class ReadRemoteFolderOperation extends RemoteOperation {
private static final String TAG = ReadRemoteFolderOperation.class.getSimpleName(); private static final String TAG = ReadRemoteFolderOperation.class.getSimpleName();
private static final String IF_NONE_MATCH_HEADER = "If-None-Match"; private String mRemotePath;
private ArrayList<Object> mFolderAndFiles;
private String mRemotePath;
private String mETagToNotMatch; /**
private ArrayList<Object> mFolderAndFiles;
/**
* Constructor * Constructor
* *
* @param remotePath Remote path of the file. * @param remotePath Remote path of the file.
*/ */
public ReadRemoteFolderOperation(String remotePath) { public ReadRemoteFolderOperation(String remotePath) {
mRemotePath = remotePath; mRemotePath = remotePath;
mETagToNotMatch = ""; }
}
/** /**
* Constructor
*
* @param remotePath Remote path of the file.
*/
public ReadRemoteFolderOperation(String remotePath, String eTagToNotMatch) {
mRemotePath = remotePath;
mETagToNotMatch = (eTagToNotMatch == null) ? "" : eTagToNotMatch;
}
/**
* Performs the read operation. * Performs the read operation.
* *
* @param client Client object to communicate with the remote ownCloud server. * @param client Client object to communicate with the remote ownCloud server.
*/ */
@Override @Override
protected RemoteOperationResult run(OwnCloudClient client) { protected RemoteOperationResult run(OwnCloudClient client) {
RemoteOperationResult result = null; RemoteOperationResult result = null;
PropFindMethod query = null; PropFindMethod query = null;
try { try {
@ -90,17 +76,13 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath), query = new PropFindMethod(client.getWebdavUri() + WebdavUtils.encodePath(mRemotePath),
WebdavUtils.getAllPropSet(), // PropFind Properties WebdavUtils.getAllPropSet(), // PropFind Properties
DavConstants.DEPTH_1); DavConstants.DEPTH_1);
if (mETagToNotMatch.length() > 0) {
query.addRequestHeader(IF_NONE_MATCH_HEADER, "\"" + mETagToNotMatch + "\"");
}
int status = client.executeMethod(query); int status = client.executeMethod(query);
// check and process response // check and process response
boolean isSuccess = ( boolean isSuccess = (
status == HttpStatus.SC_MULTI_STATUS || status == HttpStatus.SC_MULTI_STATUS ||
status == HttpStatus.SC_OK status == HttpStatus.SC_OK
); );
if (isSuccess) { if (isSuccess) {
// get data from remote folder // get data from remote folder
MultiStatus dataInServer = query.getResponseBodyAsMultiStatus(); MultiStatus dataInServer = query.getResponseBodyAsMultiStatus();
@ -113,7 +95,7 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
result.setData(mFolderAndFiles); result.setData(mFolderAndFiles);
} }
} else { } else {
// synchronization failed, or no change in folder (mETagToNotMatch matched) // synchronization failed
client.exhaustResponse(query.getResponseBodyAsStream()); client.exhaustResponse(query.getResponseBodyAsStream());
result = new RemoteOperationResult(false, status, query.getResponseHeaders()); result = new RemoteOperationResult(false, status, query.getResponseHeaders());
} }
@ -138,6 +120,10 @@ public class ReadRemoteFolderOperation extends RemoteOperation {
} }
return result; return result;
}
public boolean isMultiStatus(int status) {
return (status == HttpStatus.SC_MULTI_STATUS);
} }
/** /**