summaryrefslogtreecommitdiff
path: root/java/src/Freeze/EvictorIteratorI.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-09-25 19:33:57 +0000
committerMark Spruiell <mes@zeroc.com>2002-09-25 19:33:57 +0000
commit41c5025652d64fd2d59ec4e4451d372ad308c6ad (patch)
tree1efb5715cb44f618ed7881d2e07d4d8e83d741ea /java/src/Freeze/EvictorIteratorI.java
parentcopy the identities to allow concurrent database access (diff)
downloadice-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.java21
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;
}