diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryHealthMvcEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryHealthMvcEndpoint.java index f6f17910740..49c4e109741 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryHealthMvcEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cloudfoundry/CloudFoundryHealthMvcEndpoint.java @@ -38,7 +38,8 @@ class CloudFoundryHealthMvcEndpoint extends HealthMvcEndpoint { } @Override - protected boolean exposeHealthDetails(HttpServletRequest request, Principal principal) { + protected boolean exposeHealthDetails(HttpServletRequest request, + Principal principal) { return true; } diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/HealthMvcEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/HealthMvcEndpoint.java index 8299a33c9c5..9ebaf80d24e 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/HealthMvcEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/HealthMvcEndpoint.java @@ -183,7 +183,8 @@ public class HealthMvcEndpoint extends AbstractEndpointMvcAdapter= getDelegate().getTimeToLive(); } - protected boolean exposeHealthDetails(HttpServletRequest request, Principal principal) { + protected boolean exposeHealthDetails(HttpServletRequest request, + Principal principal) { if (!this.secure) { return true; } @@ -192,7 +193,7 @@ public class HealthMvcEndpoint extends AbstractEndpointMvcAdapter authorities = Collections.singleton(new SimpleGrantedAuthority("HERO")); + Set authorities = Collections + .singleton(new SimpleGrantedAuthority("HERO")); doReturn(authorities).when(principal).getAuthorities(); given(this.endpoint.invoke()) .willReturn(new Health.Builder().up().withDetail("foo", "bar").build()); diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/mvc/NoSpringSecurityHealthMvcEndpointIntegrationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/mvc/NoSpringSecurityHealthMvcEndpointIntegrationTests.java index 5b3508cf5d1..c27e9df813a 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/mvc/NoSpringSecurityHealthMvcEndpointIntegrationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/mvc/NoSpringSecurityHealthMvcEndpointIntegrationTests.java @@ -67,13 +67,15 @@ public class NoSpringSecurityHealthMvcEndpointIntegrationTests { } @Test - public void healthWhenRightRoleNotPresentShouldExposeHealthDetails() throws Exception { + public void healthWhenRightRoleNotPresentShouldExposeHealthDetails() + throws Exception { this.context = new AnnotationConfigWebApplicationContext(); this.context.setServletContext(new MockServletContext()); this.context.register(TestConfiguration.class); this.context.refresh(); MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context).build(); - mockMvc.perform(get("/health").with(getRequestPostProcessor())).andExpect(status().isOk()) + mockMvc.perform(get("/health").with(getRequestPostProcessor())) + .andExpect(status().isOk()) .andExpect(content().string(containsString("\"status\":\"UP\""))); } @@ -93,12 +95,15 @@ public class NoSpringSecurityHealthMvcEndpointIntegrationTests { private RequestPostProcessor getRequestPostProcessor() { return new RequestPostProcessor() { + @Override - public MockHttpServletRequest postProcessRequest(MockHttpServletRequest request) { + public MockHttpServletRequest postProcessRequest( + MockHttpServletRequest request) { Principal principal = mock(Principal.class); request.setUserPrincipal(principal); return request; } + }; } @@ -117,6 +122,7 @@ public class NoSpringSecurityHealthMvcEndpointIntegrationTests { public Health health() { return Health.up().withDetail("hello", "world").build(); } + }; } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java index b47cabe29c4..11e21955af9 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java @@ -40,6 +40,9 @@ public class MongoProperties { */ public static final int DEFAULT_PORT = 27017; + /** + * Default URI used when the configured URI is {@code null}. + */ public static final String DEFAULT_URI = "mongodb://localhost/test"; /** diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration.java index 7139b13fb42..b92e55b2c1c 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration.java @@ -145,25 +145,21 @@ public class EmbeddedServletContainerAutoConfiguration { if (this.beanFactory == null) { return; } - if (ObjectUtils.isEmpty(this.beanFactory.getBeanNamesForType( - EmbeddedServletContainerCustomizerBeanPostProcessor.class, true, - false))) { - RootBeanDefinition beanDefinition = new RootBeanDefinition( - EmbeddedServletContainerCustomizerBeanPostProcessor.class); - beanDefinition.setSynthetic(true); - registry.registerBeanDefinition( - "embeddedServletContainerCustomizerBeanPostProcessor", - beanDefinition); + registerSyntheticBeanIfMissing(registry, + "embeddedServletContainerCustomizerBeanPostProcessor", + EmbeddedServletContainerCustomizerBeanPostProcessor.class); + registerSyntheticBeanIfMissing(registry, + "errorPageRegistrarBeanPostProcessor", + ErrorPageRegistrarBeanPostProcessor.class); + } - } - if (ObjectUtils.isEmpty(this.beanFactory.getBeanNamesForType( - ErrorPageRegistrarBeanPostProcessor.class, true, false))) { - RootBeanDefinition beanDefinition = new RootBeanDefinition( - ErrorPageRegistrarBeanPostProcessor.class); + private void registerSyntheticBeanIfMissing(BeanDefinitionRegistry registry, + String name, Class beanClass) { + if (ObjectUtils.isEmpty( + this.beanFactory.getBeanNamesForType(beanClass, true, false))) { + RootBeanDefinition beanDefinition = new RootBeanDefinition(beanClass); beanDefinition.setSynthetic(true); - registry.registerBeanDefinition("errorPageRegistrarBeanPostProcessor", - beanDefinition); - + registry.registerBeanDefinition(name, beanDefinition); } } diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedServletContainerCustomizerBeanPostProcessor.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedServletContainerCustomizerBeanPostProcessor.java index e4b41309dbd..329f4e3c0d6 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedServletContainerCustomizerBeanPostProcessor.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedServletContainerCustomizerBeanPostProcessor.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import org.springframework.util.Assert; /** * {@link BeanPostProcessor} that applies all {@link EmbeddedServletContainerCustomizer}s @@ -45,6 +46,9 @@ public class EmbeddedServletContainerCustomizerBeanPostProcessor @Override public void setBeanFactory(BeanFactory beanFactory) { + Assert.isInstanceOf(ListableBeanFactory.class, beanFactory, + "EmbeddedServletContainerCustomizerBeanPostProcessor can only be used " + + "with a ListableBeanFactory"); this.beanFactory = (ListableBeanFactory) beanFactory; } diff --git a/spring-boot/src/main/java/org/springframework/boot/web/servlet/ErrorPageRegistrarBeanPostProcessor.java b/spring-boot/src/main/java/org/springframework/boot/web/servlet/ErrorPageRegistrarBeanPostProcessor.java index 292a096a89f..f314cafe0fb 100644 --- a/spring-boot/src/main/java/org/springframework/boot/web/servlet/ErrorPageRegistrarBeanPostProcessor.java +++ b/spring-boot/src/main/java/org/springframework/boot/web/servlet/ErrorPageRegistrarBeanPostProcessor.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import org.springframework.util.Assert; /** * {@link BeanPostProcessor} that applies all {@link ErrorPageRegistrar}s from the bean @@ -45,6 +46,9 @@ public class ErrorPageRegistrarBeanPostProcessor @Override public void setBeanFactory(BeanFactory beanFactory) { + Assert.isInstanceOf(ListableBeanFactory.class, beanFactory, + "ErrorPageRegistrarBeanPostProcessor can only be used " + + "with a ListableBeanFactory"); this.beanFactory = (ListableBeanFactory) beanFactory; }