Skip to content

Commit 21af0a1

Browse files
author
luisgomez29
committed
build: Upgrade to Jackson 3
1 parent 96b0eed commit 21af0a1

File tree

44 files changed

+484
-557
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+484
-557
lines changed

async/async-commons/async-commons.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ dependencies {
99
api project(':cloudevents-json-jackson')
1010

1111
compileOnly 'io.projectreactor:reactor-core'
12-
api 'com.fasterxml.jackson.core:jackson-databind'
13-
api 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
12+
api 'tools.jackson.core:jackson-databind:3.0.3'
1413
implementation 'commons-io:commons-io:2.21.0'
1514
implementation 'io.cloudevents:cloudevents-core:4.0.1'
1615

async/async-commons/src/main/java/org/reactivecommons/async/commons/DLQDiscardNotifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.reactivecommons.async.commons;
22

3-
import com.fasterxml.jackson.databind.JsonNode;
43
import io.cloudevents.CloudEvent;
54
import io.cloudevents.core.builder.CloudEventBuilder;
65
import lombok.Data;
@@ -12,6 +11,7 @@
1211
import org.reactivecommons.async.commons.converters.MessageConverter;
1312
import org.reactivecommons.async.commons.exceptions.MessageConversionException;
1413
import reactor.core.publisher.Mono;
14+
import tools.jackson.databind.JsonNode;
1515

1616
import java.util.logging.Level;
1717

async/async-commons/src/main/java/org/reactivecommons/async/commons/converters/json/CloudEventBuilderExt.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package org.reactivecommons.async.commons.converters.json;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import io.cloudevents.CloudEvent;
54
import io.cloudevents.CloudEventData;
65
import lombok.AccessLevel;
76
import lombok.AllArgsConstructor;
87
import lombok.SneakyThrows;
8+
import tools.jackson.databind.json.JsonMapper;
99

1010
import java.util.Objects;
1111

1212
@AllArgsConstructor(access = AccessLevel.PRIVATE)
1313
public final class CloudEventBuilderExt {
14-
private static final ObjectMapper mapper = new ObjectMapper();
14+
private static final JsonMapper mapper = new JsonMapper();
1515

1616
@SneakyThrows
1717
public static byte[] asBytes(Object object) {
Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
package org.reactivecommons.async.commons.converters.json;
22

3-
import com.fasterxml.jackson.databind.DeserializationFeature;
4-
import com.fasterxml.jackson.databind.ObjectMapper;
5-
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
6-
import org.reactivecommons.cloudevents.jackson.JsonFormat;
3+
import io.cloudevents.jackson.JsonFormat;
4+
import tools.jackson.databind.ObjectMapper;
5+
import tools.jackson.databind.json.JsonMapper;
76

87
public class DefaultObjectMapperSupplier implements ObjectMapperSupplier {
98

109
@Override
1110
public ObjectMapper get() {
12-
final ObjectMapper objectMapper = new ObjectMapper();
13-
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
14-
objectMapper.findAndRegisterModules();
15-
objectMapper.registerModule(new JavaTimeModule());
16-
objectMapper.registerModule(JsonFormat.getCloudEventJacksonModule());
17-
return objectMapper;
11+
return JsonMapper.builder()
12+
.addModule(JsonFormat.getCloudEventJacksonModule())
13+
.findAndAddModules()
14+
.build();
1815
}
1916

2017
}

async/async-commons/src/main/java/org/reactivecommons/async/commons/converters/json/JacksonMessageConverter.java

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.reactivecommons.async.commons.converters.json;
22

3-
import com.fasterxml.jackson.databind.JsonNode;
4-
import com.fasterxml.jackson.databind.ObjectMapper;
53
import io.cloudevents.CloudEvent;
64
import lombok.Data;
75
import lombok.RequiredArgsConstructor;
@@ -11,8 +9,8 @@
119
import org.reactivecommons.async.commons.communications.Message;
1210
import org.reactivecommons.async.commons.converters.MessageConverter;
1311
import org.reactivecommons.async.commons.exceptions.MessageConversionException;
14-
15-
import java.io.IOException;
12+
import tools.jackson.databind.JsonNode;
13+
import tools.jackson.databind.ObjectMapper;
1614

1715
@RequiredArgsConstructor
1816
public abstract class JacksonMessageConverter implements MessageConverter {
@@ -25,35 +23,23 @@ public abstract class JacksonMessageConverter implements MessageConverter {
2523

2624
@Override
2725
public <T> AsyncQuery<T> readAsyncQuery(Message message, Class<T> bodyClass) {
28-
try {
29-
final AsyncQueryJson asyncQueryJson = readValue(message, AsyncQueryJson.class);
30-
final T value = objectMapper.treeToValue(asyncQueryJson.getQueryData(), bodyClass);
31-
return new AsyncQuery<>(asyncQueryJson.getResource(), value);
32-
} catch (IOException e) {
33-
throw new MessageConversionException(FAILED_TO_CONVERT_MESSAGE_CONTENT, e);
34-
}
26+
final AsyncQueryJson asyncQueryJson = readValue(message, AsyncQueryJson.class);
27+
final T value = objectMapper.treeToValue(asyncQueryJson.getQueryData(), bodyClass);
28+
return new AsyncQuery<>(asyncQueryJson.getResource(), value);
3529
}
3630

3731
@Override
3832
public <T> DomainEvent<T> readDomainEvent(Message message, Class<T> bodyClass) {
39-
try {
40-
final DomainEventJson domainEventJson = readValue(message, DomainEventJson.class);
41-
final T value = objectMapper.treeToValue(domainEventJson.getData(), bodyClass);
42-
return new DomainEvent<>(domainEventJson.getName(), domainEventJson.getEventId(), value);
43-
} catch (IOException e) {
44-
throw new MessageConversionException(FAILED_TO_CONVERT_MESSAGE_CONTENT, e);
45-
}
33+
final DomainEventJson domainEventJson = readValue(message, DomainEventJson.class);
34+
final T value = objectMapper.treeToValue(domainEventJson.getData(), bodyClass);
35+
return new DomainEvent<>(domainEventJson.getName(), domainEventJson.getEventId(), value);
4636
}
4737

4838
@Override
4939
public <T> Command<T> readCommand(Message message, Class<T> bodyClass) {
50-
try {
51-
final CommandJson commandJson = readValue(message, CommandJson.class);
52-
final T value = objectMapper.treeToValue(commandJson.getData(), bodyClass);
53-
return new Command<>(commandJson.getName(), commandJson.getCommandId(), value);
54-
} catch (IOException e) {
55-
throw new MessageConversionException(FAILED_TO_CONVERT_MESSAGE_CONTENT, e);
56-
}
40+
final CommandJson commandJson = readValue(message, CommandJson.class);
41+
final T value = objectMapper.treeToValue(commandJson.getData(), bodyClass);
42+
return new Command<>(commandJson.getName(), commandJson.getCommandId(), value);
5743
}
5844

5945
@Override
@@ -65,7 +51,7 @@ public CloudEvent readCloudEvent(Message message) {
6551
public <T> T readValue(Message message, Class<T> valueClass) {
6652
try {
6753
return objectMapper.readValue(message.getBody(), valueClass);
68-
} catch (IOException e) {
54+
} catch (Exception e) {
6955
throw new MessageConversionException(FAILED_TO_CONVERT_MESSAGE_CONTENT, e);
7056
}
7157
}

async/async-commons/src/main/java/org/reactivecommons/async/commons/converters/json/ObjectMapperSupplier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.reactivecommons.async.commons.converters.json;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
3+
import tools.jackson.databind.ObjectMapper;
44

55
import java.util.function.Supplier;
66

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.reactivecommons.async.commons.converters.json;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
3+
import lombok.AllArgsConstructor;
44
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
56
import org.junit.jupiter.api.Test;
7+
import tools.jackson.databind.ObjectMapper;
68

7-
import java.io.IOException;
9+
import java.time.LocalDateTime;
810
import java.util.Date;
911

1012
import static org.assertj.core.api.Assertions.assertThat;
@@ -15,7 +17,7 @@ class DefaultObjectMapperSupplierTest {
1517

1618

1719
@Test
18-
void shouldMapWithUnknownProperties() throws IOException {
20+
void shouldMapWithUnknownProperties() {
1921
ObjectMapper objectMapper = defaultObjectMapperSupplier.get();
2022

2123
SampleClassExtra base = new SampleClassExtra("23", "one", new Date(), 45L);
@@ -26,22 +28,22 @@ void shouldMapWithUnknownProperties() throws IOException {
2628
assertThat(result).usingRecursiveComparison().isEqualTo(base);
2729
}
2830

29-
// @Test
30-
// void shouldSerializeAndDeserializeLocalDateTime() throws IOException {
31-
// ObjectMapper objectMapper = defaultObjectMapperSupplier.get();
32-
//
33-
// LocalDateTime now = LocalDateTime.of(2025, 12, 10, 14, 30, 0);
34-
// SampleClassWithLocalDateTime sample = new SampleClassWithLocalDateTime("123", "Test", now);
35-
//
36-
// final String serialized = objectMapper.writeValueAsString(sample);
37-
// assertThat(serialized).contains("2025-12-10");
38-
//
39-
// final SampleClassWithLocalDateTime result = objectMapper.readValue(serialized, SampleClassWithLocalDateTime.class);
40-
//
41-
// assertThat(result.getId()).isEqualTo("123");
42-
// assertThat(result.getName()).isEqualTo("Test");
43-
// assertThat(result.getDateSend()).isEqualTo(now);
44-
// }
31+
@Test
32+
void shouldSerializeAndDeserializeLocalDateTime() {
33+
ObjectMapper objectMapper = defaultObjectMapperSupplier.get();
34+
35+
LocalDateTime now = LocalDateTime.of(2025, 12, 10, 14, 30, 0);
36+
SampleClassWithLocalDateTime sample = new SampleClassWithLocalDateTime("123", "Test", now);
37+
38+
final String serialized = objectMapper.writeValueAsString(sample);
39+
assertThat(serialized).contains("2025-12-10");
40+
41+
final SampleClassWithLocalDateTime result = objectMapper.readValue(serialized, SampleClassWithLocalDateTime.class);
42+
43+
assertThat(result.getId()).isEqualTo("123");
44+
assertThat(result.getName()).isEqualTo("Test");
45+
assertThat(result.getDateSend()).isEqualTo(now);
46+
}
4547

4648
@Getter
4749
private static class SampleClassExtra extends SampleClass {
@@ -54,13 +56,13 @@ public SampleClassExtra(String id, String name, Date date, Long newProp) {
5456
private final Long newProp;
5557
}
5658

57-
// @Getter
58-
// @AllArgsConstructor
59-
// @NoArgsConstructor
60-
// private static class SampleClassWithLocalDateTime {
61-
// private String id;
62-
// private String name;
63-
// private LocalDateTime dateSend;
64-
// }
59+
@Getter
60+
@AllArgsConstructor
61+
@NoArgsConstructor
62+
private static class SampleClassWithLocalDateTime {
63+
private String id;
64+
private String name;
65+
private LocalDateTime dateSend;
66+
}
6567

6668
}

async/async-kafka/src/main/java/org/reactivecommons/async/kafka/converters/json/KafkaJacksonMessageConverter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package org.reactivecommons.async.kafka.converters.json;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import io.cloudevents.CloudEvent;
54
import org.reactivecommons.api.domain.DomainEvent;
65
import org.reactivecommons.async.commons.communications.Message;
76
import org.reactivecommons.async.commons.converters.json.JacksonMessageConverter;
87
import org.reactivecommons.async.commons.exceptions.MessageConversionException;
98
import org.reactivecommons.async.kafka.KafkaMessage;
109
import org.reactivecommons.async.kafka.KafkaMessage.KafkaMessageProperties;
10+
import tools.jackson.databind.ObjectMapper;
1111

12-
import java.io.IOException;
1312
import java.nio.charset.StandardCharsets;
1413
import java.util.HashMap;
1514
import java.util.Map;
@@ -29,7 +28,7 @@ public Message toMessage(Object object) {
2928
try {
3029
String jsonString = this.objectMapper.writeValueAsString(object);
3130
bytes = jsonString.getBytes(StandardCharsets.UTF_8);
32-
} catch (IOException e) {
31+
} catch (Exception e) {
3332
throw new MessageConversionException(FAILED_TO_CONVERT_MESSAGE_CONTENT, e);
3433
}
3534
KafkaMessageProperties props = buildProperties(object);

async/async-kafka/src/test/java/org/reactivecommons/async/kafka/converters/json/KafkaJacksonMessageConverterTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package org.reactivecommons.async.kafka.converters.json;
22

33

4-
import com.fasterxml.jackson.core.JsonProcessingException;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
64
import io.cloudevents.CloudEvent;
75
import io.cloudevents.core.builder.CloudEventBuilder;
86
import lombok.AllArgsConstructor;
@@ -14,6 +12,7 @@
1412
import org.reactivecommons.async.commons.communications.Message;
1513
import org.reactivecommons.async.commons.converters.json.DefaultObjectMapperSupplier;
1614
import org.reactivecommons.async.commons.converters.json.ObjectMapperSupplier;
15+
import tools.jackson.databind.ObjectMapper;
1716

1817
import java.net.URI;
1918
import java.time.OffsetDateTime;
@@ -51,7 +50,7 @@ void shouldSerializeDomainEvent() {
5150
}
5251

5352
@Test
54-
void shouldSerializeCloudEvent() throws JsonProcessingException {
53+
void shouldSerializeCloudEvent() {
5554
// Arrange
5655
String id = UUID.randomUUID().toString();
5756
MyEvent event = new MyEvent("name", 1);

async/async-rabbit/async-rabbit.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dependencies {
1313
api 'io.projectreactor:reactor-core-micrometer'
1414
api 'io.projectreactor.rabbitmq:reactor-rabbitmq:1.5.6'
1515
api 'com.rabbitmq:amqp-client'
16-
api 'com.fasterxml.jackson.core:jackson-databind'
16+
api 'tools.jackson.core:jackson-databind:3.0.3'
1717

1818
implementation 'io.cloudevents:cloudevents-core:4.0.1'
1919
testImplementation 'io.projectreactor:reactor-test'

0 commit comments

Comments
 (0)