Made destination resolver lazy

This commit is contained in:
Marcin Grzejszczak
2019-07-09 18:17:53 +02:00
parent 869e644740
commit 121b0f1fdf
2 changed files with 17 additions and 10 deletions

View File

@@ -26,7 +26,6 @@ import org.springframework.cloud.contract.verifier.messaging.internal.ContractVe
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging;
import org.springframework.cloud.contract.verifier.messaging.noop.NoOpContractVerifierAutoConfiguration;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.binding.BinderAwareChannelResolver;
import org.springframework.cloud.stream.test.binder.MessageCollector;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -39,8 +38,7 @@ import org.springframework.util.Assert;
*/
@Configuration
@ConditionalOnClass(EnableBinding.class)
@ConditionalOnProperty(name = "stubrunner.stream.enabled", havingValue = "true",
matchIfMissing = true)
@ConditionalOnProperty(name = "stubrunner.stream.enabled", havingValue = "true", matchIfMissing = true)
@AutoConfigureBefore(NoOpContractVerifierAutoConfiguration.class)
public class ContractVerifierStreamAutoConfiguration {
@@ -74,9 +72,8 @@ public class ContractVerifierStreamAutoConfiguration {
@Bean
@ConditionalOnMissingBean
MessageVerifier<Message<?>> contractVerifierMessageExchangeWithNoMessageCollector(
ApplicationContext applicationContext,
BinderAwareChannelResolver resolver) {
return new StreamStubMessages(new StreamStubMessageSender(resolver),
ApplicationContext applicationContext) {
return new StreamStubMessages(new StreamStubMessageSender(applicationContext),
new StreamPollableChannelMessageReceiver(applicationContext));
}

View File

@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
import org.springframework.cloud.stream.binding.BinderAwareChannelResolver;
import org.springframework.context.ApplicationContext;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
@@ -33,12 +34,14 @@ class StreamStubMessageSender implements MessageVerifierSender<Message<?>> {
private static final Log log = LogFactory.getLog(StreamStubMessageSender.class);
private final BinderAwareChannelResolver resolver;
private final ApplicationContext context;
private final ContractVerifierStreamMessageBuilder builder = new ContractVerifierStreamMessageBuilder();
StreamStubMessageSender(BinderAwareChannelResolver resolver) {
this.resolver = resolver;
private BinderAwareChannelResolver resolver;
StreamStubMessageSender(ApplicationContext context) {
this.context = context;
}
@Override
@@ -49,7 +52,7 @@ class StreamStubMessageSender implements MessageVerifierSender<Message<?>> {
@Override
public void send(Message<?> message, String destination) {
try {
MessageChannel messageChannel = this.resolver.resolveDestination(destination);
MessageChannel messageChannel = resolver().resolveDestination(destination);
messageChannel.send(message);
}
catch (Exception e) {
@@ -59,4 +62,11 @@ class StreamStubMessageSender implements MessageVerifierSender<Message<?>> {
}
}
private BinderAwareChannelResolver resolver() {
if (this.resolver == null) {
this.resolver = context.getBean(BinderAwareChannelResolver.class);
}
return this.resolver;
}
}