Hi Christopher,

I wanted to ask one question concerning your patch,

What's your view on making the EmptyIterator class a proper public class.
Is there a strong reason for deciding that all EmptyIterators must be
the same instance?

It's probably just a style thing, but I wanted to check.

Thanks for the submission,

Bay

On Wed, 21 Nov 2001, Christopher Elkins wrote:

> Hi, all.
>
> Attached are patches to CollectionUtils and its corresponding unit test to
> add support for an "empty" iterator. This is somewhat analogous to JDK2's
> Collections.EMPTY_[LIST|MAP|SET] members.
>
> --
> Christopher Elkins
>
>
> Index: src/java/org/apache/commons/collections/CollectionUtils.java
> ===================================================================
> RCS file: 
>/home/cvspublic/jakarta-commons/collections/src/java/org/apache/commons/collections/CollectionUtils.java,v
> retrieving revision 1.5
> diff -u -r1.5 CollectionUtils.java
> --- src/java/org/apache/commons/collections/CollectionUtils.java      2001/08/29 
>16:10:29     1.5
> +++ src/java/org/apache/commons/collections/CollectionUtils.java      2001/11/21 
>21:41:01
> @@ -80,6 +80,26 @@
>   * @version $Id: CollectionUtils.java,v 1.5 2001/08/29 16:10:29 jstrachan Exp $
>   */
>  public class CollectionUtils {
> +
> +    /**
> +     * The empty iterator (immutable).
> +     */
> +    public static final Iterator EMPTY_ITERATOR = new EmptyIterator();
> +
> +    private static class EmptyIterator implements Iterator {
> +        public boolean hasNext() {
> +            return false;
> +        }
> +
> +        public Object next() {
> +            throw new NoSuchElementException();
> +        }
> +
> +        public void remove() {
> +            throw new UnsupportedOperationException();
> +        }
> +    }
> +
>      /**
>       * Returns a {@link Collection} containing the union
>       * of the given {@link Collection}s.
> Index: src/test/org/apache/commons/collections/TestCollectionUtils.java
> ===================================================================
> RCS file: 
>/home/cvspublic/jakarta-commons/collections/src/test/org/apache/commons/collections/TestCollectionUtils.java,v
> retrieving revision 1.2
> diff -u -r1.2 TestCollectionUtils.java
> --- src/test/org/apache/commons/collections/TestCollectionUtils.java  2001/07/14 
>23:33:27     1.2
> +++ src/test/org/apache/commons/collections/TestCollectionUtils.java  2001/11/21 
>21:41:01
> @@ -310,4 +310,19 @@
>          assertTrue(CollectionUtils.isEqualCollection(a,b));
>          assertTrue(CollectionUtils.isEqualCollection(b,a));
>      }
> +
> +    public void testEmptyIterator() {
> +        Iterator i = CollectionUtils.EMPTY_ITERATOR;
> +        assertTrue(!i.hasNext());
> +
> +        try {
> +            i.next();
> +            fail("Should raise a NoSuchElementException");
> +        } catch (NoSuchElementException e) {}
> +
> +        try {
> +            i.remove();
> +            fail("Should raise an UnsupportedOperationException");
> +        } catch (UnsupportedOperationException e) {}
> +    }
>  }
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to