Consolidated reference for the Maven artifacts, Java modules, supported annotations, JsonbConfig properties, and runtime configuration points of Champollion.
Maven artifacts
groupId:artifactId |
Role |
|---|---|
|
Pure re-exposition of the Jakarta specs ( |
|
JSON-P 2.1 implementation (parser, generator, object model, Patch / Pointer / Merge Patch). |
|
JSON-B 3.0 implementation ( |
|
Annotation Processor (scope |
|
|
|
JMH — Parsson/Yasson/Jackson comparisons. No runtime scope. |
|
Runnable examples. |
|
Official TCK runner JSON-P 2.1 + JSON-B 3.0. Joins the reactor only under |
Java modules
| Module | Public exports | SPI / provides |
|---|---|---|
|
|
— |
|
No public exports (one qualified export: |
|
|
|
|
|
— |
|
Internal packages (*.internal) are not exported — do not depend on them, they may break between versions. The provider classes above live in internal packages on purpose: they are reached through ServiceLoader, never referenced directly.
Supported JSON-B annotations
Standard Jakarta JSON Binding 3.0 annotations — all supported:
| Annotation | Effect |
|---|---|
|
Renames the JSON property. On a constructor parameter: used for resolution. |
|
Excludes the property (read and write). |
|
Date / time format. Applies to |
|
Numeric format (cf. |
|
Adapter on a property or class. |
|
Custom serializer / deserializer. |
|
Visibility strategy (fields vs accessors). |
|
Constructor or factory used for deserialization. Records natively supported without annotation. |
|
Forces writing of |
|
Property write order. |
|
Polymorphism with discriminator (new in JSON-B 3.0). |
Champollion-specific annotations:
|
Marks a record for binding generation by |
JsonbConfig properties
All standard jakarta.json.bind.JsonbConfig properties are supported (cf. https://jakarta.ee/specifications/jsonb/3.0/):
| Property | Description |
|---|---|
|
Pretty-print with indentation. |
|
Include |
|
Locale for date / number formats. |
|
Global date / time format. |
|
|
|
|
|
|
|
|
|
Global registration. |
There are no Champollion-specific configuration properties — configuration is the standard JsonbConfig surface only. Static bindings are discovered automatically via ServiceLoader (META-INF/services/io.vidocq.champollion.jsonb.spi.JsonbBinding); to audit which types are statically bound, inspect that services file in the produced jar.
JsonProvider & JsonbProvider
Auto-discovered via ServiceLoader:
-
META-INF/services/jakarta.json.spi.JsonProvider→io.vidocq.champollion.jsonp.internal.ChampollionJsonProvider -
META-INF/services/jakarta.json.bind.spi.JsonbProvider→io.vidocq.champollion.jsonb.internal.ChampollionJsonbProvider
To force the implementation (multi-impl on the classpath) — JSON-P defines a system property; JSON-B is selected programmatically:
-Djakarta.json.provider=io.vidocq.champollion.jsonp.internal.ChampollionJsonProvider
Jsonb jsonb = JsonbBuilder.newBuilder(
"io.vidocq.champollion.jsonb.internal.ChampollionJsonbProvider").build();
champollion-codegen-maven-plugin Maven plugin
<plugin>
<groupId>io.vidocq.champollion</groupId>
<artifactId>champollion-codegen-maven-plugin</artifactId>
<version>${champollion.version}</version>
<executions>
<execution>
<goals><goal>generate</goal></goals>
</execution>
</executions>
<configuration>
<targets>
<target>com.acme.dto.Order</target>
<target>com.acme.dto.Customer</target>
</targets>
</configuration>
</plugin>
Bound to generate-sources. <targets> takes explicit record FQNs (present on the compile classpath) — there is no package scanning, no wildcards, no excludes. For each target the Mojo emits a <FQN>$$Trigger.java annotated @JsonbStatic and runs javac with JsonbStaticProcessor — 100% delegation to champollion-codegen-apt, no duplicated generation logic. Generated sources land in target/generated-sources/champollion (added to the compile source roots). If your types are annotated @JsonbStatic directly, you do not need this plugin: the APT runs during normal compilation.
Compatibility
-
Java: 25 (LTS).
-
Maven: 3.9.16 (Model 4.0.0 — the whole Vidocq stack moved to Maven 3.9; see TCK Jakarta JSON-P 2.1 + JSON-B 3.0 for the historical ShrinkWrap note).
-
Java Modules: strict, every module has a
module-info.java. -
Virtual threads: no
synchronized; the only thread-local state is an internal per-thread parser cache, invisible to applications. -
AOT: GraalVM
native-imageand Leyden CDS friendly in static codegen mode. -
Specs: conformant to https://jakarta.ee/specifications/jsonp/2.1/ and https://jakarta.ee/specifications/jsonb/3.0/.
Resources
-
BENCH.md — JMH benchmarks vs Parsson / Yasson / Jackson
-
TCK.md — TCK details
-
ROADMAP.md — phases M0..M7