Author: toad
Date: 2007-06-28 15:02:56 +0000 (Thu, 28 Jun 2007)
New Revision: 13808
Modified:
trunk/freenet/src/freenet/support/SimpleFieldSet.java
Log:
Fix KeyIterator.hasNext()
Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java 2007-06-28
14:30:12 UTC (rev 13807)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java 2007-06-28
15:02:56 UTC (rev 13808)
@@ -496,10 +496,18 @@
public boolean hasNext() {
synchronized(SimpleFieldSet.this) {
- if(valuesIterator.hasNext()) return true;
- if((subIterator != null) &&
subIterator.hasNext()) return true;
- if(subIterator != null) subIterator = null;
- return false;
+ while(true) {
+ if(valuesIterator.hasNext()) return
true;
+ if((subIterator != null) &&
subIterator.hasNext()) return true;
+ if(subIterator != null) subIterator =
null;
+ if(subsetIterator != null &&
subsetIterator.hasNext()) {
+ String key = (String)
subsetIterator.next();
+ SimpleFieldSet fs =
(SimpleFieldSet) subsets.get(key);
+ String newPrefix = prefix + key
+ MULTI_LEVEL_CHAR;
+ subIterator =
fs.keyIterator(newPrefix);
+ } else
+ return false;
+ }
}
}