diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/ContractVerifierStreamAutoConfiguration.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/ContractVerifierStreamAutoConfiguration.java index 0fb82c79ca..79dca1f6f5 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/ContractVerifierStreamAutoConfiguration.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/ContractVerifierStreamAutoConfiguration.java @@ -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> contractVerifierMessageExchangeWithNoMessageCollector( - ApplicationContext applicationContext, - BinderAwareChannelResolver resolver) { - return new StreamStubMessages(new StreamStubMessageSender(resolver), + ApplicationContext applicationContext) { + return new StreamStubMessages(new StreamStubMessageSender(applicationContext), new StreamPollableChannelMessageReceiver(applicationContext)); } diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/StreamStubMessageSender.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/StreamStubMessageSender.java index ffea55d009..d19f205209 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/StreamStubMessageSender.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/messaging/stream/StreamStubMessageSender.java @@ -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> { 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> { @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> { } } + private BinderAwareChannelResolver resolver() { + if (this.resolver == null) { + this.resolver = context.getBean(BinderAwareChannelResolver.class); + } + return this.resolver; + } + }