Skip to content

0.2.0

Choose a tag to compare

@jwcarman jwcarman released this 24 Aug 03:57
· 207 commits to main since this release

Breaking changes

  • Spring Boot auto-configuration moved out of the backend modules into the new
    codec-autoconfigure module. Spring Boot applications should now depend on
    codec-spring-boot-starter plus a backend module; the backend modules
    themselves are Spring-free and no longer register anything on their own.

    Migration: add codec-spring-boot-starter alongside your existing backend
    dependency. Non-Spring users are unaffected.

  • Backend codec implementation classes (JacksonCodec, GsonCodec,
    ProtobufCodec) are now package-private. Interact with codecs through the
    Codec<T> interface returned by the factories.

  • Removed the empty *CodecProperties configuration records (codec.jackson,
    codec.gson, codec.protobuf prefixes had no properties).

Added

  • Codec composition: Codec.andThen(Codec<byte[]>) layers byte-level
    transforms (compression, encryption, ...) onto any codec, unwinding them
    automatically in reverse order on decode
  • CompressionStreamCodec base class for stream-based compression transforms,
    with built-in protection against decompression bombs (64 MiB default cap,
    tunable per instance)
  • GzipCodec (gzip/RFC 1952 framing) and DeflateCodec (zlib/RFC 1950
    framing with configurable compression level) built-in transforms
  • Jackson 2.x backend (codec-jackson2) for projects still on
    com.fasterxml.jackson
  • codec-autoconfigure module with deterministic backend precedence when
    multiple backends are present (Jackson 3 → Jackson 2 → Gson → Protobuf);
    a user-defined CodecFactory bean always wins
  • codec-spring-boot-starter bundling codec-core and codec-autoconfigure
  • Automatic-Module-Name manifest entries (org.jwcarman.codec.*) in all jars

Changed

  • The parent pom no longer inherits spring-boot-starter-parent; Spring Boot
    versions are managed via a spring-boot-dependencies BOM import and build
    plugin versions are pinned explicitly

Documentation