parent
47711c6743
commit
21d64a74ae
|
@ -16,20 +16,11 @@
|
||||||
|
|
||||||
package org.springframework.cache.ehcache;
|
package org.springframework.cache.ehcache;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import net.sf.ehcache.Ehcache;
|
import net.sf.ehcache.Ehcache;
|
||||||
import net.sf.ehcache.Element;
|
import net.sf.ehcache.Element;
|
||||||
import net.sf.ehcache.Status;
|
import net.sf.ehcache.Status;
|
||||||
|
|
||||||
import org.springframework.cache.Cache;
|
import org.springframework.cache.Cache;
|
||||||
import org.springframework.cache.support.SimpleMapEntry;
|
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,51 +65,17 @@ public class EhCacheCache implements Cache<Object, Object> {
|
||||||
return cache.isValueInCache(value);
|
return cache.isValueInCache(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public Set<Map.Entry<Object, Object>> entrySet() {
|
|
||||||
List<Object> keys = cache.getKeys();
|
|
||||||
Set<Map.Entry<Object, Object>> entries = new LinkedHashSet<Map.Entry<Object, Object>>(keys.size());
|
|
||||||
for (Object key : keys) {
|
|
||||||
Element element = cache.get(key);
|
|
||||||
if (element != null) {
|
|
||||||
entries.add(new SimpleMapEntry(key, element.getObjectValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Collections.unmodifiableSet(entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object get(Object key) {
|
public Object get(Object key) {
|
||||||
Element element = cache.get(key);
|
Element element = cache.get(key);
|
||||||
return (element != null ? element.getObjectValue() : null);
|
return (element != null ? element.getObjectValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEmpty() {
|
|
||||||
return cache.getSize() == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public Set<Object> keySet() {
|
|
||||||
List<Object> keys = cache.getKeys();
|
|
||||||
Set<Object> keySet = new LinkedHashSet<Object>(keys.size());
|
|
||||||
for (Object key : keys) {
|
|
||||||
keySet.add(key);
|
|
||||||
}
|
|
||||||
return Collections.unmodifiableSet(keySet);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object put(Object key, Object value) {
|
public Object put(Object key, Object value) {
|
||||||
Element previous = cache.getQuiet(key);
|
Element previous = cache.getQuiet(key);
|
||||||
cache.put(new Element(key, value));
|
cache.put(new Element(key, value));
|
||||||
return (previous != null ? previous.getValue() : null);
|
return (previous != null ? previous.getValue() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void putAll(Map<? extends Object, ? extends Object> m) {
|
|
||||||
for (Map.Entry<? extends Object, ? extends Object> entry : m.entrySet()) {
|
|
||||||
cache.put(new Element(entry.getKey(), entry.getValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object remove(Object key) {
|
public Object remove(Object key) {
|
||||||
Object value = null;
|
Object value = null;
|
||||||
if (cache.isKeyInCache(key)) {
|
if (cache.isKeyInCache(key)) {
|
||||||
|
@ -129,23 +86,6 @@ public class EhCacheCache implements Cache<Object, Object> {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size() {
|
|
||||||
return cache.getSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public Collection<Object> values() {
|
|
||||||
List<Object> keys = cache.getKeys();
|
|
||||||
List<Object> values = new ArrayList<Object>(keys.size());
|
|
||||||
for (Object key : keys) {
|
|
||||||
Element element = cache.get(key);
|
|
||||||
if (element != null) {
|
|
||||||
values.add(element.getObjectValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Collections.unmodifiableCollection(values);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object putIfAbsent(Object key, Object value) {
|
public Object putIfAbsent(Object key, Object value) {
|
||||||
// putIfAbsent supported only from Ehcache 2.1
|
// putIfAbsent supported only from Ehcache 2.1
|
||||||
// return cache.putIfAbsent(new Element(key, value));
|
// return cache.putIfAbsent(new Element(key, value));
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2010 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.support;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Basic {@link Entry} implementation.
|
|
||||||
*
|
|
||||||
* @author Costin Leau
|
|
||||||
*/
|
|
||||||
public class SimpleMapEntry<K, V> implements Entry<K, V> {
|
|
||||||
private K key;
|
|
||||||
private V value;
|
|
||||||
|
|
||||||
public SimpleMapEntry(K key, V value) {
|
|
||||||
this.key = key;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleMapEntry(Map.Entry<K, V> e) {
|
|
||||||
this.key = e.getKey();
|
|
||||||
this.value = e.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public K getKey() {
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public V getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public V setValue(V value) {
|
|
||||||
V oldValue = this.value;
|
|
||||||
this.value = value;
|
|
||||||
return oldValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (!(o instanceof Map.Entry))
|
|
||||||
return false;
|
|
||||||
Map.Entry e = (Map.Entry) o;
|
|
||||||
return eq(key, e.getKey()) && eq(value, e.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
public int hashCode() {
|
|
||||||
return ((key == null) ? 0 : key.hashCode()) ^ ((value == null) ? 0 : value.hashCode());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return key + "=" + value;
|
|
||||||
}
|
|
||||||
|
|
||||||
static boolean eq(Object o1, Object o2) {
|
|
||||||
return (o1 == null ? o2 == null : o1.equals(o2));
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue