Skip to content

Remove Confluent dependencies and in-source schema classes (Jackson 3 migration phases 1-7)#253

Merged
jwijgerd merged 6 commits into
mainfrom
copilot/implement-jackson-3-migration
Mar 17, 2026
Merged

Remove Confluent dependencies and in-source schema classes (Jackson 3 migration phases 1-7)#253
jwijgerd merged 6 commits into
mainfrom
copilot/implement-jackson-3-migration

Conversation

Copilot AI commented Mar 17, 2026

Copy link
Copy Markdown
Contributor
  • Phase 1: Create in-sourced schema classes in main/shared
    • 1.1 Create org.elasticsoftware.akces.schemas.diff.Difference record with all Type enum values
    • 1.2 Create org.elasticsoftware.akces.schemas.diff.SchemaDiff with compare() and COMPATIBLE_CHANGES_STRICT
    • 1.3 Create org.elasticsoftware.akces.schemas.JsonSchema wrapper class with optional ObjectMapper injection (default constructors use a static mapper)
    • 1.4 Add everit-json-schema as explicit dependency in shared pom.xml
  • Phase 2: Update shared module to use new classes
    • Update SchemaRegistry, KafkaSchemaRegistry, IncompatibleSchemaException, SchemaNotBackwardsCompatibleException
    • Update SchemaStorage, KafkaTopicSchemaStorage, SchemaRecord, SchemaRecordSerde
    • Remove Confluent dependencies from shared pom.xml
  • Phase 3: Update runtime module
    • Update KafkaAggregateRuntime.java and all runtime test files
    • Remove Confluent dependencies from runtime pom.xml
  • Phase 4: Update client module
    • Update AkcesClientController.java (simplified ParsedSchema→JsonSchema) and client tests
    • Remove Confluent dependencies from client pom.xml
  • Phase 5: Update query-support and eventcatalog modules
  • Phase 6: Update test applications (crypto-trading)
  • Phase 7: Remove Confluent from parent POM
    • Removed all Confluent dependency management entries, properties, and Maven repository
  • Phase 8: Full Jackson 2 → Jackson 3 migration (separate follow-up effort)
  • Verification: All tests compile and pass across all modules

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 3 commits March 17, 2026 08:00
…se in-sourced schema classes

Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Copilot AI changed the title [WIP] Implement the full Jackson 3 migration plan Remove Confluent dependencies and in-source schema classes (Jackson 3 migration phases 1-7) Mar 17, 2026
Copilot AI requested a review from jwijgerd March 17, 2026 08:28
@jwijgerd
jwijgerd marked this pull request as ready for review March 17, 2026 08:46
@jwijgerd

Copy link
Copy Markdown
Contributor

@copilot the tests are not compiling, make sure you run all tests and that they compile and complete successfully

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

Copilot AI commented Mar 17, 2026

Copy link
Copy Markdown
Contributor Author

@copilot the tests are not compiling, make sure you run all tests and that they compile and complete successfully

Fixed in bce923f. Three issues found and resolved:

  1. AkcesClientTests.java and RuntimeTests.java — used old Confluent JsonSchema(String, List, Map, int) constructor; updated to JsonSchema(String, int).
  2. EventCatalogProcessorTest.java — used new JsonSchema(JsonNode) single-arg constructor which doesn't exist; updated to new JsonSchema(JsonNode, null).
  3. JsonSchema.java — added missing toJson(Object) method that tests relied on.
  4. SchemaDiff.java — fixed a bug in compareCombinedSchemas where subschemas were compared positionally, but CombinedSchema.getSubschemas() returns an unordered Set. This caused false TYPE_CHANGED errors when Everit returned allOf(StringSchema, EnumSchema) subschemas in different order. Now matches subschemas by type.

All 130+ tests across all modules compile and pass.

* {@link Schema} used for validation.
*/
public final class JsonSchema {
private static final ObjectMapper objectMapper = new ObjectMapper();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

create an optional constructor where the ObjectMapper can be injected. If the default constructor is used use the static mapper

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added in 54f276c. The ObjectMapper is now an instance field. Default constructors delegate to new three-arg constructors (String, Integer, ObjectMapper and JsonNode, Integer, ObjectMapper) passing DEFAULT_OBJECT_MAPPER. The toJson() and toString() methods use the injected instance.

…tors use static mapper

Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Copilot AI requested a review from jwijgerd March 17, 2026 10:36
@jwijgerd
jwijgerd merged commit cb08522 into main Mar 17, 2026
5 checks passed
@jwijgerd
jwijgerd deleted the copilot/implement-jackson-3-migration branch March 17, 2026 13:58
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