summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/utils/TransientCache.java
diff options
context:
space:
mode:
authorabranson <andrew.branson@cern.ch>2011-08-02 22:10:28 +0200
committerabranson <andrew.branson@cern.ch>2011-08-02 22:10:28 +0200
commit5664fd4644c78f4571a1a72e6b9f0511fb10720a (patch)
tree7be1c346d1d001bf6b079089f995a60c52b955c1 /source/com/c2kernel/utils/TransientCache.java
parent29bbf451a22916d39017ec1a3f53f4e0f0e65ee0 (diff)
Finished move to generics. Enforced 1.6 compliance for now. No errors or
warnings :)
Diffstat (limited to 'source/com/c2kernel/utils/TransientCache.java')
-rw-r--r--[-rwxr-xr-x]source/com/c2kernel/utils/TransientCache.java57
1 files changed, 28 insertions, 29 deletions
diff --git a/source/com/c2kernel/utils/TransientCache.java b/source/com/c2kernel/utils/TransientCache.java
index b93bbd7..8991b87 100755..100644
--- a/source/com/c2kernel/utils/TransientCache.java
+++ b/source/com/c2kernel/utils/TransientCache.java
@@ -12,18 +12,17 @@ import java.util.*;
* Copyright (C) 2003 CERN - European Organization for Nuclear Research
* All rights reserved.
**************************************************************************/
-public abstract class TransientCache extends AbstractMap {
+public abstract class TransientCache<K, V> extends AbstractMap<K, V> {
- private Map map = new Hashtable();
- public synchronized Set entrySet() {
- Map newMap;
- Iterator iter;
- newMap = new Hashtable();
- iter = map.entrySet().iterator();
+ private Map<K, Reference<V>> map = new Hashtable<K, Reference<V>>();
+
+ public synchronized Set<Entry<K, V>> entrySet() {
+ Map<K, V> newMap = new Hashtable<K,V>();
+ Iterator<Entry<K, Reference<V>>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
- Map.Entry me = (Map.Entry)iter.next();
- Reference ref = (Reference)me.getValue();
- Object o = ref.get();
+ Entry<K, Reference<V>> me = iter.next();
+ Reference<V> ref = me.getValue();
+ V o = ref.get();
if (o == null) {
// Delete cleared reference
iter.remove();
@@ -36,35 +35,35 @@ public abstract class TransientCache extends AbstractMap {
return newMap.entrySet();
}
- public synchronized Object put(Object key, Object value) {
- Reference ref = makeReference(value);
- ref = (Reference)map.put(key, ref);
+ public synchronized V put(K key, V value) {
+ Reference<V> ref = makeReference(value);
+ ref = (Reference<V>)map.put(key, ref);
if (ref != null)
return (ref.get());
return null;
}
- public abstract Reference makeReference(Object value);
+ public abstract Reference<V> makeReference(Object value);
- public Object remove(Object key) {
- Iterator i = map.entrySet().iterator();
- Entry correctEntry = null;
+ public V remove(Object key) {
+ Iterator<Entry<K, Reference<V>>> i = map.entrySet().iterator();
+ Entry<K, Reference<V>> correctEntry = null;
if (key == null) {
while (correctEntry == null && i.hasNext()) {
- Entry e = (Entry)i.next();
+ Entry<K, Reference<V>> e = i.next();
if (e.getKey() == null)
correctEntry = e;
}
} else {
while (correctEntry == null && i.hasNext()) {
- Entry e = (Entry)i.next();
+ Entry<K, Reference<V>> e = i.next();
if (key.equals(e.getKey()))
correctEntry = e;
}
}
- Object oldValue = null;
+ V oldValue = null;
if (correctEntry != null) {
- Reference correctReference = (Reference)correctEntry.getValue();
+ Reference<V> correctReference = correctEntry.getValue();
oldValue = correctReference.get();
i.remove();
}
@@ -77,21 +76,21 @@ public abstract class TransientCache extends AbstractMap {
map.entrySet().clear();
}
- private transient Set keySet = null;
+ private transient Set<K> keySet = null;
- public Set keySet() {
+ public Set<K> keySet() {
if (keySet == null) {
- keySet = new AbstractSet() {
- public Iterator iterator() {
- return new Iterator() {
- private Iterator i = map.entrySet().iterator();
+ keySet = new AbstractSet<K>() {
+ public Iterator<K> iterator() {
+ return new Iterator<K>() {
+ private Iterator<Entry<K, Reference<V>>> i = map.entrySet().iterator();
public boolean hasNext() {
return i.hasNext();
}
- public Object next() {
- return ((Entry)i.next()).getKey();
+ public K next() {
+ return i.next().getKey();
}
public void remove() {