Phase 8: Jackson 2 → Jackson 3 migration#254
Conversation
- Update jackson.version from 2.21.1 to 3.1.0 - Change BOM import groupId from com.fasterxml.jackson to tools.jackson - Change jackson-databind groupId to tools.jackson.core (shared, eventcatalog) - Change jackson-dataformat-protobuf groupId to tools.jackson.dataformat (shared, runtime, client) - Rename spring-boot-jackson2 to spring-boot-jackson (runtime, client, query-support) - Keep jackson-annotations at com.fasterxml.jackson.core (backward compat in Jackson 3)
- Update all com.fasterxml.jackson.core imports to tools.jackson.core - Update all com.fasterxml.jackson.databind imports to tools.jackson.databind - Update all com.fasterxml.jackson.dataformat imports to tools.jackson.dataformat - Preserve com.fasterxml.jackson.annotation imports (compatibility) - JsonProcessingException -> JacksonException (unchecked) - SerializerProvider -> SerializationContext - JsonSerializer -> ValueSerializer - Module -> JacksonModule - BeanSerializerModifier -> ValueSerializerModifier - BeanDeserializerModifier -> ValueDeserializerModifier - BeanDescription -> BeanDescription.Supplier in modifier methods - StringDeserializer moved to deser.jdk subpackage - ObjectMapper -> JsonMapper for concrete instantiation - Remove throws IOException where JacksonException is now unchecked - Update SetupContext methods: addBeanSerializerModifier -> addSerializerModifier - Update SetupContext methods: addBeanDeserializerModifier -> addDeserializerModifier
- Package changes: com.fasterxml.jackson.core/databind/dataformat -> tools.jackson.* - JsonProcessingException -> JacksonException (unchecked), removed throws declarations - JsonMappingException -> DatabindException (unchecked), removed throws declarations - new ObjectMapper() -> new JsonMapper() - Jackson2ObjectMapperBuilderCustomizer -> JsonMapperBuilderCustomizer - Jackson2ObjectMapperBuilder -> JsonMapper.builder() pattern - builder.modulesToInstall/serializerByType -> SimpleModule + builder.addModule - ProtobufMapper/Schema imports updated to tools.jackson.dataformat.protobuf - com.fasterxml.jackson.annotation imports kept (backward compatible)
…modules, bulk-migrate client/query-support/eventcatalog/test-apps imports, fix auto-configuration customizers Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
|
@copilot you have a compilation failure, pls continue the work Error: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile (default-compile) on project akces-client: Compilation failure |
…apperBuilder→JsonMapper.builder(), fix auto-config customizers Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Fixed in e43fc2e. The compilation failure was caused by Jackson 3's
Full |
There was a problem hiding this comment.
Pull request overview
Migrates the Akces framework (core modules + test apps) from Jackson 2 (com.fasterxml.jackson.*) to Jackson 3 (tools.jackson.*) and updates Spring Boot JSON customization to Spring Boot 4 / Spring Framework 7 conventions.
Changes:
- Update Maven dependency management and module POMs to use the
tools.jacksonBOM and Jackson 3 artifacts (andspring-boot-jackson). - Replace Jackson 2 APIs/usages with Jackson 3 equivalents (exceptions, serializers/modifiers, mapper setup).
- Update test utilities and auto-configurations to build/customize mappers via
JsonMapper/JsonMapperBuilderCustomizer+SimpleModule.
Reviewed changes
Copilot reviewed 57 out of 57 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| test-apps/crypto-trading/queries/src/test/java/org/elasticsoftware/cryptotrading/TestUtils.java | Switch test ObjectMapper setup to JsonMapper + SimpleModule and update imports. |
| test-apps/crypto-trading/queries/src/main/java/org/elasticsoftware/cryptotrading/query/WalletQueryModelState.java | Update @JsonSerialize import to Jackson 3 namespace. |
| test-apps/crypto-trading/queries/src/main/java/org/elasticsoftware/cryptotrading/query/OrdersQueryModelState.java | Update @JsonSerialize import to Jackson 3 namespace. |
| test-apps/crypto-trading/commands/src/test/java/org/elasticsoftware/cryptotrading/TestUtils.java | Switch test ObjectMapper setup to JsonMapper + SimpleModule and update imports. |
| test-apps/crypto-trading/aggregates/src/test/java/org/elasticsoftware/cryptotrading/TestUtils.java | Switch test ObjectMapper setup to JsonMapper + SimpleModule and update imports. |
| test-apps/crypto-trading/aggregates/src/test/java/org/elasticsoftware/cryptotrading/SellTradeTest.java | Update ObjectMapper import to Jackson 3 namespace. |
| test-apps/crypto-trading/aggregates/src/test/java/org/elasticsoftware/cryptotrading/BuyTradeTest.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/shared/src/test/java/org/elasticsoftware/akces/serialization/BigDecimalSerializerTests.java | Build test mapper via JsonMapper.builder() and remove checked-exception signatures. |
| main/shared/src/test/java/org/elasticsoftware/akces/gdpr/jackson/AkcesGDPRModuleTests.java | Update Version import to Jackson 3 namespace. |
| main/shared/src/main/java/org/elasticsoftware/akces/serialization/SchemaRecordSerde.java | Migrate serde exception handling and imports to Jackson 3. |
| main/shared/src/main/java/org/elasticsoftware/akces/serialization/ProtocolRecordSerde.java | Migrate serde exception handling and imports to Jackson 3. |
| main/shared/src/main/java/org/elasticsoftware/akces/serialization/BigDecimalSerializer.java | Update serializer API types/exceptions for Jackson 3. |
| main/shared/src/main/java/org/elasticsoftware/akces/serialization/AkcesControlRecordSerde.java | Update serde exception handling and imports to Jackson 3. |
| main/shared/src/main/java/org/elasticsoftware/akces/schemas/JsonSchema.java | Update core schema parsing/serialization to Jackson 3 APIs/exceptions. |
| main/shared/src/main/java/org/elasticsoftware/akces/gdpr/jackson/PIIDataSerializerModifier.java | Migrate serializer modifier types to Jackson 3 equivalents. |
| main/shared/src/main/java/org/elasticsoftware/akces/gdpr/jackson/PIIDataJsonSerializer.java | Migrate custom serializer base/types to Jackson 3 equivalents. |
| main/shared/src/main/java/org/elasticsoftware/akces/gdpr/jackson/PIIDataJsonDeserializer.java | Migrate custom deserializer base/types to Jackson 3 equivalents. |
| main/shared/src/main/java/org/elasticsoftware/akces/gdpr/jackson/PIIDataDeserializerModifier.java | Migrate deserializer modifier types to Jackson 3 equivalents. |
| main/shared/src/main/java/org/elasticsoftware/akces/gdpr/jackson/AkcesGDPRModule.java | Convert module base class + setup API to Jackson 3 (JacksonModule). |
| main/shared/pom.xml | Switch Jackson dependencies to tools.jackson.* groupIds. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/state/RocksDBAggregateStateRepositoryTests.java | Use JsonMapper in tests and update imports. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/schemas/JsonSchemaTests.java | Remove Jackson2ObjectMapperBuilder; build mapper via JsonMapper + modules. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/protocol/ProtocolTests.java | Update exception type usage to Jackson 3 (DatabindException/unchecked). |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/control/AkcesAggregateControllerTests.java | Use JsonMapper in tests and remove checked-exception signatures. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/WalletTests.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/WalletConfiguration.java | Switch to JsonMapperBuilderCustomizer and module-based serializer registration. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/TestUtils.java | Replace Jackson2ObjectMapperBuilder with JsonMapper + modules in tests. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/RuntimeTests.java | Replace Jackson2ObjectMapperBuilder with JsonMapper + modules; update exception types. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/AccountTests.java | Remove checked Jackson exception declaration and update imports. |
| main/runtime/src/test/java/org/elasticsoftware/akcestest/AccountConfiguration.java | Switch to JsonMapperBuilderCustomizer and module-based serializer registration. |
| main/runtime/src/main/java/org/elasticsoftware/akces/kafka/KafkaAggregateRuntime.java | Update serialization exception handling to Jackson 3 (JacksonException). |
| main/runtime/src/main/java/org/elasticsoftware/akces/kafka/AggregateRuntimeFactory.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/runtime/src/main/java/org/elasticsoftware/akces/beans/AggregateBeanFactoryPostProcessor.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/runtime/src/main/java/org/elasticsoftware/akces/AkcesAggregateController.java | Update ObjectMapper import/type usage to Jackson 3 namespace. |
| main/runtime/src/main/java/org/elasticsoftware/akces/AggregateServiceApplication.java | Replace Jackson2 customizer with JsonMapperBuilderCustomizer + modules. |
| main/runtime/pom.xml | Switch to spring-boot-jackson and update protobuf dataformat dependency groupId. |
| main/query-support/src/test/java/org/elasticsoftware/akces/query/models/QueryModelRuntimeTests.java | Remove try/catch around Jackson-only checked exceptions after migration. |
| main/query-support/src/test/java/org/elasticsoftware/akces/query/database/DatabaseModelRuntimeTests.java | Remove try/catch around Jackson-only checked exceptions after migration. |
| main/query-support/src/test/java/org/elasticsoftware/akces/query/TestUtils.java | Build mapper via JsonMapper + modules; drop obsolete checked exception signatures. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/models/beans/QueryModelBeanFactoryPostProcessor.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/models/QueryModelRuntimeFactory.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/models/KafkaQueryModelRuntime.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/models/AkcesQueryModelController.java | Update ObjectMapper/TypeReference imports to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/models/AkcesQueryModelAutoConfiguration.java | Switch to JsonMapperBuilderCustomizer and module-based serializer registration. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/database/beans/DatabaseModelBeanFactoryPostProcessor.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/database/KafkaDatabaseModelRuntime.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/database/DatabaseModelRuntimeFactory.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/database/AkcesDatabaseModelController.java | Update ObjectMapper import to Jackson 3 namespace. |
| main/query-support/src/main/java/org/elasticsoftware/akces/query/database/AkcesDatabaseModelAutoConfiguration.java | Switch to JsonMapperBuilderCustomizer and module-based serializer registration. |
| main/query-support/pom.xml | Switch to spring-boot-jackson. |
| main/pom.xml | Update Jackson BOM groupId and Jackson version property. |
| main/eventcatalog/src/test/java/org/elasticsoftware/akces/eventcatalog/EventCatalogProcessorTest.java | Build mapper via JsonMapper + modules for schema validation in tests. |
| main/eventcatalog/pom.xml | Switch Jackson databind test dependency to tools.jackson.core. |
| main/client/src/test/java/org/elasticsoftware/akces/client/AkcesClientTests.java | Replace Jackson2ObjectMapperBuilder usages with JsonMapper + modules; update exceptions. |
| main/client/src/main/java/org/elasticsoftware/akces/client/AkcesClientController.java | Update serialization/deserialization exception handling to Jackson 3 (JacksonException). |
| main/client/src/main/java/org/elasticsoftware/akces/client/AkcesClientAutoConfiguration.java | Switch to JsonMapperBuilderCustomizer and module-based serializer registration. |
| main/client/pom.xml | Switch to spring-boot-jackson and update protobuf dataformat dependency groupId. |
|
|
||
| @Test | ||
| public void testSendCommand() throws InterruptedException, JsonProcessingException { | ||
| public void testSendCommand() throws InterruptedException, JacksonException { |
|
|
||
| @Test | ||
| public void testSendCommandWithCorrelationId() throws InterruptedException, JsonProcessingException { | ||
| public void testSendCommandWithCorrelationId() throws InterruptedException, JacksonException { |
|
|
||
| @Test | ||
| public void testGDPRDecryption() throws InterruptedException, JsonProcessingException { | ||
| public void testGDPRDecryption() throws InterruptedException, JacksonException { |
| * Converts a SchemaRecord to DTO (JsonSchema → String). | ||
| */ | ||
| static SchemaRecordDTO from(SchemaRecord record, ObjectMapper jsonMapper) throws JsonProcessingException { | ||
| static SchemaRecordDTO from(SchemaRecord record, ObjectMapper jsonMapper) throws JacksonException { |
… and JsonSchemaTests Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
mvn compile test-compilepasses💡 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.