Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dk131072
spring-framework
提交
83fa8e12
S
spring-framework
项目概览
dk131072
/
spring-framework
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
83fa8e12
编写于
5月 28, 2012
作者:
J
Juergen Hoeller
提交者:
Chris Beams
5月 28, 2012
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add initial support for JCache-compliant providers
Issue: SPR-8774
上级
86fabb26
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
320 addition
and
0 deletion
+320
-0
build.gradle
build.gradle
+1
-0
spring-context/src/main/java/org/springframework/cache/jcache/JCacheCache.java
...in/java/org/springframework/cache/jcache/JCacheCache.java
+131
-0
spring-context/src/main/java/org/springframework/cache/jcache/JCacheCacheManager.java
.../org/springframework/cache/jcache/JCacheCacheManager.java
+104
-0
spring-context/src/main/java/org/springframework/cache/jcache/JCacheManagerFactoryBean.java
...pringframework/cache/jcache/JCacheManagerFactoryBean.java
+77
-0
spring-context/src/main/java/org/springframework/cache/jcache/package-info.java
...n/java/org/springframework/cache/jcache/package-info.java
+7
-0
未找到文件。
build.gradle
浏览文件 @
83fa8e12
...
...
@@ -217,6 +217,7 @@ project('spring-context') {
exclude
group:
'org.slf4j'
,
module:
'slf4j-api'
}
compile
(
"joda-time:joda-time:1.6"
,
optional
)
compile
(
"javax.cache:cache-api:0.5"
,
optional
)
compile
(
"net.sf.ehcache:ehcache-core:2.0.0"
,
optional
)
compile
(
"org.slf4j:slf4j-api:1.6.1"
,
optional
)
compile
(
"org.codehaus.jsr166-mirror:jsr166:1.7.0"
,
provided
)
...
...
spring-context/src/main/java/org/springframework/cache/jcache/JCacheCache.java
0 → 100644
浏览文件 @
83fa8e12
/*
* Copyright 2002-2012 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
java.io.Serializable
;
import
javax.cache.Status
;
import
org.springframework.cache.Cache
;
import
org.springframework.cache.support.SimpleValueWrapper
;
import
org.springframework.util.Assert
;
/**
* {@link org.springframework.cache.Cache} implementation on top of a
* {@link javax.cache.Cache} instance.
*
* @author Juergen Hoeller
* @since 3.2
*/
public
class
JCacheCache
implements
Cache
{
private
static
final
Object
NULL_HOLDER
=
new
NullHolder
();
@SuppressWarnings
(
"rawtypes"
)
private
final
javax
.
cache
.
Cache
cache
;
private
final
boolean
allowNullValues
;
/**
* Create an {@link org.springframework.cache.jcache.JCacheCache} instance.
* @param jcache backing JCache Cache instance
*/
public
JCacheCache
(
javax
.
cache
.
Cache
<?,?>
jcache
)
{
this
(
jcache
,
true
);
}
/**
* Create an {@link org.springframework.cache.jcache.JCacheCache} instance.
* @param jcache backing JCache Cache instance
* @param allowNullValues whether to accept and convert null values for this cache
*/
public
JCacheCache
(
javax
.
cache
.
Cache
<?,?>
jcache
,
boolean
allowNullValues
)
{
Assert
.
notNull
(
jcache
,
"Cache must not be null"
);
Status
status
=
jcache
.
getStatus
();
Assert
.
isTrue
(
Status
.
STARTED
.
equals
(
status
),
"A 'started' cache is required - current cache is "
+
status
.
toString
());
this
.
cache
=
jcache
;
this
.
allowNullValues
=
allowNullValues
;
}
public
String
getName
()
{
return
this
.
cache
.
getName
();
}
public
javax
.
cache
.
Cache
<?,?>
getNativeCache
()
{
return
this
.
cache
;
}
public
boolean
isAllowNullValues
()
{
return
this
.
allowNullValues
;
}
@SuppressWarnings
(
"unchecked"
)
public
ValueWrapper
get
(
Object
key
)
{
Object
value
=
this
.
cache
.
get
(
key
);
return
(
value
!=
null
?
new
SimpleValueWrapper
(
fromStoreValue
(
value
))
:
null
);
}
@SuppressWarnings
(
"unchecked"
)
public
void
put
(
Object
key
,
Object
value
)
{
this
.
cache
.
put
(
key
,
toStoreValue
(
value
));
}
@SuppressWarnings
(
"unchecked"
)
public
void
evict
(
Object
key
)
{
this
.
cache
.
remove
(
key
);
}
public
void
clear
()
{
this
.
cache
.
removeAll
();
}
/**
* Convert the given value from the internal store to a user value
* returned from the get method (adapting <code>null</code>).
* @param storeValue the store value
* @return the value to return to the user
*/
protected
Object
fromStoreValue
(
Object
storeValue
)
{
if
(
this
.
allowNullValues
&&
storeValue
==
NULL_HOLDER
)
{
return
null
;
}
return
storeValue
;
}
/**
* Convert the given user value, as passed into the put method,
* to a value in the internal store (adapting <code>null</code>).
* @param userValue the given user value
* @return the value to store
*/
protected
Object
toStoreValue
(
Object
userValue
)
{
if
(
this
.
allowNullValues
&&
userValue
==
null
)
{
return
NULL_HOLDER
;
}
return
userValue
;
}
@SuppressWarnings
(
"serial"
)
private
static
class
NullHolder
implements
Serializable
{
}
}
spring-context/src/main/java/org/springframework/cache/jcache/JCacheCacheManager.java
0 → 100644
浏览文件 @
83fa8e12
/*
* Copyright 2002-2012 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
java.util.Collection
;
import
java.util.LinkedHashSet
;
import
javax.cache.Status
;
import
org.springframework.cache.Cache
;
import
org.springframework.cache.support.AbstractCacheManager
;
import
org.springframework.util.Assert
;
/**
* {@link org.springframework.cache.CacheManager} implementation
* backed by a JCache {@link javax.cache.CacheManager}.
*
* @author Juergen Hoeller
* @since 3.2
*/
public
class
JCacheCacheManager
extends
AbstractCacheManager
{
private
javax
.
cache
.
CacheManager
cacheManager
;
private
boolean
allowNullValues
=
true
;
/**
* Set the backing JCache {@link javax.cache.CacheManager}.
*/
public
void
setCacheManager
(
javax
.
cache
.
CacheManager
cacheManager
)
{
this
.
cacheManager
=
cacheManager
;
}
/**
* Return the backing JCache {@link javax.cache.CacheManager}.
*/
public
javax
.
cache
.
CacheManager
getCacheManager
()
{
return
this
.
cacheManager
;
}
/**
* Specify whether to accept and convert null values for all caches
* in this cache manager.
* <p>Default is "true", despite JSR-107 itself not supporting null values.
* An internal holder object will be used to store user-level null values.
*/
public
void
setAllowNullValues
(
boolean
allowNullValues
)
{
this
.
allowNullValues
=
allowNullValues
;
}
/**
* Return whether this cache manager accepts and converts null values
* for all of its caches.
*/
public
boolean
isAllowNullValues
()
{
return
this
.
allowNullValues
;
}
@Override
protected
Collection
<
Cache
>
loadCaches
()
{
Assert
.
notNull
(
this
.
cacheManager
,
"A backing CacheManager is required"
);
Status
status
=
this
.
cacheManager
.
getStatus
();
Assert
.
isTrue
(
Status
.
STARTED
.
equals
(
status
),
"A 'started' JCache CacheManager is required - current cache is "
+
status
.
toString
());
Collection
<
Cache
>
caches
=
new
LinkedHashSet
<
Cache
>();
for
(
javax
.
cache
.
Cache
<?,?>
jcache
:
this
.
cacheManager
.
getCaches
())
{
caches
.
add
(
new
JCacheCache
(
jcache
,
this
.
allowNullValues
));
}
return
caches
;
}
@Override
public
Cache
getCache
(
String
name
)
{
Cache
cache
=
super
.
getCache
(
name
);
if
(
cache
==
null
)
{
// check the JCache cache again
// (in case the cache was added at runtime)
javax
.
cache
.
Cache
<?,?>
jcache
=
this
.
cacheManager
.
getCache
(
name
);
if
(
jcache
!=
null
)
{
cache
=
new
JCacheCache
(
jcache
,
this
.
allowNullValues
);
addCache
(
cache
);
}
}
return
cache
;
}
}
spring-context/src/main/java/org/springframework/cache/jcache/JCacheManagerFactoryBean.java
0 → 100644
浏览文件 @
83fa8e12
/*
* Copyright 2002-2012 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
org.springframework.beans.factory.BeanClassLoaderAware
;
import
org.springframework.beans.factory.FactoryBean
;
import
org.springframework.beans.factory.InitializingBean
;
/**
* {@link FactoryBean} for a JCache {@link javax.cache.CacheManager},
* obtaining a pre-defined CacheManager by name through the standard
* JCache {@link javax.cache.Caching} class.
*
* @author Juergen Hoeller
* @since 3.2
* @see javax.cache.Caching#getCacheManager()
* @see javax.cache.Caching#getCacheManager(String)
*/
public
class
JCacheManagerFactoryBean
implements
FactoryBean
<
CacheManager
>,
BeanClassLoaderAware
,
InitializingBean
{
private
String
cacheManagerName
=
Caching
.
DEFAULT_CACHE_MANAGER_NAME
;
private
ClassLoader
beanClassLoader
;
private
CacheManager
cacheManager
;
/**
* Specify the name of the desired CacheManager.
* Default is JCache's default.
* @see Caching#DEFAULT_CACHE_MANAGER_NAME
*/
public
void
setCacheManagerName
(
String
cacheManagerName
)
{
this
.
cacheManagerName
=
cacheManagerName
;
}
public
void
setBeanClassLoader
(
ClassLoader
classLoader
)
{
this
.
beanClassLoader
=
classLoader
;
}
public
void
afterPropertiesSet
()
{
this
.
cacheManager
=
(
this
.
beanClassLoader
!=
null
?
Caching
.
getCacheManager
(
this
.
beanClassLoader
,
this
.
cacheManagerName
)
:
Caching
.
getCacheManager
(
this
.
cacheManagerName
));
}
public
CacheManager
getObject
()
{
return
this
.
cacheManager
;
}
public
Class
<?>
getObjectType
()
{
return
(
this
.
cacheManager
!=
null
?
this
.
cacheManager
.
getClass
()
:
CacheManager
.
class
);
}
public
boolean
isSingleton
()
{
return
true
;
}
}
spring-context/src/main/java/org/springframework/cache/jcache/package-info.java
0 → 100644
浏览文件 @
83fa8e12
/**
* Implementation package for JSR-107 (javax.cache aka "JCache") based caches.
* Provides a {@link org.springframework.cache.CacheManager CacheManager}
* and {@link org.springframework.cache.Cache Cache} implementation for
* use in a Spring context, using a JSR-107 compliant cache provider.
*/
package
org.springframework.cache.jcache
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录