The purge() method causes ConcurrentModificationException as it uses
map.remove() in the middle of iteration. I've changed it to use
Iterator.remove()
public void purge() {
Map map = getMap();
Set keys = map.keySet();
if ( keys == null ) {
return;
}
for ( Iterator i = keys.iterator(); i.hasNext(); ) {
Object key = (Object) i.next();
Reference ref = (Reference) map.get( key );
if ( ref.get() == null ) {
i.remove(); // <-- Modified line
}
}
}
Besides, I have a modified SoftRefHashMap version which does more efficient
purging by using the java.lang.ref.ReferenceQueue, similar to what
java.util.WeakHashMap does. Should I post the modification to the mailing list?
--
John Yu Scioworks Technologies
e: [EMAIL PROTECTED] w: +(65) 873 5989
w: http://www.scioworks.com m: +(65) 9782 9610
Scioworks Camino - "Rapid WebApp Assembly for Struts"
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>