Skip to content
This repository was archived by the owner on Oct 5, 2025. It is now read-only.

Add Service Provider Interface for extensible RangeReader discovery#74

Merged
groldan merged 1 commit intomainfrom
factory_spi
Sep 7, 2025
Merged

Add Service Provider Interface for extensible RangeReader discovery#74
groldan merged 1 commit intomainfrom
factory_spi

Conversation

@groldan
Copy link
Contributor

@groldan groldan commented Sep 7, 2025

Introduce RangeReaderProvider SPI to enable automatic discovery and selection of RangeReader implementations based on URI schemes and endpoint patterns. The SPI includes disambiguation for overlapping protocols (HTTP/HTTPS) using HTTP response header analysis.

The RangeReaderFactory now serves as the unified entry point, automatically selecting the most appropriate provider for any given URI. This enables seamless extension with new storage backends without requiring modifications to the core library.

The implementation supports automatic provider discovery via ServiceLoader, URI scheme-based filtering with hostname pattern matching, HTTP header inspection for cloud provider disambiguation, and priority-based selection for ambiguous cases. All existing RangeReader implementations have their dedicated provider classes.

Additionally includes fixes for S3 region detection from virtual hosted-style URLs and enhanced GCS URI parsing to support both public URLs and REST API endpoints used by emulators.

@groldan groldan added documentation Improvements or additions to documentation enhancement New feature or request architecture Architecture decision or design cloud-provider Cloud provider integration api-evolution API evolution and versioning labels Sep 7, 2025
@github-actions
Copy link

github-actions bot commented Sep 7, 2025

📖 Documentation Preview Ready!

The documentation has been built for this PR and is ready for review.

🔗 Preview Options:

  1. Download Artifact: documentation-preview-74

    • Download the built site and open index.html locally
  2. Local Preview:

    cd docs
    mkdocs serve

📊 Build Information:

  • Commit: dd362a4
  • Build Time: 2025-09-07T04:37:42.516Z
  • Status: ✅ Build Successful

🧪 What's Included:

  • All documentation changes from this PR
  • Updated navigation and cross-references
  • Validated internal links
  • Optimized assets and styling

💡 Tip: To test locally, run mkdocs serve in the docs/ directory after merging this PR.

@github-actions
Copy link

github-actions bot commented Sep 7, 2025

📚 Documentation Validation Results

The documentation has been built and validated successfully!

✅ Validation Checks Passed:

  • MkDocs configuration is valid
  • Documentation builds without errors (with --strict validation)
  • Internal link structure validated

📋 Summary:

  • Documentation site: Built successfully
  • Pages: Ready for deployment
  • Build status: ✅ Passing

You can preview the built documentation by downloading the documentation-site artifact from this workflow run.

@github-actions
Copy link

github-actions bot commented Sep 7, 2025

📈 Documentation Impact Analysis

📊 Documentation Changes Summary

  • Base branch pages: 14
  • PR branch pages: 14
  • Net change: 0 pages

📄 New Pages:

🗑️ Removed Pages:

✏️ Modified Pages:

  • developer-guide/architecture/index.html (+2423 bytes)
  • developer-guide/performance/index.html (-3627 bytes)
  • developer-guide/contributing/index.html (-38 bytes)
  • developer-guide/testing/index.html (-377 bytes)
  • user-guide/configuration/index.html (-5481 bytes)
  • user-guide/troubleshooting/index.html (-440 bytes)
  • user-guide/index.html (-386 bytes)
  • user-guide/quick-start/index.html (-1085 bytes)

Analysis generated on Sun Sep 7 02:40:19 UTC 2025


This analysis compares the built documentation between the base branch and this PR.

@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@groldan groldan force-pushed the factory_spi branch 2 times, most recently from 3a36de9 to e5e18c0 Compare September 7, 2025 03:38
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
Introduce RangeReaderProvider SPI to enable automatic discovery and
selection of RangeReader implementations based on URI schemes and endpoint
patterns. The SPI includes disambiguation for overlapping protocols (HTTP/HTTPS)
using HTTP response header analysis.

The RangeReaderFactory now serves as the unified entry point, automatically
selecting the most appropriate provider for any given URI. This enables
seamless extension with new storage backends without requiring modifications to the core library.

The implementation supports automatic provider discovery via ServiceLoader,
URI scheme-based filtering with hostname pattern matching, HTTP header inspection
for cloud provider disambiguation, and priority-based selection for ambiguous cases.
All existing RangeReader implementations have their dedicated provider classes.

Additionally includes fixes for S3 region detection from virtual hosted-style URLs
and enhanced GCS URI parsing to support both public URLs and REST API endpoints used by emulators.
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@tileverse-io tileverse-io deleted a comment from github-actions bot Sep 7, 2025
@groldan groldan merged commit 1de6b54 into main Sep 7, 2025
25 checks passed
@groldan groldan deleted the factory_spi branch September 7, 2025 04:40
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

api-evolution API evolution and versioning architecture Architecture decision or design cloud-provider Cloud provider integration documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant