Conversation
triceo
left a comment
There was a problem hiding this comment.
IMO this approach is too much hassle for the user. I propose we do something else instead:
- We fork the
jacksonpersistence module, createjackson2andjackson3. - Quarkus depends on
jackson2. - Spring Boot depends on
jackson3. - Hopefully one day we'll get to delete
jackson2.
There will be some code duplication, but not that much. These modules are small. And the benefit is obvious - the user doesn't need to configure anything, or worry about this at all.
|
On reflection:
|
triceo
left a comment
There was a problem hiding this comment.
IMO the POM files need improving.
|
@triceo I've confirmed that native compilation works with GraalVM 25 for both Quarkus and Spring. |
...olver/quarkus/jackson/api/domain/solution/AbstractConstraintWeightOverridesDeserializer.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Upgrades the Spring integration to Spring Boot 4.x and restructures Jackson support so that the core + Spring side uses Jackson 3 (tools.jackson), while the Quarkus integration remains on Jackson 2 (com.fasterxml.jackson).
Changes:
- Bump Spring Boot to 4.0.2 and update Spring persistence-related imports/dependencies (EntityScan/EntityScanner/etc.).
- Migrate the existing
persistence/jacksonmodule to Jackson 3 (tools.jackson.*) and adjust tests accordingly. - Introduce/expand a Quarkus-specific Jackson 2 module (
quarkus-jackson) with serializers/deserializers and round-trip tests.
Reviewed changes
Copilot reviewed 179 out of 181 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| spring-integration/spring-boot-starter/pom.xml | Adds Spring Boot 4-related deps (spring-core exclusion + persistence module). |
| spring-integration/spring-boot-integration-test/src/main/resources/application.properties | No functional change (formatting/whitespace normalization). |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/normal/NoConstraintsSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/normal/EmptySpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/multimodule/MultiModuleSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/missingsuppliervariable/MissingSupplierVariableSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/solution/ReplaceAnnotatedMemberSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/solution/OnlyChildAnnotatedSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/solution/OnlyBaseAnnotatedSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/solution/MultipleInheritanceSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/solution/BothAnnotatedSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/solution/BothAnnotatedAbstractSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/entity/MultipleBothAnnotatedMixedSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/entity/BothAnnotatedSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/inheritance/entity/BothAnnotatedInterfaceSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/dummy/MultipleSolutionsSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/declarative/SupplierVariableSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/test/java/ai/timefold/solver/spring/boot/autoconfigure/chained/ChainedSpringTestConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/main/java/ai/timefold/solver/spring/boot/autoconfigure/TimefoldSolverBeanFactory.java | Switches conditional Jackson wiring to Jackson 3 types (tools.jackson). |
| spring-integration/spring-boot-autoconfigure/src/main/java/ai/timefold/solver/spring/boot/autoconfigure/TimefoldSolverAutoConfiguration.java | Updates EntityScan import location for Boot 4. |
| spring-integration/spring-boot-autoconfigure/src/main/java/ai/timefold/solver/spring/boot/autoconfigure/IncludeAbstractClassesEntityScanner.java | Updates EntityScanner/EntityScanPackages imports for Boot 4. |
| spring-integration/spring-boot-autoconfigure/pom.xml | Makes Jackson integration non-optional and adds Boot 4 persistence/logging dependencies. |
| quarkus-integration/quarkus-jackson/runtime/src/test/resources/logback-test.xml | Adds test logback config to avoid classpath conflicts. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/testdomain/JacksonTestdataValue.java | Adds Quarkus-Jackson2 test domain type (identity handling). |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/testdomain/JacksonTestdataSolution.java | Adds Quarkus-Jackson2 test planning solution with score serialization. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/testdomain/JacksonTestdataObject.java | Adds shared base for Quarkus-Jackson2 test domain objects. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/testdomain/JacksonTestdataEntity.java | Adds Quarkus-Jackson2 test planning entity. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/solution/JacksonSolutionFileIOTest.java | Adds file round-trip test for Quarkus JacksonSolutionFileIO. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/diff/PlanningSolutionDiffTest.java | Adds serialization test for PlanningSolutionDiff in Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SequenceRoundTripTest.java | Adds round-trip tests for Sequence/Break/SequenceChain in Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/LoadBalanceRoundTripTest.java | Adds LoadBalance serialization/deserialization coverage for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simplelong/SimpleLongScoreJacksonRoundTripTest.java | Adds score round-trip tests (SimpleLongScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simplebigdecimal/SimpleBigDecimalScoreJacksonRoundTripTest.java | Adds score round-trip tests (SimpleBigDecimalScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simple/SimpleScoreJacksonRoundTripTest.java | Adds score round-trip tests (SimpleScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoftlong/HardSoftLongScoreJacksonRoundTripTest.java | Adds score round-trip tests (HardSoftLongScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoftbigdecimal/HardSoftBigDecimalScoreJacksonRoundTripTest.java | Adds score round-trip tests (HardSoftBigDecimalScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoft/HardSoftScoreJacksonRoundTripTest.java | Adds score round-trip tests (HardSoftScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoftlong/HardMediumSoftLongScoreJacksonRoundTripTest.java | Adds score round-trip tests (HardMediumSoftLongScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoftbigdecimal/HardMediumSoftBigDecimalScoreJacksonRoundTripTest.java | Adds score round-trip tests (HardMediumSoftBigDecimalScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoft/HardMediumSoftScoreJacksonRoundTripTest.java | Adds score round-trip tests (HardMediumSoftScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendablelong/BendableLongScoreJacksonRoundTripTest.java | Adds score round-trip tests (BendableLongScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendablebigdecimal/BendableBigDecimalScoreJacksonRoundTripTest.java | Adds score round-trip tests (BendableBigDecimalScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendable/BendableScoreJacksonRoundTripTest.java | Adds score round-trip tests (BendableScore) for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/score/AbstractScoreJacksonRoundTripTest.java | Adds shared score round-trip test helper for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/test/java/ai/timefold/solver/quarkus/jackson/api/AbstractJacksonRoundTripTest.java | Adds shared Jackson round-trip test helper for Quarkus module. |
| quarkus-integration/quarkus-jackson/runtime/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module | Registers Quarkus TimefoldJacksonModule via ServiceLoader (Jackson 2). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/solution/JacksonSolutionFileIO.java | Adds Quarkus-specific JSON SolutionFileIO (Jackson 2). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/package-info.java | Documents PlanningSolutionDiff Jackson2 serialization support for Quarkus. |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/SerializablePlanningVariableDiff.java | Adds serializable DTO for PlanningVariableDiff (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/SerializablePlanningSolutionDiff.java | Adds serializable DTO for PlanningSolutionDiff (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/SerializablePlanningEntityDiff.java | Adds serializable DTO for PlanningEntityDiff (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/PlanningVariableDiffJacksonSerializer.java | Adds serializer wiring for PlanningVariableDiff (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/PlanningSolutionDiffJacksonSerializer.java | Adds serializer wiring for PlanningSolutionDiff (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/diff/PlanningEntityDiffJacksonSerializer.java | Adds serializer wiring for PlanningEntityDiff (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/solver/RecommendedFitJacksonSerializer.java | Adds RecommendedFit serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/solver/RecommendedAssignmentJacksonSerializer.java | Adds RecommendedAssignment serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/solver/AbstractRecommendedFitJacksonDeserializer.java | Adds base deserializer for RecommendedFit (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/solver/AbstractRecommendedAssignmentJacksonDeserializer.java | Adds base deserializer for RecommendedAssignment (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/package-info.java | Documents Sequence/Break/LoadBalance serialization/deserialization (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SerializableSequenceChain.java | Adds serializable DTO for SequenceChain (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SerializableSequence.java | Adds serializable DTO for Sequence (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SerializableLoadBalance.java | Adds serializable DTO for LoadBalance (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SerializableBreak.java | Adds serializable DTO for Break (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SequenceJacksonSerializer.java | Adds Sequence serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SequenceJacksonDeserializer.java | Adds Sequence deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SequenceChainJacksonSerializer.java | Adds SequenceChain serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/SequenceChainJacksonDeserializer.java | Adds SequenceChain deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/LoadBalanceJacksonSerializer.java | Adds LoadBalance serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/LoadBalanceJacksonDeserializer.java | Adds LoadBalance deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/DeserializableSequenceChain.java | Adds deserializable SequenceChain implementation (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/DeserializableSequence.java | Adds deserializable Sequence implementation (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/DeserializableLoadBalance.java | Adds deserializable LoadBalance implementation (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/DeserializableBreak.java | Adds deserializable Break implementation (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/BreakJacksonSerializer.java | Adds Break serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/stream/common/BreakJacksonDeserializer.java | Adds Break deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/package-info.java | Adds package docs for score bindings (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/constraint/ConstraintRefJacksonSerializer.java | Adds ConstraintRef serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/constraint/ConstraintRefJacksonDeserializer.java | Adds ConstraintRef deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simplelong/SimpleLongScoreJacksonSerializer.java | Adds SimpleLongScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simplelong/SimpleLongScoreJacksonDeserializer.java | Adds SimpleLongScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simplebigdecimal/SimpleBigDecimalScoreJacksonSerializer.java | Adds SimpleBigDecimalScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simplebigdecimal/SimpleBigDecimalScoreJacksonDeserializer.java | Adds SimpleBigDecimalScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simple/SimpleScoreJacksonSerializer.java | Adds SimpleScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/simple/SimpleScoreJacksonDeserializer.java | Adds SimpleScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoftlong/HardSoftLongScoreJacksonSerializer.java | Adds HardSoftLongScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoftlong/HardSoftLongScoreJacksonDeserializer.java | Adds HardSoftLongScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoftbigdecimal/HardSoftBigDecimalScoreJacksonSerializer.java | Adds HardSoftBigDecimalScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoftbigdecimal/HardSoftBigDecimalScoreJacksonDeserializer.java | Adds HardSoftBigDecimalScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoft/HardSoftScoreJacksonSerializer.java | Adds HardSoftScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardsoft/HardSoftScoreJacksonDeserializer.java | Adds HardSoftScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoftlong/HardMediumSoftLongScoreJacksonSerializer.java | Adds HardMediumSoftLongScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoftlong/HardMediumSoftLongScoreJacksonDeserializer.java | Adds HardMediumSoftLongScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoftbigdecimal/HardMediumSoftBigDecimalScoreJacksonSerializer.java | Adds HardMediumSoftBigDecimalScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoftbigdecimal/HardMediumSoftBigDecimalScoreJacksonDeserializer.java | Adds HardMediumSoftBigDecimalScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoft/HardMediumSoftScoreJsonSerializer.java | Adds HardMediumSoftScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/hardmediumsoft/HardMediumSoftScoreJacksonDeserializer.java | Adds HardMediumSoftScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendablelong/BendableLongScoreJacksonSerializer.java | Adds BendableLongScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendablelong/BendableLongScoreJacksonDeserializer.java | Adds BendableLongScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendablebigdecimal/BendableBigDecimalScoreJacksonSerializer.java | Adds BendableBigDecimalScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendablebigdecimal/BendableBigDecimalScoreJacksonDeserializer.java | Adds BendableBigDecimalScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendable/BendableScoreJacksonSerializer.java | Adds BendableScore serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/buildin/bendable/BendableScoreJacksonDeserializer.java | Adds BendableScore deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/analysis/ScoreAnalysisJacksonSerializer.java | Adds ScoreAnalysis serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/analysis/AbstractScoreAnalysisJacksonDeserializer.java | Adds base ScoreAnalysis deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/PolymorphicScoreJacksonSerializer.java | Adds polymorphic Score serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/PolymorphicScoreJacksonDeserializer.java | Adds polymorphic Score deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/AbstractScoreJacksonSerializer.java | Adds base score serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/score/AbstractScoreJacksonDeserializer.java | Adds base score deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/package-info.java | Adds package docs for Quarkus Jackson module. |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/domain/solution/ConstraintWeightOverridesSerializer.java | Adds ConstraintWeightOverrides serializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/domain/solution/AbstractConstraintWeightOverridesDeserializer.java | Adds base ConstraintWeightOverrides deserializer (Quarkus). |
| quarkus-integration/quarkus-jackson/runtime/src/main/java/ai/timefold/solver/quarkus/jackson/api/TimefoldJacksonModule.java | Adds/updates Quarkus Jackson2 module registration for Timefold types. |
| quarkus-integration/quarkus-jackson/runtime/pom.xml | Defines Quarkus runtime module deps (explicit Jackson2 + test deps). |
| quarkus-integration/quarkus-jackson/pom.xml | Adds Jackson BOM management for Quarkus module. |
| quarkus-integration/quarkus-jackson/deployment/src/main/java/ai/timefold/solver/quarkus/jackson/deployment/TimefoldJacksonProcessor.java | Points processor to new Quarkus Jackson module class. |
| quarkus-integration/quarkus-jackson/deployment/pom.xml | Removes dependency on old jackson module; uses new quarkus-jackson runtime. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/testdomain/JacksonTestdataSolution.java | Switches test annotations imports to Jackson 3 (tools.jackson). |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningSolutionDiffTest.java | Updates tests for Jackson 3 types and ordering/feature changes. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/stream/common/SequenceRoundTripTest.java | Updates round-trip tests for Jackson 3 builder/config differences. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/stream/common/LoadBalanceRoundTripTest.java | Updates LoadBalance tests for Jackson 3 builder/config differences. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/simplelong/SimpleLongScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/simplebigdecimal/SimpleBigDecimalScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/simple/SimpleScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/hardsoftlong/HardSoftLongScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/hardsoftbigdecimal/HardSoftBigDecimalScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/hardsoft/HardSoftScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/hardmediumsoftlong/HardMediumSoftLongScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/hardmediumsoftbigdecimal/HardMediumSoftBigDecimalScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/hardmediumsoft/HardMediumSoftScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/bendablelong/BendableLongScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/bendablebigdecimal/BendableBigDecimalScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/buildin/bendable/BendableScoreJacksonRoundTripTest.java | Updates Jackson annotation imports to tools.jackson. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/score/AbstractScoreJacksonRoundTripTest.java | Updates exception type/imports for Jackson 3. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/TimefoldJacksonModuleTest.java | Updates ObjectMapper setup/builder usage for Jackson 3 and deserialization behavior. |
| persistence/jackson/src/test/java/ai/timefold/solver/jackson/api/AbstractJacksonRoundTripTest.java | Updates exception type/imports for Jackson 3. |
| persistence/jackson/src/main/resources/META-INF/services/tools.jackson.databind.Module | Registers Jackson 3 module via ServiceLoader (tools.jackson). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/package-info.java | Updates docs to reference tools.jackson ObjectMapper. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningVariableDiffJacksonSerializer.java | Migrates diff serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningSolutionDiffJacksonSerializer.java | Migrates diff serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/preview/api/domain/solution/diff/PlanningEntityDiffJacksonSerializer.java | Migrates diff serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/impl/domain/solution/JacksonSolutionFileIO.java | Switches default mapper creation to JsonMapper builder with module discovery (Jackson 3). |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/solver/RecommendedFitJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/solver/RecommendedAssignmentJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/solver/AbstractRecommendedFitJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/solver/AbstractRecommendedAssignmentJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/package-info.java | Updates docs to reference tools.jackson ObjectMapper. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/SequenceJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/SequenceJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/SequenceChainJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/SequenceChainJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/LoadBalanceJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/LoadBalanceJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/BreakJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/stream/common/BreakJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/constraint/ConstraintRefJacksonSerializer.java | Migrates serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/constraint/ConstraintRefJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/simplelong/SimpleLongScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/simplebigdecimal/SimpleBigDecimalScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/simple/SimpleScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/hardsoftlong/HardSoftLongScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/hardsoftbigdecimal/HardSoftBigDecimalScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/hardsoft/HardSoftScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/hardmediumsoftlong/HardMediumSoftLongScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/hardmediumsoftbigdecimal/HardMediumSoftBigDecimalScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/hardmediumsoft/HardMediumSoftScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/bendablelong/BendableLongScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/bendablebigdecimal/BendableBigDecimalScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/buildin/bendable/BendableScoreJacksonDeserializer.java | Migrates deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/analysis/ScoreAnalysisJacksonSerializer.java | Migrates ScoreAnalysis serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/analysis/AbstractScoreAnalysisJacksonDeserializer.java | Migrates ScoreAnalysis deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/PolymorphicScoreJacksonSerializer.java | Migrates polymorphic Score serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/PolymorphicScoreJacksonDeserializer.java | Migrates polymorphic Score deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/AbstractScoreJacksonSerializer.java | Migrates base score serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/AbstractScoreJacksonDeserializer.java | Migrates base score deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/domain/solution/ConstraintWeightOverridesSerializer.java | Migrates ConstraintWeightOverrides serializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/domain/solution/AbstractConstraintWeightOverridesDeserializer.java | Migrates ConstraintWeightOverrides deserializer to Jackson 3 packages/APIs. |
| persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/TimefoldJacksonModule.java | Updates module factory/signatures for Jackson 3 (tools.jackson). |
| persistence/jackson/pom.xml | Renames module and switches Jackson deps to tools.jackson (Jackson 3). |
| build/build-parent/pom.xml | Bumps Spring Boot version and introduces Jackson 2/3 version properties + tools.jackson BOM. |
Comments suppressed due to low confidence (1)
persistence/jackson/src/main/java/ai/timefold/solver/jackson/api/score/PolymorphicScoreJacksonSerializer.java:20
- Javadoc claims polymorphic Score JSON uses a "type" field (e.g. HARD_SOFT), but the implementation writes a single property keyed by the score class simple name; update the example/output description to match actual serialization (or change the serializer to match the documented format).
* Jackson binding support for a {@link Score} type (but not a subtype).
* For a {@link Score} subtype field, use {@link HardSoftScoreJacksonSerializer} or similar instead.
* <p>
* For example: use
* {@code @JsonSerialize(using = PolymorphicScoreJacksonSerializer.class) @JsonDeserialize(using = PolymorphicScoreJacksonDeserializer.class)}
* on a {@code Score score} field which contains a {@link HardSoftScore} instance
* and it will marshalled to JSON as {@code "score":{"type":"HARD_SOFT",score:"-999hard/-999soft"}}.
*
...java/ai/timefold/solver/quarkus/jackson/score/stream/common/DeserializableSequenceChain.java
Show resolved
Hide resolved
...java/ai/timefold/solver/quarkus/jackson/score/stream/common/DeserializableSequenceChain.java
Show resolved
Hide resolved
...main/java/ai/timefold/solver/quarkus/jackson/score/stream/common/DeserializableSequence.java
Show resolved
Hide resolved
...runtime/src/main/java/ai/timefold/solver/quarkus/jackson/solution/JacksonSolutionFileIO.java
Show resolved
Hide resolved
...rc/main/java/ai/timefold/solver/quarkus/jackson/score/PolymorphicScoreJacksonSerializer.java
Show resolved
Hide resolved
.../ai/timefold/solver/jackson/api/score/analysis/AbstractScoreAnalysisJacksonDeserializer.java
Outdated
Show resolved
Hide resolved
...timefold/solver/quarkus/jackson/score/analysis/AbstractScoreAnalysisJacksonDeserializer.java
Outdated
Show resolved
Hide resolved
aa57aa4 to
4e483dc
Compare
...runtime/src/main/java/ai/timefold/solver/quarkus/jackson/solution/JacksonSolutionFileIO.java
Show resolved
Hide resolved
...src/main/java/ai/timefold/solver/quarkus/jackson/score/AbstractScoreJacksonDeserializer.java
Show resolved
Hide resolved
triceo
left a comment
There was a problem hiding this comment.
LGTM when comments resolved.
spring-integration/spring-boot-integration-test/src/main/resources/application.properties
Outdated
Show resolved
Hide resolved
...re/src/main/java/ai/timefold/solver/spring/boot/autoconfigure/TimefoldSolverBeanFactory.java
Outdated
Show resolved
Hide resolved
b7ee53b to
9dc0732
Compare
...e/src/main/java/ai/timefold/solver/quarkus/jackson/score/AbstractScoreJacksonSerializer.java
Show resolved
Hide resolved
|


This pull request upgrades Spring to version 4. The new spring version now defaults to Jackson 3, while Quarkus 3.x continues to use Jackson 2.
The proposed updates upgrade the current Jackson module to version 3 and move the Jackson 2 logic to the module
quarkus-jackson. As a result, the solver codebase and the Spring module now operate with Jackson 3, while the Quarkus integration remains on Jackson 2.Once Quarkus starts using Jackson 3, we will remove the Jackson 2 logic and use the Jackson 3 module instead.