Skip to content

Conversation

@dkocher
Copy link
Contributor

@dkocher dkocher commented Nov 20, 2025

Fix #17352.

@dkocher dkocher added this to the 9.4 milestone Nov 20, 2025
@dkocher dkocher requested a review from a team as a code owner November 20, 2025 17:14
@dkocher dkocher marked this pull request as draft November 20, 2025 17:14
@dkocher dkocher marked this pull request as ready for review December 2, 2025 17:32
@dkocher dkocher requested review from Copilot and ylangisc December 2, 2025 17:33
Copilot finished reviewing on behalf of dkocher December 2, 2025 17:37
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors client-side checksum handling across upload features and updates tests to align with constructor signature changes. Also introduces checksum computation for Google Drive writes and adjusts service method names from upload to transfer in certain implementations.

  • Refactor HttpUploadFeature generics to remove MessageDigest and simplify constructors across multiple protocols (WebDAV, FTP, SFTP, Swift, S3, Drive, Local, Storegate, Manta, iRODS, OneDrive, Google Storage).
  • Replace some upload(...) calls with transfer(...) in multipart/threshold services; add checksum computation for DriveWriteFeature.
  • Add or modify numerous i18n Error.strings files.

Reviewed changes

Copilot reviewed 89 out of 128 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
webdav/src/test/java/ch/cyberduck/core/worker/DAVSingleTransferWorkerTest.java Update tests to use new parameterless DAVUploadFeature constructor.
webdav/src/test/java/ch/cyberduck/core/worker/DAVConcurrentTransferWorkerTest.java Same constructor update for upload feature in tests.
webdav/src/test/java/ch/cyberduck/core/dav/microsoft/MicrosoftIISDAVUploadFeatureTest.java Use no-arg DAVUploadFeature; test adjustments.
webdav/src/test/java/ch/cyberduck/core/dav/microsoft/MicrosoftIISDAVReadFeatureTest.java Use no-arg DAVUploadFeature in read test setup.
webdav/src/test/java/ch/cyberduck/core/dav/microsoft/MicrosoftIISDAVLockFeatureTest.java Replace session-based constructors and append call accordingly.
webdav/src/test/java/ch/cyberduck/core/dav/DAVWriteFeatureTest.java Adjust tests to new DAVUploadFeature constructor and append.
webdav/src/test/java/ch/cyberduck/core/dav/DAVUploadFeatureTest.java Update tests for new DAVUploadFeature construction and append behavior.
webdav/src/test/java/ch/cyberduck/core/dav/DAVReadFeatureTest.java Adjust upload setup in read tests.
webdav/src/test/java/ch/cyberduck/core/dav/DAVLockFeatureTest.java Update constructor usage for upload feature.
webdav/src/test/java/ch/cyberduck/core/cryptomator/DAVWriteFeatureTest.java Use new DAVUploadFeature in cryptomator tests.
webdav/src/test/java/ch/cyberduck/core/cryptomator/DAVReadFeatureTest.java Same as above.
webdav/src/main/java/ch/cyberduck/core/dav/DAVUploadFeature.java Change HttpUploadFeature generic to remove MessageDigest; drop session constructor.
webdav/src/main/java/ch/cyberduck/core/dav/DAVSession.java Return new no-arg DAVUploadFeature for Upload feature.
tus/src/main/java/ch/cyberduck/core/tus/TusUploadFeature.java Remove MessageDigest generic; change to transfer(...) for internal call.
storegate/src/test/java/ch/cyberduck/core/storegate/StoregateReadFeatureTest.java Update DefaultUploadFeature to no-arg constructor.
ssh/src/test/java/ch/cyberduck/core/shared/DefaultUploadFeatureTest.java Use no-arg DefaultUploadFeature in SFTP tests.
ssh/src/main/java/ch/cyberduck/core/sftp/SFTPUploadFeature.java Call super() instead of passing session due to base change.
spectra/src/main/java/ch/cyberduck/core/spectra/SpectraUploadFeature.java Remove MessageDigest generic from HttpUploadFeature.
s3/src/test/java/ch/cyberduck/core/worker/S3SingleTransferWorkerTest.java Update decorate signature to accept TransferStatus.
s3/src/test/java/ch/cyberduck/core/s3/S3SingleUploadServiceTest.java Remove obsolete decorate test.
s3/src/test/java/ch/cyberduck/core/s3/S3MultipartUploadServiceTest.java Update upload calls to include line breaks and transfer method override.
s3/src/main/java/ch/cyberduck/core/s3/S3SingleUploadService.java Remove digest handling overrides; after upload, set status checksum NONE when SSE is enabled.
s3/src/main/java/ch/cyberduck/core/s3/S3MultipartWriteFeature.java Update checksum mismatch message wording.
s3/src/main/java/ch/cyberduck/core/s3/S3MultipartUploadService.java Remove MessageDigest generic; switch internal upload call to transfer; adjust error messages.
openstack/src/test/java/ch/cyberduck/core/worker/SwiftSingleTransferWorkerTest.java Update decorate signature to TransferStatus.
openstack/src/test/java/ch/cyberduck/core/openstack/SwiftSmallObjectUploadFeatureTest.java Remove test file (decorator/post digest tests no longer applicable).
openstack/src/test/java/ch/cyberduck/core/openstack/SwiftLargeObjectUploadFeatureTest.java Update to transfer method; minor formatting fix.
openstack/src/test/java/ch/cyberduck/core/cryptomator/SwiftLargeObjectUploadFeatureTest.java Minor formatting update in upload call.
openstack/src/main/java/ch/cyberduck/core/openstack/SwiftThresholdUploadService.java Instantiate SwiftSmallObjectUploadFeature with no args.
openstack/src/main/java/ch/cyberduck/core/openstack/SwiftSmallObjectUploadFeature.java Remove digest-related logic; convert to no-arg HttpUploadFeature.
openstack/src/main/java/ch/cyberduck/core/openstack/SwiftLargeObjectUploadFeature.java Remove MessageDigest generic; change internal call to transfer.
onedrive/src/test/java/ch/cyberduck/core/onedrive/GraphReadFeatureTest.java Use no-arg DefaultUploadFeature constructor.
nio/src/test/java/ch/cyberduck/core/nio/LocalUploadFeatureTest.java Use no-arg LocalUploadFeature.
nio/src/main/java/ch/cyberduck/core/nio/LocalUploadFeature.java Remove session constructor; keep append behavior.
nio/src/main/java/ch/cyberduck/core/nio/LocalSession.java Return new LocalUploadFeature in feature lookup.
manta/src/test/java/ch/cyberduck/core/manta/MantaReadFeatureTest.java Use no-arg DefaultUploadFeature in test setup.
irods/src/test/java/ch/cyberduck/core/irods/IRODSReadFeatureTest.java Use no-arg DefaultUploadFeature for setup.
irods/src/main/java/ch/cyberduck/core/irods/IRODSUploadFeature.java Update mismatch error message wording.
i18n/src/main/resources/*/Error.strings Add/update many localization files; currently contain garbled text and encoding issues.
googlestorage/src/test/java/ch/cyberduck/core/googlestorage/DefaultUploadFeatureTest.java Use no-arg DefaultUploadFeature.
googledrive/src/test/java/ch/cyberduck/core/googledrive/DriveUploadFeatureTest.java Use no-arg DriveUploadFeature; minor formatting change.
googledrive/src/test/java/ch/cyberduck/core/googledrive/DriveReadFeatureTest.java Use no-arg DriveUploadFeature in setup.
googledrive/src/main/java/ch/cyberduck/core/googledrive/DriveWriteFeature.java Add checksum(...) override to compute MD5 for Drive uploads.
googledrive/src/main/java/ch/cyberduck/core/googledrive/DriveUploadFeature.java Remove MessageDigest generic and session constructor.
googledrive/src/main/java/ch/cyberduck/core/googledrive/DriveSession.java Return new DriveUploadFeature in feature map.
ftp/src/test/java/ch/cyberduck/core/shared/DefaultUploadFeatureTest.java Switch to no-arg DefaultUploadFeature in FTP tests.
ftp/src/test/java/ch/cyberduck/core/ftp/FTPUploadFeatureTest.java Use no-arg FTPUploadFeature for append test.
ftp/src/main/java/ch/cyberduck/core/ftp/FTPSession.java Return new FTPUploadFeature without session parameter.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dkocher dkocher enabled auto-merge December 2, 2025 21:50
@dkocher dkocher marked this pull request as draft December 3, 2025 07:49
auto-merge was automatically disabled December 3, 2025 07:49

Pull request was converted to draft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Client-side checksum verification for protocols where hash is returned for upload

2 participants