Skip to content

Remove jclouds dependency by forking the blobstore API - #1046

Merged
gaul merged 1 commit into
masterfrom
remove-jclouds
Jul 15, 2026
Merged

Remove jclouds dependency by forking the blobstore API#1046
gaul merged 1 commit into
masterfrom
remove-jclouds

Conversation

@gaul

@gaul gaul commented May 13, 2026

Copy link
Copy Markdown
Owner

Copy the jclouds blobstore types we use (BlobStore, Blob, BlobMetadata,
MultipartUpload, options, payloads, exceptions) into a new
org.gaul.s3proxy.blobstore package, strip Guice dependency injection,
and replace ContextBuilder with a direct BlobStores factory. Drop the
legacy jclouds-only providers (filesystem, transient, aws-s3, azureblob,
google-cloud-storage); only the SDK-backed providers remain
(filesystem-nio2, transient-nio2, aws-s3-sdk, azureblob-sdk,
google-cloud-storage-sdk).

The forked types are modernized rather than preserved verbatim:
BlobMetadata, ContainerMetadata, MultipartUpload, MultipartPart,
ContentMetadata, HttpResponse, the *Options classes, and Credentials
are records; StorageMetadata is a sealed interface; Blob and Payload
are immutable with Builder factories (Blob.Builder is nested and takes
the name at construction). Several redundant abstractions are dropped
along the way: BlobStore.blobBuilder, the Multimap-based allHeaders
(collapsed to a single Content-Range field), updateMetadata Consumer
overloads (replaced by direct setters), and Payload.release() (no
callers).

@gaul
gaul force-pushed the remove-jclouds branch 15 times, most recently from d6f4542 to 963b7aa Compare May 16, 2026 23:39
@gaul
gaul force-pushed the remove-jclouds branch 3 times, most recently from d194a3b to fe469da Compare May 29, 2026 00:41
@gaul
gaul force-pushed the remove-jclouds branch from fe469da to ead6634 Compare June 16, 2026 04:51
@gaul
gaul marked this pull request as ready for review June 16, 2026 17:53
@gaul

gaul commented Jun 16, 2026

Copy link
Copy Markdown
Owner Author

The next release 4.0.0 will include this PR.

@gaul
gaul force-pushed the remove-jclouds branch 2 times, most recently from fd2c245 to 4254015 Compare July 2, 2026 08:06
@gaul
gaul force-pushed the remove-jclouds branch from 4254015 to ab12882 Compare July 14, 2026 16:42
Copy the jclouds blobstore types we use (BlobStore, Blob, BlobMetadata,
MultipartUpload, options, payloads, exceptions) into a new
org.gaul.s3proxy.blobstore package, strip Guice dependency injection,
and replace ContextBuilder with a direct BlobStores factory. Drop the
legacy jclouds-only providers (filesystem, transient, aws-s3, azureblob,
google-cloud-storage, openstack-swift); only the SDK-backed providers
remain (filesystem-nio2, transient-nio2, aws-s3-sdk, azureblob-sdk,
google-cloud-storage-sdk, openstack-swift-sdk).

The forked types are modernized rather than preserved verbatim:
BlobMetadata, ContainerMetadata, MultipartUpload, MultipartPart,
ContentMetadata, HttpResponse, the *Options classes, and Credentials
are records; StorageMetadata is a sealed interface; Blob and Payload
are immutable with Builder factories (Blob.Builder is nested and takes
the name at construction). Several redundant abstractions are dropped
along the way: BlobStore.blobBuilder, the Multimap-based allHeaders
(collapsed to a single Content-Range field), updateMetadata Consumer
overloads (replaced by direct setters), and Payload.release() (no
callers).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gaul
gaul force-pushed the remove-jclouds branch from ab12882 to 0963395 Compare July 14, 2026 17:03
@gaul
gaul merged commit 71a2427 into master Jul 15, 2026
7 checks passed
@gaul
gaul deleted the remove-jclouds branch July 15, 2026 07:11
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.

1 participant