Skip to content

Commit 163049b

Browse files
authored
GH-3088: Add Jackson 3 support; deprecate Jackson 2
Fixes: #3088 * Manage `tools.jackson` dependencies, similar way we do for Jackson 2 * Add Jackson 3 counterparts for existing Jackson 2 based classes. Technically, that is mostly just a copy/paste of existing classes, but with `tools.jackson` API adjustments * Fix `AbstractJacksonMessageConverter` to catch not only `IOException`, but also `JacksonException` * Migrate tests and docs to use new classes * Deprecate Jackson 2 based classes * Remove `@since` on methods in new classes * Mark `ProjectingMessageConverter` for deprecation * Fix local variable names in the `JacksonJsonMessageConverterTests` to reflect reality
1 parent 76e7415 commit 163049b

34 files changed

+1444
-258
lines changed

build.gradle

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ ext {
4040
hamcrestVersion = '3.0'
4141
hibernateValidationVersion = '8.0.2.Final'
4242
jacksonBomVersion = '2.19.1'
43+
jackson3Version = '3.0.0-rc5'
4344
jaywayJsonPathVersion = '2.9.0'
4445
junitJupiterVersion = '5.13.3'
4546
kotlinCoroutinesVersion = '1.10.2'
@@ -110,6 +111,7 @@ allprojects {
110111

111112
imports {
112113
mavenBom "com.fasterxml.jackson:jackson-bom:$jacksonBomVersion"
114+
mavenBom "tools.jackson:jackson-bom:$jackson3Version"
113115
mavenBom "org.junit:junit-bom:$junitJupiterVersion"
114116
mavenBom "org.springframework:spring-framework-bom:$springVersion"
115117
mavenBom "io.projectreactor:reactor-bom:$reactorVersion"
@@ -303,6 +305,7 @@ project('spring-amqp') {
303305
optionalApi 'org.springframework:spring-messaging'
304306
optionalApi 'org.springframework:spring-oxm'
305307
optionalApi 'org.springframework:spring-context'
308+
306309
optionalApi 'com.fasterxml.jackson.core:jackson-core'
307310
optionalApi 'com.fasterxml.jackson.core:jackson-databind'
308311
optionalApi 'com.fasterxml.jackson.core:jackson-annotations'
@@ -312,6 +315,14 @@ project('spring-amqp') {
312315
optionalApi 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
313316
optionalApi 'com.fasterxml.jackson.datatype:jackson-datatype-joda'
314317
optionalApi 'com.fasterxml.jackson.module:jackson-module-kotlin'
318+
319+
optionalApi 'tools.jackson.core:jackson-databind'
320+
optionalApi 'tools.jackson.datatype:jackson-datatype-joda'
321+
optionalApi 'tools.jackson.dataformat:jackson-dataformat-xml'
322+
optionalApi('tools.jackson.module:jackson-module-kotlin') {
323+
exclude group: 'org.jetbrains.kotlin'
324+
}
325+
315326
// Spring Data projection message binding support
316327
optionalApi 'org.springframework.data:spring-data-commons'
317328
optionalApi "com.jayway.jsonpath:json-path:$jaywayJsonPathVersion"
@@ -387,6 +398,9 @@ project('spring-rabbit') {
387398
testRuntimeOnly 'com.fasterxml.jackson.core:jackson-databind'
388399
testRuntimeOnly 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'
389400
testRuntimeOnly 'com.fasterxml.jackson.module:jackson-module-kotlin'
401+
402+
testRuntimeOnly 'tools.jackson.core:jackson-databind'
403+
testRuntimeOnly 'tools.jackson.dataformat:jackson-dataformat-xml'
390404
}
391405
}
392406

@@ -405,6 +419,8 @@ project('spring-rabbit-stream') {
405419
testRuntimeOnly 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'
406420
testRuntimeOnly 'com.fasterxml.jackson.module:jackson-module-kotlin'
407421

422+
testRuntimeOnly 'tools.jackson.core:jackson-databind'
423+
408424
testImplementation 'org.testcontainers:rabbitmq'
409425
testImplementation 'org.testcontainers:junit-jupiter'
410426
testImplementation 'org.apache.logging.log4j:log4j-slf4j-impl'
@@ -428,6 +444,8 @@ project('spring-rabbitmq-client') {
428444

429445
testRuntimeOnly 'com.fasterxml.jackson.core:jackson-databind'
430446

447+
testRuntimeOnly 'tools.jackson.core:jackson-databind'
448+
431449
testImplementation 'org.testcontainers:rabbitmq'
432450
testImplementation 'org.testcontainers:junit-jupiter'
433451
testImplementation 'org.apache.logging.log4j:log4j-slf4j-impl'

spring-amqp/src/main/java/org/springframework/amqp/support/converter/AbstractJackson2MessageConverter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@
5151
* @author Gary Russell
5252
*
5353
* @since 2.1
54+
*
55+
* @deprecated since 4.0 in favor of {@link AbstractJacksonMessageConverter} for Jackson 3.
5456
*/
57+
@Deprecated(forRemoval = true, since = "4.0")
5558
public abstract class AbstractJackson2MessageConverter extends AbstractMessageConverter
5659
implements BeanClassLoaderAware, SmartMessageConverter {
5760

0 commit comments

Comments
 (0)