Consolidated reference for the Maven artifacts, JPMS modules, supported annotations, JsonbConfig properties, and runtime configuration points of Champollion.

Maven artifacts

groupId:artifactId Role

io.vidocq.champollion:champollion-api

Pure re-exposition of the Jakarta specs (jakarta.json, jakarta.json.bind). Useful for consumer modules that don’t want to depend on an implementation.

io.vidocq.champollion:champollion-jsonp

JSON-P 2.1 implementation (parser, generator, object model, Patch / Pointer / Merge Patch). JsonProvider ServiceLoader.

io.vidocq.champollion:champollion-jsonb

JSON-B 3.0 implementation (Jsonb, JsonbBuilder, JsonbConfig). Depends on champollion-jsonp.

io.vidocq.champollion:champollion-codegen-apt

Annotation Processor (scope provided) generating JsonbBinding<T> at compile time.

io.vidocq.champollion:champollion-codegen-maven-plugin

champollion:generate Mojo bound to generate-sources; scans the classpath and invokes the APT on detected-but-unannotated types.

io.vidocq.champollion:champollion-bench

JMH — Parsson/Yasson/Jackson comparisons. No runtime scope.

io.vidocq.champollion:champollion-examples

Runnable examples.

io.vidocq.champollion:champollion-tck (out of reactor)

Official TCK runners JSON-P 2.1 + JSON-B 3.0. Invocation via run-official-tck-*.sh only.

JPMS modules

Module Public exports SPI / provides

io.vidocq.champollion.api

jakarta.json (transitive), jakarta.json.bind (transitive)

io.vidocq.champollion.jsonp

io.vidocq.champollion.jsonp.spi

provides jakarta.json.spi.JsonProvider with io.vidocq.champollion.jsonp.ChampollionJsonProvider

io.vidocq.champollion.jsonb

io.vidocq.champollion.jsonb.spi, io.vidocq.champollion.jsonb.annotation

provides jakarta.json.bind.spi.JsonbProvider with io.vidocq.champollion.jsonb.ChampollionJsonbProvider

io.vidocq.champollion.codegen.apt

provides javax.annotation.processing.Processor with io.vidocq.champollion.codegen.apt.JsonbStaticProcessor

Internal packages (internal.*) are not exported — do not depend on them, they may break between versions.

Supported JSON-B annotations

Standard Jakarta JSON Binding 3.0 annotations — all supported:

Annotation Effect

@JsonbProperty("name")

Renames the JSON property. On a constructor parameter: used for resolution.

@JsonbTransient

Excludes the property (read and write).

@JsonbDateFormat("yyyy-MM-dd")

Date / time format. Applies to java.time.*, java.util.Date, Calendar.

@JsonbNumberFormat(",#0.00")

Numeric format (cf. DecimalFormat).

@JsonbTypeAdapter(MyAdapter.class)

Adapter on a property or class.

@JsonbTypeSerializer(MySer.class) / @JsonbTypeDeserializer(…​)

Custom serializer / deserializer.

@JsonbVisibility(MyStrategy.class)

Visibility strategy (fields vs accessors).

@JsonbCreator

Constructor or factory used for deserialization. Records natively supported without annotation.

@JsonbNillable

Forces writing of null for this property (or class).

@JsonbPropertyOrder({"a", "b", "c"})

Property write order.

@JsonbTypeInfo + @JsonbSubtype

Polymorphism with discriminator (new in JSON-B 3.0).

Champollion-specific annotations:

@JsonbStatic

Marks a type for binding generation by champollion-codegen-apt. Optional — the APT also scans types annotated with @JsonbProperty etc.

JsonbConfig properties

All standard jakarta.json.bind.JsonbConfig properties are supported (cf. https://jakarta.ee/specifications/jsonb/3.0/):

Property Description

JSONB_FORMATTING (withFormatting)

Pretty-print with indentation.

JSONB_NULL_VALUES (withNullValues)

Include null properties in the output.

JSONB_LOCALE (withLocale)

Locale for date / number formats.

JSONB_DATE_FORMAT (withDateFormat)

Global date / time format.

JSONB_PROPERTY_NAMING_STRATEGY

IDENTITY, LOWER_CASE_WITH_DASHES, LOWER_CASE_WITH_UNDERSCORES, UPPER_CAMEL_CASE, CASE_INSENSITIVE…​

JSONB_PROPERTY_ORDER_STRATEGY

LEXICOGRAPHICAL, ANY, REVERSE.

JSONB_BINARY_DATA_STRATEGY

BYTE, BASE_64, BASE_64_URL.

JSONB_ENCODING

UTF-8 by default.

withAdapters(…​), withSerializers(…​), withDeserializers(…​)

Global registration.

Champollion-specific properties (champollion. prefix):

champollion.jsonb.warn-on-fallback

If true, logs WARN when the runtime falls back to reflection (no static binding found). Useful for production audits. Default false.

champollion.jsonp.buffer-pool-size

Parser buffer pool size. Default: 8.

JsonProvider & JsonbProvider

Auto-discovered via ServiceLoader:

  • META-INF/services/jakarta.json.spi.JsonProviderio.vidocq.champollion.jsonp.ChampollionJsonProvider

  • META-INF/services/jakarta.json.bind.spi.JsonbProviderio.vidocq.champollion.jsonb.ChampollionJsonbProvider

To force the implementation (multi-impl on the classpath):

-Djakarta.json.provider=io.vidocq.champollion.jsonp.ChampollionJsonProvider
-Djakarta.json.bind.provider=io.vidocq.champollion.jsonb.ChampollionJsonbProvider

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.*</target>
    </targets>
    <excludes>
      <exclude>com.acme.dto.internal.*</exclude>
    </excludes>
  </configuration>
</plugin>

Bound to generate-sources. 100% delegation to champollion-codegen-apt — no duplication.

Compatibility

Resources

  • lien:https://codeberg.org/Vidocq/champollion/src/branch/main/BENCH.md[BENCH.md] — JMH benchmarks vs Parsson / Yasson / Jackson

  • lien:https://codeberg.org/Vidocq/champollion/src/branch/main/TCK.md[TCK.md] — TCK details

  • lien:https://codeberg.org/Vidocq/champollion/src/branch/main/ROADMAP.md[ROADMAP.md] — phases M0..M7