• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

valkyrjaio / sindri-java / 30189084201
100%

Build:
DEFAULT BRANCH: 26.x
Ran 26 Jul 2026 05:16AM UTC
Jobs 1
Files 90
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 Jul 2026 05:15AM UTC coverage: 98.626% (-1.4%) from 100.0%
30189084201

push

github

web-flow
[Grpc] Add gRPC data-class generation (#38)

# Description

Adds **gRPC data-class generation** to Sindri, mirroring the existing
CLI and HTTP verticals so that a `@GrpcService` app can pre-generate its
cached service map (`AppGrpcRoutingData`) exactly as it does for
HTTP/CLI routes.

Sindri reflects (via JavaParser) over `@GrpcService` controllers
reachable from a component provider's `getGrpcProviders()`, reads each
`@GrpcMethod`, and emits an `AppGrpcRoutingData implements
GrpcRoutingDataContract` whose `routes()` maps `/package.Service/Method`
to a `Supplier<RouteContract>`. The generated supplier wires the
annotated method as the reflective handler and carries the client/server
streaming flags.

Like the CLI/HTTP readers, Sindri only emits *strings* referencing
`io.valkyrja.grpc.*`, so this compiles against the current published
framework — no new dependency. (The generated output is compiled by the
app, which needs the gRPC-enabled framework release.)

## Types of changes

- [ ] Improvement _(non-breaking change which improves code)_
- [ ] Bug fix _(non-breaking change which fixes an issue)_
- [x] New feature _(non-breaking change which adds functionality)_
- [ ] Deprecation _(breaking change which removes functionality)_
- [ ] Breaking change _(fix or feature that would cause existing
functionality to change)_
- [ ] Documentation improvement

## Changes

- **`ast/data/GrpcRouteData`** (+ contract) — the parsed gRPC route data
record, paralleling `CliRouteData`/`HttpRouteData`.
- **`ast/GrpcRouteAttributeReader`** (+ contract) +
**`ast/data/result/GrpcRouteAttributeResult`** — reads
`@GrpcService`/`@GrpcMethod`, keying routes by `/service/method` with a
reflective handler supplier and streaming flags.
- **`generator/ast/grpc/AstGrpcDataFileGenerator`** (+ contract) — emits
`AppGrpcRoutingData implements GrpcRoutingDataContract`.
- **`ast/data/result/ComponentProviderResult`** +
**`ast/ComponentProviderReader`** — collect `getGrpcProviders()`
alo... (continued)

512 of 525 branches covered (97.52%)

Branch coverage included in aggregate %.

381 of 396 new or added lines in 17 files covered. (96.21%)

1498 of 1513 relevant lines covered (99.01%)

4.33 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
95.96
-4.04% src/main/java/io/sindri/generate/abstract_/GenerateDataFromAst.java
4
90.97
src/main/java/io/sindri/ast/MiddlewareClassifier.java
2
0.0
src/main/java/io/sindri/generator/throwable/exception/DataFileWriteException.java
1
92.86
-7.14% src/main/java/io/sindri/provider/SindriComponentProvider.java
Jobs
ID Job ID Ran Files Coverage
1 30189084201.1 26 Jul 2026 05:16AM UTC 90
98.63
GitHub Action Run
Source Files on build 30189084201
  • Tree
  • List 90
  • Changed 10
  • Source Changed 10
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30189084201
  • bd2315ca on github
  • Prev Build on 26.x (#30179234841)
  • Next Build on 26.x (#30189300709)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc