From 9bc77254a7cfe4bc5bbcf4ad612e7b1aad6af526 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 25 Jul 2016 20:08:21 +0200 Subject: [PATCH] Start building against Spring Framework 5 snapshot This commit enables compatibility build against Spring Framework 5. The Velocity and Guava support that are deprecated in the 1.x line have been removed and few other classes contain minor change to comply to non backward compatible changes in Spring Framework 5. This commit also switches the required java version to 8. Closes gh-6977 --- spring-boot-actuator/pom.xml | 5 - .../CacheStatisticsAutoConfiguration.java | 13 - .../cache/GuavaCacheStatisticsProvider.java | 47 ---- .../endpoint/mvc/LogFileMvcEndpoint.java | 2 +- ...CacheStatisticsAutoConfigurationTests.java | 23 -- spring-boot-autoconfigure/pom.xml | 5 - .../cache/CacheConfigurations.java | 1 - .../autoconfigure/cache/CacheProperties.java | 33 --- .../boot/autoconfigure/cache/CacheType.java | 6 - .../cache/GuavaCacheConfiguration.java | 102 -------- .../velocity/VelocityAutoConfiguration.java | 165 ------------ .../velocity/VelocityProperties.java | 138 ---------- .../VelocityTemplateAvailabilityProvider.java | 57 ---- .../autoconfigure/velocity/package-info.java | 22 -- .../main/resources/META-INF/spring.factories | 2 - ...eAutoConfigurationImportSelectorTests.java | 18 +- .../cache/CacheAutoConfigurationTests.java | 60 ----- .../VelocityAutoConfigurationTests.java | 246 ------------------ ...cityTemplateAvailabilityProviderTests.java | 75 ------ .../web/HttpMessageConvertersTests.java | 11 +- spring-boot-dependencies/pom.xml | 29 +-- .../spring-boot-deployment-test-tomee/pom.xml | 2 +- ...DevToolsPropertyDefaultsPostProcessor.java | 1 - spring-boot-docs/pom.xml | 10 - .../appendix-application-properties.adoc | 23 -- spring-boot-docs/src/main/asciidoc/howto.adoc | 40 +-- .../asciidoc/production-ready-features.adoc | 2 +- .../main/asciidoc/spring-boot-features.adoc | 41 +-- spring-boot-parent/pom.xml | 7 +- spring-boot-samples/README.adoc | 6 - spring-boot-samples/pom.xml | 2 - .../spring-boot-sample-ant/pom.xml | 2 +- .../spring-boot-sample-cache/README.adoc | 9 - .../spring-boot-sample-cache/pom.xml | 7 - .../src/main/resources/application.properties | 6 - .../spring-boot-sample-velocity/pom.xml | 56 ---- .../velocity/SampleVelocityApplication.java | 55 ---- .../src/main/resources/application.properties | 1 - .../src/main/resources/templates/welcome.vm | 2 - .../SampleVelocityApplicationTests.java | 47 ---- .../spring-boot-sample-web-velocity/pom.xml | 48 ---- .../SampleWebVelocityApplication.java | 29 --- .../web/velocity/WelcomeController.java | 39 --- .../src/main/resources/application.properties | 2 - .../src/main/resources/templates/error.vm | 9 - .../src/main/resources/templates/welcome.vm | 14 - .../SampleWebVelocityApplicationTests.java | 74 ------ spring-boot-starters/pom.xml | 1 - .../spring-boot-starter-velocity/pom.xml | 55 ---- spring-boot/pom.xml | 10 - .../boot/bind/RelaxedPropertyResolver.java | 16 -- .../EmbeddedWebApplicationContext.java | 1 - .../velocity/EmbeddedVelocityToolboxView.java | 113 -------- .../EmbeddedVelocityViewResolver.java | 55 ---- .../servlet/view/velocity/package-info.java | 20 -- .../bind/RelaxedPropertyResolverTests.java | 8 - .../EmbeddedWebApplicationContextTests.java | 7 +- .../EmbeddedVelocityToolboxViewTests.java | 95 ------- .../EmbeddedVelocityViewResolverTests.java | 98 ------- .../web/servlet/view/velocity/toolbox.xml | 8 - 60 files changed, 35 insertions(+), 2046 deletions(-) delete mode 100644 spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cache/GuavaCacheStatisticsProvider.java delete mode 100644 spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/GuavaCacheConfiguration.java delete mode 100644 spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfiguration.java delete mode 100644 spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityProperties.java delete mode 100644 spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProvider.java delete mode 100644 spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/package-info.java delete mode 100644 spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfigurationTests.java delete mode 100644 spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProviderTests.java delete mode 100644 spring-boot-samples/spring-boot-sample-velocity/pom.xml delete mode 100644 spring-boot-samples/spring-boot-sample-velocity/src/main/java/sample/velocity/SampleVelocityApplication.java delete mode 100644 spring-boot-samples/spring-boot-sample-velocity/src/main/resources/application.properties delete mode 100644 spring-boot-samples/spring-boot-sample-velocity/src/main/resources/templates/welcome.vm delete mode 100644 spring-boot-samples/spring-boot-sample-velocity/src/test/java/sample/velocity/SampleVelocityApplicationTests.java delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/pom.xml delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/SampleWebVelocityApplication.java delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/WelcomeController.java delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/application.properties delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/error.vm delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/welcome.vm delete mode 100644 spring-boot-samples/spring-boot-sample-web-velocity/src/test/java/sample/web/velocity/SampleWebVelocityApplicationTests.java delete mode 100644 spring-boot-starters/spring-boot-starter-velocity/pom.xml delete mode 100644 spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxView.java delete mode 100644 spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolver.java delete mode 100644 spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/package-info.java delete mode 100644 spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxViewTests.java delete mode 100644 spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolverTests.java delete mode 100644 spring-boot/src/test/resources/org/springframework/boot/web/servlet/view/velocity/toolbox.xml diff --git a/spring-boot-actuator/pom.xml b/spring-boot-actuator/pom.xml index 28ed726f721..6b2ca3317e6 100644 --- a/spring-boot-actuator/pom.xml +++ b/spring-boot-actuator/pom.xml @@ -71,11 +71,6 @@ caffeine true - - com.google.guava - guava - true - com.hazelcast hazelcast diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfiguration.java index 99ee83f9eeb..f1055d2f4c0 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfiguration.java @@ -31,7 +31,6 @@ import org.springframework.boot.actuate.cache.CaffeineCacheStatisticsProvider; import org.springframework.boot.actuate.cache.ConcurrentMapCacheStatisticsProvider; import org.springframework.boot.actuate.cache.DefaultCacheStatistics; import org.springframework.boot.actuate.cache.EhCacheStatisticsProvider; -import org.springframework.boot.actuate.cache.GuavaCacheStatisticsProvider; import org.springframework.boot.actuate.cache.HazelcastCacheStatisticsProvider; import org.springframework.boot.actuate.cache.InfinispanCacheStatisticsProvider; import org.springframework.boot.actuate.cache.JCacheCacheStatisticsProvider; @@ -45,7 +44,6 @@ import org.springframework.cache.CacheManager; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.cache.concurrent.ConcurrentMapCache; import org.springframework.cache.ehcache.EhCacheCache; -import org.springframework.cache.guava.GuavaCache; import org.springframework.cache.jcache.JCacheCache; import org.springframework.cache.support.NoOpCacheManager; import org.springframework.context.annotation.Bean; @@ -119,17 +117,6 @@ public class CacheStatisticsAutoConfiguration { } - @Configuration - @ConditionalOnClass({ com.google.common.cache.Cache.class, GuavaCache.class }) - static class GuavaCacheStatisticsConfiguration { - - @Bean - public GuavaCacheStatisticsProvider guavaCacheStatisticsProvider() { - return new GuavaCacheStatisticsProvider(); - } - - } - @Configuration @ConditionalOnClass(ConcurrentMapCache.class) static class ConcurrentMapCacheStatisticsConfiguration { diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cache/GuavaCacheStatisticsProvider.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cache/GuavaCacheStatisticsProvider.java deleted file mode 100644 index 45bc43d79f1..00000000000 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cache/GuavaCacheStatisticsProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2012-2015 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.actuate.cache; - -import com.google.common.cache.CacheStats; - -import org.springframework.cache.CacheManager; -import org.springframework.cache.guava.GuavaCache; - -/** - * {@link CacheStatisticsProvider} implementation for Guava. - * - * @author Stephane Nicoll - * @since 1.3.0 - * @deprecated as of 1.5 following the removal of Guava support in Spring Framework 5 - */ -@Deprecated -public class GuavaCacheStatisticsProvider implements CacheStatisticsProvider { - - @Override - public CacheStatistics getCacheStatistics(CacheManager cacheManager, - GuavaCache cache) { - DefaultCacheStatistics statistics = new DefaultCacheStatistics(); - statistics.setSize(cache.getNativeCache().size()); - CacheStats guavaStats = cache.getNativeCache().stats(); - if (guavaStats.requestCount() > 0) { - statistics.setHitRatio(guavaStats.hitRate()); - statistics.setMissRatio(guavaStats.missRate()); - } - return statistics; - } - -} diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/LogFileMvcEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/LogFileMvcEndpoint.java index b25a55f5521..f219cb01cdb 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/LogFileMvcEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/mvc/LogFileMvcEndpoint.java @@ -126,7 +126,7 @@ public class LogFileMvcEndpoint extends AbstractMvcEndpoint { } @Override - protected MediaType getMediaType(Resource resource) { + protected MediaType getMediaType(HttpServletRequest request, Resource resource) { return MediaType.TEXT_PLAIN; } diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfigurationTests.java index 06838001fa2..eb4e1f4ed28 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CacheStatisticsAutoConfigurationTests.java @@ -24,7 +24,6 @@ import javax.cache.Caching; import javax.cache.configuration.MutableConfiguration; import com.github.benmanes.caffeine.cache.Caffeine; -import com.google.common.cache.CacheBuilder; import com.hazelcast.cache.HazelcastCachingProvider; import com.hazelcast.config.Config; import com.hazelcast.config.XmlConfigBuilder; @@ -45,7 +44,6 @@ import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.cache.concurrent.ConcurrentMapCacheManager; import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.cache.ehcache.EhCacheManagerUtils; -import org.springframework.cache.guava.GuavaCacheManager; import org.springframework.cache.jcache.JCacheCacheManager; import org.springframework.cache.support.NoOpCacheManager; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -110,14 +108,6 @@ public class CacheStatisticsAutoConfigurationTests { doTestCoreStatistics(provider, true); } - @Test - public void basicGuavaCacheStatistics() { - load(GuavaConfig.class); - CacheStatisticsProvider provider = this.context - .getBean("guavaCacheStatisticsProvider", CacheStatisticsProvider.class); - doTestCoreStatistics(provider, true); - } - @Test public void baseCaffeineCacheStatistics() { load(CaffeineCacheConfig.class); @@ -291,19 +281,6 @@ public class CacheStatisticsAutoConfigurationTests { } - @Configuration - static class GuavaConfig { - - @Bean - public GuavaCacheManager cacheManager() throws IOException { - GuavaCacheManager cacheManager = new GuavaCacheManager(); - cacheManager.setCacheBuilder(CacheBuilder.newBuilder().recordStats()); - cacheManager.setCacheNames(Arrays.asList("books", "speakers")); - return cacheManager; - } - - } - @Configuration static class ConcurrentMapConfig { diff --git a/spring-boot-autoconfigure/pom.xml b/spring-boot-autoconfigure/pom.xml index 9f6e04e527a..ef31f41aa10 100755 --- a/spring-boot-autoconfigure/pom.xml +++ b/spring-boot-autoconfigure/pom.xml @@ -205,11 +205,6 @@ tomcat-jdbc true - - org.apache.velocity - velocity - true - org.codehaus.btm btm diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java index 226959064eb..c9dc7b85e17 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheConfigurations.java @@ -42,7 +42,6 @@ final class CacheConfigurations { mappings.put(CacheType.COUCHBASE, CouchbaseCacheConfiguration.class); mappings.put(CacheType.REDIS, RedisCacheConfiguration.class); mappings.put(CacheType.CAFFEINE, CaffeineCacheConfiguration.class); - mappings.put(CacheType.GUAVA, GuavaCacheConfiguration.class); mappings.put(CacheType.SIMPLE, SimpleCacheConfiguration.class); mappings.put(CacheType.NONE, NoOpCacheConfiguration.class); MAPPINGS = Collections.unmodifiableMap(mappings); diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheProperties.java index 347f42db4c0..22c4731c147 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheProperties.java @@ -20,7 +20,6 @@ import java.util.ArrayList; import java.util.List; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.DeprecatedConfigurationProperty; import org.springframework.core.io.Resource; import org.springframework.util.Assert; @@ -57,8 +56,6 @@ public class CacheProperties { private final JCache jcache = new JCache(); - private final Guava guava = new Guava(); - public CacheType getType() { return this.type; } @@ -99,10 +96,6 @@ public class CacheProperties { return this.jcache; } - public Guava getGuava() { - return this.guava; - } - /** * Resolve the config location if set. * @param config the config resource @@ -256,30 +249,4 @@ public class CacheProperties { } - /** - * Guava specific cache properties. - */ - public static class Guava { - - /** - * The spec to use to create caches. Check CacheBuilderSpec for more details on - * the spec format. - */ - private String spec; - - @Deprecated - @DeprecatedConfigurationProperty( - reason = "Caffeine will supersede the Guava support in Spring Boot 2.0", - replacement = "spring.cache.caffeine.spec") - public String getSpec() { - return this.spec; - } - - @Deprecated - public void setSpec(String spec) { - this.spec = spec; - } - - } - } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheType.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheType.java index b5cfe8a254a..6d29877e678 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheType.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/CacheType.java @@ -66,12 +66,6 @@ public enum CacheType { */ CAFFEINE, - /** - * Guava backed caching. - */ - @Deprecated - GUAVA, - /** * Simple in-memory caching. */ diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/GuavaCacheConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/GuavaCacheConfiguration.java deleted file mode 100644 index 05fefa6be79..00000000000 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/GuavaCacheConfiguration.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.cache; - -import java.util.List; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheBuilderSpec; -import com.google.common.cache.CacheLoader; - -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.cache.CacheManager; -import org.springframework.cache.guava.GuavaCacheManager; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Configuration; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -/** - * Guava cache configuration. - * - * @author Stephane Nicoll - * @since 1.3.0 - */ -@Configuration -@ConditionalOnClass({ CacheBuilder.class, GuavaCacheManager.class }) -@ConditionalOnMissingBean(CacheManager.class) -@Conditional(CacheCondition.class) -class GuavaCacheConfiguration { - - private final CacheProperties cacheProperties; - - private final CacheManagerCustomizers customizers; - - private final CacheBuilder cacheBuilder; - - private final CacheBuilderSpec cacheBuilderSpec; - - private final CacheLoader cacheLoader; - - GuavaCacheConfiguration(CacheProperties cacheProperties, - CacheManagerCustomizers customizers, - ObjectProvider> cacheBuilderProvider, - ObjectProvider cacheBuilderSpecProvider, - ObjectProvider> cacheLoaderProvider) { - this.cacheProperties = cacheProperties; - this.customizers = customizers; - this.cacheBuilder = cacheBuilderProvider.getIfAvailable(); - this.cacheBuilderSpec = cacheBuilderSpecProvider.getIfAvailable(); - this.cacheLoader = cacheLoaderProvider.getIfAvailable(); - } - - @Bean - public GuavaCacheManager cacheManager() { - GuavaCacheManager cacheManager = createCacheManager(); - List cacheNames = this.cacheProperties.getCacheNames(); - if (!CollectionUtils.isEmpty(cacheNames)) { - cacheManager.setCacheNames(cacheNames); - } - return this.customizers.customize(cacheManager); - } - - private GuavaCacheManager createCacheManager() { - GuavaCacheManager cacheManager = new GuavaCacheManager(); - setCacheBuilder(cacheManager); - if (this.cacheLoader != null) { - cacheManager.setCacheLoader(this.cacheLoader); - } - return cacheManager; - } - - private void setCacheBuilder(GuavaCacheManager cacheManager) { - String specification = this.cacheProperties.getGuava().getSpec(); - if (StringUtils.hasText(specification)) { - cacheManager.setCacheSpecification(specification); - } - else if (this.cacheBuilderSpec != null) { - cacheManager.setCacheBuilderSpec(this.cacheBuilderSpec); - } - else if (this.cacheBuilder != null) { - cacheManager.setCacheBuilder(this.cacheBuilder); - } - } - -} diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfiguration.java deleted file mode 100644 index 6e3497134a6..00000000000 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfiguration.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.velocity; - -import java.io.IOException; -import java.util.Properties; - -import javax.annotation.PostConstruct; -import javax.servlet.Servlet; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.exception.VelocityException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.autoconfigure.template.TemplateLocation; -import org.springframework.boot.autoconfigure.web.ConditionalOnEnabledResourceChain; -import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.web.servlet.view.velocity.EmbeddedVelocityViewResolver; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.ui.velocity.VelocityEngineFactory; -import org.springframework.ui.velocity.VelocityEngineFactoryBean; -import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; -import org.springframework.web.servlet.view.velocity.VelocityConfig; -import org.springframework.web.servlet.view.velocity.VelocityConfigurer; - -/** - * {@link EnableAutoConfiguration Auto-configuration} for Velocity. - * - * @author Andy Wilkinson - * @author Brian Clozel - * @since 1.1.0 - * @deprecated as of 1.4 following the deprecation of Velocity support in Spring Framework - * 4.3 - */ -@Configuration -@ConditionalOnClass({ VelocityEngine.class, VelocityEngineFactory.class }) -@AutoConfigureAfter(WebMvcAutoConfiguration.class) -@EnableConfigurationProperties(VelocityProperties.class) -@Deprecated -public class VelocityAutoConfiguration { - - private static final Log logger = LogFactory.getLog(VelocityAutoConfiguration.class); - - private final ApplicationContext applicationContext; - - private final VelocityProperties properties; - - public VelocityAutoConfiguration(ApplicationContext applicationContext, - VelocityProperties properties) { - this.applicationContext = applicationContext; - this.properties = properties; - } - - @PostConstruct - public void checkTemplateLocationExists() { - if (this.properties.isCheckTemplateLocation()) { - TemplateLocation location = new TemplateLocation( - this.properties.getResourceLoaderPath()); - if (!location.exists(this.applicationContext)) { - logger.warn("Cannot find template location: " + location - + " (please add some templates, check your Velocity " - + "configuration, or set spring.velocity." - + "checkTemplateLocation=false)"); - } - } - } - - @Deprecated - protected static class VelocityConfiguration { - - @Autowired - protected VelocityProperties properties; - - protected void applyProperties(VelocityEngineFactory factory) { - factory.setResourceLoaderPath(this.properties.getResourceLoaderPath()); - factory.setPreferFileSystemAccess(this.properties.isPreferFileSystemAccess()); - Properties velocityProperties = new Properties(); - velocityProperties.setProperty("input.encoding", - this.properties.getCharsetName()); - velocityProperties.putAll(this.properties.getProperties()); - factory.setVelocityProperties(velocityProperties); - } - - } - - @Configuration - @ConditionalOnNotWebApplication - @Deprecated - public static class VelocityNonWebConfiguration extends VelocityConfiguration { - - @Bean - @ConditionalOnMissingBean - public VelocityEngineFactoryBean velocityConfiguration() { - VelocityEngineFactoryBean velocityEngineFactoryBean = new VelocityEngineFactoryBean(); - applyProperties(velocityEngineFactoryBean); - return velocityEngineFactoryBean; - } - - } - - @Configuration - @ConditionalOnClass(Servlet.class) - @ConditionalOnWebApplication - @Deprecated - public static class VelocityWebConfiguration extends VelocityConfiguration { - - @Bean - @ConditionalOnMissingBean(VelocityConfig.class) - public VelocityConfigurer velocityConfigurer() { - VelocityConfigurer configurer = new VelocityConfigurer(); - applyProperties(configurer); - return configurer; - } - - @Bean - public VelocityEngine velocityEngine(VelocityConfigurer configurer) - throws VelocityException, IOException { - return configurer.getVelocityEngine(); - } - - @Bean - @ConditionalOnMissingBean(name = "velocityViewResolver") - @ConditionalOnProperty(name = "spring.velocity.enabled", matchIfMissing = true) - public EmbeddedVelocityViewResolver velocityViewResolver() { - EmbeddedVelocityViewResolver resolver = new EmbeddedVelocityViewResolver(); - this.properties.applyToViewResolver(resolver); - return resolver; - } - - @Bean - @ConditionalOnMissingBean - @ConditionalOnEnabledResourceChain - public ResourceUrlEncodingFilter resourceUrlEncodingFilter() { - return new ResourceUrlEncodingFilter(); - } - - } - -} diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityProperties.java deleted file mode 100644 index c01878421dc..00000000000 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityProperties.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.velocity; - -import java.util.HashMap; -import java.util.Map; - -import org.springframework.boot.autoconfigure.template.AbstractTemplateViewResolverProperties; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.web.servlet.view.velocity.VelocityViewResolver; - -/** - * {@link ConfigurationProperties} for configuring Velocity. - * - * @author Andy Wilkinson - * @since 1.1.0 - * @deprecated as of 1.4 following the deprecation of Velocity support in Spring Framework - * 4.3 - */ -@Deprecated -@ConfigurationProperties(prefix = "spring.velocity") -public class VelocityProperties extends AbstractTemplateViewResolverProperties { - - public static final String DEFAULT_RESOURCE_LOADER_PATH = "classpath:/templates/"; - - public static final String DEFAULT_PREFIX = ""; - - public static final String DEFAULT_SUFFIX = ".vm"; - - /** - * Name of the DateTool helper object to expose in the Velocity context of the view. - */ - private String dateToolAttribute; - - /** - * Name of the NumberTool helper object to expose in the Velocity context of the view. - */ - private String numberToolAttribute; - - /** - * Additional velocity properties. - */ - private Map properties = new HashMap(); - - /** - * Template path. - */ - private String resourceLoaderPath = DEFAULT_RESOURCE_LOADER_PATH; - - /** - * Velocity Toolbox config location, for example "/WEB-INF/toolbox.xml". Automatically - * loads a Velocity Tools toolbox definition file and expose all defined tools in the - * specified scopes. - */ - private String toolboxConfigLocation; - - /** - * Prefer file system access for template loading. File system access enables hot - * detection of template changes. - */ - private boolean preferFileSystemAccess = true; - - public VelocityProperties() { - super(DEFAULT_PREFIX, DEFAULT_SUFFIX); - } - - public String getDateToolAttribute() { - return this.dateToolAttribute; - } - - public void setDateToolAttribute(String dateToolAttribute) { - this.dateToolAttribute = dateToolAttribute; - } - - public String getNumberToolAttribute() { - return this.numberToolAttribute; - } - - public void setNumberToolAttribute(String numberToolAttribute) { - this.numberToolAttribute = numberToolAttribute; - } - - public Map getProperties() { - return this.properties; - } - - public void setProperties(Map properties) { - this.properties = properties; - } - - public String getResourceLoaderPath() { - return this.resourceLoaderPath; - } - - public void setResourceLoaderPath(String resourceLoaderPath) { - this.resourceLoaderPath = resourceLoaderPath; - } - - public String getToolboxConfigLocation() { - return this.toolboxConfigLocation; - } - - public void setToolboxConfigLocation(String toolboxConfigLocation) { - this.toolboxConfigLocation = toolboxConfigLocation; - } - - public boolean isPreferFileSystemAccess() { - return this.preferFileSystemAccess; - } - - public void setPreferFileSystemAccess(boolean preferFileSystemAccess) { - this.preferFileSystemAccess = preferFileSystemAccess; - } - - @Override - public void applyToViewResolver(Object viewResolver) { - super.applyToViewResolver(viewResolver); - VelocityViewResolver resolver = (VelocityViewResolver) viewResolver; - resolver.setToolboxConfigLocation(getToolboxConfigLocation()); - resolver.setDateToolAttribute(getDateToolAttribute()); - resolver.setNumberToolAttribute(getNumberToolAttribute()); - } - -} diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProvider.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProvider.java deleted file mode 100644 index 1dd17912137..00000000000 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProvider.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.velocity; - -import org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider; -import org.springframework.boot.bind.RelaxedPropertyResolver; -import org.springframework.core.env.Environment; -import org.springframework.core.env.PropertyResolver; -import org.springframework.core.io.ResourceLoader; -import org.springframework.util.ClassUtils; - -/** - * {@link TemplateAvailabilityProvider} that provides availability information for - * Velocity view templates. - * - * @author Andy Wilkinson - * @since 1.1.0 - * @deprecated as of 1.4 following the deprecation of Velocity support in Spring Framework - * 4.3 - */ -@Deprecated -public class VelocityTemplateAvailabilityProvider - implements TemplateAvailabilityProvider { - - @Override - public boolean isTemplateAvailable(String view, Environment environment, - ClassLoader classLoader, ResourceLoader resourceLoader) { - if (ClassUtils.isPresent("org.apache.velocity.app.VelocityEngine", classLoader)) { - PropertyResolver resolver = new RelaxedPropertyResolver(environment, - "spring.velocity."); - String loaderPath = resolver.getProperty("resource-loader-path", - VelocityProperties.DEFAULT_RESOURCE_LOADER_PATH); - String prefix = resolver.getProperty("prefix", - VelocityProperties.DEFAULT_PREFIX); - String suffix = resolver.getProperty("suffix", - VelocityProperties.DEFAULT_SUFFIX); - return resourceLoader.getResource(loaderPath + prefix + view + suffix) - .exists(); - } - return false; - } - -} diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/package-info.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/package-info.java deleted file mode 100644 index 571f4799d4f..00000000000 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/velocity/package-info.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Auto-configuration for Velocity. - * @deprecated as of 1.4 following the deprecation of Velocity support in Spring Framework - * 4.3 - */ -package org.springframework.boot.autoconfigure.velocity; diff --git a/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories index 62f5a8b2df2..f71ba137d07 100644 --- a/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories @@ -85,7 +85,6 @@ org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\ org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\ org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\ org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\ -org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration,\ org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\ org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\ @@ -114,5 +113,4 @@ org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailability org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider,\ org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider,\ org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider,\ -org.springframework.boot.autoconfigure.velocity.VelocityTemplateAvailabilityProvider,\ org.springframework.boot.autoconfigure.web.JspTemplateAvailabilityProvider diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/EnableAutoConfigurationImportSelectorTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/EnableAutoConfigurationImportSelectorTests.java index 2642cc0cd11..80e8cd07bb5 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/EnableAutoConfigurationImportSelectorTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/EnableAutoConfigurationImportSelectorTests.java @@ -27,8 +27,8 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport; import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration; +import org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration; import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration; -import org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core.io.support.SpringFactoriesLoader; @@ -92,12 +92,12 @@ public class EnableAutoConfigurationImportSelectorTests { @Test public void classNamesExclusionsAreApplied() { configureExclusions(new String[0], - new String[] { VelocityAutoConfiguration.class.getName() }, + new String[] { ThymeleafAutoConfiguration.class.getName() }, new String[0]); String[] imports = this.importSelector.selectImports(this.annotationMetadata); assertThat(imports).hasSize(getAutoConfigurationClassNames().size() - 1); assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions()) - .contains(VelocityAutoConfiguration.class.getName()); + .contains(ThymeleafAutoConfiguration.class.getName()); } @Test @@ -114,12 +114,12 @@ public class EnableAutoConfigurationImportSelectorTests { public void severalPropertyExclusionsAreApplied() { configureExclusions(new String[0], new String[0], new String[] { FreeMarkerAutoConfiguration.class.getName(), - VelocityAutoConfiguration.class.getName() }); + ThymeleafAutoConfiguration.class.getName() }); String[] imports = this.importSelector.selectImports(this.annotationMetadata); assertThat(imports).hasSize(getAutoConfigurationClassNames().size() - 2); assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions()) .contains(FreeMarkerAutoConfiguration.class.getName(), - VelocityAutoConfiguration.class.getName()); + ThymeleafAutoConfiguration.class.getName()); } @Test @@ -128,24 +128,24 @@ public class EnableAutoConfigurationImportSelectorTests { this.environment.setProperty("spring.autoconfigure.exclude[0]", FreeMarkerAutoConfiguration.class.getName()); this.environment.setProperty("spring.autoconfigure.exclude[1]", - VelocityAutoConfiguration.class.getName()); + ThymeleafAutoConfiguration.class.getName()); String[] imports = this.importSelector.selectImports(this.annotationMetadata); assertThat(imports).hasSize(getAutoConfigurationClassNames().size() - 2); assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions()) .contains(FreeMarkerAutoConfiguration.class.getName(), - VelocityAutoConfiguration.class.getName()); + ThymeleafAutoConfiguration.class.getName()); } @Test public void combinedExclusionsAreApplied() { - configureExclusions(new String[] { VelocityAutoConfiguration.class.getName() }, + configureExclusions(new String[] { GroovyTemplateAutoConfiguration.class.getName() }, new String[] { FreeMarkerAutoConfiguration.class.getName() }, new String[] { ThymeleafAutoConfiguration.class.getName() }); String[] imports = this.importSelector.selectImports(this.annotationMetadata); assertThat(imports).hasSize(getAutoConfigurationClassNames().size() - 3); assertThat(ConditionEvaluationReport.get(this.beanFactory).getExclusions()) .contains(FreeMarkerAutoConfiguration.class.getName(), - VelocityAutoConfiguration.class.getName(), + GroovyTemplateAutoConfiguration.class.getName(), ThymeleafAutoConfiguration.class.getName()); } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfigurationTests.java index 959b2a17b32..63b239a7a0c 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfigurationTests.java @@ -36,7 +36,6 @@ import com.couchbase.client.spring.cache.CouchbaseCache; import com.couchbase.client.spring.cache.CouchbaseCacheManager; import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.CaffeineSpec; -import com.google.common.cache.CacheBuilder; import com.hazelcast.cache.HazelcastCachingProvider; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.spring.cache.HazelcastCacheManager; @@ -66,8 +65,6 @@ import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.cache.concurrent.ConcurrentMapCache; import org.springframework.cache.concurrent.ConcurrentMapCacheManager; import org.springframework.cache.ehcache.EhCacheCacheManager; -import org.springframework.cache.guava.GuavaCache; -import org.springframework.cache.guava.GuavaCacheManager; import org.springframework.cache.interceptor.CacheOperationInvocationContext; import org.springframework.cache.interceptor.CacheResolver; import org.springframework.cache.jcache.JCacheCacheManager; @@ -632,46 +629,6 @@ public class CacheAutoConfigurationTests { assertThat(cacheManager.getCacheNames()).containsOnly("foo", "custom1"); } - @Test - public void guavaCacheExplicitWithCaches() { - load(DefaultCacheConfiguration.class, "spring.cache.type=guava", - "spring.cache.cacheNames=foo"); - GuavaCacheManager cacheManager = validateCacheManager(GuavaCacheManager.class); - Cache foo = cacheManager.getCache("foo"); - foo.get("1"); - // See next tests: no spec given so stats should be disabled - assertThat(((GuavaCache) foo).getNativeCache().stats().missCount()).isEqualTo(0L); - } - - @Test - public void guavaCacheWithCustomizers() { - testCustomizers(DefaultCacheAndCustomizersConfiguration.class, "guava", - "allCacheManagerCustomizer", "guavaCacheManagerCustomizer"); - } - - @Test - public void guavaCacheExplicitWithSpec() { - load(DefaultCacheConfiguration.class, "spring.cache.type=guava", - "spring.cache.guava.spec=recordStats", "spring.cache.cacheNames[0]=foo", - "spring.cache.cacheNames[1]=bar"); - validateGuavaCacheWithStats(); - } - - @Test - public void guavaCacheExplicitWithCacheBuilder() { - load(GuavaCacheBuilderConfiguration.class, "spring.cache.type=guava", - "spring.cache.cacheNames[0]=foo", "spring.cache.cacheNames[1]=bar"); - validateGuavaCacheWithStats(); - } - - private void validateGuavaCacheWithStats() { - GuavaCacheManager cacheManager = validateCacheManager(GuavaCacheManager.class); - assertThat(cacheManager.getCacheNames()).containsOnly("foo", "bar"); - Cache foo = cacheManager.getCache("foo"); - foo.get("1"); - assertThat(((GuavaCache) foo).getNativeCache().stats().missCount()).isEqualTo(1L); - } - @Test public void caffeineCacheWithExplicitCaches() { load(DefaultCacheConfiguration.class, "spring.cache.type=caffeine", @@ -995,17 +952,6 @@ public class CacheAutoConfigurationTests { } - @Configuration - @EnableCaching - static class GuavaCacheBuilderConfiguration { - - @Bean - CacheBuilder cacheBuilder() { - return CacheBuilder.newBuilder().recordStats(); - } - - } - @Configuration @EnableCaching static class CaffeineCacheBuilderConfiguration { @@ -1079,12 +1025,6 @@ public class CacheAutoConfigurationTests { }; } - @Bean - public CacheManagerCustomizer guavaCacheManagerCustomizer() { - return new CacheManagerTestCustomizer() { - }; - } - @Bean public CacheManagerCustomizer caffeineCacheManagerCustomizer() { return new CacheManagerTestCustomizer() { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfigurationTests.java deleted file mode 100644 index c5ddf074b82..00000000000 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityAutoConfigurationTests.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.velocity; - -import java.io.File; -import java.io.StringWriter; -import java.util.Locale; - -import javax.servlet.http.HttpServletRequest; - -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -import org.springframework.boot.test.rule.OutputCapture; -import org.springframework.boot.test.util.EnvironmentTestUtils; -import org.springframework.boot.web.servlet.view.velocity.EmbeddedVelocityViewResolver; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.mock.web.MockServletContext; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.View; -import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; -import org.springframework.web.servlet.support.RequestContext; -import org.springframework.web.servlet.view.AbstractTemplateViewResolver; -import org.springframework.web.servlet.view.velocity.VelocityConfigurer; -import org.springframework.web.servlet.view.velocity.VelocityViewResolver; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.Matchers.containsString; - -/** - * Tests for {@link VelocityAutoConfiguration}. - * - * @author Andy Wilkinson - * @author Stephane Nicoll - */ -@SuppressWarnings("deprecation") -public class VelocityAutoConfigurationTests { - - @Rule - public OutputCapture output = new OutputCapture(); - - private AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - - @Before - public void setupContext() { - this.context.setServletContext(new MockServletContext()); - } - - @After - public void close() { - if (this.context != null) { - this.context.close(); - } - } - - @Test - public void defaultConfiguration() { - registerAndRefreshContext(); - assertThat(this.context.getBean(VelocityViewResolver.class)).isNotNull(); - assertThat(this.context.getBean(VelocityConfigurer.class)).isNotNull(); - } - - @Test - public void nonExistentTemplateLocation() { - registerAndRefreshContext( - "spring.velocity.resourceLoaderPath:" + "classpath:/does-not-exist/"); - this.output.expect(containsString("Cannot find template location")); - } - - @Test - public void emptyTemplateLocation() { - new File("target/test-classes/templates/empty-directory").mkdir(); - registerAndRefreshContext("spring.velocity.resourceLoaderPath:" - + "classpath:/templates/empty-directory/"); - } - - @Test - public void defaultViewResolution() throws Exception { - registerAndRefreshContext(); - MockHttpServletResponse response = render("home"); - String result = response.getContentAsString(); - assertThat(result).contains("home"); - assertThat(response.getContentType()).isEqualTo("text/html;charset=UTF-8"); - } - - @Test - public void customContentType() throws Exception { - registerAndRefreshContext("spring.velocity.contentType:application/json"); - MockHttpServletResponse response = render("home"); - String result = response.getContentAsString(); - assertThat(result).contains("home"); - assertThat(response.getContentType()).isEqualTo("application/json;charset=UTF-8"); - } - - @Test - public void customCharset() throws Exception { - registerAndRefreshContext("spring.velocity.charset:ISO-8859-1"); - assertThat(this.context.getBean(VelocityConfigurer.class).getVelocityEngine() - .getProperty("input.encoding")).isEqualTo("ISO-8859-1"); - } - - @Test - public void customPrefix() throws Exception { - registerAndRefreshContext("spring.velocity.prefix:prefix/"); - MockHttpServletResponse response = render("prefixed"); - String result = response.getContentAsString(); - assertThat(result).contains("prefixed"); - } - - @Test - public void customSuffix() throws Exception { - registerAndRefreshContext("spring.velocity.suffix:.freemarker"); - MockHttpServletResponse response = render("suffixed"); - String result = response.getContentAsString(); - assertThat(result).contains("suffixed"); - } - - @Test - public void customTemplateLoaderPath() throws Exception { - registerAndRefreshContext( - "spring.velocity.resourceLoaderPath:classpath:/custom-templates/"); - MockHttpServletResponse response = render("custom"); - String result = response.getContentAsString(); - assertThat(result).contains("custom"); - } - - @Test - public void disableCache() { - registerAndRefreshContext("spring.velocity.cache:false"); - assertThat(this.context.getBean(VelocityViewResolver.class).getCacheLimit()) - .isEqualTo(0); - } - - @Test - public void customVelocitySettings() { - registerAndRefreshContext( - "spring.velocity.properties.directive.parse.max.depth:10"); - assertThat(this.context.getBean(VelocityConfigurer.class).getVelocityEngine() - .getProperty("directive.parse.max.depth")).isEqualTo("10"); - } - - @Test - public void renderTemplate() throws Exception { - registerAndRefreshContext(); - VelocityConfigurer velocity = this.context.getBean(VelocityConfigurer.class); - StringWriter writer = new StringWriter(); - Template template = velocity.getVelocityEngine().getTemplate("message.vm"); - template.process(); - VelocityContext velocityContext = new VelocityContext(); - velocityContext.put("greeting", "Hello World"); - template.merge(velocityContext, writer); - assertThat(writer.toString()).contains("Hello World"); - } - - @Test - public void renderNonWebAppTemplate() throws Exception { - AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( - VelocityAutoConfiguration.class); - try { - VelocityEngine velocity = context.getBean(VelocityEngine.class); - StringWriter writer = new StringWriter(); - Template template = velocity.getTemplate("message.vm"); - template.process(); - VelocityContext velocityContext = new VelocityContext(); - velocityContext.put("greeting", "Hello World"); - template.merge(velocityContext, writer); - assertThat(writer.toString()).contains("Hello World"); - } - finally { - context.close(); - } - } - - @Test - public void usesEmbeddedVelocityViewResolver() { - registerAndRefreshContext("spring.velocity.toolbox:/toolbox.xml"); - VelocityViewResolver resolver = this.context.getBean(VelocityViewResolver.class); - assertThat(resolver).isInstanceOf(EmbeddedVelocityViewResolver.class); - } - - @Test - public void registerResourceHandlingFilterDisabledByDefault() throws Exception { - registerAndRefreshContext(); - assertThat(this.context.getBeansOfType(ResourceUrlEncodingFilter.class)) - .isEmpty(); - } - - @Test - public void registerResourceHandlingFilterOnlyIfResourceChainIsEnabled() - throws Exception { - registerAndRefreshContext("spring.resources.chain.enabled:true"); - assertThat(this.context.getBean(ResourceUrlEncodingFilter.class)).isNotNull(); - } - - @Test - public void allowSessionOverride() { - registerAndRefreshContext("spring.velocity.allow-session-override:true"); - AbstractTemplateViewResolver viewResolver = this.context - .getBean(VelocityViewResolver.class); - assertThat(viewResolver).extracting("allowSessionOverride").containsExactly(true); - } - - private void registerAndRefreshContext(String... env) { - EnvironmentTestUtils.addEnvironment(this.context, env); - this.context.register(VelocityAutoConfiguration.class); - this.context.refresh(); - } - - public String getGreeting() { - return "Hello World"; - } - - private MockHttpServletResponse render(String viewName) throws Exception { - VelocityViewResolver resolver = this.context.getBean(VelocityViewResolver.class); - View view = resolver.resolveViewName(viewName, Locale.UK); - assertThat(view).isNotNull(); - HttpServletRequest request = new MockHttpServletRequest(); - request.setAttribute(RequestContext.WEB_APPLICATION_CONTEXT_ATTRIBUTE, - this.context); - MockHttpServletResponse response = new MockHttpServletResponse(); - view.render(null, request, response); - return response; - } - -} diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProviderTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProviderTests.java deleted file mode 100644 index 870729f9156..00000000000 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/velocity/VelocityTemplateAvailabilityProviderTests.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.velocity; - -import org.junit.Test; - -import org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider; -import org.springframework.core.io.DefaultResourceLoader; -import org.springframework.core.io.ResourceLoader; -import org.springframework.mock.env.MockEnvironment; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link VelocityTemplateAvailabilityProvider}. - * - * @author Andy Wilkinson - */ -@SuppressWarnings("deprecation") -public class VelocityTemplateAvailabilityProviderTests { - - private final TemplateAvailabilityProvider provider = new VelocityTemplateAvailabilityProvider(); - - private final ResourceLoader resourceLoader = new DefaultResourceLoader(); - - private final MockEnvironment environment = new MockEnvironment(); - - @Test - public void availabilityOfTemplateInDefaultLocation() { - assertThat(this.provider.isTemplateAvailable("home", this.environment, - getClass().getClassLoader(), this.resourceLoader)).isTrue(); - } - - @Test - public void availabilityOfTemplateThatDoesNotExist() { - assertThat(this.provider.isTemplateAvailable("whatever", this.environment, - getClass().getClassLoader(), this.resourceLoader)).isFalse(); - } - - @Test - public void availabilityOfTemplateWithCustomLoaderPath() { - this.environment.setProperty("spring.velocity.resourceLoaderPath", - "classpath:/custom-templates/"); - assertThat(this.provider.isTemplateAvailable("custom", this.environment, - getClass().getClassLoader(), this.resourceLoader)).isTrue(); - } - - @Test - public void availabilityOfTemplateWithCustomPrefix() { - this.environment.setProperty("spring.velocity.prefix", "prefix/"); - assertThat(this.provider.isTemplateAvailable("prefixed", this.environment, - getClass().getClassLoader(), this.resourceLoader)).isTrue(); - } - - @Test - public void availabilityOfTemplateWithCustomSuffix() { - this.environment.setProperty("spring.velocity.suffix", ".freemarker"); - assertThat(this.provider.isTemplateAvailable("suffixed", this.environment, - getClass().getClassLoader(), this.resourceLoader)).isTrue(); - } -} diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java index 59ed94d5799..057ea8eab1e 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java @@ -29,7 +29,9 @@ import org.springframework.http.converter.ByteArrayHttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.ResourceHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.http.converter.cbor.MappingJackson2CborHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.converter.smile.MappingJackson2SmileHttpMessageConverter; import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter; import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter; import org.springframework.http.converter.xml.SourceHttpMessageConverter; @@ -61,6 +63,8 @@ public class HttpMessageConvertersTests { SourceHttpMessageConverter.class, AllEncompassingFormHttpMessageConverter.class, MappingJackson2HttpMessageConverter.class, + MappingJackson2SmileHttpMessageConverter.class, + MappingJackson2CborHttpMessageConverter.class, MappingJackson2XmlHttpMessageConverter.class); } @@ -131,7 +135,9 @@ public class HttpMessageConvertersTests { StringHttpMessageConverter.class, ResourceHttpMessageConverter.class, SourceHttpMessageConverter.class, AllEncompassingFormHttpMessageConverter.class, - MappingJackson2HttpMessageConverter.class); + MappingJackson2HttpMessageConverter.class, + MappingJackson2SmileHttpMessageConverter.class, + MappingJackson2CborHttpMessageConverter.class); } @Test @@ -158,7 +164,8 @@ public class HttpMessageConvertersTests { assertThat(converterClasses).containsExactly(ByteArrayHttpMessageConverter.class, StringHttpMessageConverter.class, ResourceHttpMessageConverter.class, SourceHttpMessageConverter.class, - MappingJackson2HttpMessageConverter.class); + MappingJackson2HttpMessageConverter.class, + MappingJackson2SmileHttpMessageConverter.class); } @SuppressWarnings("unchecked") diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index e2cb40137e2..2bc8015f4de 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -144,18 +144,18 @@ 1.17 5.5.3 1.0-groovy-2.4 - 4.3.3.RELEASE + 5.0.0.BUILD-SNAPSHOT 1.6.2.RELEASE 1.2.3.RELEASE 3.0.7.RELEASE Hopper-SR3 - 0.20.0.RELEASE + 0.21.0.BUILD-SNAPSHOT 4.3.2.RELEASE 1.1.3.RELEASE 1.2.6.RELEASE 1.1.5.RELEASE 1.2.0.RELEASE - 1.1.2.RELEASE + 1.2.0.BUILD-SNAPSHOT 1.1.4.RELEASE 4.1.3.RELEASE 1.0.5.RELEASE @@ -177,8 +177,6 @@ 2.1.0.RELEASE 8.5.5 1.3.25.Final - 1.7 - 2.0 9f96c74 0.32 1.6.3 @@ -499,11 +497,6 @@ spring-boot-starter-validation 2.0.0.BUILD-SNAPSHOT - - org.springframework.boot - spring-boot-starter-velocity - 2.0.0.BUILD-SNAPSHOT - org.springframework.boot spring-boot-starter-web @@ -1353,22 +1346,6 @@ tomcat-jsp-api ${tomcat.version} - - org.apache.velocity - velocity - ${velocity.version} - - - org.apache.velocity - velocity-tools - ${velocity-tools.version} - - - commons-logging - commons-logging - - - org.aspectj aspectjrt diff --git a/spring-boot-deployment-tests/spring-boot-deployment-test-tomee/pom.xml b/spring-boot-deployment-tests/spring-boot-deployment-test-tomee/pom.xml index adde59e9807..5c506e88f67 100644 --- a/spring-boot-deployment-tests/spring-boot-deployment-test-tomee/pom.xml +++ b/spring-boot-deployment-tests/spring-boot-deployment-test-tomee/pom.xml @@ -17,7 +17,7 @@ ${basedir}/../.. - 1.7.4 + 7.0.1 tomee1x https://www.apache.org/dist/tomee/tomee-${tomee.version}/apache-tomee-${tomee.version}-webprofile.zip diff --git a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java index c3814a03fe6..8f31f4f8749 100755 --- a/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java +++ b/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java @@ -46,7 +46,6 @@ public class DevToolsPropertyDefaultsPostProcessor implements EnvironmentPostPro properties.put("spring.thymeleaf.cache", "false"); properties.put("spring.freemarker.cache", "false"); properties.put("spring.groovy.template.cache", "false"); - properties.put("spring.velocity.cache", "false"); properties.put("spring.mustache.cache", "false"); properties.put("server.session.persistent", "true"); properties.put("spring.h2.console.enabled", "true"); diff --git a/spring-boot-docs/pom.xml b/spring-boot-docs/pom.xml index bc2461ed8a3..8c822ff9df6 100644 --- a/spring-boot-docs/pom.xml +++ b/spring-boot-docs/pom.xml @@ -304,16 +304,6 @@ tomcat-jdbc true - - org.apache.velocity - velocity - true - - - org.apache.velocity - velocity-tools - true - org.assertj assertj-core diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 2f50b36b240..5ed6cac12e8 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -71,7 +71,6 @@ content into your application; rather pick only the properties that you need. spring.cache.caffeine.spec= # The spec to use to create caches. Check CaffeineSpec for more details on the spec format. spring.cache.couchbase.expiration=0 # Entry expiration in milliseconds. By default the entries never expire. spring.cache.ehcache.config= # The location of the configuration file to use to initialize EhCache. - spring.cache.guava.spec= # The spec to use to create caches. Check CacheBuilderSpec for more details on the spec format. spring.cache.hazelcast.config= # The location of the configuration file to use to initialize Hazelcast. spring.cache.infinispan.config= # The location of the configuration file to use to initialize Infinispan. spring.cache.jcache.config= # The location of the configuration file to use to initialize the cache manager. @@ -406,28 +405,6 @@ content into your application; rather pick only the properties that you need. spring.thymeleaf.template-resolver-order= # Order of the template resolver in the chain. spring.thymeleaf.view-names= # Comma-separated list of view names that can be resolved. - # VELOCITY TEMPLATES ({sc-spring-boot-autoconfigure}/velocity/VelocityAutoConfiguration.{sc-ext}[VelocityAutoConfiguration]) - spring.velocity.allow-request-override=false # Set whether HttpServletRequest attributes are allowed to override (hide) controller generated model attributes of the same name. - spring.velocity.allow-session-override=false # Set whether HttpSession attributes are allowed to override (hide) controller generated model attributes of the same name. - spring.velocity.cache= # Enable template caching. - spring.velocity.charset=UTF-8 # Template encoding. - spring.velocity.check-template-location=true # Check that the templates location exists. - spring.velocity.content-type=text/html # Content-Type value. - spring.velocity.date-tool-attribute= # Name of the DateTool helper object to expose in the Velocity context of the view. - spring.velocity.enabled=true # Enable MVC view resolution for this technology. - spring.velocity.expose-request-attributes=false # Set whether all request attributes should be added to the model prior to merging with the template. - spring.velocity.expose-session-attributes=false # Set whether all HttpSession attributes should be added to the model prior to merging with the template. - spring.velocity.expose-spring-macro-helpers=true # Set whether to expose a RequestContext for use by Spring's macro library, under the name "springMacroRequestContext". - spring.velocity.number-tool-attribute= # Name of the NumberTool helper object to expose in the Velocity context of the view. - spring.velocity.prefer-file-system-access=true # Prefer file system access for template loading. File system access enables hot detection of template changes. - spring.velocity.prefix= # Prefix that gets prepended to view names when building a URL. - spring.velocity.properties.*= # Additional velocity properties. - spring.velocity.request-context-attribute= # Name of the RequestContext attribute for all views. - spring.velocity.resource-loader-path=classpath:/templates/ # Template path. - spring.velocity.suffix=.vm # Suffix that gets appended to view names when building a URL. - spring.velocity.toolbox-config-location= # Velocity Toolbox config location. For instance `/WEB-INF/toolbox.xml` - spring.velocity.view-names= # White list of view names that can be resolved. - # SPRING WEB SERVICES ({sc-spring-boot-autoconfigure}/webservices/WebServicesProperties.{sc-ext}[WebServicesProperties]) spring.webservices.path=/services # Path that serves as the base URI for the services. spring.webservices.servlet.init= # Servlet init parameters to pass to Spring Web Services. diff --git a/spring-boot-docs/src/main/asciidoc/howto.adoc b/spring-boot-docs/src/main/asciidoc/howto.adoc index 844a75abba7..3791766eb3e 100644 --- a/spring-boot-docs/src/main/asciidoc/howto.adoc +++ b/spring-boot-docs/src/main/asciidoc/howto.adoc @@ -1417,41 +1417,11 @@ added. suffix (externalized to `spring.groovy.template.prefix` and `spring.groovy.template.suffix`, defaults '`classpath:/templates/`' and '`.tpl`' respectively). It can be overridden by providing a bean of the same name. -* If you use Velocity you will also have a `VelocityViewResolver` with id '`velocityViewResolver`'. - It looks for resources in a loader path (externalized to `spring.velocity.resourceLoaderPath`, - default '`classpath:/templates/`') by surrounding the view name with a prefix and suffix - (externalized to `spring.velocity.prefix` and `spring.velocity.suffix`, with empty and '`.vm`' - defaults respectively). It can be overridden by providing a bean of the same name. Check out {sc-spring-boot-autoconfigure}/web/WebMvcAutoConfiguration.{sc-ext}[`WebMvcAutoConfiguration`], {sc-spring-boot-autoconfigure}/thymeleaf/ThymeleafAutoConfiguration.{sc-ext}[`ThymeleafAutoConfiguration`], {sc-spring-boot-autoconfigure}/freemarker/FreeMarkerAutoConfiguration.{sc-ext}[`FreeMarkerAutoConfiguration`], -{sc-spring-boot-autoconfigure}/groovy/template/GroovyTemplateAutoConfiguration.{sc-ext}[`GroovyTemplateAutoConfiguration`] and -{sc-spring-boot-autoconfigure}/velocity/VelocityAutoConfiguration.{sc-ext}[`VelocityAutoConfiguration`] - - - -[[howto-customize-view-resolvers-velocity]] -=== Velocity -By default, Spring Boot configures a `VelocityViewResolver`. If you need a -`VelocityLayoutViewResolver` instead, you can easily configure your own by creating a bean -with name `velocityViewResolver`. You can also inject the `VelocityProperties` instance to -apply the base defaults to your custom view resolver. - -The following example replaces the auto-configured velocity view resolver with a -`VelocityLayoutViewResolver` defining a customized `layoutUrl` and all settings that would -have been applied from the auto-configuration: - -[source,java,indent=0,subs="verbatim,quotes,attributes"] ----- - @Bean(name = "velocityViewResolver") - public VelocityLayoutViewResolver velocityViewResolver(VelocityProperties properties) { - VelocityLayoutViewResolver resolver = new VelocityLayoutViewResolver(); - properties.applyToViewResolver(resolver); - resolver.setLayoutUrl("layout/default.vm"); - return resolver; - } ----- +{sc-spring-boot-autoconfigure}/groovy/template/GroovyTemplateAutoConfiguration.{sc-ext}[`GroovyTemplateAutoConfiguration`] @@ -2370,14 +2340,6 @@ for other Groovy customization options. -[[howto-reload-velocity-content]] -==== Velocity templates -If you are using Velocity, then set `spring.velocity.cache` to `false`. See -{sc-spring-boot-autoconfigure}/velocity/VelocityAutoConfiguration.{sc-ext}[`VelocityAutoConfiguration`] -for other Velocity customization options. - - - [[howto-reload-fast-restart]] === Fast application restarts The `spring-boot-devtools` module includes support for automatic application restarts. diff --git a/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc b/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc index 19c05edeea1..f569015b9b5 100644 --- a/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc @@ -1067,7 +1067,7 @@ is prefixed by the name of the `CacheManager` bean. It is possible to override part or all of those defaults by registering a bean with a customized version of `CachePublicMetrics`. By default, Spring Boot provides cache -statistics for EhCache, Hazelcast, Infinispan, JCache and Guava. You can add additional +statistics for EhCache, Hazelcast, Infinispan, JCache and Caffeine. You can add additional `CacheStatisticsProvider` beans if your favorite caching library isn't supported out of the box. See `CacheStatisticsAutoConfiguration` for examples. diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index a1b72a3ef55..b05288478cc 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -1774,7 +1774,7 @@ solution for all static resources, effectively adding a content hash in URLs, su ---- NOTE: Links to resources are rewritten at runtime in template, thanks to a -`ResourceUrlEncodingFilter`, auto-configured for Thymeleaf, Velocity and FreeMarker. You +`ResourceUrlEncodingFilter`, auto-configured for Thymeleaf and FreeMarker. You should manually declare this filter when using JSPs. Other template engines aren't automatically supported right now, but can be with custom template macros/helpers and the use of the @@ -1821,7 +1821,7 @@ will automatically configure Spring MVC to use it. [[boot-features-spring-mvc-template-engines]] ==== Template engines As well as REST web services, you can also use Spring MVC to serve dynamic HTML content. -Spring MVC supports a variety of templating technologies including Velocity, FreeMarker +Spring MVC supports a variety of templating technologies including FreeMarker and JSPs. Many other templating engines also ship their own Spring MVC integrations. Spring Boot includes auto-configuration support for the following templating engines: @@ -1829,7 +1829,6 @@ Spring Boot includes auto-configuration support for the following templating eng * http://freemarker.org/docs/[FreeMarker] * http://docs.groovy-lang.org/docs/next/html/documentation/template-engines.html#_the_markuptemplateengine[Groovy] * http://www.thymeleaf.org[Thymeleaf] - * http://velocity.apache.org[Velocity] (deprecated in 1.4) * http://mustache.github.io/[Mustache] TIP: JSPs should be avoided if possible, there are several @@ -3799,7 +3798,6 @@ providers (in this order): * <> * <> * <> -* <> (deprecated) * <> TIP: It is also possible to _force_ the cache provider to use via the `spring.cache.type` @@ -3992,10 +3990,10 @@ recommend to keep this setting enabled if you create your own `RedisCacheManager [[boot-features-caching-provider-caffeine]] ==== Caffeine -Caffeine is a Java 8 rewrite of Guava’s cache and will supersede the Guava support in -Spring Boot 2.0. If Caffeine is present, a `CaffeineCacheManager` is auto-configured. -Caches can be created on startup using the `spring.cache.cache-names` property and -customized by one of the following (in this order): +Caffeine is a Java 8 rewrite of Guava’s cache that supersede the Guava support. If +Caffeine is present, a `CaffeineCacheManager` is auto-configured. Caches can be created +on startup using the `spring.cache.cache-names` property and customized by one of the +following (in this order): 1. A cache spec defined by `spring.cache.caffeine.spec` 2. A `com.github.benmanes.caffeine.cache.CaffeineSpec` bean is defined @@ -4018,33 +4016,6 @@ auto-configuration. -[[boot-features-caching-provider-guava]] -==== Guava (deprecated) -If Guava is present, a `GuavaCacheManager` is auto-configured. Caches can be created -on startup using the `spring.cache.cache-names` property and customized by one of the -following (in this order): - -1. A cache spec defined by `spring.cache.guava.spec` -2. A `com.google.common.cache.CacheBuilderSpec` bean is defined -3. A `com.google.common.cache.CacheBuilder` bean is defined - -For instance, the following configuration creates a `foo` and `bar` caches with a maximum -size of 500 and a _time to live_ of 10 minutes - -[source,properties,indent=0] ----- - spring.cache.cache-names=foo,bar - spring.cache.guava.spec=maximumSize=500,expireAfterAccess=600s ----- - -Besides, if a `com.google.common.cache.CacheLoader` bean is defined, it is automatically -associated to the `GuavaCacheManager`. Since the `CacheLoader` is going to be associated -to _all_ caches managed by the cache manager, it must be defined as -`CacheLoader`. Any other generic type will be ignored by the -auto-configuration. - - - [[boot-features-caching-provider-simple]] ==== Simple If none of these options worked out, a simple implementation using `ConcurrentHashMap` diff --git a/spring-boot-parent/pom.xml b/spring-boot-parent/pom.xml index d4e401810f8..f276a74413b 100644 --- a/spring-boot-parent/pom.xml +++ b/spring-boot-parent/pom.xml @@ -19,7 +19,7 @@ .. false - 1.6 + 1.8 1.0.2.v20150114 UTF-8 UTF-8 @@ -47,11 +47,6 @@ log4j 1.2.17 - - com.google.guava - guava - 18.0 - com.squareup.okhttp okhttp diff --git a/spring-boot-samples/README.adoc b/spring-boot-samples/README.adoc index f5aeac729fd..58822583f01 100644 --- a/spring-boot-samples/README.adoc +++ b/spring-boot-samples/README.adoc @@ -222,9 +222,6 @@ The following sample applications are provided: | link:spring-boot-sample-undertow-ssl[spring-boot-sample-undertow-ssl] | Embedded Undertow configured to use SSL -| link:spring-boot-sample-velocity[spring-boot-sample-velocity] -| Non-web application that uses Velocity templates - | link:spring-boot-sample-war[spring-boot-sample-war] | Web application packaged as a war file @@ -261,9 +258,6 @@ The following sample applications are provided: | link:spring-boot-sample-web-ui[spring-boot-sample-web-ui] | Web application with a basic UI built using Bootstrap and JQuery -| link:spring-boot-sample-web-velocity[spring-boot-sample-web-velocity] -| Web application that uses Velocity templates - | link:spring-boot-sample-webservices[spring-boot-sample-webservices] | Simple contract-first SOAP web service with Spring Web Services diff --git a/spring-boot-samples/pom.xml b/spring-boot-samples/pom.xml index 954b53b9efc..3273348d028 100644 --- a/spring-boot-samples/pom.xml +++ b/spring-boot-samples/pom.xml @@ -93,7 +93,6 @@ spring-boot-sample-traditional spring-boot-sample-undertow spring-boot-sample-undertow-ssl - spring-boot-sample-velocity spring-boot-sample-war spring-boot-sample-web-freemarker spring-boot-sample-web-groovy-templates @@ -107,7 +106,6 @@ spring-boot-sample-web-static spring-boot-sample-web-thymeleaf3 spring-boot-sample-web-ui - spring-boot-sample-web-velocity spring-boot-sample-websocket-jetty spring-boot-sample-websocket-tomcat spring-boot-sample-websocket-undertow diff --git a/spring-boot-samples/spring-boot-sample-ant/pom.xml b/spring-boot-samples/spring-boot-sample-ant/pom.xml index 82f7fffe949..639359e2c01 100644 --- a/spring-boot-samples/spring-boot-sample-ant/pom.xml +++ b/spring-boot-samples/spring-boot-sample-ant/pom.xml @@ -83,7 +83,7 @@ org.springframework.boot spring-boot-antlib - 1.4.0.BUILD-SNAPSHOT + 2.0.0.BUILD-SNAPSHOT diff --git a/spring-boot-samples/spring-boot-sample-cache/README.adoc b/spring-boot-samples/spring-boot-sample-cache/README.adoc index 7bc450fb397..0adc8653c58 100644 --- a/spring-boot-samples/spring-boot-sample-cache/README.adoc +++ b/spring-boot-samples/spring-boot-sample-cache/README.adoc @@ -10,7 +10,6 @@ abstraction is supported by many caching libraries, including: * `Couchbase` * `Redis` * `Caffeine` -* `Guava` * Simple provider based on `ConcurrentHashMap` * Generic provider based on `org.springframework.Cache` bean definition(s) @@ -99,11 +98,3 @@ a redis instance with the default settings is expected on your local box). Simply add the `com.github.ben-manes.caffeine:caffeine` dependency to enable support for Caffeine. You can customize how caches are created in different ways, see `application.properties` for an example and the documentation for more details. - - - -=== Guava -Spring Boot does not provide any dependency management for _Guava_ so you'll have to add -the `com.google.guava:guava` dependency with a version. You can customize how caches are -created in different ways, see `application.properties` for an example and the -documentation for more details. diff --git a/spring-boot-samples/spring-boot-sample-cache/pom.xml b/spring-boot-samples/spring-boot-sample-cache/pom.xml index 79469341228..c9981bb7176 100644 --- a/spring-boot-samples/spring-boot-sample-cache/pom.xml +++ b/spring-boot-samples/spring-boot-sample-cache/pom.xml @@ -96,13 +96,6 @@ caffeine --> - org.springframework.boot spring-boot-starter-test diff --git a/spring-boot-samples/spring-boot-sample-cache/src/main/resources/application.properties b/spring-boot-samples/spring-boot-sample-cache/src/main/resources/application.properties index d913ffc2cc8..fe24f45857b 100644 --- a/spring-boot-samples/spring-boot-sample-cache/src/main/resources/application.properties +++ b/spring-boot-samples/spring-boot-sample-cache/src/main/resources/application.properties @@ -14,9 +14,3 @@ # Caffeine configuration # #spring.cache.caffeine.spec=maximumSize=200,expireAfterAccess=600s - - -# -# Guava configuration -# -#spring.cache.guava.spec=maximumSize=200,expireAfterAccess=600s diff --git a/spring-boot-samples/spring-boot-sample-velocity/pom.xml b/spring-boot-samples/spring-boot-sample-velocity/pom.xml deleted file mode 100644 index 963ec29c762..00000000000 --- a/spring-boot-samples/spring-boot-sample-velocity/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - 4.0.0 - - - org.springframework.boot - spring-boot-samples - 2.0.0.BUILD-SNAPSHOT - - spring-boot-sample-velocity - Spring Boot Web Velocity Sample - Spring Boot Web Velocity Sample - http://projects.spring.io/spring-boot/ - - Pivotal Software, Inc. - http://www.spring.io - - - ${basedir}/../.. - / - - - - org.springframework.boot - spring-boot-starter - - - org.springframework - spring-context-support - - - org.apache.velocity - velocity - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - - false - - - - - diff --git a/spring-boot-samples/spring-boot-sample-velocity/src/main/java/sample/velocity/SampleVelocityApplication.java b/spring-boot-samples/spring-boot-sample-velocity/src/main/java/sample/velocity/SampleVelocityApplication.java deleted file mode 100644 index 4c8e0080106..00000000000 --- a/spring-boot-samples/spring-boot-sample-velocity/src/main/java/sample/velocity/SampleVelocityApplication.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2012-2014 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package sample.velocity; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import org.apache.velocity.app.VelocityEngine; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.CommandLineRunner; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.ui.velocity.VelocityEngineUtils; - -@SpringBootApplication -@Deprecated -public class SampleVelocityApplication implements CommandLineRunner { - - @Value("${application.message}") - private String message; - - @Autowired - private VelocityEngine engine; - - @Override - public void run(String... args) throws Exception { - Map model = new HashMap(); - model.put("time", new Date()); - model.put("message", this.message); - System.out.println(VelocityEngineUtils.mergeTemplateIntoString(this.engine, - "welcome.vm", "UTF-8", model)); - } - - public static void main(String[] args) throws Exception { - SpringApplication.run(SampleVelocityApplication.class, args); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-velocity/src/main/resources/application.properties b/spring-boot-samples/spring-boot-sample-velocity/src/main/resources/application.properties deleted file mode 100644 index e504f79eb9c..00000000000 --- a/spring-boot-samples/spring-boot-sample-velocity/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -application.message: Hello, Andy diff --git a/spring-boot-samples/spring-boot-sample-velocity/src/main/resources/templates/welcome.vm b/spring-boot-samples/spring-boot-sample-velocity/src/main/resources/templates/welcome.vm deleted file mode 100644 index 7560db959d0..00000000000 --- a/spring-boot-samples/spring-boot-sample-velocity/src/main/resources/templates/welcome.vm +++ /dev/null @@ -1,2 +0,0 @@ -From application: $time -Message: $message \ No newline at end of file diff --git a/spring-boot-samples/spring-boot-sample-velocity/src/test/java/sample/velocity/SampleVelocityApplicationTests.java b/spring-boot-samples/spring-boot-sample-velocity/src/test/java/sample/velocity/SampleVelocityApplicationTests.java deleted file mode 100644 index 3f6d109e2ab..00000000000 --- a/spring-boot-samples/spring-boot-sample-velocity/src/test/java/sample/velocity/SampleVelocityApplicationTests.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package sample.velocity; - -import org.junit.ClassRule; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.rule.OutputCapture; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Basic integration tests for Velocity application with no web layer. - * - * @author Dave Syer - */ -@RunWith(SpringRunner.class) -@SpringBootTest -public class SampleVelocityApplicationTests { - - @ClassRule - public static OutputCapture output = new OutputCapture(); - - @Test - public void testVelocityTemplate() throws Exception { - String result = SampleVelocityApplicationTests.output.toString(); - assertThat(result).contains("Hello, Andy"); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/pom.xml b/spring-boot-samples/spring-boot-sample-web-velocity/pom.xml deleted file mode 100644 index 7d2ee6a4dcf..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/pom.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - 4.0.0 - - - org.springframework.boot - spring-boot-samples - 2.0.0.BUILD-SNAPSHOT - - spring-boot-sample-web-velocity - Spring Boot Web Velocity Sample - Spring Boot Web Velocity Sample - http://projects.spring.io/spring-boot/ - - Pivotal Software, Inc. - http://www.spring.io - - - ${basedir}/../.. - / - - - - org.springframework.boot - spring-boot-starter-velocity - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - - false - - - - - diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/SampleWebVelocityApplication.java b/spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/SampleWebVelocityApplication.java deleted file mode 100644 index ae63ebcad03..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/SampleWebVelocityApplication.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2012-2015 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package sample.web.velocity; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SampleWebVelocityApplication { - - public static void main(String[] args) throws Exception { - SpringApplication.run(SampleWebVelocityApplication.class, args); - } - -} diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/WelcomeController.java b/spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/WelcomeController.java deleted file mode 100644 index 417cccef3ac..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/java/sample/web/velocity/WelcomeController.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package sample.web.velocity; - -import java.util.Date; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; - -@Controller -public class WelcomeController { - - @Value("${application.message:Hello World}") - private String message = "Hello World"; - - @GetMapping("/") - public String welcome(Map model) { - model.put("time", new Date()); - model.put("message", this.message); - return "welcome"; - } - -} diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/application.properties b/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/application.properties deleted file mode 100644 index 11927c09665..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -application.message: Hello, Andy -spring.velocity.dateToolAttribute: dateTool \ No newline at end of file diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/error.vm b/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/error.vm deleted file mode 100644 index ace42110120..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/error.vm +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - Something went wrong: ${status} ${error} - - - diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/welcome.vm b/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/welcome.vm deleted file mode 100644 index 85f409d0f0c..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/src/main/resources/templates/welcome.vm +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - Time: -
    -
  • From controller: $time
  • -
  • From velocity: $dateTool
  • -
- Message: $message - - - diff --git a/spring-boot-samples/spring-boot-sample-web-velocity/src/test/java/sample/web/velocity/SampleWebVelocityApplicationTests.java b/spring-boot-samples/spring-boot-sample-web-velocity/src/test/java/sample/web/velocity/SampleWebVelocityApplicationTests.java deleted file mode 100644 index c7c76f243ba..00000000000 --- a/spring-boot-samples/spring-boot-sample-web-velocity/src/test/java/sample/web/velocity/SampleWebVelocityApplicationTests.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package sample.web.velocity; - -import java.util.Arrays; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Basic integration tests for Velocity application. - * - * @author Phillip Webb - * @author Andy Wilkinson - */ -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -@DirtiesContext -public class SampleWebVelocityApplicationTests { - - @Autowired - private TestRestTemplate restTemplate; - - @Test - public void testVelocityTemplate() throws Exception { - ResponseEntity entity = this.restTemplate.getForEntity("/", String.class); - assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); - assertThat(entity.getBody()).contains("Hello, Andy"); - } - - @Test - public void testVelocityErrorTemplate() throws Exception { - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Arrays.asList(MediaType.TEXT_HTML)); - HttpEntity requestEntity = new HttpEntity(headers); - - ResponseEntity responseEntity = this.restTemplate - .exchange("/does-not-exist", HttpMethod.GET, requestEntity, String.class); - - assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); - assertThat(responseEntity.getBody()) - .contains("Something went wrong: 404 Not Found"); - } - -} diff --git a/spring-boot-starters/pom.xml b/spring-boot-starters/pom.xml index ef798b65062..9a74150cad8 100644 --- a/spring-boot-starters/pom.xml +++ b/spring-boot-starters/pom.xml @@ -67,7 +67,6 @@ spring-boot-starter-tomcat spring-boot-starter-undertow spring-boot-starter-validation - spring-boot-starter-velocity spring-boot-starter-web spring-boot-starter-websocket spring-boot-starter-web-services diff --git a/spring-boot-starters/spring-boot-starter-velocity/pom.xml b/spring-boot-starters/spring-boot-starter-velocity/pom.xml deleted file mode 100644 index a3686de0760..00000000000 --- a/spring-boot-starters/spring-boot-starter-velocity/pom.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starters - 2.0.0.BUILD-SNAPSHOT - - spring-boot-starter-velocity - Spring Boot Velocity Starter - Starter for building MVC web applications using Velocity views. - Deprecated since 1.4 - http://projects.spring.io/spring-boot/ - - Pivotal Software, Inc. - http://www.spring.io - - - ${basedir}/../.. - - - - org.springframework.boot - spring-boot-starter - - - org.springframework.boot - spring-boot-starter-web - - - commons-beanutils - commons-beanutils - - - commons-collections - commons-collections - - - commons-digester - commons-digester - - - org.apache.velocity - velocity - - - org.apache.velocity - velocity-tools - - - org.springframework - spring-context-support - - - diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 4414a2eb58a..217f9d52f77 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -109,16 +109,6 @@ tomcat-embed-jasper true
- - org.apache.velocity - velocity - true - - - org.apache.velocity - velocity-tools - true - org.assertj assertj-core diff --git a/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedPropertyResolver.java b/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedPropertyResolver.java index 80ff09f91ee..bf8f7da890c 100644 --- a/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedPropertyResolver.java +++ b/spring-boot/src/main/java/org/springframework/boot/bind/RelaxedPropertyResolver.java @@ -86,22 +86,6 @@ public class RelaxedPropertyResolver implements PropertyResolver { return defaultValue; } - @Override - @Deprecated - public Class getPropertyAsClass(String key, Class targetType) { - RelaxedNames prefixes = new RelaxedNames(this.prefix); - RelaxedNames keys = new RelaxedNames(key); - for (String prefix : prefixes) { - for (String relaxedKey : keys) { - if (this.resolver.containsProperty(prefix + relaxedKey)) { - return this.resolver.getPropertyAsClass(prefix + relaxedKey, - targetType); - } - } - } - return null; - } - @Override public boolean containsProperty(String key) { RelaxedNames prefixes = new RelaxedNames(this.prefix); diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java index 436f3fc60eb..04ea2b95b5c 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContext.java @@ -362,7 +362,6 @@ public class EmbeddedWebApplicationContext extends GenericWebApplicationContext Set scopes = new LinkedHashSet(); scopes.add(WebApplicationContext.SCOPE_REQUEST); scopes.add(WebApplicationContext.SCOPE_SESSION); - scopes.add(WebApplicationContext.SCOPE_GLOBAL_SESSION); SCOPES = Collections.unmodifiableSet(scopes); } diff --git a/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxView.java b/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxView.java deleted file mode 100644 index d667e830120..00000000000 --- a/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxView.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.servlet.view.velocity; - -import java.io.InputStream; -import java.util.Map; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.aopalliance.intercept.MethodInterceptor; -import org.aopalliance.intercept.MethodInvocation; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.context.Context; - -import org.springframework.aop.framework.ProxyFactory; -import org.springframework.core.io.ClassPathResource; -import org.springframework.web.servlet.view.velocity.VelocityToolboxView; - -/** - * Extended version of {@link VelocityToolboxView} that can load toolbox locations from - * the classpath as well as the servlet context. This is useful when running in an - * embedded web server. - * - * @author Phillip Webb - * @author Andy Wilkinson - * @since 1.2.5 - */ -@SuppressWarnings("deprecation") -public class EmbeddedVelocityToolboxView extends VelocityToolboxView { - - @Override - protected Context createVelocityContext(Map model, - HttpServletRequest request, HttpServletResponse response) throws Exception { - org.apache.velocity.tools.view.context.ChainedContext context = new org.apache.velocity.tools.view.context.ChainedContext( - new VelocityContext(model), getVelocityEngine(), request, response, - getServletContext()); - if (getToolboxConfigLocation() != null) { - setContextToolbox(context); - } - return context; - } - - @SuppressWarnings("unchecked") - private void setContextToolbox( - org.apache.velocity.tools.view.context.ChainedContext context) { - org.apache.velocity.tools.view.ToolboxManager toolboxManager = org.apache.velocity.tools.view.servlet.ServletToolboxManager - .getInstance(getToolboxConfigFileAwareServletContext(), - getToolboxConfigLocation()); - Map toolboxContext = toolboxManager.getToolbox(context); - context.setToolbox(toolboxContext); - } - - private ServletContext getToolboxConfigFileAwareServletContext() { - ProxyFactory factory = new ProxyFactory(); - factory.setTarget(getServletContext()); - factory.addAdvice(new GetResourceMethodInterceptor(getToolboxConfigLocation())); - return (ServletContext) factory.getProxy(getClass().getClassLoader()); - } - - /** - * {@link MethodInterceptor} to allow the calls to getResourceAsStream() to resolve - * the toolboxFile from the classpath. - */ - private static class GetResourceMethodInterceptor implements MethodInterceptor { - - private final String toolboxFile; - - GetResourceMethodInterceptor(String toolboxFile) { - if (toolboxFile != null && !toolboxFile.startsWith("/")) { - toolboxFile = "/" + toolboxFile; - } - this.toolboxFile = toolboxFile; - } - - @Override - public Object invoke(MethodInvocation invocation) throws Throwable { - if (invocation.getMethod().getName().equals("getResourceAsStream") - && invocation.getArguments()[0].equals(this.toolboxFile)) { - InputStream inputStream = (InputStream) invocation.proceed(); - if (inputStream == null) { - try { - inputStream = new ClassPathResource(this.toolboxFile, - Thread.currentThread().getContextClassLoader()) - .getInputStream(); - } - catch (Exception ex) { - // Ignore - } - } - return inputStream; - } - return invocation.proceed(); - } - - } - -} diff --git a/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolver.java b/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolver.java deleted file mode 100644 index b827cbedd7c..00000000000 --- a/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolver.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.servlet.view.velocity; - -import org.springframework.web.servlet.view.velocity.VelocityView; -import org.springframework.web.servlet.view.velocity.VelocityViewResolver; - -/** - * Extended version of {@link VelocityViewResolver} that uses - * {@link EmbeddedVelocityToolboxView} when the {@link #setToolboxConfigLocation(String) - * toolboxConfigLocation} is set. - * - * @author Phillip Webb - * @since 1.2.5 - * @deprecated as of 1.4 following the deprecation of Velocity support in Spring Framework - * 4.3 - */ -@Deprecated -public class EmbeddedVelocityViewResolver extends VelocityViewResolver { - - private String toolboxConfigLocation; - - @Override - protected void initApplicationContext() { - if (this.toolboxConfigLocation != null) { - if (VelocityView.class.equals(getViewClass())) { - this.logger.info("Using EmbeddedVelocityToolboxView instead of " - + "default VelocityView due to specified toolboxConfigLocation"); - setViewClass(EmbeddedVelocityToolboxView.class); - } - } - super.initApplicationContext(); - } - - @Override - public void setToolboxConfigLocation(String toolboxConfigLocation) { - super.setToolboxConfigLocation(toolboxConfigLocation); - this.toolboxConfigLocation = toolboxConfigLocation; - } - -} diff --git a/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/package-info.java b/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/package-info.java deleted file mode 100644 index 751e75957c4..00000000000 --- a/spring-boot/src/main/java/org/springframework/boot/web/servlet/view/velocity/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-2015 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Velocity support classes. - */ -package org.springframework.boot.web.servlet.view.velocity; diff --git a/spring-boot/src/test/java/org/springframework/boot/bind/RelaxedPropertyResolverTests.java b/spring-boot/src/test/java/org/springframework/boot/bind/RelaxedPropertyResolverTests.java index 5b2079ac31f..353a5f54a16 100644 --- a/spring-boot/src/test/java/org/springframework/boot/bind/RelaxedPropertyResolverTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/bind/RelaxedPropertyResolverTests.java @@ -118,14 +118,6 @@ public class RelaxedPropertyResolverTests { .isEqualTo(345); } - @Test - @Deprecated - public void getPropertyAsClass() throws Exception { - assertThat(this.resolver.getPropertyAsClass("my-class", String.class)) - .isEqualTo(String.class); - assertThat(this.resolver.getPropertyAsClass("my-missing", String.class)).isNull(); - } - @Test public void containsProperty() throws Exception { assertThat(this.resolver.containsProperty("my-string")).isTrue(); diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java index f93eabf0dfc..f380369c282 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/EmbeddedWebApplicationContextTests.java @@ -31,8 +31,6 @@ import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; -import org.apache.struts.mock.MockHttpServletRequest; -import org.apache.struts.mock.MockHttpServletResponse; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -63,6 +61,8 @@ import org.springframework.core.annotation.Order; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.mock.web.MockFilterChain; import org.springframework.mock.web.MockFilterConfig; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.web.context.ServletContextAware; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.request.SessionScope; @@ -471,15 +471,12 @@ public class EmbeddedWebApplicationContextTests { ConfigurableListableBeanFactory factory = this.context.getBeanFactory(); factory.registerScope(WebApplicationContext.SCOPE_REQUEST, scope); factory.registerScope(WebApplicationContext.SCOPE_SESSION, scope); - factory.registerScope(WebApplicationContext.SCOPE_GLOBAL_SESSION, scope); addEmbeddedServletContainerFactoryBean(); this.context.refresh(); assertThat(factory.getRegisteredScope(WebApplicationContext.SCOPE_REQUEST)) .isSameAs(scope); assertThat(factory.getRegisteredScope(WebApplicationContext.SCOPE_SESSION)) .isSameAs(scope); - assertThat(factory.getRegisteredScope(WebApplicationContext.SCOPE_GLOBAL_SESSION)) - .isSameAs(scope); } private void addEmbeddedServletContainerFactoryBean() { diff --git a/spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxViewTests.java b/spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxViewTests.java deleted file mode 100644 index 5cfc50196e2..00000000000 --- a/spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityToolboxViewTests.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.servlet.view.velocity; - -import java.util.LinkedHashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.struts.mock.MockHttpServletRequest; -import org.apache.struts.mock.MockHttpServletResponse; -import org.apache.struts.mock.MockServletContext; -import org.apache.velocity.tools.ToolContext; -import org.junit.Test; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.view.velocity.VelocityConfigurer; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link EmbeddedVelocityToolboxView}. - * - * @author Phillip Webb - */ -@SuppressWarnings("deprecation") -public class EmbeddedVelocityToolboxViewTests { - - private static final String PATH = EmbeddedVelocityToolboxViewTests.class.getPackage() - .getName().replace(".", "/"); - - @Test - public void loadsContextFromClassPath() throws Exception { - ToolContext context = getToolContext(PATH + "/toolbox.xml"); - assertThat(context.getToolbox().keySet()).contains("math"); - } - - @Test - public void loadsWithoutConfig() throws Exception { - ToolContext context = getToolContext(null); - assertThat(context).isNotNull(); - } - - private ToolContext getToolContext(String toolboxConfigLocation) throws Exception { - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - context.setServletContext(new MockServletContext()); - context.register(Config.class); - context.refresh(); - EmbeddedVelocityToolboxView view = context - .getBean(EmbeddedVelocityToolboxView.class); - view.setToolboxConfigLocation(toolboxConfigLocation); - Map model = new LinkedHashMap(); - HttpServletRequest request = new MockHttpServletRequest(); - HttpServletResponse response = new MockHttpServletResponse(); - ToolContext toolContext = (ToolContext) view.createVelocityContext(model, request, - response); - context.close(); - return toolContext; - } - - @Configuration - static class Config { - - @Bean - public EmbeddedVelocityToolboxView view() { - EmbeddedVelocityToolboxView view = new EmbeddedVelocityToolboxView(); - view.setUrl("http://example.com"); - return view; - } - - @Bean - public VelocityConfigurer velocityConfigurer() { - return new VelocityConfigurer(); - } - - } - -} diff --git a/spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolverTests.java b/spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolverTests.java deleted file mode 100644 index 7a8efa785bc..00000000000 --- a/spring-boot/src/test/java/org/springframework/boot/web/servlet/view/velocity/EmbeddedVelocityViewResolverTests.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2012-2016 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.servlet.view.velocity; - -import org.apache.struts.mock.MockServletContext; -import org.junit.Test; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.util.ReflectionTestUtils; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.view.velocity.VelocityConfigurer; -import org.springframework.web.servlet.view.velocity.VelocityView; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link EmbeddedVelocityViewResolver}. - * - * @author Phillip Webb - */ -@SuppressWarnings("deprecation") -public class EmbeddedVelocityViewResolverTests { - - @Test - public void standardViewWithoutToolboxConfig() throws Exception { - ApplicationContext context = loadContext(WithoutToolboxConfig.class); - EmbeddedVelocityViewResolver resolver = context - .getBean(EmbeddedVelocityViewResolver.class); - Object viewClass = ReflectionTestUtils.getField(resolver, "viewClass"); - assertThat(viewClass).isEqualTo(VelocityView.class); - } - - @Test - public void embeddedViewWithToolboxConfig() throws Exception { - ApplicationContext context = loadContext(WithToolboxConfig.class); - EmbeddedVelocityViewResolver resolver = context - .getBean(EmbeddedVelocityViewResolver.class); - Object viewClass = ReflectionTestUtils.getField(resolver, "viewClass"); - assertThat(viewClass).isEqualTo(EmbeddedVelocityToolboxView.class); - } - - private ApplicationContext loadContext(Class config) { - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - context.setServletContext(new MockServletContext()); - context.register(config); - context.refresh(); - return context; - } - - @Configuration - static class WithoutToolboxConfig { - - @Bean - public EmbeddedVelocityViewResolver resolver() { - return new EmbeddedVelocityViewResolver(); - } - - @Bean - public VelocityConfigurer velocityConfigurer() { - return new VelocityConfigurer(); - } - - } - - @Configuration - static class WithToolboxConfig { - - @Bean - public EmbeddedVelocityViewResolver resolver() { - EmbeddedVelocityViewResolver resolver = new EmbeddedVelocityViewResolver(); - resolver.setToolboxConfigLocation("/toolbox.xml"); - return resolver; - } - - @Bean - public VelocityConfigurer velocityConfigurer() { - return new VelocityConfigurer(); - } - - } - -} diff --git a/spring-boot/src/test/resources/org/springframework/boot/web/servlet/view/velocity/toolbox.xml b/spring-boot/src/test/resources/org/springframework/boot/web/servlet/view/velocity/toolbox.xml deleted file mode 100644 index 6be5e9f4d89..00000000000 --- a/spring-boot/src/test/resources/org/springframework/boot/web/servlet/view/velocity/toolbox.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - math - application - org.apache.velocity.tools.generic.MathTool - -