apache / apache/incubator-graphar
[FEATURE][Java] Complete immutable metadata API parity
- Dominant language
- C++
- Stars
- 373
- Forks
- 93
- Avg merge
- 7d 21h
- Merged PRs (30d)
- 7
Description
## Describe the enhancement requested
Complete the pure-Java `graphar-info` metadata API surface needed before reader/writer work by matching the C++ immutable metadata operations: indexed lookup of graph/edge/vertex metadata and immutable property-group removal. This is a focused compatibility slice from the Java metadata audit; it does not introduce physical IO.
Component(s): Java
## Scope
- add indexed lookup for `GraphInfo` vertex and edge metadata;
- add indexed property-group lookup for `VertexInfo` and `EdgeInfo`;
- add immutable property-group removal for `VertexInfo` and `EdgeInfo`;
- return `null` for out-of-range indexes, consistent with the C++ API.
## Non-goals
No GraphAr layout/path change, storage adapter, Parquet/Arrow/Hadoop dependency, reader/writer, query API, or mutation of existing instances. Phase 3 `io-api` remains a separate workstream.
## Compatibility and acceptance
The public API remains Java 11-compatible and `graphar-info` remains dependency-light. Removal must return a new metadata object while leaving the original untouched. Index lookup and removal behavior must be covered for graph, vertex, and edge metadata.
## Dependencies and evidence
Relates to metadata-compatibility umbrella #944 and reader/writer umbrella #947. Product-fork evidence: https://github.com/keksmd/incubator-graphar/pull/5 (commit `378aa7c`), where exact changed-file pre-commit passed and the devcontainer reports 132 JUnit tests with 0 failures/errors/skips and produces the `graphar-info` JAR. The local Maven lifecycle then remained at the existing `maven-site-plugin:attach-descriptor` phase, so no completed `verify` claim is made.
Contributor guide
Research direction
Start in the pure-Java graphar-info metadata API, focusing on GraphInfo, VertexInfo, and EdgeInfo and the corresponding C++ immutable operations. Run the existing JUnit suite in the devcontainer before making changes. Done means indexed lookups and immutable property-group removal return the specified results, preserve the original objects, and are covered for graph, vertex, and edge metadata while remaining Java 11-compatible.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, java
- Domain
- api, backend-api-design
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100