Skip to content

Add Jackson 3 migration plan: remove Confluent dependencies, retain Everit, migrate Spring Boot to Jackson 3#247

Merged
jwijgerd merged 3 commits into
mainfrom
copilot/migrate-codebase-to-jackson-3
Mar 16, 2026
Merged

Add Jackson 3 migration plan: remove Confluent dependencies, retain Everit, migrate Spring Boot to Jackson 3#247
jwijgerd merged 3 commits into
mainfrom
copilot/migrate-codebase-to-jackson-3

Conversation

Copilot AI commented Mar 15, 2026

Copy link
Copy Markdown
Contributor

Confluent's kafka-json-schema-serializer and related libraries are pinned to Jackson 2, blocking migration to Jackson 3. This PR adds a detailed migration plan to remove all io.confluent dependencies, in-source the small API surface actually used, and migrate Spring Boot classes to Jackson 3.

Analysis

Audited the full codebase — 23 files import from io.confluent, 3 from org.everit. The actual API surface used is narrow:

  • JsonSchema: validate(JsonNode), rawSchema(), toJsonNode(), deepEquals(), version(), toString()
  • SchemaDiff: compare(Schema, Schema), COMPATIBLE_CHANGES_STRICT (56 types, extracted from bytecode)
  • Difference.Type: 114 enum values, only 2 directly referenced (PROPERTY_REMOVED_FROM_CLOSED_CONTENT_MODEL, REQUIRED_PROPERTY_ADDED_TO_UNOPEN_CONTENT_MODEL)
  • Everit JSON Schema (com.github.erosb:everit-json-schema): Depends on org.json:json, not on Jackson — safe to retain as explicit dependency after Confluent removal
  • Spring Boot Jackson 2: 3 POMs use spring-boot-jackson2, 4 auto-config classes use Jackson2ObjectMapperBuilderCustomizer, 10+ test files use Jackson2ObjectMapperBuilder

Plan (plans/jackson3-migration.md)

  • Phase 0 — Pre-verify jackson-dataformat-protobuf Jackson 3 availability, kafka-protobuf-serializer runtime usage, and Everit as explicit dependency
  • Phase 1 — In-source JsonSchema (wrapping Everit internally), SchemaDiff (operating on Everit Schema objects), and Difference in org.elasticsoftware.akces.schemas
  • Phases 2–6 — Update shared/runtime/client/query-support/eventcatalog/test-apps modules (import swaps, type simplification); retain org.everit.json.schema.ValidationException as-is
  • Phase 7 — Remove Confluent deps, repository, and properties from parent POM; add everit-json-schema as explicit dependency
  • Phase 8 — Full Jackson 2→3 migration including Spring Boot 4 / Spring Framework 7:
    • 8.1: Core Jackson migration (com.fasterxml.jacksontools.jackson across 64 files)
    • 8.2: Spring Boot Jackson 3 integration — replace spring-boot-jackson2spring-boot-jackson, Jackson2ObjectMapperBuilderCustomizerJsonMapperBuilderCustomizer in 4 auto-config classes and 10+ test files
    • 8.3: Remove all Jackson 2 dependencies

Includes COMPATIBLE_CHANGES_STRICT reference extracted from Confluent bytecode, file-by-file change matrix, Spring Boot Jackson 2→3 class mapping table, and risk mitigations.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

…source JSON Schema functionality

Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Copilot AI changed the title [WIP] Migrate codebase to use Jackson 3 and remove Confluent library Add Jackson 3 migration plan: remove Confluent dependencies, in-source JSON Schema functionality Mar 15, 2026
Copilot AI requested a review from jwijgerd March 15, 2026 16:45
@jwijgerd

Copy link
Copy Markdown
Contributor

@copilot looks good so far, can you also specifically mention to update all Spring (Boot) classes to use Jackson 3 (which is the default option now for Spring Boot 4 and Spring Framework 7). Also it should be find to keep using the Everit JSON Schema library since it doesn't depend on Jackson at all

…son 3 migration

Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>

Copilot AI commented Mar 16, 2026

Copy link
Copy Markdown
Contributor Author

@copilot looks good so far, can you also specifically mention to update all Spring (Boot) classes to use Jackson 3 (which is the default option now for Spring Boot 4 and Spring Framewo...

Updated in 365a3dd:

  1. Everit retained — confirmed everit-json-schema depends on org.json:json, not Jackson. Plan now keeps it as-is and adds it as explicit dependency after Confluent removal. Removed the JsonSchemaValidationException replacement class. JsonSchema wrapper and SchemaDiff now operate on Everit's schema objects internally.

  2. Spring Boot Jackson 3 migration added to Phase 8 with full detail:

    • Replace spring-boot-jackson2spring-boot-jackson in 3 module POMs
    • Replace Jackson2ObjectMapperBuilderCustomizerJsonMapperBuilderCustomizer in 4 auto-config classes (AggregateServiceApplication, AkcesClientAutoConfiguration, AkcesQueryModelAutoConfiguration, AkcesDatabaseModelAutoConfiguration)
    • Replace Jackson2ObjectMapperBuilder in 10+ test files
    • Added mapping table for Jackson 2 → 3 Spring Boot class equivalents

Copilot AI changed the title Add Jackson 3 migration plan: remove Confluent dependencies, in-source JSON Schema functionality Add Jackson 3 migration plan: remove Confluent dependencies, retain Everit, migrate Spring Boot to Jackson 3 Mar 16, 2026
@jwijgerd
jwijgerd marked this pull request as ready for review March 16, 2026 08:29
@jwijgerd
jwijgerd merged commit 6d3c01a into main Mar 16, 2026
1 check passed
@jwijgerd
jwijgerd deleted the copilot/migrate-codebase-to-jackson-3 branch March 16, 2026 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants