You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/06/17 22:25:23 UTC
svn commit: r1493922 - in /commons/proper/collections/trunk/src:
main/java/org/apache/commons/collections4/iterators/
test/java/org/apache/commons/collections4/iterators/
Author: tn
Date: Mon Jun 17 20:25:23 2013
New Revision: 1493922
URL: http://svn.apache.org/r1493922
Log:
[COLLECTIONS-459] Removed setArray methods in ArrayIterator and ObjectArrayIterator, made fields final if possible.
Modified:
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayIterator.java
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayListIterator.java
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayIterator.java
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayListIterator.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIterator2Test.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIteratorTest.java
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ObjectArrayIteratorTest.java
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayIterator.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayIterator.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayIterator.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayIterator.java Mon Jun 17 20:25:23 2013
@@ -37,30 +37,18 @@ import org.apache.commons.collections4.R
*/
public class ArrayIterator<E> implements ResettableIterator<E> {
- // TODO Privatise fields? Mainly read-only access
-
/** The array to iterate over */
- protected Object array;
+ protected final Object array;
/** The start index to loop from */
- protected int startIndex = 0;
+ protected final int startIndex;
/** The end index to loop to */
- protected int endIndex = 0;
+ protected final int endIndex;
/** The current iterator index */
protected int index = 0;
// Constructors
// ----------------------------------------------------------------------
/**
- * Constructor for use with <code>setArray</code>.
- * <p>
- * Using this constructor, the iterator is equivalent to an empty iterator
- * until {@link #setArray(Object)} is called to establish the array to iterate over.
- */
- public ArrayIterator() {
- super();
- }
-
- /**
* Constructs an ArrayIterator that will iterate over the values in the
* specified array.
*
@@ -69,8 +57,7 @@ public class ArrayIterator<E> implements
* @throws NullPointerException if <code>array</code> is <code>null</code>
*/
public ArrayIterator(final Object array) {
- super();
- setArray(array);
+ this(array, 0);
}
/**
@@ -84,11 +71,7 @@ public class ArrayIterator<E> implements
* @throws IndexOutOfBoundsException if the index is invalid
*/
public ArrayIterator(final Object array, final int startIndex) {
- super();
- setArray(array);
- checkBound(startIndex, "start");
- this.startIndex = startIndex;
- this.index = startIndex;
+ this(array, startIndex, Array.getLength(array));
}
/**
@@ -104,26 +87,30 @@ public class ArrayIterator<E> implements
*/
public ArrayIterator(final Object array, final int startIndex, final int endIndex) {
super();
- setArray(array);
- checkBound(startIndex, "start");
- checkBound(endIndex, "end");
- if (endIndex < startIndex) {
- throw new IllegalArgumentException("End index must not be less than start index.");
- }
+
+ this.array = array;
this.startIndex = startIndex;
this.endIndex = endIndex;
this.index = startIndex;
+
+ final int len = Array.getLength(array);
+ checkBound(startIndex, len, "start");
+ checkBound(endIndex, len, "end");
+ if (endIndex < startIndex) {
+ throw new IllegalArgumentException("End index must not be less than start index.");
+ }
}
/**
* Checks whether the index is valid or not.
*
* @param bound the index to check
+ * @param len the length of the array
* @param type the index type (for error messages)
* @throws IndexOutOfBoundsException if the index is invalid
*/
- protected void checkBound(final int bound, final String type ) {
- if (bound > this.endIndex) {
+ protected void checkBound(final int bound, final int len, final String type ) {
+ if (bound > len) {
throw new ArrayIndexOutOfBoundsException(
"Attempt to make an ArrayIterator that " + type +
"s beyond the end of the array. "
@@ -186,28 +173,23 @@ public class ArrayIterator<E> implements
}
/**
- * Sets the array that the ArrayIterator should iterate over.
- * <p>
- * If an array has previously been set (using the single-arg constructor
- * or this method) then that array is discarded in favour of this one.
- * Iteration is restarted at the start of the new array.
- * Although this can be used to reset iteration, the {@link #reset()} method
- * is a more effective choice.
+ * Gets the start index to loop from.
*
- * @param array the array that the iterator should iterate over.
- * @throws IllegalArgumentException if <code>array</code> is not an array.
- * @throws NullPointerException if <code>array</code> is <code>null</code>
+ * @return the start index
+ * @since 4.0
*/
- public void setArray(final Object array) {
- // Array.getLength throws IllegalArgumentException if the object is not
- // an array or NullPointerException if the object is null. This call
- // is made before saving the array and resetting the index so that the
- // array iterator remains in a consistent state if the argument is not
- // an array or is null.
- this.endIndex = Array.getLength(array);
- this.startIndex = 0;
- this.array = array;
- this.index = 0;
+ public int getStartIndex() {
+ return this.startIndex;
+ }
+
+ /**
+ * Gets the end index to loop to.
+ *
+ * @return the end index
+ * @since 4.0
+ */
+ public int getEndIndex() {
+ return this.endIndex;
}
/**
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayListIterator.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayListIterator.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayListIterator.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ArrayListIterator.java Mon Jun 17 20:25:23 2013
@@ -55,16 +55,6 @@ public class ArrayListIterator<E> extend
// Constructors
// ----------------------------------------------------------------------
/**
- * Constructor for use with <code>setArray</code>.
- * <p>
- * Using this constructor, the iterator is equivalent to an empty iterator
- * until {@link #setArray(Object)} is called to establish the array to iterate over.
- */
- public ArrayListIterator() {
- super();
- }
-
- /**
* Constructs an ArrayListIterator that will iterate over the values in the
* specified array.
*
@@ -88,7 +78,6 @@ public class ArrayListIterator<E> extend
*/
public ArrayListIterator(final Object array, final int startIndex) {
super(array, startIndex);
- this.startIndex = startIndex;
}
/**
@@ -105,7 +94,6 @@ public class ArrayListIterator<E> extend
*/
public ArrayListIterator(final Object array, final int startIndex, final int endIndex) {
super(array, startIndex, endIndex);
- this.startIndex = startIndex;
}
// ListIterator interface
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayIterator.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayIterator.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayIterator.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayIterator.java Mon Jun 17 20:25:23 2013
@@ -36,27 +36,16 @@ import org.apache.commons.collections4.R
public class ObjectArrayIterator<E>
implements Iterator<E>, ResettableIterator<E> {
- // TODO Privatise fields? Mainly read-only access
-
/** The array */
- protected E[] array = null;
+ protected final E[] array;
/** The start index to loop from */
- protected int startIndex = 0;
+ protected final int startIndex;
/** The end index to loop to */
- protected int endIndex = 0;
+ protected final int endIndex;
/** The current iterator index */
protected int index = 0;
- /**
- * Constructor for use with <code>setArray</code>.
- * <p>
- * Using this constructor, the iterator is equivalent to an empty iterator
- * until {@link #setArray} is called to establish the array to iterate over.
- */
- public ObjectArrayIterator() {
- super();
- }
-
+ //-------------------------------------------------------------------------
/**
* Constructs an ObjectArrayIterator that will iterate over the values in the
* specified array.
@@ -153,37 +142,13 @@ public class ObjectArrayIterator<E>
/**
* Gets the array that this iterator is iterating over.
*
- * @return the array this iterator iterates over, or <code>null</code> if
- * the no-arg constructor was used and {@link #setArray} has never
- * been called with a valid array.
+ * @return the array this iterator iterates over
*/
public E[] getArray() {
return this.array;
}
/**
- * Sets the array that the ArrayIterator should iterate over.
- * <p>
- * This method may only be called once, otherwise an IllegalStateException
- * will occur.
- * <p>
- * The {@link #reset} method can be used to reset the iterator if required.
- *
- * @param array the array that the iterator should iterate over
- * @throws IllegalStateException if the <code>array</code> was set in the constructor
- * @throws NullPointerException if <code>array</code> is <code>null</code>
- */
- public void setArray(final E[] array) {
- if (this.array != null) {
- throw new IllegalStateException("The array to iterate over has already been set");
- }
- this.array = array;
- this.startIndex = 0;
- this.endIndex = array.length;
- this.index = 0;
- }
-
- /**
* Gets the start index to loop from.
*
* @return the start index
Modified: commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayListIterator.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayListIterator.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayListIterator.java (original)
+++ commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/iterators/ObjectArrayListIterator.java Mon Jun 17 20:25:23 2013
@@ -48,16 +48,7 @@ public class ObjectArrayListIterator<E>
*/
private int lastItemIndex = -1;
- /**
- * Constructor for use with <code>setArray</code>.
- * <p>
- * Using this constructor, the iterator is equivalent to an empty iterator
- * until {@link #setArray} is called to establish the array to iterate over.
- */
- public ObjectArrayListIterator() {
- super();
- }
-
+ //-------------------------------------------------------------------------
/**
* Constructs an ObjectArrayListIterator that will iterate over the values in the
* specified array.
@@ -106,7 +97,7 @@ public class ObjectArrayListIterator<E>
* @return true if there is a previous element to return
*/
public boolean hasPrevious() {
- return this.index > this.startIndex;
+ return this.index > getStartIndex();
}
/**
@@ -144,7 +135,7 @@ public class ObjectArrayListIterator<E>
* @return the index of the item to be retrieved next
*/
public int nextIndex() {
- return this.index - this.startIndex;
+ return this.index - getStartIndex();
}
/**
@@ -153,7 +144,7 @@ public class ObjectArrayListIterator<E>
* @return the index of the item to be retrieved next
*/
public int previousIndex() {
- return this.index - this.startIndex - 1;
+ return this.index - getStartIndex() - 1;
}
/**
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIterator2Test.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIterator2Test.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIterator2Test.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIterator2Test.java Mon Jun 17 20:25:23 2013
@@ -81,29 +81,6 @@ public class ArrayIterator2Test<E> exten
}
}
- // proves that an ArrayIterator set with the constructor has the same number of elements
- // as an ArrayIterator set with setArray(Object)
- public void testSetArray() {
- final Iterator<E> iter1 = makeArrayIterator(testArray);
- int count1 = 0;
- while (iter1.hasNext()) {
- ++count1;
- iter1.next();
- }
-
- assertEquals("the count should be right using the constructor", count1, testArray.length);
-
- final ArrayIterator<E> iter2 = makeObject();
- iter2.setArray(testArray);
- int count2 = 0;
- while (iter2.hasNext()) {
- ++count2;
- iter2.next();
- }
-
- assertEquals("the count should be right using setArray(Object)", count2, testArray.length);
- }
-
public void testIndexedArray() {
Iterator<E> iter = makeArrayIterator(testArray, 2);
int count = 0;
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIteratorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIteratorTest.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIteratorTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ArrayIteratorTest.java Mon Jun 17 20:25:23 2013
@@ -77,15 +77,6 @@ public class ArrayIteratorTest<E> extend
} catch (final NullPointerException e) {
// expected
}
-
- final ArrayIterator<Object> iter = new ArrayIterator<Object>();
- try {
- iter.setArray(null);
-
- fail("setArray(null) should throw a NullPointerException");
- } catch (final NullPointerException e) {
- // expected
- }
}
public void testReset() {
Modified: commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ObjectArrayIteratorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ObjectArrayIteratorTest.java?rev=1493922&r1=1493921&r2=1493922&view=diff
==============================================================================
--- commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ObjectArrayIteratorTest.java (original)
+++ commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/iterators/ObjectArrayIteratorTest.java Mon Jun 17 20:25:23 2013
@@ -94,26 +94,6 @@ public class ObjectArrayIteratorTest<E>
} catch (final NullPointerException e) {
// expected
}
-
- final ObjectArrayIterator<E> iter = makeArrayIterator();
- try {
- iter.setArray(null);
-
- fail("setArray(null) should throw a NullPointerException");
- } catch (final NullPointerException e) {
- // expected
- }
- }
-
- @SuppressWarnings("unchecked")
- public void testDoubleSet() {
- final ObjectArrayIterator<E> it = makeArrayIterator();
- it.setArray((E[]) new String[0]);
- try {
- it.setArray((E[]) new String[0]);
- fail();
- } catch (final IllegalStateException ex) {
- }
}
@SuppressWarnings("unchecked")