From 0ec8481c10cd8277d84c7c1a785483a0a739e5a0 Mon Sep 17 00:00:00 2001 From: abranson Date: Thu, 4 Aug 2011 00:42:34 +0200 Subject: More code cleanup: Refactored Entity Proxy Subscription to handle generics better Rewrote RemoteMap to use TreeMap instead of the internal array for order. It now sorts its keys by number if they parse, else as strings. Removed a no-longer-in-progress outcome form class --- source/com/c2kernel/utils/TransientCache.java | 66 +++++++++++++++++---------- 1 file changed, 41 insertions(+), 25 deletions(-) (limited to 'source/com/c2kernel/utils/TransientCache.java') diff --git a/source/com/c2kernel/utils/TransientCache.java b/source/com/c2kernel/utils/TransientCache.java index 8991b87..d58617e 100644 --- a/source/com/c2kernel/utils/TransientCache.java +++ b/source/com/c2kernel/utils/TransientCache.java @@ -1,9 +1,14 @@ package com.c2kernel.utils; -import java.lang.ref.*; -import java.util.*; +import java.lang.ref.Reference; +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; /************************************************************************** - * TransientCache - Uses transient references to allow unused entries to be + * TransientCache - Uses transient references to allow unused entries to be * reaped by the java garbage collector. * * $Revision: 1.1 $ @@ -13,10 +18,11 @@ import java.util.*; * All rights reserved. **************************************************************************/ public abstract class TransientCache extends AbstractMap { - + private Map> map = new Hashtable>(); - - public synchronized Set> entrySet() { + + @Override + public synchronized Set> entrySet() { Map newMap = new Hashtable(); Iterator>> iter = map.entrySet().iterator(); while (iter.hasNext()) { @@ -24,28 +30,30 @@ public abstract class TransientCache extends AbstractMap { Reference ref = me.getValue(); V o = ref.get(); if (o == null) { - // Delete cleared reference + // Delete cleared reference iter.remove(); } else { - // Copy out interior object + // Copy out interior object newMap.put(me.getKey(), o); } } - // Return set of interior objects + // Return set of interior objects return newMap.entrySet(); } - - public synchronized V put(K key, V value) { + + @Override + public synchronized V put(K key, V value) { Reference ref = makeReference(value); - ref = (Reference)map.put(key, ref); + ref = map.put(key, ref); if (ref != null) return (ref.get()); return null; } - + public abstract Reference makeReference(Object value); - - public V remove(Object key) { + + @Override + public V remove(Object key) { Iterator>> i = map.entrySet().iterator(); Entry> correctEntry = null; if (key == null) { @@ -72,38 +80,46 @@ public abstract class TransientCache extends AbstractMap { /** * */ - public void clear() { + @Override + public void clear() { map.entrySet().clear(); } - + private transient Set keySet = null; - - public Set keySet() { + + @Override + public Set keySet() { if (keySet == null) { keySet = new AbstractSet() { - public Iterator iterator() { + @Override + public Iterator iterator() { return new Iterator() { private Iterator>> i = map.entrySet().iterator(); - public boolean hasNext() { + @Override + public boolean hasNext() { return i.hasNext(); } - public K next() { + @Override + public K next() { return i.next().getKey(); } - public void remove() { + @Override + public void remove() { i.remove(); } }; } - public int size() { + @Override + public int size() { return TransientCache.this.size(); } - public boolean contains(Object k) { + @Override + public boolean contains(Object k) { return TransientCache.this.containsKey(k); } }; -- cgit v1.2.3