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 @@
caffeinetrue
-
- com.google.guava
- guava
- true
- com.hazelcasthazelcast
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-jdbctrue
-
- org.apache.velocity
- velocity
- true
- org.codehaus.btmbtm
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
-
- org.springframework.boot
- spring-boot-starter-velocity
- 2.0.0.BUILD-SNAPSHOT
- org.springframework.bootspring-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.aspectjaspectjrt
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.1tomee1x
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-jdbctrue
-
- org.apache.velocity
- velocity
- true
-
-
- org.apache.velocity
- velocity-tools
- true
- org.assertjassertj-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.81.0.2.v20150114UTF-8UTF-8
@@ -47,11 +47,6 @@
log4j1.2.17
-
- com.google.guava
- guava
- 18.0
- com.squareup.okhttpokhttp
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-traditionalspring-boot-sample-undertowspring-boot-sample-undertow-ssl
- spring-boot-sample-velocityspring-boot-sample-warspring-boot-sample-web-freemarkerspring-boot-sample-web-groovy-templates
@@ -107,7 +106,6 @@
spring-boot-sample-web-staticspring-boot-sample-web-thymeleaf3spring-boot-sample-web-ui
- spring-boot-sample-web-velocityspring-boot-sample-websocket-jettyspring-boot-sample-websocket-tomcatspring-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.bootspring-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.bootspring-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-tomcatspring-boot-starter-undertowspring-boot-starter-validation
- spring-boot-starter-velocityspring-boot-starter-webspring-boot-starter-websocketspring-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-jaspertrue
-
- org.apache.velocity
- velocity
- true
-
-
- org.apache.velocity
- velocity-tools
- true
- org.assertjassertj-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
-
-