Releases: tomdesair/tus-java-server
Release list
1.0.0-3.3
Added
- Creation-with-Upload Extension: Implemented the optional
creation-with-uploadextension, allowing clients to combine creation and initial file data upload in a singlePOSTrequest. - CORS Extension: Implemented native, out-of-the-box CORS support as an unofficial extension (
cors) enabled by default. For backward compatibility, it can be disabled viadisableTusExtension("cors").
Changed
- Stricter Protocol Validation:
- Prevent modifying
Upload-Lengthheaders in subsequentPATCHrequests. - Enforced format and Base64 validations for
Upload-Metadataheaders inPOSTrequests. - Enforced that
Upload-Defer-Lengthheader values must be strictly"1". - Reject malformed or invalid
Upload-Checksumheaders instead of silently ignoring them. - Enabled checksum verification on
POSTrequests when using thecreation-with-uploadextension.
- Prevent modifying
Fixes
- Only unfinished uploads can expire.
- Fix for deduplication feature when base64-encoded checksum contains a slash.
1.0.0-3.2
Added
- Lock Contention Resolution: Allow resuming clients to immediately release upload locks held by stalled upload requests via
HEADrequests. Supports both single-instance and multi-replica/Kubernetes deployments without breaking backward compatibility of the locking interfaces. - File Deduplication by Hash: Implemented optional, space-saving duplicate file detection and linking based on file checksums.
- Added
withUploadDeduplication(boolean)builder method onTusFileUploadService(default:falsefor backward compatibility). - Introduced index system under
<storagePath>/checksums/<algorithm>/<checksum_value>for mapping file checksums to their original completed upload IDs. - Implemented safe read-only recursion in
DiskStorageServicefor child uploads: read operations (getUploadedBytes,copyUploadTo) recursively resolve to the parent upload, while write/truncate operations (append,removeLastNumberOfBytes) remain strictly bounded to the child ID to avoid accidental parent modifications. - Added parent-child expiration coordination: parent upload's expiration timestamp is automatically updated to be greater than or equal to any linked child upload's expiration.
- Self-cleaning index system: dangling index entries resulting from parent deletion/expiration are automatically detected and removed on the fly.
- Added new
duplicatesUploadId,checksum, andchecksumAlgorithmfields toUploadInfo.
- Added
- Backward Compatibility: Explicitly declared
serialVersionUID = -8751200491586638308LinsideUploadInfoto prevent serialization version mismatches for pre-existing upload data on disk. - Deduplication of Parsing Logic: Introduced
Utils.ChecksumInfoandUtils.parseUploadChecksumHeaderto completely centralize header validation and parsing.
1.0.0-3.1
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-3.1</version>
</dependency>
Fixes:
- Fix for #73 to support files with a length of 0
- Updated pom.xml file to support new release process to Maven Central
- Updated dependency and Maven plugin versions
1.0.0-3.0
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-3.0</version>
</dependency>
This release of a new major version 1.0.0-3.x has a few breaking changes. So please read the set of below features and changes carefully.
Features and breaking changes:
- The 1.0.0-3.0 version is the first version to support the
jakarta.servlet.*APIs (#50)- This also means that this library needs to be used with for example Tomcat 10.
- This version is only officially tested with Java 17.
- But it will probably still work with Java 11 however it is not the goal to officially support Java 11 anymore.
- The code style for this project was changed to the Google Java Style (#51) to have easier automated code style checks and formatting. Therefor the following method and class names changed to:
UploadIdFactory.setUploadUriUploadIdFactory.getUploadUriTusFileUploadService.withUploadUriclass UuidUploadIdFactory
- The CI/CD setup was migrated from Travis CI to GitHub Actions.
1.0.0-2.1
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-2.1</version>
</dependency>
The 1.0.0-2.x versions are the last versions to support the javax.servlet.* APIs and Java 8 and 11 versions.
Features:
- Support for non-ascii file names: #38
- Set compiler target to Java 8
Dependency changes:
- Updated commons-io to 2.7
- Updated commons-codec to 1.13
1.0.0-2.0
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-2.0</version>
</dependency>
Fixes:
- Add support for custom Upload ID factories so you can specify your own ID format and generation: PR #17 and #18
Major changes:
- Class
UploadIdFactoryhas been refactored to an abstract class with two example implementations:UUIDUploadIdFactoryandTimeBasedUploadIdFactory - Method
me.desair.tus.server.TusFileUploadService#withUploadIdFactorycan be used to set another Upload ID factory implementation. The default implementation isUUIDUploadIdFactory. - The identifier of an upload has been abstracted into the
UploadIdclass. ClassUploadInfohas been adjusted to make use of this new identifier class.
1.0.0-1.3
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-1.3</version>
</dependency>
Fixes:
1.0.0-1.2
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-1.2</version>
</dependency>
Fixes:
- Allow regex expressions in upload URI in order to support URL parameters: issue #11
- Return relative URL in
Locationheader on upload creation in order to prevent (browser mixed content blocking) problems with HTTPS proxies sitting before the web application
1.0.0-1.1
This release is available in the Maven Central repository as:
<dependency>
<groupId>me.desair.tus</groupId>
<artifactId>tus-java-server</artifactId>
<version>1.0.0-1.1</version>
</dependency>
Fixes:
- Make chunked transfer decoding optional: #10