Skip to content

Commit 6b91b0a

Browse files
author
Daniel Bustamante Ospina
committed
Ignore unknown props in MessageConverter
Issue: gh-10
1 parent abba28e commit 6b91b0a

File tree

5 files changed

+39
-12
lines changed

5 files changed

+39
-12
lines changed

async/async-commons-standalone/src/main/java/org/reactivecommons/async/impl/config/RabbitMqConfig.java

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

3+
import com.fasterxml.jackson.databind.DeserializationFeature;
34
import com.fasterxml.jackson.databind.ObjectMapper;
45
import com.rabbitmq.client.Connection;
56
import com.rabbitmq.client.ConnectionFactory;
@@ -52,7 +53,7 @@ public ConnectionFactoryProvider connectionFactory(RabbitProperties properties){
5253
}
5354

5455
public MessageConverter messageConverter(){
55-
return new JacksonMessageConverter(new ObjectMapper());
56+
return new JacksonMessageConverter();
5657
}
5758

5859
Mono<Connection> createSenderConnectionMono(ConnectionFactory factory, String name){

async/async-commons-starter/src/main/java/org/reactivecommons/async/impl/config/RabbitMqConfig.java

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

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import com.rabbitmq.client.Connection;
54
import com.rabbitmq.client.ConnectionFactory;
65
import lombok.AllArgsConstructor;
@@ -69,7 +68,7 @@ public ConnectionFactoryProvider connectionFactory(RabbitProperties properties){
6968
@Bean
7069
@ConditionalOnMissingBean
7170
public MessageConverter messageConverter(){
72-
return new JacksonMessageConverter(new ObjectMapper());
71+
return new JacksonMessageConverter();
7372
}
7473

7574
Mono<Connection> createSenderConnectionMono(ConnectionFactory factory, String name){

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.reactivecommons.async.impl.converters;
22

33

4+
import com.fasterxml.jackson.databind.DeserializationFeature;
45
import com.fasterxml.jackson.databind.JsonNode;
56
import com.fasterxml.jackson.databind.ObjectMapper;
67
import lombok.Data;
@@ -20,7 +21,9 @@ public class JacksonMessageConverter implements MessageConverter {
2021

2122
private final ObjectMapper objectMapper;
2223

23-
public JacksonMessageConverter(ObjectMapper objectMapper) {
24+
public JacksonMessageConverter() {
25+
final ObjectMapper objectMapper = new ObjectMapper();
26+
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
2427
this.objectMapper = objectMapper;
2528
}
2629

async/async-commons/src/test/java/org/reactivecommons/async/impl/communications/ReactiveMessageSenderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class ReactiveMessageSenderTest {
3636
private Sender sender;
3737

3838
@Spy
39-
private final MessageConverter messageConverter = new JacksonMessageConverter(new ObjectMapper());
39+
private final MessageConverter messageConverter = new JacksonMessageConverter();
4040

4141
@Before
4242
public void init() {
Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
package org.reactivecommons.async.impl.converters;
22

3-
import static org.assertj.core.api.Assertions.*;
4-
import static org.mockito.Mockito.*;
5-
3+
import com.fasterxml.jackson.core.JsonProcessingException;
64
import com.fasterxml.jackson.databind.JsonNode;
75
import com.fasterxml.jackson.databind.ObjectMapper;
86
import lombok.Getter;
97
import lombok.RequiredArgsConstructor;
108
import org.junit.Test;
11-
import org.mockito.junit.MockitoJUnitRunner;
9+
import org.reactivecommons.api.domain.Command;
10+
import org.reactivecommons.async.impl.RabbitMessage;
1211
import org.reactivecommons.async.impl.communications.Message;
1312

1413
import java.io.IOException;
1514
import java.util.Date;
1615

16+
import static org.assertj.core.api.Assertions.assertThat;
17+
1718
public class JacksonMessageConverterTest {
1819

1920
private final ObjectMapper objectMapper = new ObjectMapper();
21+
private final JacksonMessageConverter converter = new JacksonMessageConverter();
2022

2123
@Test
2224
public void toMessage() {
23-
JacksonMessageConverter converter = new JacksonMessageConverter(objectMapper);
2425
final Message message = converter.toMessage(new SampleClass("42", "Daniel", new Date()));
2526
assertThat(new String(message.getBody())).contains("42").contains("Daniel");
2627
}
2728

2829
@Test
2930
public void toMessageWhenDataIsNull() throws IOException {
30-
JacksonMessageConverter converter = new JacksonMessageConverter(new ObjectMapper());
3131
final Message message = converter.toMessage(null);
3232

3333
final JsonNode jsonNode = objectMapper.readTree(message.getBody());
@@ -36,18 +36,42 @@ public void toMessageWhenDataIsNull() throws IOException {
3636

3737
@Test
3838
public void toMessageWhenDataIsEmpty() throws IOException {
39-
JacksonMessageConverter converter = new JacksonMessageConverter(new ObjectMapper());
4039
final Message message = converter.toMessage("");
4140

4241
final JsonNode jsonNode = objectMapper.readTree(message.getBody());
4342
assertThat(jsonNode.asText()).isEmpty();
4443
}
4544

45+
@Test
46+
public void shouldConvertWithUnknownProperties() throws JsonProcessingException {
47+
48+
final String value = objectMapper.writeValueAsString(new Command<>("test", "42",
49+
new SampleClassExtra("23", "one", new Date(), 45l)));
50+
51+
final Command<SampleClass> command = converter.readCommand(new RabbitMessage(value.getBytes(),
52+
null), SampleClass.class);
53+
54+
assertThat(command.getData()).extracting(SampleClass::getId, SampleClass::getName)
55+
.containsExactly("23", "one");
56+
57+
}
58+
4659
@RequiredArgsConstructor
4760
@Getter
4861
private static class SampleClass {
4962
private final String id;
5063
private final String name;
5164
private final Date date;
5265
}
66+
67+
@Getter
68+
private static class SampleClassExtra extends SampleClass {
69+
70+
public SampleClassExtra(String id, String name, Date date, Long newProp) {
71+
super(id, name, date);
72+
this.newProp = newProp;
73+
}
74+
75+
private final Long newProp;
76+
}
5377
}

0 commit comments

Comments
 (0)