You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2006/05/06 15:59:32 UTC
svn commit: r400314 - in /jakarta/commons/proper/collections/trunk:
RELEASE-NOTES.html
src/java/org/apache/commons/collections/iterators/ListIteratorWrapper.java
src/test/org/apache/commons/collections/iterators/TestListIteratorWrapper.java
Author: scolebourne
Date: Sat May 6 06:59:30 2006
New Revision: 400314
URL: http://svn.apache.org/viewcvs?rev=400314&view=rev
Log:
Make ListIteratorWrapper resettable
rfe 39449, from Thomas Schapitz
Modified:
jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html
jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/iterators/ListIteratorWrapper.java
jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/iterators/TestListIteratorWrapper.java
Modified: jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html?rev=400314&r1=400313&r2=400314&view=diff
==============================================================================
--- jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html (original)
+++ jakarta/commons/proper/collections/trunk/RELEASE-NOTES.html Sat May 6 06:59:30 2006
@@ -79,6 +79,7 @@
<li>ListOrderedMap - additional list-like method, setValue(int,Object)</li>
<li>ListOrderedMap - additional method, put(int,Object,Object)</li>
<li>PriorityBuffer - now Serializable [36163]</li>
+<li>ListIteratorWrapper - now implements ResettableListIterator [39449]</li>
<li>IfClosure - add single argument constructor [38495]</li>
<li>All/Any/One/None Predicate - allow construction with zero or one predicates [37979]</li>
</ul>
Modified: jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/iterators/ListIteratorWrapper.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/iterators/ListIteratorWrapper.java?rev=400314&r1=400313&r2=400314&view=diff
==============================================================================
--- jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/iterators/ListIteratorWrapper.java (original)
+++ jakarta/commons/proper/collections/trunk/src/java/org/apache/commons/collections/iterators/ListIteratorWrapper.java Sat May 6 06:59:30 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation
+ * Copyright 1999-2006 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,11 +15,13 @@
*/
package org.apache.commons.collections.iterators;
+import java.util.ArrayList;
import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.ListIterator;
+import java.util.List;
import java.util.NoSuchElementException;
+import org.apache.commons.collections.ResettableListIterator;
+
/**
* Converts an iterator into a list iterator by caching the returned entries.
* <p>
@@ -37,7 +39,7 @@
* @author Morgan Delagrange
* @author Stephen Colebourne
*/
-public class ListIteratorWrapper implements ListIterator {
+public class ListIteratorWrapper implements ResettableListIterator {
/** Message used when remove, set or add are called. */
private static final String UNSUPPORTED_OPERATION_MESSAGE =
@@ -46,7 +48,7 @@
/** The underlying iterator being decorated. */
private final Iterator iterator;
/** The list being used to cache the iterator. */
- private final LinkedList list = new LinkedList();
+ private final List list = new ArrayList();
/** The current index of this iterator. */
private int currentIndex = 0;
@@ -174,6 +176,16 @@
*/
public void set(Object obj) throws UnsupportedOperationException {
throw new UnsupportedOperationException(UNSUPPORTED_OPERATION_MESSAGE);
+ }
+
+ // ResettableIterator interface
+ //-------------------------------------------------------------------------
+ /**
+ * Resets this iterator back to the position at which the iterator
+ * was created.
+ */
+ public void reset() {
+ currentIndex = 0;
}
}
Modified: jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/iterators/TestListIteratorWrapper.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/iterators/TestListIteratorWrapper.java?rev=400314&r1=400313&r2=400314&view=diff
==============================================================================
--- jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/iterators/TestListIteratorWrapper.java (original)
+++ jakarta/commons/proper/collections/trunk/src/test/org/apache/commons/collections/iterators/TestListIteratorWrapper.java Sat May 6 06:59:30 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2004 The Apache Software Foundation
+ * Copyright 2001-2006 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.apache.commons.collections.ResettableListIterator;
/**
* Tests the ListIteratorWrapper to insure that it simulates
@@ -81,7 +82,7 @@
assertTrue("Iterator should now be empty", ! iter.hasNext() );
try {
- Object testValue = iter.next();
+ iter.next();
} catch (Exception e) {
assertTrue("NoSuchElementException must be thrown",
e.getClass().equals((new NoSuchElementException()).getClass()));
@@ -96,7 +97,7 @@
}
try {
- Object testValue = iter.previous();
+ iter.previous();
} catch (Exception e) {
assertTrue("NoSuchElementException must be thrown",
e.getClass().equals((new NoSuchElementException()).getClass()));
@@ -124,5 +125,27 @@
}
-}
+ public void testReset() {
+ ResettableListIterator iter = (ResettableListIterator) makeFullIterator();
+ Object first = iter.next();
+ Object second = iter.next();
+
+ iter.reset();
+
+ // after reset, there shouldn't be any previous elements
+ assertFalse("No previous elements after reset()", iter.hasPrevious());
+
+ // after reset, the results should be the same as before
+ assertEquals("First element should be the same", first, iter.next());
+ assertEquals("Second elment should be the same", second, iter.next());
+
+ // after passing the point, where we resetted, continuation should work as expected
+ for (int i = 2; i < testArray.length; i++) {
+ Object testValue = testArray[i];
+ Object iterValue = iter.next();
+ assertEquals("Iteration value is correct", testValue, iterValue);
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org