KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > jndi > enc > EnterpriseContext


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6 package org.jfox.jndi.enc;
7
8 import java.util.Enumeration JavaDoc;
9 import java.util.Hashtable JavaDoc;
10 import java.util.Properties JavaDoc;
11 import javax.naming.Binding JavaDoc;
12 import javax.naming.CompositeName JavaDoc;
13 import javax.naming.CompoundName JavaDoc;
14 import javax.naming.Context JavaDoc;
15 import javax.naming.InvalidNameException JavaDoc;
16 import javax.naming.Name JavaDoc;
17 import javax.naming.NameAlreadyBoundException JavaDoc;
18 import javax.naming.NameClassPair JavaDoc;
19 import javax.naming.NameNotFoundException JavaDoc;
20 import javax.naming.NameParser JavaDoc;
21 import javax.naming.NamingEnumeration JavaDoc;
22 import javax.naming.NamingException JavaDoc;
23 import javax.naming.NotContextException JavaDoc;
24 import javax.naming.OperationNotSupportedException JavaDoc;
25
26 /**
27  * EnterpriseContext will be a field in a ejb Bucket
28  *
29  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
30  */

31
32 public class EnterpriseContext implements Context JavaDoc {
33     private Hashtable JavaDoc myEnv;
34     private Hashtable JavaDoc bindings = new Hashtable JavaDoc();
35     private static NameParser JavaDoc myParser = new FlatNameParser();
36
37     public Object JavaDoc lookup(String JavaDoc name) throws NamingException JavaDoc {
38         if(name.equals("")) {
39 // Asking to look up this context itself. Create and return
40
// a new instance with its own independent environment.
41
return (new EnterpriseContext());
42         }
43         Object JavaDoc answer = bindings.get(name);
44         if(answer == null) {
45             throw new NameNotFoundException JavaDoc(name + " not found");
46         }
47         return answer;
48     }
49
50     public Object JavaDoc lookup(Name JavaDoc name) throws NamingException JavaDoc {
51 // Flat namespace; no federation; just call string version
52
return lookup(name.toString());
53     }
54
55     public void bind(String JavaDoc name, Object JavaDoc obj) throws NamingException JavaDoc {
56         if(name.equals("")) {
57             throw new InvalidNameException JavaDoc("Cannot bind empty name");
58         }
59         if(bindings.get(name) != null) {
60             throw new NameAlreadyBoundException JavaDoc("Use rebind to override");
61         }
62         bindings.put(name, obj);
63     }
64
65     public void bind(Name JavaDoc name, Object JavaDoc obj) throws NamingException JavaDoc {
66 // Flat namespace; no federation; just call string version
67
bind(name.toString(), obj);
68     }
69
70     public void rebind(String JavaDoc name, Object JavaDoc obj) throws NamingException JavaDoc {
71         if(name.equals("")) {
72             throw new InvalidNameException JavaDoc("Cannot bind empty name");
73         }
74         bindings.put(name, obj);
75     }
76
77     public void rebind(Name JavaDoc name, Object JavaDoc obj) throws NamingException JavaDoc {
78 // Flat namespace; no federation; just call string version
79
rebind(name.toString(), obj);
80     }
81
82     public void unbind(String JavaDoc name) throws NamingException JavaDoc {
83         if(name.equals("")) {
84             throw new InvalidNameException JavaDoc("Cannot unbind empty name");
85         }
86         bindings.remove(name);
87     }
88
89     public void unbind(Name JavaDoc name) throws NamingException JavaDoc {
90 // Flat namespace; no federation; just call string version
91
unbind(name.toString());
92     }
93
94     public void rename(String JavaDoc oldname, String JavaDoc newname)
95             throws NamingException JavaDoc {
96         if(oldname.equals("") || newname.equals("")) {
97             throw new InvalidNameException JavaDoc("Cannot rename empty name");
98         }
99 // Check if new name exists
100
if(bindings.get(newname) != null) {
101             throw new NameAlreadyBoundException JavaDoc(newname +
102                     " is already bound");
103         }
104 // Check if old name is bound
105
Object JavaDoc oldBinding = bindings.remove(oldname);
106         if(oldBinding == null) {
107             throw new NameNotFoundException JavaDoc(oldname + " not bound");
108         }
109         bindings.put(newname, oldBinding);
110     }
111
112     public void rename(Name JavaDoc oldname, Name JavaDoc newname)
113             throws NamingException JavaDoc {
114 // Flat namespace; no federation; just call string version
115
rename(oldname.toString(), newname.toString());
116     }
117
118     public NamingEnumeration JavaDoc list(String JavaDoc name)
119             throws NamingException JavaDoc {
120         if(name.equals("")) {
121 // listing this context
122
return new FlatNames(bindings.keys());
123         }
124 // Perhaps ¡®name¡¯ names a context
125
Object JavaDoc target = lookup(name);
126         if(target instanceof Context JavaDoc) {
127             return ((Context JavaDoc) target).list("");
128         }
129         throw new NotContextException JavaDoc(name + " cannot be listed");
130     }
131
132     public NamingEnumeration JavaDoc list(Name JavaDoc name)
133             throws NamingException JavaDoc {
134 // Flat namespace; no federation; just call string version
135
return list(name.toString());
136     }
137
138     public NamingEnumeration JavaDoc listBindings(String JavaDoc name)
139             throws NamingException JavaDoc {
140         if(name.equals("")) {
141 // listing this context
142
return new FlatBindings(bindings.keys());
143         }
144 // Perhaps ¡®name¡¯ names a context
145
Object JavaDoc target = lookup(name);
146         if(target instanceof Context JavaDoc) {
147             return ((Context JavaDoc) target).listBindings("");
148         }
149         throw new NotContextException JavaDoc(name + " cannot be listed");
150     }
151
152     public NamingEnumeration JavaDoc listBindings(Name JavaDoc name)
153             throws NamingException JavaDoc {
154 // Flat namespace; no federation; just call string version
155
return listBindings(name.toString());
156     }
157
158     public void destroySubcontext(String JavaDoc name) throws NamingException JavaDoc {
159         throw new OperationNotSupportedException JavaDoc("FlatCtx does not support subcontexts");
160     }
161
162     public void destroySubcontext(Name JavaDoc name) throws NamingException JavaDoc {
163 // Flat namespace; no federation; just call string version
164
destroySubcontext(name.toString());
165     }
166
167     public Context JavaDoc createSubcontext(String JavaDoc name)
168             throws NamingException JavaDoc {
169         throw new OperationNotSupportedException JavaDoc("FlatCtx does not support subcontexts");
170     }
171
172     public Context JavaDoc createSubcontext(Name JavaDoc name) throws NamingException JavaDoc {
173 // Flat namespace; no federation; just call string version
174
return createSubcontext(name.toString());
175     }
176
177     public Object JavaDoc lookupLink(String JavaDoc name) throws NamingException JavaDoc {
178 // This flat context does not treat links specially
179
return lookup(name);
180     }
181
182     public Object JavaDoc lookupLink(Name JavaDoc name) throws NamingException JavaDoc {
183 // Flat namespace; no federation; just call string version
184
return lookupLink(name.toString());
185     }
186
187     public NameParser JavaDoc getNameParser(String JavaDoc name)
188
189             throws NamingException JavaDoc {
190         return myParser;
191     }
192
193     public NameParser JavaDoc getNameParser(Name JavaDoc name) throws NamingException JavaDoc {
194 // Flat namespace; no federation; just call string version
195
return getNameParser(name.toString());
196     }
197
198     public String JavaDoc composeName(String JavaDoc name, String JavaDoc prefix)
199             throws NamingException JavaDoc {
200         Name JavaDoc result = composeName(new CompositeName JavaDoc(name),
201                 new CompositeName JavaDoc(prefix));
202         return result.toString();
203     }
204
205     public Name JavaDoc composeName(Name JavaDoc name, Name JavaDoc prefix)
206             throws NamingException JavaDoc {
207         Name JavaDoc result = (Name JavaDoc) (prefix.clone());
208         result.addAll(name);
209         return result;
210     }
211
212     public Object JavaDoc addToEnvironment(String JavaDoc propName, Object JavaDoc propVal)
213             throws NamingException JavaDoc {
214         if(myEnv == null) {
215             myEnv = new Hashtable JavaDoc(5, 0.75f);
216         }
217         return myEnv.put(propName, propVal);
218     }
219
220     public Object JavaDoc removeFromEnvironment(String JavaDoc propName)
221             throws NamingException JavaDoc {
222         if(myEnv == null)
223             return null;
224         return myEnv.remove(propName);
225     }
226
227     public Hashtable JavaDoc getEnvironment() throws NamingException JavaDoc {
228         if(myEnv == null) {
229 // Must return non-null
230
return new Hashtable JavaDoc(3, 0.75f);
231         }
232         else {
233             return (Hashtable JavaDoc) myEnv.clone();
234         }
235     }
236
237     public String JavaDoc getNameInNamespace() throws NamingException JavaDoc {
238         return "";
239     }
240
241     public void close() throws NamingException JavaDoc {
242         myEnv = null;
243         bindings = null;
244     }
245 // Class for enumerating name/class pairs
246
class FlatNames implements NamingEnumeration JavaDoc {
247         Enumeration JavaDoc names;
248
249         FlatNames(Enumeration JavaDoc names) {
250             this.names = names;
251         }
252
253         public boolean hasMoreElements() {
254             return names.hasMoreElements();
255         }
256
257         public boolean hasMore() throws NamingException JavaDoc {
258             return hasMoreElements();
259         }
260
261         public Object JavaDoc nextElement() {
262             String JavaDoc name = (String JavaDoc) names.nextElement();
263             String JavaDoc className = bindings.get(name).getClass().getName();
264             return new NameClassPair JavaDoc(name, className);
265         }
266
267         public Object JavaDoc next() throws NamingException JavaDoc {
268             return nextElement();
269         }
270
271         public void close() {
272         }
273     }
274
275 // Class for enumerating bindings
276
class FlatBindings implements NamingEnumeration JavaDoc {
277         Enumeration JavaDoc names;
278
279         FlatBindings(Enumeration JavaDoc names) {
280             this.names = names;
281         }
282
283         public boolean hasMoreElements() {
284             return names.hasMoreElements();
285         }
286
287         public boolean hasMore() throws NamingException JavaDoc {
288             return hasMoreElements();
289         }
290
291         public Object JavaDoc nextElement() {
292             String JavaDoc name = (String JavaDoc) names.nextElement();
293             return new Binding JavaDoc(name, bindings.get(name));
294         }
295
296         public Object JavaDoc next() throws NamingException JavaDoc {
297             return nextElement();
298         }
299
300         public void close() {
301         }
302     }
303
304     static class FlatNameParser implements NameParser JavaDoc {
305         static Properties JavaDoc syntax = new Properties JavaDoc();
306
307         static {
308             syntax.put("jndi.syntax.direction", "flat");
309             syntax.put("jndi.syntax.ignorecase", "false");
310         }
311
312         public Name JavaDoc parse(String JavaDoc name) throws NamingException JavaDoc {
313             return new CompoundName JavaDoc(name, syntax);
314         }
315     }
316 }
Popular Tags