Almost there
This commit is contained in:
@@ -19,9 +19,10 @@ package org.springframework.cloud.contract.verifier.messaging.stream;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
|
||||
import org.springframework.cloud.stream.config.BindingProperties;
|
||||
import org.springframework.cloud.stream.config.BindingServiceProperties;
|
||||
@@ -29,6 +30,10 @@ import org.springframework.cloud.stream.test.binder.MessageCollector;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.converter.DefaultContentTypeResolver;
|
||||
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
import org.springframework.util.MimeTypeUtils;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
@@ -41,7 +46,6 @@ public class StreamStubMessages implements MessageVerifier<Message<?>> {
|
||||
private final MessageCollector messageCollector;
|
||||
private final ContractVerifierStreamMessageBuilder builder = new ContractVerifierStreamMessageBuilder();
|
||||
|
||||
@Autowired
|
||||
public StreamStubMessages(ApplicationContext context) {
|
||||
this.context = context;
|
||||
this.messageCollector = context.getBean(MessageCollector.class);
|
||||
@@ -71,7 +75,12 @@ public class StreamStubMessages implements MessageVerifier<Message<?>> {
|
||||
try {
|
||||
MessageChannel messageChannel = this.context
|
||||
.getBean(resolvedDestination(destination), MessageChannel.class);
|
||||
return this.messageCollector.forChannel(messageChannel).poll(timeout, timeUnit);
|
||||
Message<?> message = this.messageCollector.forChannel(messageChannel).poll(timeout, timeUnit);
|
||||
if (message == null) {
|
||||
return message;
|
||||
}
|
||||
Object fromMessage = converter().fromMessage(message, String.class);
|
||||
return MessageBuilder.createMessage(fromMessage, message.getHeaders());
|
||||
}
|
||||
catch (Exception e) {
|
||||
log.error("Exception occurred while trying to read a message from "
|
||||
@@ -110,4 +119,26 @@ public class StreamStubMessages implements MessageVerifier<Message<?>> {
|
||||
return receive(destination, 5, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
private MappingJackson2MessageConverter converter() {
|
||||
ObjectMapper mapper = null;
|
||||
try {
|
||||
mapper = this.context.getBean(ObjectMapper.class);
|
||||
} catch (NoSuchBeanDefinitionException e) {
|
||||
|
||||
}
|
||||
MappingJackson2MessageConverter converter = createJacksonConverter();
|
||||
if (mapper != null) {
|
||||
converter.setObjectMapper(mapper);
|
||||
}
|
||||
return converter;
|
||||
}
|
||||
|
||||
protected MappingJackson2MessageConverter createJacksonConverter() {
|
||||
DefaultContentTypeResolver resolver = new DefaultContentTypeResolver();
|
||||
resolver.setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
|
||||
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
|
||||
converter.setContentTypeResolver(resolver);
|
||||
return converter;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user