How freaky. I just added the same thing but as a part of a
CollectionsUtils class. I thought that would be a good way to hide it so
a later stage could see it using the Commons.Collections version.

Bay

On 24 Aug 2001 [EMAIL PROTECTED] wrote:

> dlr         01/08/24 12:05:43
> 
>   Added:       util/src/java/org/apache/commons/util
>                         EnumerationIterator.java
>   Log:
>   An Enumeration wrapper which implements the Iterator interface.
>   
>   Revision  Changes    Path
>   1.1                  
>jakarta-commons-sandbox/util/src/java/org/apache/commons/util/EnumerationIterator.java
>   
>   Index: EnumerationIterator.java
>   ===================================================================
>   package org.apache.commons.util;
>   
>   /* ====================================================================
>    * The Apache Software License, Version 1.1
>    *
>    * Copyright (c) 2001 The Apache Software Foundation.  All rights
>    * reserved.
>    *
>    * Redistribution and use in source and binary forms, with or without
>    * modification, are permitted provided that the following conditions
>    * are met:
>    *
>    * 1. Redistributions of source code must retain the above copyright
>    *    notice, this list of conditions and the following disclaimer.
>    *
>    * 2. Redistributions in binary form must reproduce the above copyright
>    *    notice, this list of conditions and the following disclaimer in
>    *    the documentation and/or other materials provided with the
>    *    distribution.
>    *
>    * 3. The end-user documentation included with the redistribution,
>    *    if any, must include the following acknowledgment:
>    *       "This product includes software developed by the
>    *        Apache Software Foundation (http://www.apache.org/)."
>    *    Alternately, this acknowledgment may appear in the software itself,
>    *    if and wherever such third-party acknowledgments normally appear.
>    *
>    * 4. The names "Apache" and "Apache Software Foundation" and
>    *    "Apache Turbine" must not be used to endorse or promote products
>    *    derived from this software without prior written permission. For
>    *    written permission, please contact [EMAIL PROTECTED]
>    *
>    * 5. Products derived from this software may not be called "Apache",
>    *    "Apache Turbine", nor may "Apache" appear in their name, without
>    *    prior written permission of the Apache Software Foundation.
>    *
>    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
>    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
>    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
>    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>    * SUCH DAMAGE.
>    * ====================================================================
>    *
>    * This software consists of voluntary contributions made by many
>    * individuals on behalf of the Apache Software Foundation.  For more
>    * information on the Apache Software Foundation, please see
>    * <http://www.apache.org/>.
>    */
>   
>   import java.util.Collection;
>   import java.util.Enumeration;
>   import java.util.Iterator;
>   
>   /**
>    * An <code>Enumeration</code> wrapper class which implements the
>    * <code>Iterator</code> interface.
>    *
>    * @author <a href="mailto:[EMAIL PROTECTED]";>Daniel Rall</a>
>    * @version $Id: EnumerationIterator.java,v 1.1 2001/08/24 19:05:43 dlr Exp $
>    */
>   public class EnumerationIterator implements Iterator
>   {
>       private Collection collection;
>   
>       private Enumeration enum;
>   
>       private Object last = null;
>   
>       /**
>        * Creates an instance on which {@link #remove()} can be called.
>        *
>        * @param enum The enumeration to wrap.
>        * @param collection The <code>Collection</code> being iterated.
>        */
>       public EnumerationIterator(Enumeration enum, Collection collection)
>       {
>           if (enum != null)
>           {
>               this.enum = enum;
>               this.collection = collection;
>           }
>           else
>           {
>               throw new NullPointerException("enum cannot be null");
>           }
>       }
>   
>       /**
>        * Creates an instance on which {@link #remove()} cannot be called.
>        *
>        * @param enum The enumeration to wrap.
>        */
>       public EnumerationIterator(Enumeration enum)
>       {
>           this(enum, null);
>       }
>   
>       public boolean hasNext()
>       {
>           return enum.hasMoreElements();
>       }
>   
>       public Object next()
>       {
>           last = enum.nextElement();
>           return last;
>       }
>   
>       /**
>        * Functions if an associated <code>Collection</code> is known.
>        *
>        * @exception IllegalStateException <code>next()</code> not called.
>        * @exception UnsupportedOperationException No associated
>        * <code>Collection</code>.
>        */
>       public void remove()
>       {
>           if (collection != null)
>           {
>               if (last != null)
>               {
>                   collection.remove(last);
>               }
>               else
>               {
>                   throw new IllegalStateException
>                       ("next() must have been called for remove() to function");
>               }
>           }
>           else
>           {
>               throw new UnsupportedOperationException
>                   ("No Collection associated with this Iterator");
>           }
>       }
>   }
>   
>   
>   
> 

Reply via email to