From 81273bdf9a0a86dfb8d2572263844eff2b5b4e9c Mon Sep 17 00:00:00 2001 From: ayudovin Date: Thu, 24 Jan 2019 15:19:25 +0300 Subject: [PATCH 1/4] Handle AccessControlException in JspTemplateAvailabilityProvider See gh-15778 --- .../web/servlet/JspTemplateAvailabilityProvider.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java index d0b3465d282..101570562f2 100755 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java @@ -17,6 +17,7 @@ package org.springframework.boot.autoconfigure.web.servlet; import java.io.File; +import java.security.AccessControlException; import org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider; import org.springframework.core.env.Environment; @@ -30,6 +31,7 @@ import org.springframework.util.ClassUtils; * @author Andy Wilkinson * @author Stephane Nicoll * @author Madhura Bhave + * @author Artsiom Yudovin * @since 1.1.0 */ public class JspTemplateAvailabilityProvider implements TemplateAvailabilityProvider { @@ -38,11 +40,17 @@ public class JspTemplateAvailabilityProvider implements TemplateAvailabilityProv public boolean isTemplateAvailable(String view, Environment environment, ClassLoader classLoader, ResourceLoader resourceLoader) { if (ClassUtils.isPresent("org.apache.jasper.compiler.JspConfig", classLoader)) { + String resourceName = getResourceName(view, environment); if (resourceLoader.getResource(resourceName).exists()) { return true; } - return new File("src/main/webapp", resourceName).exists(); + + try { + return new File("src/main/webapp", resourceName).exists(); + } + catch (AccessControlException ex) { + } } return false; } From c5675de66602778c362cef67fe5357eba634a674 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 31 Jan 2019 16:21:48 +0100 Subject: [PATCH 2/4] Polish "Handle AccessControlException in JspTemplateAvailabilityProvider" Closes gh-15778 --- .../web/servlet/JspTemplateAvailabilityProvider.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java index 101570562f2..edca99ef7c5 100755 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/JspTemplateAvailabilityProvider.java @@ -31,7 +31,6 @@ import org.springframework.util.ClassUtils; * @author Andy Wilkinson * @author Stephane Nicoll * @author Madhura Bhave - * @author Artsiom Yudovin * @since 1.1.0 */ public class JspTemplateAvailabilityProvider implements TemplateAvailabilityProvider { @@ -40,12 +39,10 @@ public class JspTemplateAvailabilityProvider implements TemplateAvailabilityProv public boolean isTemplateAvailable(String view, Environment environment, ClassLoader classLoader, ResourceLoader resourceLoader) { if (ClassUtils.isPresent("org.apache.jasper.compiler.JspConfig", classLoader)) { - String resourceName = getResourceName(view, environment); if (resourceLoader.getResource(resourceName).exists()) { return true; } - try { return new File("src/main/webapp", resourceName).exists(); } From 3a2e85ce75b8a4d3777480307a5513bc433b7157 Mon Sep 17 00:00:00 2001 From: ayudovin Date: Mon, 28 Jan 2019 17:40:26 +0300 Subject: [PATCH 3/4] Inject Map directly rather than via ObjectProvider See gh-15798 --- .../cache/CachesEndpointAutoConfiguration.java | 7 ++----- .../health/HealthIndicatorAutoConfiguration.java | 12 ++++-------- .../DataSourceHealthIndicatorAutoConfiguration.java | 5 ++--- .../jms/JmsHealthIndicatorAutoConfiguration.java | 5 ++--- .../mail/MailHealthIndicatorAutoConfiguration.java | 5 ++--- .../quartz/QuartzAutoConfiguration.java | 5 ++--- 6 files changed, 14 insertions(+), 25 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.java index 3214d7452c9..16d64c7b74e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cache/CachesEndpointAutoConfiguration.java @@ -16,10 +16,8 @@ package org.springframework.boot.actuate.autoconfigure.cache; -import java.util.LinkedHashMap; import java.util.Map; -import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.actuate.cache.CachesEndpoint; import org.springframework.boot.actuate.cache.CachesEndpointWebExtension; @@ -48,9 +46,8 @@ public class CachesEndpointAutoConfiguration { @Bean @ConditionalOnMissingBean - public CachesEndpoint cachesEndpoint( - ObjectProvider> cacheManagers) { - return new CachesEndpoint(cacheManagers.getIfAvailable(LinkedHashMap::new)); + public CachesEndpoint cachesEndpoint(Map cacheManagers) { + return new CachesEndpoint(cacheManagers); } @Bean diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java index f9357967d1a..0f5410798fb 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java @@ -16,12 +16,10 @@ package org.springframework.boot.actuate.autoconfigure.health; -import java.util.Collections; import java.util.Map; import reactor.core.publisher.Flux; -import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.health.ApplicationHealthIndicator; import org.springframework.boot.actuate.health.HealthAggregator; import org.springframework.boot.actuate.health.HealthIndicator; @@ -87,13 +85,11 @@ public class HealthIndicatorAutoConfiguration { @Bean @ConditionalOnMissingBean public ReactiveHealthIndicatorRegistry reactiveHealthIndicatorRegistry( - ObjectProvider> reactiveHealthIndicators, - ObjectProvider> healthIndicators) { + Map reactiveHealthIndicators, + Map healthIndicators) { return new ReactiveHealthIndicatorRegistryFactory() - .createReactiveHealthIndicatorRegistry( - reactiveHealthIndicators - .getIfAvailable(Collections::emptyMap), - healthIndicators.getIfAvailable(Collections::emptyMap)); + .createReactiveHealthIndicatorRegistry(reactiveHealthIndicators, + healthIndicators); } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java index 496716247bb..62017ee6938 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java @@ -72,10 +72,9 @@ public class DataSourceHealthIndicatorAutoConfiguration extends private DataSourcePoolMetadataProvider poolMetadataProvider; - public DataSourceHealthIndicatorAutoConfiguration( - ObjectProvider> dataSources, + public DataSourceHealthIndicatorAutoConfiguration(Map dataSources, ObjectProvider metadataProviders) { - this.dataSources = filterDataSources(dataSources.getIfAvailable()); + this.dataSources = filterDataSources(dataSources); this.metadataProviders = metadataProviders.orderedStream() .collect(Collectors.toList()); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java index 350a5ceeea8..96673fa04a6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java @@ -20,7 +20,6 @@ import java.util.Map; import javax.jms.ConnectionFactory; -import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthIndicatorConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorAutoConfiguration; @@ -55,8 +54,8 @@ public class JmsHealthIndicatorAutoConfiguration extends private final Map connectionFactories; public JmsHealthIndicatorAutoConfiguration( - ObjectProvider> connectionFactories) { - this.connectionFactories = connectionFactories.getIfAvailable(); + Map connectionFactories) { + this.connectionFactories = connectionFactories; } @Bean diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java index c5d38bc63c3..09d82f40b99 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java @@ -18,7 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.mail; import java.util.Map; -import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthIndicatorConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorAutoConfiguration; @@ -53,8 +52,8 @@ public class MailHealthIndicatorAutoConfiguration extends private final Map mailSenders; public MailHealthIndicatorAutoConfiguration( - ObjectProvider> mailSenders) { - this.mailSenders = mailSenders.getIfAvailable(); + Map mailSenders) { + this.mailSenders = mailSenders; } @Bean diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java index 57925b40d69..ce7faea0d1c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java @@ -74,13 +74,12 @@ public class QuartzAutoConfiguration { public QuartzAutoConfiguration(QuartzProperties properties, ObjectProvider customizers, - ObjectProvider jobDetails, - ObjectProvider> calendars, + ObjectProvider jobDetails, Map calendars, ObjectProvider triggers, ApplicationContext applicationContext) { this.properties = properties; this.customizers = customizers; this.jobDetails = jobDetails.getIfAvailable(); - this.calendars = calendars.getIfAvailable(); + this.calendars = calendars; this.triggers = triggers.getIfAvailable(); this.applicationContext = applicationContext; } From ede23caacefed249c3e57ed630cefa1065b38ee0 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 31 Jan 2019 16:25:18 +0100 Subject: [PATCH 4/4] Polish "Inject Map directly rather than via ObjectProvider" Closes gh-15798 --- .../autoconfigure/health/HealthIndicatorAutoConfiguration.java | 2 +- .../jdbc/DataSourceHealthIndicatorAutoConfiguration.java | 2 +- .../autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java | 2 +- .../mail/MailHealthIndicatorAutoConfiguration.java | 2 +- .../boot/autoconfigure/quartz/QuartzAutoConfiguration.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java index 0f5410798fb..7d138840042 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 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-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java index 62017ee6938..412f9d5853e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 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-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java index 96673fa04a6..bee662480ba 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jms/JmsHealthIndicatorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2019 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-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java index 09d82f40b99..564ddf082b7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/mail/MailHealthIndicatorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2019 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-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java index ce7faea0d1c..861b5b2510d 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/quartz/QuartzAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2018 the original author or authors. + * Copyright 2012-2019 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.