diff options
author | Mark Spruiell <mes@zeroc.com> | 2002-09-25 19:33:57 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2002-09-25 19:33:57 +0000 |
commit | 41c5025652d64fd2d59ec4e4451d372ad308c6ad (patch) | |
tree | 1efb5715cb44f618ed7881d2e07d4d8e83d741ea /java/src/Freeze/EvictorIteratorI.java | |
parent | copy the identities to allow concurrent database access (diff) | |
download | ice-41c5025652d64fd2d59ec4e4451d372ad308c6ad.tar.bz2 ice-41c5025652d64fd2d59ec4e4451d372ad308c6ad.tar.xz ice-41c5025652d64fd2d59ec4e4451d372ad308c6ad.zip |
bug fix
Diffstat (limited to 'java/src/Freeze/EvictorIteratorI.java')
-rw-r--r-- | java/src/Freeze/EvictorIteratorI.java | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/java/src/Freeze/EvictorIteratorI.java b/java/src/Freeze/EvictorIteratorI.java index 213294aa3c5..b2c2244a60d 100644 --- a/java/src/Freeze/EvictorIteratorI.java +++ b/java/src/Freeze/EvictorIteratorI.java @@ -19,28 +19,26 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator // this iterator to continue to function even if the // database is accessed and the map iterator is invalidated. // - java.util.ArrayList list = new java.util.ArrayList(); while(iterator.hasNext()) { - list.add(iterator.next()); + java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next(); + _identities.add(entry.getKey()); } - _identities= new Ice.Identity[list.size()]; - list.toArray(_identities); - _pos = 0; + _iterator = _identities.iterator(); } public boolean hasNext() { - return _pos < _identities.length; + return _iterator != null && _iterator.hasNext(); } public Ice.Identity next() { - if(_pos < _identities.length) + if(_iterator != null) { - return _identities[_pos++]; + return (Ice.Identity)_iterator.next(); } else { @@ -51,9 +49,10 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator public void destroy() { - _pos = _identities.length; + _identities = null; + _iterator = null; } - private Ice.Identity[] _identities; - private int _pos; + private java.util.ArrayList _identities = new java.util.ArrayList(); + private java.util.Iterator _iterator; } |