Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
700c863
Add generated TUS protocol contract canary
kvz May 26, 2026
8ad4983
Allow manual Java client workflow runs
kvz May 26, 2026
19adf55
Regenerate TUS protocol contract fixture
kvz May 26, 2026
194b752
Fix generated contract lint
kvz May 26, 2026
9d1277f
Regenerate TUS feature contract fixture
kvz May 26, 2026
210974e
Regenerate upload body protocol fixture
kvz May 27, 2026
6e7a32a
Assert generated TUS upload events
kvz May 28, 2026
d97c79c
Cover TUS request lifecycle conformance
kvz May 28, 2026
d8b4e38
Cover TUS abort conformance
kvz May 29, 2026
a211c17
Cover TUS URL storage conformance
kvz May 29, 2026
22e352b
Cover TUS relative Location conformance
kvz May 29, 2026
2c32dd5
Refresh TUS input source contract
kvz May 29, 2026
db63d33
Refresh TUS retry state contract
kvz May 29, 2026
296da7c
Refresh TUS URL storage contract
kvz May 29, 2026
c9338d9
Refresh TUS protocol selection contract
kvz May 29, 2026
bead997
Refresh TUS start validation contract
kvz May 29, 2026
0c72eab
Update detailed error conformance
kvz May 29, 2026
84862fb
Expose generated conformance scenarios
kvz May 31, 2026
9a0d85a
Add generated conformance event canary
kvz May 31, 2026
6a8c8fa
Regenerate TUS protocol fixture for lint
kvz May 31, 2026
1a3a085
Add generated runtime event canary
kvz May 31, 2026
e892ed1
Cover generated resume runtime events
kvz May 31, 2026
420dea9
Keep generated runtime canary lint-clean
kvz May 31, 2026
4014384
Support deferred length uploads
kvz May 31, 2026
78a231b
Regenerate TUS event contract
kvz Jun 1, 2026
5c1f676
Carry generated TUS event policy
kvz Jun 1, 2026
269dc22
Keep generated event fixtures lintable
kvz Jun 1, 2026
bca3207
Update generated TUS retry events
kvz Jun 1, 2026
86cdecd
Add generated TUS proof profile canaries
kvz Jun 1, 2026
c34bd54
Use generated TUS execution hints in runtime tests
kvz Jun 1, 2026
25c42b7
Expose TUS managed upload contract
kvz Jun 1, 2026
fe0fbf6
Expose managed upload proof cases
kvz Jun 1, 2026
2b62396
Add managed upload runtime proof
kvz Jun 1, 2026
c7e4c15
Update managed upload proof fixture
kvz Jun 1, 2026
0f840a9
Add managed upload permanent failure proof
kvz Jun 1, 2026
cf572c4
Respect managed upload fixture lint
kvz Jun 1, 2026
862a262
Add managed upload retry exhaustion proof
kvz Jun 1, 2026
2d7600d
Add generated managed source unavailable proof
kvz Jun 1, 2026
729c107
Add generated managed network deferral proof
kvz Jun 1, 2026
a165b6b
Add devdock TUS upload example
kvz Jun 1, 2026
bd7aaa1
Run devdock example from repo root
kvz Jun 1, 2026
f444876
Satisfy lint for devdock example
kvz Jun 1, 2026
9108bda
Emit devdock example result
kvz Jun 1, 2026
eea6b25
Regenerate TUS runtime event proofs
kvz Jun 3, 2026
0cf5e18
Apply generated TUS default headers
kvz Jun 3, 2026
eaf8ea4
Use generated protocol headers in Java tests
kvz Jun 3, 2026
845bf4e
Mark Java protocol test helpers final
kvz Jun 3, 2026
11ef572
Regenerate Java TUS default header fixtures
kvz Jun 3, 2026
f8d9ab7
Regenerate Java managed upload header fixtures
kvz Jun 3, 2026
91b54af
Expose generated Java protocol header defaults
kvz Jun 3, 2026
15d4673
Add generated TUS request ID proof
kvz Jun 4, 2026
4fb2c6b
Cover chunked deferred TUS uploads
kvz Jun 4, 2026
04e6625
Align deferred length upload behavior
kvz Jun 4, 2026
67cd497
Group generated runtime event policy
kvz Jun 4, 2026
e592678
Regenerate TUS event alternatives
kvz Jun 4, 2026
cc6750f
Regenerate TUS extra event prefixes
kvz Jun 4, 2026
7de7186
Regenerate Java TUS event key helpers
kvz Jun 4, 2026
ffb7829
Use generic TUS extra event matching policy
kvz Jun 4, 2026
f9ed16a
Regenerate Java TUS event key helpers
kvz Jun 4, 2026
652b6a0
Use Java constant naming for generated TUS events
kvz Jun 4, 2026
494059b
Flatten generated TUS completion fixtures
kvz Jun 4, 2026
5886843
Regenerate lintable TUS Java fixtures
kvz Jun 4, 2026
1dd682a
Update managed upload runtime capabilities fixture
kvz Jun 4, 2026
1e511dc
Update managed upload outcome fixture
kvz Jun 4, 2026
1dcfc3c
Update managed upload attempt fixture
kvz Jun 4, 2026
37177dc
Update managed upload state fixture
kvz Jun 4, 2026
112bc47
Group managed upload runtime fixture
kvz Jun 4, 2026
d507b37
Use generated TUS offset discovery method
kvz Jun 4, 2026
28f3386
Regenerate exact Java TUS transport tests
kvz Jun 5, 2026
d98214b
Regenerate TUS protocol response fixtures
kvz Jun 6, 2026
1281152
Add Java TUS devdock resume coverage
kvz Jun 7, 2026
0bce3c6
Add Java request lifecycle hooks and retry proof
kvz Jun 7, 2026
aa20322
Document Java request lifecycle hooks
kvz Jun 7, 2026
101ee03
Add TUS request lifecycle devdock proof
kvz Jun 7, 2026
98141b7
Add API2 upload callback proof
kvz Jun 7, 2026
fc89a62
Align callback proof event order
kvz Jun 7, 2026
4383271
Allow Android composite Java build
kvz Jun 7, 2026
64923df
Add API2 custom request headers proof
kvz Jun 7, 2026
ca49fb1
Add API2 request ID headers proof
kvz Jun 7, 2026
f1400fc
Add API2 upload body headers proof
kvz Jun 7, 2026
74eae01
Add TUS terminate upload proof
kvz Jun 7, 2026
61e3e28
Add TUS creation-with-upload proof
kvz Jun 7, 2026
bdee358
Add deferred-length TUS devdock proof
kvz Jun 7, 2026
f23b8cf
Add relative Location conformance proof
kvz Jun 9, 2026
005bbd3
Add override PATCH conformance proof
kvz Jun 9, 2026
b1b3d07
Add file URL storage proof
kvz Jun 9, 2026
83efac2
Add retry state transition proof
kvz Jun 9, 2026
5a810f0
Add detailed error proof
kvz Jun 9, 2026
ed7af78
Fix detailed error checkstyle
kvz Jun 9, 2026
35a60e6
Add start option validation proof
kvz Jun 9, 2026
c95678a
Add Java TUS abort upload proof
kvz Jun 9, 2026
a49b672
Fix Java abort proof lint
kvz Jun 9, 2026
7c2305a
Add TUS parallel concat proof
kvz Jun 9, 2026
2478d89
Add TUS protocol selection proof
kvz Jun 9, 2026
d5526e5
Satisfy generated protocol checkstyle
kvz Jun 9, 2026
421e4dd
Add TUS node path input proof
kvz Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/lintChanges.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
name: Lint Java Code
on:
workflow_dispatch:
push:
branches:
- main
pull_request:
types:
- opened
- ready_for_review
- synchronize
- unlabeled
jobs:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
name: Tests

on:
workflow_dispatch:
push:
branches:
- main
pull_request:
types:
- opened
- ready_for_review
- synchronize
- unlabeled
jobs:
Expand Down
8 changes: 5 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ allprojects {
}
}

// We compile the library using Java 1.7 compatibility
// We compile the library using Java 8 compatibility
// in order to ensure interoperability with older Android platforms.
sourceCompatibility = 1.8
targetCompatibility = 1.8
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

// load version number from file
def config = new ConfigSlurper().parse(new File("${projectDir}/src/main/resources/tus-java-client-version/version.properties").toURI().toURL())
Expand Down
127 changes: 127 additions & 0 deletions example/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,132 @@ apply plugin: 'java'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'org.json:json:20240303'
implementation rootProject
}

tasks.register('api2DevdockTusUpload', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusUpload'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusResumeUpload', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusResumeUpload'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusFileUrlStorageBackend', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusFileUrlStorageBackend'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusCreationWithUpload', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusCreationWithUpload'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusDeferredLengthUpload', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusDeferredLengthUpload'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusRetryOffsetRecovery', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusRetryOffsetRecovery'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusRetryStateTransitions', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusRetryStateTransitions'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusDetailedError', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusDetailedError'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusAbortUpload', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusAbortUpload'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusStartOptionValidation', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusStartOptionValidation'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusParallelUploadConcat', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusParallelUploadConcat'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusProtocolVersionSelection', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusProtocolVersionSelection'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusNodePathInputSource', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusNodePathInputSource'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusRequestLifecycleHooks', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusRequestLifecycleHooks'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusUploadBodyHeaders', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusUploadBodyHeaders'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusCustomRequestHeaders', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusCustomRequestHeaders'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusRequestIdHeaders', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusRequestIdHeaders'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusTerminateUpload', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusTerminateUpload'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusUploadCallbacks', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusUploadCallbacks'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusRelativeLocationResolution', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusRelativeLocationResolution'
workingDir = rootProject.projectDir
}

tasks.register('api2DevdockTusOverridePatchMethod', JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'io.tus.java.example.Api2DevdockTusOverridePatchMethod'
workingDir = rootProject.projectDir
}
Loading