Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit eeff7237 authored by Tobias Kaminsky's avatar Tobias Kaminsky Committed by GitHub
Browse files

Merge pull request #1357 from nextcloud/updateVersion

Update file version
parents f7420472 2a1e26dd
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -22,12 +22,13 @@ class ReadFileVersionsRemoteOperationIT : AbstractIT() {
    fun listVersions() {
        val txtFile = getFile(ASSETS__TEXT_FILE_NAME)
        val filePath = "/test.md"
        val mimetype = "text/markdown"

        var uploadResult =
            UploadFileRemoteOperation(
                txtFile.absolutePath,
                filePath,
                "txt/plain",
                mimetype,
                System.currentTimeMillis() / MILLI_TO_SECOND
            )
                .execute(client)
@@ -48,7 +49,7 @@ class ReadFileVersionsRemoteOperationIT : AbstractIT() {
            // with NC26+ we always have a starting version
            versionCount++
        }
        assertEquals(versionCount, sutResult.data.size)
        assertEquals(versionCount, sutResult.resultData.size)

        // modify file to have a version
        FileWriter(txtFile).apply {
@@ -61,7 +62,7 @@ class ReadFileVersionsRemoteOperationIT : AbstractIT() {
            UploadFileRemoteOperation(
                txtFile.absolutePath,
                filePath,
                "txt/plain",
                mimetype,
                System.currentTimeMillis() / MILLI_TO_SECOND
            )
                .execute(client)
@@ -75,6 +76,11 @@ class ReadFileVersionsRemoteOperationIT : AbstractIT() {
        assertTrue(sutResult.isSuccess)

        versionCount++
        assertEquals(versionCount, sutResult.data.size)
        val versions = sutResult.resultData
        assertEquals(versionCount, versions.size)
        versions[0].apply {
            assertTrue(fileLength > 0)
            assertEquals(mimetype, mimeType)
        }
    }
}
+18 −15
Original line number Diff line number Diff line
@@ -27,12 +27,12 @@ import java.util.ArrayList;
 * Remote operation performing the read of remote versions on Nextcloud server.
 */

public class ReadFileVersionsRemoteOperation extends RemoteOperation {
public class ReadFileVersionsRemoteOperation extends RemoteOperation<ArrayList<FileVersion>> {

    private static final String TAG = ReadFileVersionsRemoteOperation.class.getSimpleName();

    private final long localId;
    private ArrayList<Object> versions;
    private ArrayList<FileVersion> versions;

    /**
     * Constructor
@@ -49,8 +49,8 @@ public class ReadFileVersionsRemoteOperation extends RemoteOperation {
     * @param client Client object to communicate with the remote ownCloud server.
     */
    @Override
    protected RemoteOperationResult run(OwnCloudClient client) {
        RemoteOperationResult result = null;
    protected RemoteOperationResult<ArrayList<FileVersion>> run(OwnCloudClient client) {
        RemoteOperationResult<ArrayList<FileVersion>> result = null;
        PropFindMethod query = null;

        try {
@@ -69,34 +69,34 @@ public class ReadFileVersionsRemoteOperation extends RemoteOperation {
                readData(dataInServer, client);

                // Result of the operation
                result = new RemoteOperationResult(true, query);
                result = new RemoteOperationResult<>(true, query);
                // Add data to the result
                if (result.isSuccess()) {
                    result.setData(versions);
                    result.setResultData(versions);
                }
            } else {
                // synchronization failed
                client.exhaustResponse(query.getResponseBodyAsStream());
                result = new RemoteOperationResult(false, query);
                result = new RemoteOperationResult<>(false, query);
            }
        } catch (Exception e) {
            result = new RemoteOperationResult(e);
            result = new RemoteOperationResult<>(e);
        } finally {
            if (query != null)
                query.releaseConnection();  // let the connection available for other methods

            if (result == null) {
                result = new RemoteOperationResult(new Exception("unknown error"));
                Log_OC.e(TAG, "Synchronized file with id " + localId + ": failed");
                result = new RemoteOperationResult<>(new Exception("unknown error"));
                Log_OC.e(TAG, "Read file version for " + localId + ": failed");
            } else {
                if (result.isSuccess()) {
                    Log_OC.i(TAG, "Synchronized file with id " + localId + ": " + result.getLogMessage());
                    Log_OC.i(TAG, "Read file version for " + localId + ": " + result.getLogMessage());
                } else {
                    if (result.isException()) {
                        Log_OC.e(TAG, "Synchronized with id " + localId + ": " + result.getLogMessage(),
                        Log_OC.e(TAG, "Read file version for " + localId + ": " + result.getLogMessage(),
                                result.getException());
                    } else {
                        Log_OC.w(TAG, "Synchronized with id " + localId + ": " + result.getLogMessage());
                        Log_OC.w(TAG, "Read file version for " + localId + ": " + result.getLogMessage());
                    }
                }
            }
@@ -119,7 +119,10 @@ public class ReadFileVersionsRemoteOperation extends RemoteOperation {

        // loop to update every child
        for (int i = 1; i < remoteData.getResponses().length; ++i) {
            versions.add(new FileVersion(localId, new WebdavEntry(remoteData.getResponses()[i], splitElement)));
            versions.add(new FileVersion(
                    localId,
                    new WebdavEntry(remoteData.getResponses()[i], splitElement))
            );
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ public class FileVersion implements Parcelable, ServerFileInterface {

    @Override
    public long getFileLength() {
        return 0;
        return fileLength;
    }

    public void setMimeType(String mimeType) {