vidocq-runtime-extensions is the set of extensions shipped out of the box, grouped by domain under five aggregators (essentials, jakartaee-core, jakartaee-web, microprofile, module-repackaged). Each leaf is an independent Maven artefact, activated by the user simply adding it as a dependency.

Coordinates

Parent artefact

io.vidocq.runtime.extensions:vidocq-runtime-extensions:0.2.0

Source

vidocq-runtime-extensions/

Catalogue

Extension Aggregator Role

vidocq-runtime-chappe-webserver-extension

essentials

Wires Chappe as HTTP/1.1, H2, H3 transport. Configures bind via vidocq.http.host / vidocq.http.port.

vidocq-runtime-migration-extension

essentials

Schema-migration facade — runs the configured migration engine before the datasource opens.

vidocq-runtime-flyway-migration-extension

essentials

Flyway-based schema migrations.

vidocq-runtime-liquibase-migration-extension

essentials

Liquibase-based schema migrations.

vidocq-runtime-cassini-rest-extension

jakartaee-core

Wires Cassini for Jakarta REST 4.0. Static routing generated at build (companion -codegen artefact), CDI bridged via Vauban.

vidocq-runtime-mansart-pool-extension

jakartaee-web

JDBC connection pooling via Mansart Pool (companion -datasources-codegen artefact for multi-datasource holders).

vidocq-runtime-mansart-data-extension

jakartaee-web

Jakarta Data 1.0 via Mansart — scans @Repository, implementations generated via APT (companion -codegen artefact).

vidocq-runtime-mansart-transactions-extension

jakartaee-web

Handles @Transactional via mansart-transactions (companion -codegen artefact).

vidocq-runtime-ravel-config-extension

microprofile

https://microprofile.io/specifications/microprofile-config/ via Ravel — external sources, profiles, typed conversion.

vidocq-runtime-knock-health-extension

microprofile

https://microprofile.io/specifications/microprofile-health/ via Knock/q/health/{live,ready,started} endpoints.

vidocq-runtime-dirac-metrics-extension

microprofile

https://microprofile.io/specifications/microprofile-metrics/ via Dirac — Prometheus endpoint.

vidocq-runtime-grimm-openapi-extension

microprofile

https://microprofile.io/specifications/microprofile-open-api/ via Grimm — document generated at compile time (-ui companion serves the viewer).

vidocq-runtime-cervantes-jwt-extension

microprofile

MicroProfile JWT Auth via Cervantes.

vidocq-runtime-cyrano-rest-client-extension

microprofile

MicroProfile REST Client via Cyrano — proxies generated by APT.

vidocq-runtime-humboldt-telemetry-extension

microprofile

MicroProfile Telemetry via Humboldt — traces, metrics, logs, OTLP/HTTP export.

vidocq-runtime-heisenberg-fault-tolerance-extension

microprofile

MicroProfile Fault Tolerance via Heisenberg@Retry, @Timeout, @CircuitBreaker, @Bulkhead, @Fallback interceptors (pure CDI, no HTTP endpoint; Dirac metrics and Humboldt telemetry stay optional).

CDI (Vauban) and JSON (Champollion) are not standalone extensions: Vauban is the engine built into vidocq-runtime-core, and Champollion ships transitively with the REST extension.

Planned: a Jakarta Servlet 6.1 extension wiring Foy on top of Chappe.

Typical lifecycle — Chappe example

The vidocq-runtime-chappe-webserver-extension extension illustrates the pattern. Four hook points:

Phase Actor Priority Action

configure

ChappeEngineExtension

100

installs ChappeMountPoint

onStart

Contributors (REST, Servlet)

500–9999

call mount(…​)

onStart

ChappeServerBootstrap

10000

starts a Server per listener

onStop

ChappeServerBootstrap

10000

shuts servers down cleanly

Other extensions follow comparable scheduling logic with their own priorities.

Activation by dependency

An extension activates as soon as it is on the module-path. No @EnableX annotation is required — the APT index detects the Java Modules provides VidocqExtension declaration.

<dependency>
    <groupId>io.vidocq.runtime.extensions.jakartaee.core</groupId>
    <artifactId>vidocq-runtime-cassini-rest-extension</artifactId>
    <version>0.2.0</version>
</dependency>

Next steps

  • SPI — how to write a new extension

  • TCK status — coverage by extension

  • Concepts — extension vocabulary