apache / apache/incubator-graphar
[FEATURE][Java] Add dependency-light storage API
- Dominant language
- C++
- Stars
- 373
- Forks
- 93
- Avg merge
- 7d 21h
- Merged PRs (30d)
- 7
Description
## Describe the enhancement requested
Add the first, dependency-light byte-storage boundary required by the pure-Java GraphAr reader/writer roadmap. It isolates URI-backed byte access from GraphAr metadata and physical formats so later Parquet and object-store adapters do not leak their dependencies into `graphar-info`.
Component(s): Java
## Scope
- new `graphar-storage-api` module;
- `Storage`, `InputFile`, `OutputFile`, `SeekableInput`, and `PositionOutput` contracts;
- Java 11-safe `ByteBuffer` seek/read/readFully and positional-output semantics;
- contract tests for heap/direct buffers, EOF, invalid seek, and short reads.
## Non-goals
No local, S3, Hadoop, Parquet, Arrow, GraphAr layout, reader, or writer implementation. `graphar-storage-local` is intentionally a follow-up slice after this API is accepted.
## Compatibility and acceptance
The module must add no runtime dependency to `graphar-info`, preserve independent input handles and accurate byte positions, and pass repository pre-commit plus the focused Maven reactor verification.
## Links
Focused subissue of #953; relates to reader/writer umbrella #947 and architecture umbrella #756.
Contributor guide
Research direction
Start with the repository’s module structure and the focused Maven reactor verification, then define the new graphar-storage-api module around the named Storage, InputFile, OutputFile, SeekableInput, and PositionOutput contracts. Read the contract-test requirements for heap/direct buffers, EOF, invalid seeks, and short reads. Done means the Java 11-safe API passes those tests and pre-commit without adding a runtime dependency to graphar-info.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100