Project Report: fawkez

Packagesummary org.jcoderz.commons.util

org.jcoderz.commons.util.SerializableIterator

LineHitsNoteSource
1  /*
2   * $Id: SerializableIterator.java 1011 2008-06-16 17:57:36Z amandel $
3   *
4   * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions are
8   * met:
9   *
10   *    * Redistributions of source code must retain the above copyright
11   *      notice, this list of conditions and the following disclaimer.
12   *    * Redistributions in binary form must reproduce the above
13   *      copyright notice, this list of conditions and the following
14   *      disclaimer in the documentation and/or other materials
15   *      provided with the distribution.
16   *    * Neither the name of the jCoderZ.org Project nor the names of
17   *      its contributors may be used to endorse or promote products
18   *      derived from this software without specific prior written
19   *      permission.
20   *
21   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   */
33  package org.jcoderz.commons.util;
34  
35  import java.io.Serializable;
36  import java.util.ArrayList;
37  import java.util.Arrays;
38  import java.util.Collection;
39  import java.util.Iterator;
40  import java.util.List;
41  import java.util.NoSuchElementException;
42  
43  /**
44   * Provides a serializable iterator over a collection (which may
45   * be either a {@link java.util.Collection} or an array of Objects. The
46   * {@link #remove()} operation is not supported in this implementation.
47   *
48   * NOTE: It is the caller's responsibility to ensure that all objects in
49   * the arguments passed to the factory methods are serializable. The
50   * implementation does not check this.
51   *
52   * @author Albrecht Messner
53   */
54  public final class SerializableIterator
55        implements Iterator, Serializable
56  {
57     static final long serialVersionUID = 1L;
58  
59     private final List mItems;
60100    private int mNextIndex = 0;
61  
62  
63     private SerializableIterator (Collection c)
64100    {
65100       mItems = new ArrayList();
66100       mItems.addAll(c);
67100    }
68  
69     /**
70      * Construct a new iterator from the given collection. All elements
71      * of the collection will be copied to an internal list.
72      *
73      * @param collection the collection for which an iterator should be
74      *       created. All elements in the collection must be serializable.
75      * @return a serializable iterator over the given collection
76      */
77     public static SerializableIterator fromCollection (Collection collection)
78     {
79100       Assert.notNull(collection, "collection");
80100       return new SerializableIterator(collection);
81     }
82  
83     /**
84      * Construct a new iterator from the given array. All elements of
85      * the array will be copied to an internal list.
86      *
87      * @param array the object array for which an iterator should be
88      *       created. All elements in the array must be serializable.
89      * @return a new iterator from the given array.
90      */
91     public static SerializableIterator fromArray (Object[] array)
92     {
93100       Assert.notNull(array, "array");
94100       return new SerializableIterator(Arrays.asList(array));
95     }
96  
97     /**
98      * This operation is not supported in this implementation.
99      * @throws UnsupportedOperationException whenever this method is called.
100      * @see java.util.Iterator#remove()
101      */
102     public void remove ()
103         throws UnsupportedOperationException
104     {
1050       throw new UnsupportedOperationException(
106              "Can't remove from a SerializableIterator");
107     }
108  
109     /** {@inheritDoc} */
110     public boolean hasNext ()
111     {
112100       return mNextIndex < mItems.size();
113     }
114  
115     /** {@inheritDoc} */
116     public Object next ()
117     {
118100       if (mNextIndex >= mItems.size())
119        {
120100          throw new NoSuchElementException();
121        }
122100       return mItems.get(mNextIndex++);
123     }
124  
125     /** {@inheritDoc} */
126     public String toString ()
127     {
1280       return "[SerializableIterator: " + mItems + "]";
129     }
130  }

Findings in this File