Fixed wrong conditional on missing beans for messaging; fixes gh-1513

This commit is contained in:
Marcin Grzejszczak
2020-09-21 11:21:48 +02:00
parent 6e951e60fd
commit b738eca9f4
11 changed files with 41 additions and 19 deletions

View File

@@ -56,6 +56,7 @@ import static java.util.Collections.emptyList;
@ConditionalOnProperty(name = "stubrunner.amqp.enabled", havingValue = "true")
@AutoConfigureBefore(ContractVerifierIntegrationConfiguration.class)
@AutoConfigureAfter(ContractVerifierStreamAutoConfiguration.class)
@ConditionalOnMissingBean({ ContractVerifierMessaging.class, MessageVerifier.class })
public class ContractVerifierAmqpAutoConfiguration {
@SpyBean

View File

@@ -43,6 +43,7 @@ import org.springframework.context.annotation.Import;
@Import(CamelAutoConfiguration.class)
@ConditionalOnProperty(name = "stubrunner.camel.enabled", havingValue = "true", matchIfMissing = true)
@AutoConfigureBefore({ NoOpContractVerifierAutoConfiguration.class, ContractVerifierJmsConfiguration.class })
@ConditionalOnMissingBean({ ContractVerifierMessaging.class, MessageVerifier.class })
public class ContractVerifierCamelConfiguration {
@Bean

View File

@@ -37,6 +37,7 @@ import org.springframework.messaging.Message;
@ConditionalOnClass(Message.class)
@AutoConfigureBefore(NoOpContractVerifierAutoConfiguration.class)
@AutoConfigureAfter(ContractVerifierStreamAutoConfiguration.class)
@ConditionalOnMissingBean({ ContractVerifierMessaging.class, MessageVerifier.class })
public class ContractVerifierIntegrationConfiguration {
@Bean

View File

@@ -50,6 +50,7 @@ import org.springframework.jms.core.JmsTemplate;
@ConditionalOnClass(JmsTemplate.class)
@ConditionalOnProperty(name = "stubrunner.jms.enabled", havingValue = "true", matchIfMissing = true)
@AutoConfigureBefore({ ContractVerifierIntegrationConfiguration.class, NoOpContractVerifierAutoConfiguration.class })
@ConditionalOnMissingBean({ ContractVerifierMessaging.class, MessageVerifier.class })
public class ContractVerifierJmsConfiguration {
@Bean

View File

@@ -44,6 +44,7 @@ import org.springframework.messaging.Message;
@ConditionalOnProperty(name = "stubrunner.kafka.enabled", havingValue = "true", matchIfMissing = true)
@AutoConfigureBefore({ ContractVerifierIntegrationConfiguration.class, NoOpContractVerifierAutoConfiguration.class })
@ConditionalOnBean(EmbeddedKafkaBroker.class)
@ConditionalOnMissingBean({ ContractVerifierMessaging.class, MessageVerifier.class })
public class ContractVerifierKafkaConfiguration {
private static final Log log = LogFactory.getLog(ContractVerifierKafkaConfiguration.class);

View File

@@ -18,7 +18,7 @@ package org.springframework.cloud.contract.verifier.messaging.noop;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
@@ -37,26 +37,24 @@ import org.springframework.core.Ordered;
@AutoConfigureOrder(Ordered.LOWEST_PRECEDENCE)
public class NoOpContractVerifierAutoConfiguration {
@Autowired(required = false)
ObjectMapper objectMapper;
@Bean
@ConditionalOnMissingBean
@ConditionalOnMissingBean(MessageVerifier.class)
public MessageVerifier<?> contractVerifierMessageExchange() {
return new NoOpStubMessages();
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnMissingBean(ContractVerifierMessaging.class)
public ContractVerifierMessaging<?> contractVerifierMessaging(MessageVerifier<Object> exchange) {
return new ContractVerifierMessaging<>(exchange);
}
@Bean
@ConditionalOnMissingBean
public ContractVerifierObjectMapper contractVerifierObjectMapper() {
if (this.objectMapper != null) {
return new ContractVerifierObjectMapper(this.objectMapper);
public ContractVerifierObjectMapper contractVerifierObjectMapper(ObjectProvider<ObjectMapper> objectMapper) {
ObjectMapper mapper = objectMapper.getIfAvailable();
if (mapper != null) {
return new ContractVerifierObjectMapper(mapper);
}
return new ContractVerifierObjectMapper();
}

View File

@@ -40,6 +40,7 @@ import org.springframework.util.Assert;
@ConditionalOnClass(EnableBinding.class)
@ConditionalOnProperty(name = "stubrunner.stream.enabled", havingValue = "true", matchIfMissing = true)
@AutoConfigureBefore(NoOpContractVerifierAutoConfiguration.class)
@ConditionalOnMissingBean({ ContractVerifierMessaging.class, MessageVerifier.class })
public class ContractVerifierStreamAutoConfiguration {
@Bean