Skip to content

Releases: tomdesair/tus-java-server

1.0.0-3.3

Choose a tag to compare

@tomdesair tomdesair released this 09 Jul 20:07
e8af938

Added

  • Creation-with-Upload Extension: Implemented the optional creation-with-upload extension, allowing clients to combine creation and initial file data upload in a single POST request.
  • 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 via disableTusExtension("cors").

Changed

  • Stricter Protocol Validation:
    • Prevent modifying Upload-Length headers in subsequent PATCH requests.
    • Enforced format and Base64 validations for Upload-Metadata headers in POST requests.
    • Enforced that Upload-Defer-Length header values must be strictly "1".
    • Reject malformed or invalid Upload-Checksum headers instead of silently ignoring them.
    • Enabled checksum verification on POST requests when using the creation-with-upload extension.

Fixes

  • Only unfinished uploads can expire.
  • Fix for deduplication feature when base64-encoded checksum contains a slash.

1.0.0-3.2

Choose a tag to compare

@tomdesair tomdesair released this 03 Jul 18:05
028bc13

Added

  • Lock Contention Resolution: Allow resuming clients to immediately release upload locks held by stalled upload requests via HEAD requests. 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 on TusFileUploadService (default: false for 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 DiskStorageService for 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, and checksumAlgorithm fields to UploadInfo.
  • Backward Compatibility: Explicitly declared serialVersionUID = -8751200491586638308L inside UploadInfo to prevent serialization version mismatches for pre-existing upload data on disk.
  • Deduplication of Parsing Logic: Introduced Utils.ChecksumInfo and Utils.parseUploadChecksumHeader to completely centralize header validation and parsing.

1.0.0-3.1

Choose a tag to compare

@tomdesair tomdesair released this 07 Jun 21:31
f08cd92

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

Choose a tag to compare

@tomdesair tomdesair released this 26 Jul 20:22
3ed0d1c

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.setUploadUri
    • UploadIdFactory.getUploadUri
    • TusFileUploadService.withUploadUri
    • class UuidUploadIdFactory
  • The CI/CD setup was migrated from Travis CI to GitHub Actions.

1.0.0-2.1

Choose a tag to compare

@tomdesair tomdesair released this 23 Jul 10:43
2a00bae

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

Choose a tag to compare

@tomdesair tomdesair released this 07 Feb 20:47

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 UploadIdFactory has been refactored to an abstract class with two example implementations: UUIDUploadIdFactory and TimeBasedUploadIdFactory
  • Method me.desair.tus.server.TusFileUploadService#withUploadIdFactory can be used to set another Upload ID factory implementation. The default implementation is UUIDUploadIdFactory.
  • The identifier of an upload has been abstracted into the UploadId class. Class UploadInfo has been adjusted to make use of this new identifier class.

1.0.0-1.3

Choose a tag to compare

@tomdesair tomdesair released this 20 Dec 20:41

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:

  • Change Base64 encoding and decoding logic to be compatible with JDK 11: issue #14
  • Updated test dependencies in order to be able to run tests on JDK 11: PR #16
  • Configured Travis to run builds on JDK 8, JDK 9 and JDK 11 (all with Java target version 7)

1.0.0-1.2

Choose a tag to compare

@tomdesair tomdesair released this 26 Aug 21:02

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 Location header 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

Choose a tag to compare

@tomdesair tomdesair released this 12 Aug 13:28

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

1.0.0-1.0

Choose a tag to compare

@tomdesair tomdesair released this 02 Aug 20:58

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.0</version>
</dependency>