From 9787e36b06fb381c631414fa94f9f702cf7f621f Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 24 Jun 2014 17:14:48 +0100 Subject: [PATCH] Ensure app doesn't barf when actuator missing --- .../RefreshAutoConfiguration.java | 86 ++++++++++--------- .../restart/RestartIntegrationTests.java | 2 +- 2 files changed, 47 insertions(+), 41 deletions(-) diff --git a/spring-platform-config-client/src/main/java/org/springframework/platform/autoconfigure/RefreshAutoConfiguration.java b/spring-platform-config-client/src/main/java/org/springframework/platform/autoconfigure/RefreshAutoConfiguration.java index f898b40e..c1885868 100644 --- a/spring-platform-config-client/src/main/java/org/springframework/platform/autoconfigure/RefreshAutoConfiguration.java +++ b/spring-platform-config-client/src/main/java/org/springframework/platform/autoconfigure/RefreshAutoConfiguration.java @@ -18,7 +18,7 @@ package org.springframework.platform.autoconfigure; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration; +import org.springframework.boot.actuate.endpoint.Endpoint; import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData; import org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor; import org.springframework.context.ConfigurableApplicationContext; @@ -43,7 +44,7 @@ import org.springframework.platform.context.scope.refresh.RefreshScope; @Configuration @ConditionalOnClass(RefreshScope.class) -@AutoConfigureAfter(EndpointAutoConfiguration.class) +@AutoConfigureAfter(WebMvcAutoConfiguration.class) public class RefreshAutoConfiguration { @Bean @@ -77,48 +78,53 @@ public class RefreshAutoConfiguration { } - @Bean - @ConditionalOnMissingBean - public RestartEndpoint restartContextListener() { - return new RestartEndpoint(); - } - - @Configuration - @ConditionalOnExpression("${endpoints.refresh.enabled:true}") - @ConditionalOnBean(ConfigServiceBootstrapConfiguration.class) - protected static class RefreshEndpointConfiguration { + @ConditionalOnClass(Endpoint.class) + protected static class RefreshEndpointsConfiguration { @Bean @ConditionalOnMissingBean - public RefreshEndpoint refreshEndpoint(ConfigurableApplicationContext context, - ConfigServiceBootstrapConfiguration bootstrap) { - RefreshEndpoint endpoint = new RefreshEndpoint(context, bootstrap); - return endpoint; + public RestartEndpoint restartContextListener() { + return new RestartEndpoint(); + } + + @Configuration + @ConditionalOnExpression("${endpoints.refresh.enabled:true}") + @ConditionalOnBean(ConfigServiceBootstrapConfiguration.class) + protected static class RefreshEndpointConfiguration { + + @Bean + @ConditionalOnMissingBean + public RefreshEndpoint refreshEndpoint( + ConfigurableApplicationContext context, + ConfigServiceBootstrapConfiguration bootstrap) { + RefreshEndpoint endpoint = new RefreshEndpoint(context, bootstrap); + return endpoint; + } + + } + + @Configuration + @ConditionalOnWebApplication + @ConditionalOnClass(EnvironmentEndpoint.class) + @ConditionalOnExpression("${endpoints.env.enabled:true}") + @ConditionalOnBean(EnvironmentEndpoint.class) + protected static class EnvironmentEndpointConfiguration { + + @Autowired + private RestartEndpoint restartEndpoint; + + @Bean + public EnvironmentManagerMvcEndpoint environmentManagerEndpoint( + EnvironmentEndpoint delegate, EnvironmentManager environment) { + return new EnvironmentManagerMvcEndpoint(delegate, environment); + } + + @Bean + public RestartMvcEndpoint restartMvcEndpoint() { + return new RestartMvcEndpoint(restartEndpoint); + } + } } - - @Configuration - @ConditionalOnWebApplication - @ConditionalOnClass(EnvironmentEndpoint.class) - @ConditionalOnExpression("${endpoints.env.enabled:true}") - @ConditionalOnBean(EnvironmentEndpoint.class) - protected static class EnvironmentEndpointConfiguration { - - @Autowired - private RestartEndpoint restartEndpoint; - - @Bean - public EnvironmentManagerMvcEndpoint environmentManagerEndpoint( - EnvironmentEndpoint delegate, EnvironmentManager environment) { - return new EnvironmentManagerMvcEndpoint(delegate, environment); - } - - @Bean - public RestartMvcEndpoint restartMvcEndpoint() { - return new RestartMvcEndpoint(restartEndpoint); - } - - } - } diff --git a/spring-platform-config-client/src/test/java/org/springframework/platform/context/restart/RestartIntegrationTests.java b/spring-platform-config-client/src/test/java/org/springframework/platform/context/restart/RestartIntegrationTests.java index dc21f663..f45026f4 100644 --- a/spring-platform-config-client/src/test/java/org/springframework/platform/context/restart/RestartIntegrationTests.java +++ b/spring-platform-config-client/src/test/java/org/springframework/platform/context/restart/RestartIntegrationTests.java @@ -41,7 +41,7 @@ public class RestartIntegrationTests { @Test public void testRestartTwice() throws Exception { - context = SpringApplication.run(TestConfiguration.class, "--endpoints.restart.enabled=true"); + context = SpringApplication.run(TestConfiguration.class, "--endpoints.restart.enabled=true", "--servert.port=0"); RestartEndpoint endpoint = context.getBean(RestartEndpoint.class); assertNotNull(context.getParent()); assertNull(context.getParent().getParent());