From f5aeac36582e43f8072f486835a86212358f7735 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 6 Mar 2017 11:43:29 -0800 Subject: [PATCH 1/2] Polish --- ...ddedServletContainerAutoConfiguration.java | 30 ++++++++----------- ...tContainerCustomizerBeanPostProcessor.java | 4 +++ .../ErrorPageRegistrarBeanPostProcessor.java | 4 +++ 3 files changed, 21 insertions(+), 17 deletions(-) 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 e04fff99cd2..614c6463660 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 @@ -134,25 +134,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; } From fedd7b95060653a0d7555ec8357e5e3705ff0089 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 6 Mar 2017 12:00:46 -0800 Subject: [PATCH 2/2] Polish --- .../cloudfoundry/CloudFoundryHealthMvcEndpoint.java | 3 ++- .../actuate/endpoint/mvc/HealthMvcEndpoint.java | 7 ++++--- .../mvc/MvcEndpointSecurityInterceptor.java | 2 +- .../CloudFoundryHealthMvcEndpointTests.java | 2 +- .../endpoint/mvc/HealthMvcEndpointTests.java | 3 ++- ...ngSecurityHealthMvcEndpointIntegrationTests.java | 12 +++++++++--- .../boot/autoconfigure/mongo/MongoProperties.java | 13 ++++++------- .../autoconfigure/mongo/MongoPropertiesTests.java | 2 +- .../JettyEmbeddedServletContainerFactoryTests.java | 2 +- 9 files changed, 27 insertions(+), 19 deletions(-) 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 d56a754cb4b..1885a148397 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 @@ -68,13 +68,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\""))); } @@ -94,12 +96,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; } + }; } @@ -119,6 +124,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 43e24447714..1d57a632c52 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -227,8 +227,7 @@ public class MongoProperties { options = MongoClientOptions.builder().build(); } String host = this.host == null ? "localhost" : this.host; - return new MongoClient( - Collections.singletonList(new ServerAddress(host, port)), + return new MongoClient(Collections.singletonList(new ServerAddress(host, port)), Collections.emptyList(), options); } @@ -245,14 +244,14 @@ public class MongoProperties { if (hasCustomCredentials()) { String database = this.authenticationDatabase == null ? getMongoClientDatabase() : this.authenticationDatabase; - credentials.add(MongoCredential.createCredential(this.username, - database, this.password)); + credentials.add(MongoCredential.createCredential(this.username, database, + this.password)); } String host = this.host == null ? "localhost" : this.host; int port = this.port != null ? this.port : DEFAULT_PORT; return new MongoClient( - Collections.singletonList(new ServerAddress(host, port)), - credentials, options); + Collections.singletonList(new ServerAddress(host, port)), credentials, + options); } // The options and credentials are in the URI return new MongoClient(new MongoClientURI(determineUri(), builder(options))); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoPropertiesTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoPropertiesTests.java index 5f6d44f3128..5304a5f528a 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoPropertiesTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoPropertiesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java index 28c23cfd929..bdc527eb9e8 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.