From 55f04aaa38f8140fc080c3e905f4c1cbf95c36dc Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 19 Jan 2015 16:51:53 +0000 Subject: [PATCH] More @Conditionals to prevent error if bootstrap disabled If user disables bootstrap configuration (spring.cloud.bootstrap.enabled:false) we have to anticipate some beans will be missing. Fixes gh-65 --- .../EnvironmentEndpointAutoConfiguration.java | 6 ++-- ...bledAutoConfigurationIntegrationTests.java | 35 +++++++++++++++++++ .../src/test/resources/application.properties | 2 +- ... VanillaConfigServerIntegrationTests.java} | 2 +- 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 spring-cloud-config-client/src/test/java/org/springframework/cloud/bootstrap/BootstrapDisabledAutoConfigurationIntegrationTests.java rename spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/{ApplicationTests.java => VanillaConfigServerIntegrationTests.java} (96%) diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/EnvironmentEndpointAutoConfiguration.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/EnvironmentEndpointAutoConfiguration.java index 75a7e3cf..b1a99243 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/EnvironmentEndpointAutoConfiguration.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/EnvironmentEndpointAutoConfiguration.java @@ -42,20 +42,22 @@ import org.springframework.context.annotation.Configuration; @ConditionalOnClass(EnvironmentEndpoint.class) @ConditionalOnProperty(value = "endpoints.env.enabled", matchIfMissing = true) @ConditionalOnWebApplication -@ConditionalOnBean({ EnvironmentEndpoint.class, RefreshEndpoint.class }) -@AutoConfigureAfter({ WebMvcAutoConfiguration.class, EndpointAutoConfiguration.class }) +@ConditionalOnBean(RestartEndpoint.class) +@AutoConfigureAfter({ WebMvcAutoConfiguration.class, EndpointAutoConfiguration.class, RefreshAutoConfiguration.class }) public class EnvironmentEndpointAutoConfiguration { @Autowired private RestartEndpoint restartEndpoint; @Bean + @ConditionalOnBean(EnvironmentEndpoint.class) public EnvironmentManagerMvcEndpoint environmentManagerEndpoint( EnvironmentEndpoint delegate, EnvironmentManager environment) { return new EnvironmentManagerMvcEndpoint(delegate, environment); } @Bean + @ConditionalOnBean(RefreshEndpoint.class) public MvcEndpoint refreshMvcEndpoint(RefreshEndpoint endpoint) { return new GenericPostableMvcEndpoint(endpoint); } diff --git a/spring-cloud-config-client/src/test/java/org/springframework/cloud/bootstrap/BootstrapDisabledAutoConfigurationIntegrationTests.java b/spring-cloud-config-client/src/test/java/org/springframework/cloud/bootstrap/BootstrapDisabledAutoConfigurationIntegrationTests.java new file mode 100644 index 00000000..7b44ea72 --- /dev/null +++ b/spring-cloud-config-client/src/test/java/org/springframework/cloud/bootstrap/BootstrapDisabledAutoConfigurationIntegrationTests.java @@ -0,0 +1,35 @@ +package org.springframework.cloud.bootstrap; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.IntegrationTest; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.cloud.bootstrap.BootstrapDisabledAutoConfigurationIntegrationTests.Application; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = Application.class) +@IntegrationTest({ "server.port:0", "spring.cloud.bootstrap.enabled:false" }) +@WebAppConfiguration +@ActiveProfiles("test") +public class BootstrapDisabledAutoConfigurationIntegrationTests { + + @Value("${local.server.port}") + private int port; + + @Test + public void contextLoads() { + } + + @EnableAutoConfiguration + @Configuration + protected static class Application { + + } + +} diff --git a/spring-cloud-config-client/src/test/resources/application.properties b/spring-cloud-config-client/src/test/resources/application.properties index 0bf42d4f..961e7d22 100644 --- a/spring-cloud-config-client/src/test/resources/application.properties +++ b/spring-cloud-config-client/src/test/resources/application.properties @@ -1,5 +1,5 @@ message: Hello scope! delay: 0 -# debug: true +debug: true #logging.level.org.springframework.web: DEBUG #logging.level.org.springframework.context.annotation: DEBUG \ No newline at end of file diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/ApplicationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/VanillaConfigServerIntegrationTests.java similarity index 96% rename from spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/ApplicationTests.java rename to spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/VanillaConfigServerIntegrationTests.java index 44a5e84d..8463b9f3 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/ApplicationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/VanillaConfigServerIntegrationTests.java @@ -22,7 +22,7 @@ import org.springframework.test.context.web.WebAppConfiguration; @IntegrationTest({"server.port:0", "spring.config.name:configserver", "spring.cloud.config.server.git.uri:file:./target/repos/config-repo"}) @WebAppConfiguration @ActiveProfiles("test") -public class ApplicationTests { +public class VanillaConfigServerIntegrationTests { @Value("${local.server.port}") private int port;