Made destination resolver lazy
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user