From 0eb40e1e5e0d49638faba605dde992bebb933c26 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Tue, 17 May 2011 18:01:35 +0000 Subject: [PATCH] revise cache API + update failing test --- .../cache/ehcache/EhCacheCache.java | 4 ++-- .../cache/interceptor/CacheAspectSupport.java | 16 ++++++++-------- ...efaultValue.java => DefaultValueWrapper.java} | 4 ++-- .../cache/support/AbstractDelegatingCache.java | 10 ++++++---- .../cache/config/annotationDrivenCacheConfig.xml | 4 ++-- 5 files changed, 20 insertions(+), 18 deletions(-) rename org.springframework.context/src/main/java/org/springframework/cache/interceptor/{DefaultValue.java => DefaultValueWrapper.java} (86%) diff --git a/org.springframework.context/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java b/org.springframework.context/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java index 567d500037..4ec6e609ba 100644 --- a/org.springframework.context/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java +++ b/org.springframework.context/src/main/java/org/springframework/cache/ehcache/EhCacheCache.java @@ -21,7 +21,7 @@ import net.sf.ehcache.Element; import net.sf.ehcache.Status; import org.springframework.cache.Cache; -import org.springframework.cache.interceptor.DefaultValue; +import org.springframework.cache.interceptor.DefaultValueWrapper; import org.springframework.util.Assert; /** @@ -60,7 +60,7 @@ public class EhCacheCache implements Cache { public ValueWrapper get(Object key) { Element element = cache.get(key); - return (element != null ? new DefaultValue(element.getObjectValue()) : null); + return (element != null ? new DefaultValueWrapper(element.getObjectValue()) : null); } public void put(Object key, Object value) { diff --git a/org.springframework.context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java b/org.springframework.context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java index 7b59f5e83d..4b82f7945c 100644 --- a/org.springframework.context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java +++ b/org.springframework.context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java @@ -185,11 +185,11 @@ public abstract class CacheAspectSupport implements InitializingBean { for (Iterator> iterator = caches.iterator(); iterator.hasNext() && !cacheHit;) { Cache cache = iterator.next(); - Cache.ValueWrapper value = cache.get(key); + Cache.ValueWrapper wrapper = cache.get(key); - if (value != null) { + if (wrapper != null) { cacheHit = true; - retVal = value.get(); + retVal = wrapper.get(); } } @@ -199,16 +199,16 @@ public abstract class CacheAspectSupport implements InitializingBean { + method); } retVal = invocation.call(); + + // update all caches + for (Cache cache : caches) { + cache.put(key, retVal); + } } else { if (log) { logger.trace("Key " + key + " found in cache, returning value " + retVal); } } - - // update all caches - for (Cache cache : caches) { - cache.put(key, retVal); - } } if (cacheOp instanceof CacheEvictOperation) { diff --git a/org.springframework.context/src/main/java/org/springframework/cache/interceptor/DefaultValue.java b/org.springframework.context/src/main/java/org/springframework/cache/interceptor/DefaultValueWrapper.java similarity index 86% rename from org.springframework.context/src/main/java/org/springframework/cache/interceptor/DefaultValue.java rename to org.springframework.context/src/main/java/org/springframework/cache/interceptor/DefaultValueWrapper.java index ec699f89ae..fe244c0a00 100644 --- a/org.springframework.context/src/main/java/org/springframework/cache/interceptor/DefaultValue.java +++ b/org.springframework.context/src/main/java/org/springframework/cache/interceptor/DefaultValueWrapper.java @@ -23,11 +23,11 @@ import org.springframework.cache.Cache.ValueWrapper; * * @author Costin Leau */ -public class DefaultValue implements ValueWrapper { +public class DefaultValueWrapper implements ValueWrapper { private final V value; - public DefaultValue(V value) { + public DefaultValueWrapper(V value) { this.value = value; } diff --git a/org.springframework.context/src/main/java/org/springframework/cache/support/AbstractDelegatingCache.java b/org.springframework.context/src/main/java/org/springframework/cache/support/AbstractDelegatingCache.java index f4bb5e209c..9a041627b8 100644 --- a/org.springframework.context/src/main/java/org/springframework/cache/support/AbstractDelegatingCache.java +++ b/org.springframework.context/src/main/java/org/springframework/cache/support/AbstractDelegatingCache.java @@ -20,7 +20,7 @@ import java.io.Serializable; import java.util.Map; import org.springframework.cache.Cache; -import org.springframework.cache.interceptor.DefaultValue; +import org.springframework.cache.interceptor.DefaultValueWrapper; import org.springframework.util.Assert; /** @@ -76,7 +76,8 @@ public abstract class AbstractDelegatingCache implements Cache { } public ValueWrapper get(Object key) { - return new DefaultValue(filterNull(delegate.get(key))); + V v = delegate.get(key); + return (v != null ? new DefaultValueWrapper(filterNull(v)) : null); } @SuppressWarnings("unchecked") @@ -85,8 +86,9 @@ public abstract class AbstractDelegatingCache implements Cache { Map map = delegate; map.put(key, NULL_HOLDER); } - - delegate.put(key, value); + else { + delegate.put(key, value); + } } public void evict(Object key) { diff --git a/org.springframework.context/src/test/resources/org/springframework/cache/config/annotationDrivenCacheConfig.xml b/org.springframework.context/src/test/resources/org/springframework/cache/config/annotationDrivenCacheConfig.xml index 58c625034d..daa81d5a5b 100644 --- a/org.springframework.context/src/test/resources/org/springframework/cache/config/annotationDrivenCacheConfig.xml +++ b/org.springframework.context/src/test/resources/org/springframework/cache/config/annotationDrivenCacheConfig.xml @@ -9,7 +9,7 @@ - + @@ -20,7 +20,7 @@ - +