Changes BusJacksonMessageConverter to have single constructor.
This allows Spring to managed injection of ObjectMapper in all cases. This avoids early initialization problems if a List<MessageConverter> is injected somewhere. fixes gh-202
This commit is contained in:
@@ -25,7 +25,6 @@ import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -69,7 +68,6 @@ public class BusJacksonIntegrationTests {
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
@Ignore // FIXME: https://github.com/spring-cloud/spring-cloud-bus/issues/202
|
||||
public void testCustomEventSerializes() {
|
||||
assertThat(this.converter.isMapperCreated()).isFalse();
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.type.filter.AssignableTypeFilter;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.converter.AbstractMessageConverter;
|
||||
import org.springframework.util.ClassUtils;
|
||||
@@ -86,12 +87,7 @@ class BusJacksonMessageConverter extends AbstractMessageConverter
|
||||
|
||||
private String[] packagesToScan = new String[] { DEFAULT_PACKAGE };
|
||||
|
||||
BusJacksonMessageConverter() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
@Autowired(required = false)
|
||||
BusJacksonMessageConverter(ObjectMapper objectMapper) {
|
||||
BusJacksonMessageConverter(@Nullable ObjectMapper objectMapper) {
|
||||
super(MimeTypeUtils.APPLICATION_JSON);
|
||||
|
||||
if (objectMapper != null) {
|
||||
|
||||
@@ -80,7 +80,7 @@ public class SubtypeModuleTests {
|
||||
|
||||
@Test
|
||||
public void testDeserializeWithMessageConverter() throws Exception {
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
|
||||
converter.afterPropertiesSet();
|
||||
Object event = converter.fromMessage(MessageBuilder
|
||||
.withPayload("{\"type\":\"TestRemoteApplicationEvent\"}").build(),
|
||||
@@ -91,7 +91,7 @@ public class SubtypeModuleTests {
|
||||
|
||||
@Test
|
||||
public void testDeserializeUnknownTypeWithMessageConverter() throws Exception {
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
|
||||
converter.afterPropertiesSet();
|
||||
Object event = converter.fromMessage(MessageBuilder
|
||||
.withPayload("{\"type\":\"NotDefinedTestRemoteApplicationEvent\"}")
|
||||
@@ -108,7 +108,7 @@ public class SubtypeModuleTests {
|
||||
|
||||
@Test
|
||||
public void testDeserializeJsonTypeWithMessageConverter() throws Exception {
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
|
||||
converter.afterPropertiesSet();
|
||||
Object event = converter.fromMessage(
|
||||
MessageBuilder.withPayload("{\"type\":\"typed\"}").build(),
|
||||
@@ -122,7 +122,7 @@ public class SubtypeModuleTests {
|
||||
*/
|
||||
@Test
|
||||
public void testDeserializeAckRemoteApplicationEventWithKnownType() throws Exception {
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
|
||||
converter.afterPropertiesSet();
|
||||
Object event = converter.fromMessage(MessageBuilder
|
||||
.withPayload("{\"type\":\"AckRemoteApplicationEvent\", "
|
||||
@@ -141,7 +141,7 @@ public class SubtypeModuleTests {
|
||||
@Test
|
||||
public void testDeserializeAckRemoteApplicationEventWithUnknownType()
|
||||
throws Exception {
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter();
|
||||
BusJacksonMessageConverter converter = new BusJacksonMessageConverter(null);
|
||||
converter.afterPropertiesSet();
|
||||
Object event = converter.fromMessage(MessageBuilder.withPayload(
|
||||
"{\"type\":\"AckRemoteApplicationEvent\", \"event\":\"foo.bar.TestRemoteApplicationEvent\"}")
|
||||
|
||||
Reference in New Issue
Block a user