KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > bsh > collection > CollectionIterator


1 package bsh.collection;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.Collection JavaDoc;
5 import java.util.Enumeration JavaDoc;
6 //import java.util.Map;
7

8 import java.lang.reflect.Array JavaDoc;
9
10 /**
11  * This is the implementation of:
12  * BshIterator - a dynamically loaded extension that supports the collections
13  * API supported by JDK1.2 and greater.
14  *
15  * @author Daniel Leuck
16  * @author Pat Niemeyer
17  */

18 public class CollectionIterator implements bsh.BshIterator
19 {
20     private Iterator JavaDoc iterator;
21
22     /**
23      * Construct a basic CollectionIterator
24      *
25      * @param The object over which we are iterating
26      *
27      * @throws java.lang.IllegalArgumentException If the argument is not a
28      * supported (i.e. iterable) type.
29      *
30      * @throws java.lang.NullPointerException If the argument is null
31      */

32     public CollectionIterator(Object JavaDoc iterateOverMe) {
33         iterator = createIterator(iterateOverMe);
34     }
35
36     /**
37      * Create an iterator over the given object
38      *
39      * @param iterateOverMe Object of type Iterator, Collection, or types
40      * supported by CollectionManager.BasicBshIterator
41      *
42      * @return an Iterator
43      *
44      * @throws java.lang.IllegalArgumentException If the argument is not a
45      * supported (i.e. iterable) type.
46      *
47      * @throws java.lang.NullPointerException If the argument is null
48      */

49     protected Iterator JavaDoc createIterator(Object JavaDoc iterateOverMe)
50     {
51         if (iterateOverMe==null)
52             throw new NullPointerException JavaDoc("Object arguments passed to " +
53                 "the CollectionIterator constructor cannot be null.");
54
55         if (iterateOverMe instanceof Iterator JavaDoc)
56             return (Iterator JavaDoc)iterateOverMe;
57
58         if (iterateOverMe instanceof Collection JavaDoc)
59             return ((Collection JavaDoc)iterateOverMe).iterator();
60
61         /*
62         Should we be able to iterate over maps?
63         if (iterateOverMe instanceof Map)
64             return ((Map)iterateOverMe).entrySet().iterator();
65         */

66
67         throw new IllegalArgumentException JavaDoc(
68             "Cannot enumerate object of type "+iterateOverMe.getClass());
69     }
70
71     /**
72      * Fetch the next object in the iteration
73      *
74      * @return The next object
75      */

76     public Object JavaDoc next() {
77         return iterator.next();
78     }
79     
80     /**
81      * Returns true if and only if there are more objects available
82      * via the <code>next()</code> method
83      *
84      * @return The next object
85      */

86     public boolean hasNext() {
87         return iterator.hasNext();
88     }
89 }
90
Popular Tags