Browse Source
This commit adds an extra test implementation that runs the cache abstraction tests using a JSR-107 cache manager. This further covers JCacheCacheManager. The actual JSR-107 implementation is ehcache-jcache that requires at least ehcache 2.8.3. Since the ehcache-core artifact is no longer a public artifact, this commit switches to the full ehcache library, that is net.sf.ehcache:ehcachepull/595/head
3 changed files with 122 additions and 1 deletions
@ -0,0 +1,116 @@
@@ -0,0 +1,116 @@
|
||||
/* |
||||
* Copyright 2002-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 org.springframework.cache.jcache; |
||||
|
||||
import javax.cache.CacheManager; |
||||
import javax.cache.Caching; |
||||
import javax.cache.configuration.MutableConfiguration; |
||||
|
||||
import org.ehcache.jcache.JCacheConfiguration; |
||||
import org.junit.After; |
||||
import org.junit.Ignore; |
||||
import org.junit.Test; |
||||
|
||||
import org.springframework.cache.annotation.CachingConfigurerSupport; |
||||
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.cache.config.AbstractAnnotationTests; |
||||
import org.springframework.cache.config.AnnotatedClassCacheableService; |
||||
import org.springframework.cache.config.CacheableService; |
||||
import org.springframework.cache.config.DefaultCacheableService; |
||||
import org.springframework.cache.config.SomeCustomKeyGenerator; |
||||
import org.springframework.cache.interceptor.KeyGenerator; |
||||
import org.springframework.cache.interceptor.SimpleKeyGenerator; |
||||
import org.springframework.context.ConfigurableApplicationContext; |
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
|
||||
/** |
||||
* |
||||
* @author Stephane Nicoll |
||||
*/ |
||||
public class JCacheEhCacheTest extends AbstractAnnotationTests { |
||||
|
||||
private CacheManager jCacheManager; |
||||
|
||||
@Override |
||||
protected ConfigurableApplicationContext getApplicationContext() { |
||||
ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(EnableCachingConfig.class); |
||||
jCacheManager = context.getBean("jCacheManager", CacheManager.class); |
||||
return context; |
||||
} |
||||
|
||||
@After |
||||
public void shutdown() { |
||||
jCacheManager.close(); |
||||
} |
||||
|
||||
@Override |
||||
@Test |
||||
@Ignore("Multi cache manager support to be added") |
||||
public void testCustomCacheManager() { |
||||
} |
||||
|
||||
@Configuration |
||||
@EnableCaching |
||||
static class EnableCachingConfig extends CachingConfigurerSupport { |
||||
|
||||
@Override |
||||
@Bean |
||||
public org.springframework.cache.CacheManager cacheManager() { |
||||
return new JCacheCacheManager(jCacheManager()); |
||||
} |
||||
|
||||
@Bean |
||||
public CacheManager jCacheManager() { |
||||
CacheManager cacheManager = Caching.getCachingProvider().getCacheManager(); |
||||
final MutableConfiguration<Object, Object> mutableConfiguration |
||||
= new MutableConfiguration<Object, Object>(); |
||||
mutableConfiguration.setStoreByValue(false); // Otherwise value has to be Serializable
|
||||
cacheManager.createCache("testCache", |
||||
new JCacheConfiguration<Object, Object>(mutableConfiguration)); |
||||
cacheManager.createCache("primary", |
||||
new JCacheConfiguration<Object, Object>(mutableConfiguration)); |
||||
cacheManager.createCache("secondary", |
||||
new JCacheConfiguration<Object, Object>(mutableConfiguration)); |
||||
|
||||
return cacheManager; |
||||
} |
||||
|
||||
@Bean |
||||
public CacheableService<?> service() { |
||||
return new DefaultCacheableService(); |
||||
} |
||||
|
||||
@Bean |
||||
public CacheableService<?> classService() { |
||||
return new AnnotatedClassCacheableService(); |
||||
} |
||||
|
||||
@Override |
||||
@Bean |
||||
public KeyGenerator keyGenerator() { |
||||
return new SimpleKeyGenerator(); |
||||
} |
||||
|
||||
@Bean |
||||
public KeyGenerator customKeyGenerator() { |
||||
return new SomeCustomKeyGenerator(); |
||||
} |
||||
|
||||
} |
||||
} |
||||
Loading…
Reference in new issue