apache / apache/incubator-graphar

[FEATURE][Java] Complete immutable metadata API parity

Open
#955 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.