KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > archie > jndi > JndiNamingEnum


1 package org.sapia.archie.jndi;
2
3 import java.util.Iterator JavaDoc;
4
5 import javax.naming.Binding JavaDoc;
6 import javax.naming.Context JavaDoc;
7 import javax.naming.NameClassPair JavaDoc;
8 import javax.naming.NamingEnumeration JavaDoc;
9 import javax.naming.NamingException JavaDoc;
10
11 import org.sapia.archie.Entry;
12 import org.sapia.archie.Node;
13
14 /**
15  * @author Yanick Duchesne
16  * <dl>
17  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
18  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
19  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
20  * </dl>
21  */

22 public class JndiNamingEnum implements NamingEnumeration JavaDoc{
23     
24   public static final int LIST_OBJECTS = 0;
25   public static final int LIST_BINDINGS = 1;
26   public static final int LIST_NAMECLASS_PAIRS = 2;
27   
28   protected Iterator JavaDoc _entries, _childNodes;
29   protected int _listType;
30   
31   public JndiNamingEnum(Iterator JavaDoc entries, Iterator JavaDoc childNodes, int listType){
32     _entries = entries;
33     _childNodes = childNodes;
34     _listType = listType;
35   }
36   /**
37    * @see javax.naming.NamingEnumeration#close()
38    */

39   public void close() throws NamingException JavaDoc {
40   }
41   
42   /**
43    * @see javax.naming.NamingEnumeration#hasMore()
44    */

45   public boolean hasMore() throws NamingException JavaDoc {
46      return _entries.hasNext() || _childNodes.hasNext();
47   }
48   
49   /**
50    * @see javax.naming.NamingEnumeration#next()
51    */

52   public Object JavaDoc next() throws NamingException JavaDoc {
53     if(_listType == LIST_BINDINGS){
54         if(_entries.hasNext()){
55                 return toBinding((Entry)_entries.next());
56         }
57         else{
58             return toBinding((Node)_childNodes.next());
59         }
60
61     }
62     else if(_listType == LIST_NAMECLASS_PAIRS){
63         if(_entries.hasNext()){
64         Entry entry = (Entry)_entries.next();
65                 return new NameClassPair JavaDoc(entry.getName (), entry.getValue().getClass().getName(), true);
66         }
67         else{
68         Node node = (Node)_childNodes.next();
69         Context JavaDoc ctx = newJndiContext(node);
70         return new NameClassPair JavaDoc(node.getName().asString(), ctx.getClass().getName(), true);
71         }
72     }
73     else {
74         if(_entries.hasNext()){
75         return ((Entry)_entries.next()).getValue();
76         }
77         else{
78             return newJndiContext((Node)_childNodes.next());
79         }
80     }
81   }
82   
83   /**
84    * @see java.util.Enumeration#hasMoreElements()
85    */

86   public boolean hasMoreElements() {
87     return _entries.hasNext() || _childNodes.hasNext();
88   }
89   
90   /**
91    * @see java.util.Enumeration#nextElement()
92    */

93   public Object JavaDoc nextElement() {
94     try{
95       return next();
96     }catch(NamingException JavaDoc e){
97       throw new IllegalStateException JavaDoc(e.getClass() + " caught; message: " + e.getMessage());
98     }
99   }
100   
101   protected Binding JavaDoc toBinding(Entry entry){
102     return new Binding JavaDoc(entry.getName(), entry.getValue().getClass().getName(), entry.getValue(), true);
103   }
104   
105   protected Binding JavaDoc toBinding(Node node){
106     Context JavaDoc ctx = newJndiContext(node);
107     return new Binding JavaDoc(node.getName().asString(), ctx.getClass().getName(), ctx);
108   }
109   
110   protected Context JavaDoc newJndiContext(Node node){
111     return new JndiContext(node);
112   }
113 }
114
Popular Tags