oscerd opened a new pull request, #22656: URL: https://github.com/apache/camel/pull/22656
## Summary Follow-up to #22638. Completes the second half of CAMEL-23331 by adding the `snapshotId` read-path. After this PR, `getBlob`, `downloadBlobToFile` and `downloadLink` can target a specific blob snapshot version instead of the live blob. ## Changes - `BlobConfiguration` — new `snapshotId` `@UriParam(common)` - `BlobConstants` — `BLOB_SNAPSHOT_ID` description updated to cover both roles (input for read ops / output of `createBlobSnapshot`) - `BlobExchangeHeaders` — new `getSnapshotIdFromHeaders()` reader (setter `snapshotId()` already existed from #22638) - `BlobConfigurationOptionsProxy` — resolve `snapshotId` from header, fall back to config - `BlobClientWrapper` — new `withSnapshot(String)` returning a wrapper scoped to the snapshot via `BlobClient.getSnapshotClient`, or `this` when the id is empty - `BlobOperations` — thread `withSnapshot` through the three read operations; fix the `downloadLink` URL composition to handle the snapshot-scoped URL's existing `?snapshot=<id>` query string before appending the SAS token - Documentation — new section "Reading a specific blob snapshot" with a route example - Regenerated catalog JSON, endpoint DSL, configurers ## Test plan - [x] New `BlobOperationsTest.testGetBlobWithSnapshotIdReadsFromScopedClient()` — verifies that when `snapshotId` is configured, `getBlob` reaches the snapshot-scoped client - [x] New `BlobOperationsTest.testGetBlobWithSnapshotIdHeaderOverridesConfig()` — verifies header precedence over the URI param - [x] All existing tests pass (34 tests, 0 failures) - [x] Full `mvn -DskipTests install` for the module, catalog and endpoint DSL succeeds — all generated files committed - [ ] Integration test against Azure/Azurite (requires credentials) ## JIRA https://issues.apache.org/jira/browse/CAMEL-23331 (the ticket's original scope included both creation and retrieval; #22638 delivered the first half, this PR delivers the second) 🤖 Generated with [Claude Code](https://claude.com/claude-code) on behalf of Andrea Cosentino -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
