diff --git a/build.gradle b/build.gradle
index 59592e110c7..3fad5a7be8c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -43,7 +43,6 @@ configure(allprojects) { project ->
ext.freemarkerVersion = "2.3.23"
ext.groovyVersion = "2.4.7"
ext.gsonVersion = "2.7"
- ext.guavaVersion = "19.0"
ext.hamcrestVersion = "1.3"
ext.hibernate5Version = "5.2.1.Final"
ext.hibval5Version = "5.2.4.Final"
@@ -612,7 +611,6 @@ project("spring-context-support") {
optional(project(":spring-tx")) // for Quartz support
optional("javax.mail:javax.mail-api:${javamailVersion}")
optional("javax.cache:cache-api:1.0.0")
- optional("com.google.guava:guava:${guavaVersion}")
optional("com.github.ben-manes.caffeine:caffeine:${caffeineVersion}")
optional("net.sf.ehcache:ehcache:${ehcacheVersion}")
optional("org.quartz-scheduler:quartz:2.2.3")
diff --git a/spring-context-support/src/main/java/org/springframework/cache/guava/GuavaCache.java b/spring-context-support/src/main/java/org/springframework/cache/guava/GuavaCache.java
deleted file mode 100644
index b9900c246b9..00000000000
--- a/spring-context-support/src/main/java/org/springframework/cache/guava/GuavaCache.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright 2002-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.cache.guava;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-
-import com.google.common.cache.LoadingCache;
-import com.google.common.util.concurrent.UncheckedExecutionException;
-
-import org.springframework.cache.support.AbstractValueAdaptingCache;
-import org.springframework.util.Assert;
-
-/**
- * Spring {@link org.springframework.cache.Cache} adapter implementation
- * on top of a Guava {@link com.google.common.cache.Cache} instance.
- *
- *
Requires Google Guava 12.0 or higher.
- *
- * @author Juergen Hoeller
- * @author Stephane Nicoll
- * @since 4.0
- */
-public class GuavaCache extends AbstractValueAdaptingCache {
-
- private final String name;
-
- private final com.google.common.cache.Cache cache;
-
-
- /**
- * Create a {@link GuavaCache} instance with the specified name and the
- * given internal {@link com.google.common.cache.Cache} to use.
- * @param name the name of the cache
- * @param cache the backing Guava Cache instance
- */
- public GuavaCache(String name, com.google.common.cache.Cache cache) {
- this(name, cache, true);
- }
-
- /**
- * Create a {@link GuavaCache} instance with the specified name and the
- * given internal {@link com.google.common.cache.Cache} to use.
- * @param name the name of the cache
- * @param cache the backing Guava Cache instance
- * @param allowNullValues whether to accept and convert {@code null}
- * values for this cache
- */
- public GuavaCache(String name, com.google.common.cache.Cache cache, boolean allowNullValues) {
- super(allowNullValues);
- Assert.notNull(name, "Name must not be null");
- Assert.notNull(cache, "Cache must not be null");
- this.name = name;
- this.cache = cache;
- }
-
-
- @Override
- public final String getName() {
- return this.name;
- }
-
- @Override
- public final com.google.common.cache.Cache getNativeCache() {
- return this.cache;
- }
-
- @Override
- public ValueWrapper get(Object key) {
- if (this.cache instanceof LoadingCache) {
- try {
- Object value = ((LoadingCache) this.cache).get(key);
- return toValueWrapper(value);
- }
- catch (ExecutionException ex) {
- throw new UncheckedExecutionException(ex.getMessage(), ex);
- }
- }
- return super.get(key);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public T get(Object key, final Callable valueLoader) {
- try {
- return (T) fromStoreValue(this.cache.get(key, new Callable() {
- @Override
- public Object call() throws Exception {
- return toStoreValue(valueLoader.call());
- }
- }));
- }
- catch (ExecutionException ex) {
- throw new ValueRetrievalException(key, valueLoader, ex.getCause());
- }
- catch (UncheckedExecutionException ex) {
- throw new ValueRetrievalException(key, valueLoader, ex.getCause());
- }
- }
-
- @Override
- protected Object lookup(Object key) {
- return this.cache.getIfPresent(key);
- }
-
- @Override
- public void put(Object key, Object value) {
- this.cache.put(key, toStoreValue(value));
- }
-
- @Override
- public ValueWrapper putIfAbsent(Object key, final Object value) {
- try {
- PutIfAbsentCallable callable = new PutIfAbsentCallable(value);
- Object result = this.cache.get(key, callable);
- return (callable.called ? null : toValueWrapper(result));
- }
- catch (ExecutionException ex) {
- throw new IllegalStateException(ex);
- }
- }
-
- @Override
- public void evict(Object key) {
- this.cache.invalidate(key);
- }
-
- @Override
- public void clear() {
- this.cache.invalidateAll();
- }
-
-
- private class PutIfAbsentCallable implements Callable {
-
- private final Object value;
-
- private boolean called;
-
- public PutIfAbsentCallable(Object value) {
- this.value = value;
- }
-
- @Override
- public Object call() throws Exception {
- this.called = true;
- return toStoreValue(this.value);
- }
- }
-
-}
diff --git a/spring-context-support/src/main/java/org/springframework/cache/guava/GuavaCacheManager.java b/spring-context-support/src/main/java/org/springframework/cache/guava/GuavaCacheManager.java
deleted file mode 100644
index b27f86def97..00000000000
--- a/spring-context-support/src/main/java/org/springframework/cache/guava/GuavaCacheManager.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2002-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.cache.guava;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheBuilderSpec;
-import com.google.common.cache.CacheLoader;
-
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-import org.springframework.util.Assert;
-import org.springframework.util.ObjectUtils;
-
-/**
- * {@link CacheManager} implementation that lazily builds {@link GuavaCache}
- * instances for each {@link #getCache} request. Also supports a 'static' mode
- * where the set of cache names is pre-defined through {@link #setCacheNames},
- * with no dynamic creation of further cache regions at runtime.
- *
- * The configuration of the underlying cache can be fine-tuned through a
- * Guava {@link CacheBuilder} or {@link CacheBuilderSpec}, passed into this
- * CacheManager through {@link #setCacheBuilder}/{@link #setCacheBuilderSpec}.
- * A {@link CacheBuilderSpec}-compliant expression value can also be applied
- * via the {@link #setCacheSpecification "cacheSpecification"} bean property.
- *
- *
Requires Google Guava 12.0 or higher.
- *
- * @author Juergen Hoeller
- * @author Stephane Nicoll
- * @since 4.0
- * @see GuavaCache
- */
-public class GuavaCacheManager implements CacheManager {
-
- private final ConcurrentMap cacheMap = new ConcurrentHashMap<>(16);
-
- private boolean dynamic = true;
-
- private CacheBuilder cacheBuilder = CacheBuilder.newBuilder();
-
- private CacheLoader cacheLoader;
-
- private boolean allowNullValues = true;
-
-
- /**
- * Construct a dynamic GuavaCacheManager,
- * lazily creating cache instances as they are being requested.
- */
- public GuavaCacheManager() {
- }
-
- /**
- * Construct a static GuavaCacheManager,
- * managing caches for the specified cache names only.
- */
- public GuavaCacheManager(String... cacheNames) {
- setCacheNames(Arrays.asList(cacheNames));
- }
-
-
- /**
- * Specify the set of cache names for this CacheManager's 'static' mode.
- * The number of caches and their names will be fixed after a call to this method,
- * with no creation of further cache regions at runtime.
- *
Calling this with a {@code null} collection argument resets the
- * mode to 'dynamic', allowing for further creation of caches again.
- */
- public void setCacheNames(Collection cacheNames) {
- if (cacheNames != null) {
- for (String name : cacheNames) {
- this.cacheMap.put(name, createGuavaCache(name));
- }
- this.dynamic = false;
- }
- else {
- this.dynamic = true;
- }
- }
-
- /**
- * Set the Guava CacheBuilder to use for building each individual
- * {@link GuavaCache} instance.
- * @see #createNativeGuavaCache
- * @see com.google.common.cache.CacheBuilder#build()
- */
- public void setCacheBuilder(CacheBuilder cacheBuilder) {
- Assert.notNull(cacheBuilder, "CacheBuilder must not be null");
- doSetCacheBuilder(cacheBuilder);
- }
-
- /**
- * Set the Guava CacheBuilderSpec to use for building each individual
- * {@link GuavaCache} instance.
- * @see #createNativeGuavaCache
- * @see com.google.common.cache.CacheBuilder#from(CacheBuilderSpec)
- */
- public void setCacheBuilderSpec(CacheBuilderSpec cacheBuilderSpec) {
- doSetCacheBuilder(CacheBuilder.from(cacheBuilderSpec));
- }
-
- /**
- * Set the Guava cache specification String to use for building each
- * individual {@link GuavaCache} instance. The given value needs to
- * comply with Guava's {@link CacheBuilderSpec} (see its javadoc).
- * @see #createNativeGuavaCache
- * @see com.google.common.cache.CacheBuilder#from(String)
- */
- public void setCacheSpecification(String cacheSpecification) {
- doSetCacheBuilder(CacheBuilder.from(cacheSpecification));
- }
-
- /**
- * Set the Guava CacheLoader to use for building each individual
- * {@link GuavaCache} instance, turning it into a LoadingCache.
- * @see #createNativeGuavaCache
- * @see com.google.common.cache.CacheBuilder#build(CacheLoader)
- * @see com.google.common.cache.LoadingCache
- */
- public void setCacheLoader(CacheLoader cacheLoader) {
- if (!ObjectUtils.nullSafeEquals(this.cacheLoader, cacheLoader)) {
- this.cacheLoader = cacheLoader;
- refreshKnownCaches();
- }
- }
-
- /**
- * Specify whether to accept and convert {@code null} values for all caches
- * in this cache manager.
- * Default is "true", despite Guava itself not supporting {@code null} values.
- * An internal holder object will be used to store user-level {@code null}s.
- */
- public void setAllowNullValues(boolean allowNullValues) {
- if (this.allowNullValues != allowNullValues) {
- this.allowNullValues = allowNullValues;
- refreshKnownCaches();
- }
- }
-
- /**
- * Return whether this cache manager accepts and converts {@code null} values
- * for all of its caches.
- */
- public boolean isAllowNullValues() {
- return this.allowNullValues;
- }
-
-
- @Override
- public Collection getCacheNames() {
- return Collections.unmodifiableSet(this.cacheMap.keySet());
- }
-
- @Override
- public Cache getCache(String name) {
- Cache cache = this.cacheMap.get(name);
- if (cache == null && this.dynamic) {
- synchronized (this.cacheMap) {
- cache = this.cacheMap.get(name);
- if (cache == null) {
- cache = createGuavaCache(name);
- this.cacheMap.put(name, cache);
- }
- }
- }
- return cache;
- }
-
- /**
- * Create a new GuavaCache instance for the specified cache name.
- * @param name the name of the cache
- * @return the Spring GuavaCache adapter (or a decorator thereof)
- */
- protected Cache createGuavaCache(String name) {
- return new GuavaCache(name, createNativeGuavaCache(name), isAllowNullValues());
- }
-
- /**
- * Create a native Guava Cache instance for the specified cache name.
- * @param name the name of the cache
- * @return the native Guava Cache instance
- */
- protected com.google.common.cache.Cache createNativeGuavaCache(String name) {
- if (this.cacheLoader != null) {
- return this.cacheBuilder.build(this.cacheLoader);
- }
- else {
- return this.cacheBuilder.build();
- }
- }
-
- private void doSetCacheBuilder(CacheBuilder cacheBuilder) {
- if (!ObjectUtils.nullSafeEquals(this.cacheBuilder, cacheBuilder)) {
- this.cacheBuilder = cacheBuilder;
- refreshKnownCaches();
- }
- }
-
- /**
- * Create the known caches again with the current state of this manager.
- */
- private void refreshKnownCaches() {
- for (Map.Entry entry : this.cacheMap.entrySet()) {
- entry.setValue(createGuavaCache(entry.getKey()));
- }
- }
-
-}
diff --git a/spring-context-support/src/main/java/org/springframework/cache/guava/package-info.java b/spring-context-support/src/main/java/org/springframework/cache/guava/package-info.java
deleted file mode 100644
index 6f892820a98..00000000000
--- a/spring-context-support/src/main/java/org/springframework/cache/guava/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Support classes for the open source cache in Google's
- * Guava library,
- * allowing to set up Guava caches within Spring's cache abstraction.
- */
-package org.springframework.cache.guava;
diff --git a/spring-context-support/src/test/java/org/springframework/cache/guava/GuavaCacheManagerTests.java b/spring-context-support/src/test/java/org/springframework/cache/guava/GuavaCacheManagerTests.java
deleted file mode 100644
index 0f7f70beaa6..00000000000
--- a/spring-context-support/src/test/java/org/springframework/cache/guava/GuavaCacheManagerTests.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright 2002-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.cache.guava;
-
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.util.concurrent.UncheckedExecutionException;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import org.springframework.cache.Cache;
-import org.springframework.cache.CacheManager;
-
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-
-/**
- * @author Juergen Hoeller
- * @author Stephane Nicoll
- */
-public class GuavaCacheManagerTests {
-
- @Rule
- public final ExpectedException thrown = ExpectedException.none();
-
- @Test
- public void testDynamicMode() {
- CacheManager cm = new GuavaCacheManager();
- Cache cache1 = cm.getCache("c1");
- assertTrue(cache1 instanceof GuavaCache);
- Cache cache1again = cm.getCache("c1");
- assertSame(cache1again, cache1);
- Cache cache2 = cm.getCache("c2");
- assertTrue(cache2 instanceof GuavaCache);
- Cache cache2again = cm.getCache("c2");
- assertSame(cache2again, cache2);
- Cache cache3 = cm.getCache("c3");
- assertTrue(cache3 instanceof GuavaCache);
- Cache cache3again = cm.getCache("c3");
- assertSame(cache3again, cache3);
-
- cache1.put("key1", "value1");
- assertEquals("value1", cache1.get("key1").get());
- cache1.put("key2", 2);
- assertEquals(2, cache1.get("key2").get());
- cache1.put("key3", null);
- assertNull(cache1.get("key3").get());
- cache1.evict("key3");
- assertNull(cache1.get("key3"));
- }
-
- @Test
- public void testStaticMode() {
- GuavaCacheManager cm = new GuavaCacheManager("c1", "c2");
- Cache cache1 = cm.getCache("c1");
- assertTrue(cache1 instanceof GuavaCache);
- Cache cache1again = cm.getCache("c1");
- assertSame(cache1again, cache1);
- Cache cache2 = cm.getCache("c2");
- assertTrue(cache2 instanceof GuavaCache);
- Cache cache2again = cm.getCache("c2");
- assertSame(cache2again, cache2);
- Cache cache3 = cm.getCache("c3");
- assertNull(cache3);
-
- cache1.put("key1", "value1");
- assertEquals("value1", cache1.get("key1").get());
- cache1.put("key2", 2);
- assertEquals(2, cache1.get("key2").get());
- cache1.put("key3", null);
- assertNull(cache1.get("key3").get());
- cache1.evict("key3");
- assertNull(cache1.get("key3"));
-
- cm.setAllowNullValues(false);
- Cache cache1x = cm.getCache("c1");
- assertTrue(cache1x instanceof GuavaCache);
- assertTrue(cache1x != cache1);
- Cache cache2x = cm.getCache("c2");
- assertTrue(cache2x instanceof GuavaCache);
- assertTrue(cache2x != cache2);
- Cache cache3x = cm.getCache("c3");
- assertNull(cache3x);
-
- cache1x.put("key1", "value1");
- assertEquals("value1", cache1x.get("key1").get());
- cache1x.put("key2", 2);
- assertEquals(2, cache1x.get("key2").get());
- try {
- cache1x.put("key3", null);
- fail("Should have thrown NullPointerException");
- }
- catch (NullPointerException ex) {
- // expected
- }
-
- cm.setAllowNullValues(true);
- Cache cache1y = cm.getCache("c1");
-
- cache1y.put("key3", null);
- assertNull(cache1y.get("key3").get());
- cache1y.evict("key3");
- assertNull(cache1y.get("key3"));
- }
-
- @Test
- public void changeCacheSpecificationRecreateCache() {
- GuavaCacheManager cm = new GuavaCacheManager("c1");
- Cache cache1 = cm.getCache("c1");
-
- CacheBuilder cacheBuilder = CacheBuilder.newBuilder().maximumSize(10);
- cm.setCacheBuilder(cacheBuilder);
- Cache cache1x = cm.getCache("c1");
- assertTrue(cache1x != cache1);
-
- cm.setCacheBuilder(cacheBuilder); // Set same instance
- Cache cache1xx = cm.getCache("c1");
- assertSame(cache1x, cache1xx);
- }
-
- @Test
- public void changeCacheLoaderRecreateCache() {
- GuavaCacheManager cm = new GuavaCacheManager("c1");
- Cache cache1 = cm.getCache("c1");
-
- CacheLoader loader = mockCacheLoader();
- cm.setCacheLoader(loader);
- Cache cache1x = cm.getCache("c1");
- assertTrue(cache1x != cache1);
-
- cm.setCacheLoader(loader); // Set same instance
- Cache cache1xx = cm.getCache("c1");
- assertSame(cache1x, cache1xx);
- }
-
- @Test
- public void setCacheNameNullRestoreDynamicMode() {
- GuavaCacheManager cm = new GuavaCacheManager("c1");
- assertNull(cm.getCache("someCache"));
- cm.setCacheNames(null);
- assertNotNull(cm.getCache("someCache"));
- }
-
- @Test
- public void cacheLoaderUseLoadingCache() {
- GuavaCacheManager cm = new GuavaCacheManager("c1");
- cm.setCacheLoader(new CacheLoader() {
- @Override
- public Object load(Object key) throws Exception {
- if ("ping".equals(key)) {
- return "pong";
- }
- throw new IllegalArgumentException("I only know ping");
- }
- });
- Cache cache1 = cm.getCache("c1");
- Cache.ValueWrapper value = cache1.get("ping");
- assertNotNull(value);
- assertEquals("pong", value.get());
-
- thrown.expect(UncheckedExecutionException.class);
- thrown.expectMessage("I only know ping");
- assertNull(cache1.get("foo"));
- }
-
- @SuppressWarnings("unchecked")
- private CacheLoader mockCacheLoader() {
- return mock(CacheLoader.class);
- }
-
-}
diff --git a/spring-context-support/src/test/java/org/springframework/cache/guava/GuavaCacheTests.java b/spring-context-support/src/test/java/org/springframework/cache/guava/GuavaCacheTests.java
deleted file mode 100644
index d50213c001e..00000000000
--- a/spring-context-support/src/test/java/org/springframework/cache/guava/GuavaCacheTests.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2002-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.cache.guava;
-
-import com.google.common.cache.CacheBuilder;
-import org.junit.Before;
-import org.junit.Test;
-
-import org.springframework.cache.AbstractCacheTests;
-import org.springframework.cache.Cache;
-
-import static org.junit.Assert.*;
-
-/**
- * @author Stephane Nicoll
- */
-public class GuavaCacheTests extends AbstractCacheTests {
-
- private com.google.common.cache.Cache nativeCache;
- private GuavaCache cache;
-
- @Before
- public void setUp() {
- nativeCache = CacheBuilder.newBuilder().build();
- cache = new GuavaCache(CACHE_NAME, nativeCache);
- }
-
- @Override
- protected GuavaCache getCache() {
- return cache;
- }
-
- @Override
- protected Object getNativeCache() {
- return nativeCache;
- }
-
- @Test
- public void putIfAbsentNullValue() throws Exception {
- GuavaCache cache = getCache();
-
- Object key = new Object();
- Object value = null;
-
- assertNull(cache.get(key));
- assertNull(cache.putIfAbsent(key, value));
- assertEquals(value, cache.get(key).get());
- Cache.ValueWrapper wrapper = cache.putIfAbsent(key, "anotherValue");
- assertNotNull(wrapper); // A value is set but is 'null'
- assertEquals(null, wrapper.get());
- assertEquals(value, cache.get(key).get()); // not changed
- }
-
-}
diff --git a/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java b/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java
index f8314a2ad45..ad33fc4c874 100644
--- a/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java
+++ b/spring-context/src/main/java/org/springframework/cache/concurrent/ConcurrentMapCacheManager.java
@@ -39,8 +39,7 @@ import org.springframework.core.serializer.support.SerializationDelegate;
* caching scenarios. For advanced local caching needs, consider
* {@link org.springframework.cache.jcache.JCacheCacheManager},
* {@link org.springframework.cache.ehcache.EhCacheCacheManager},
- * {@link org.springframework.cache.caffeine.CaffeineCacheManager} or
- * {@link org.springframework.cache.guava.GuavaCacheManager}.
+ * {@link org.springframework.cache.caffeine.CaffeineCacheManager}.
*
* @author Juergen Hoeller
* @since 3.1
diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/SpelReproTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/SpelReproTests.java
index b080a57f431..e05b86e30eb 100644
--- a/spring-expression/src/test/java/org/springframework/expression/spel/SpelReproTests.java
+++ b/spring-expression/src/test/java/org/springframework/expression/spel/SpelReproTests.java
@@ -1905,7 +1905,7 @@ public class SpelReproTests extends AbstractExpressionTests {
StandardEvaluationContext sec = new StandardEvaluationContext();
sec.setVariable("iterable", Collections.emptyList());
SpelExpressionParser parser = new SpelExpressionParser();
- Expression expression = parser.parseExpression("T(org.springframework.expression.spel.SpelReproTests.GuavaLists).newArrayList(#iterable)");
+ Expression expression = parser.parseExpression("T(org.springframework.expression.spel.SpelReproTests.FooLists).newArrayList(#iterable)");
assertTrue(expression.getValue(sec) instanceof ArrayList);
}
@@ -2408,7 +2408,7 @@ public class SpelReproTests extends AbstractExpressionTests {
}
- public static class GuavaLists {
+ public static class FooLists {
public static List newArrayList(Iterable iterable) {
return new ArrayList<>();
diff --git a/src/asciidoc/integration.adoc b/src/asciidoc/integration.adoc
index a6ed72d8206..5c83a26b76e 100644
--- a/src/asciidoc/integration.adoc
+++ b/src/asciidoc/integration.adoc
@@ -8063,10 +8063,9 @@ materialized by the `org.springframework.cache.Cache` and
There are <> of that abstraction
available out of the box: JDK `java.util.concurrent.ConcurrentMap` based caches,
http://ehcache.org/[EhCache], Gemfire cache,
-https://github.com/ben-manes/caffeine/wiki[Caffeine],
-https://code.google.com/p/guava-libraries/wiki/CachesExplained[Guava caches] and
-JSR-107 compliant caches. See <> for more information on plugging in
-other cache stores/providers.
+https://github.com/ben-manes/caffeine/wiki[Caffeine] and JSR-107 compliant
+caches. See <> for more information on plugging in other cache
+stores/providers.
[IMPORTANT]
====
@@ -9019,41 +9018,6 @@ The Caffeine `CacheManager` also supports customs `Caffeine` and `CacheLoader`.
the https://github.com/ben-manes/caffeine/wiki[Caffeine documentation] for more
information about those.
-[[cache-store-configuration-guava]]
-==== Guava Cache
-
-The Guava implementation is located under `org.springframework.cache.guava` package and
-provides access to several features of Guava.
-
-Configuring a `CacheManager` that creates the cache on demand is straightforward:
-
-[source,xml,indent=0]
-[subs="verbatim,quotes"]
-----
-
-----
-
-It is also possible to provide the caches to use explicitly. In that case, only those
-will be made available by the manager:
-
-[source,xml,indent=0]
-[subs="verbatim,quotes"]
-----
-
-
-
- default
- books
-
-
-
-----
-
-The Guava `CacheManager` also supports customs `CacheBuilder` and `CacheLoader`. See
-the https://code.google.com/p/guava-libraries/wiki/CachesExplained[Guava documentation]
-for more information about those.
-
[[cache-store-configuration-gemfire]]
==== GemFire-based Cache