001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020 package org.apache.directory.server.core.jndi;
021
022
023 import java.util.Hashtable;
024
025 import javax.naming.Context;
026 import javax.naming.Name;
027 import javax.naming.NameClassPair;
028 import javax.naming.NameParser;
029 import javax.naming.NamingEnumeration;
030 import javax.naming.NamingException;
031 import javax.naming.ServiceUnavailableException;
032 import javax.naming.event.EventDirContext;
033 import javax.naming.event.NamingListener;
034 import javax.naming.directory.Attributes;
035 import javax.naming.directory.DirContext;
036 import javax.naming.directory.ModificationItem;
037 import javax.naming.directory.SearchControls;
038 import javax.naming.directory.SearchResult;
039 import javax.naming.ldap.Control;
040 import javax.naming.ldap.ExtendedRequest;
041 import javax.naming.ldap.ExtendedResponse;
042 import javax.naming.ldap.LdapContext;
043
044 import javax.naming.Binding;
045
046
047 /**
048 * A do nothing placeholder context whose methods throw ServiceUnavailableExceptions.
049 * JNDI provider returns this context when you perform JNDI operations against the
050 * core directory service that has been shutdown or not started. By returning a
051 * non-null Context we prevent an unnecessary exception being thrown by
052 * {@link javax.naming.InitialContext} and any one of its subclasses.
053 *
054 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
055 * @version $Rev: 924262 $, $Date: 2010-03-17 15:01:17 +0200 (Wed, 17 Mar 2010) $
056 */
057 public class DeadContext implements LdapContext, EventDirContext
058 {
059 private final String EXCEPTION_MSG = "Context operation unavailable when "
060 + "invoked after directory service core provider has been shutdown";
061
062
063 public Control[] getConnectControls() throws NamingException
064 {
065 throw new ServiceUnavailableException( EXCEPTION_MSG );
066 }
067
068
069 public Control[] getRequestControls() throws NamingException
070 {
071 throw new ServiceUnavailableException( EXCEPTION_MSG );
072 }
073
074
075 public Control[] getResponseControls() throws NamingException
076 {
077 throw new ServiceUnavailableException( EXCEPTION_MSG );
078 }
079
080
081 public void reconnect( Control[] connCtls ) throws NamingException
082 {
083 throw new ServiceUnavailableException( EXCEPTION_MSG );
084 }
085
086
087 public void setRequestControls( Control[] requestControls ) throws NamingException
088 {
089 throw new ServiceUnavailableException( EXCEPTION_MSG );
090 }
091
092
093 public ExtendedResponse extendedOperation( ExtendedRequest request ) throws NamingException
094 {
095 throw new ServiceUnavailableException( EXCEPTION_MSG );
096 }
097
098
099 public LdapContext newInstance( Control[] requestControls ) throws NamingException
100 {
101 throw new ServiceUnavailableException( EXCEPTION_MSG );
102 }
103
104
105 public Attributes getAttributes( String name ) throws NamingException
106 {
107 throw new ServiceUnavailableException( EXCEPTION_MSG );
108 }
109
110
111 public void modifyAttributes( String name, int mod_op, Attributes attrs ) throws NamingException
112 {
113 throw new ServiceUnavailableException( EXCEPTION_MSG );
114 }
115
116
117 public Attributes getAttributes( Name name ) throws NamingException
118 {
119 throw new ServiceUnavailableException( EXCEPTION_MSG );
120 }
121
122
123 public void modifyAttributes( Name name, int mod_op, Attributes attrs ) throws NamingException
124 {
125 throw new ServiceUnavailableException( EXCEPTION_MSG );
126 }
127
128
129 public void modifyAttributes( Name name, ModificationItem[] mods ) throws NamingException
130 {
131 throw new ServiceUnavailableException( EXCEPTION_MSG );
132 }
133
134 public DirContext getSchema( String name ) throws NamingException
135 {
136 throw new ServiceUnavailableException( EXCEPTION_MSG );
137 }
138
139
140 public DirContext getSchemaClassDefinition( String name ) throws NamingException
141 {
142 throw new ServiceUnavailableException( EXCEPTION_MSG );
143 }
144
145
146 public DirContext getSchema( Name name ) throws NamingException
147 {
148 throw new ServiceUnavailableException( EXCEPTION_MSG );
149 }
150
151
152 public DirContext getSchemaClassDefinition( Name name ) throws NamingException
153 {
154 throw new ServiceUnavailableException( EXCEPTION_MSG );
155 }
156
157
158 public void modifyAttributes( String name, ModificationItem[] mods ) throws NamingException
159 {
160 throw new ServiceUnavailableException( EXCEPTION_MSG );
161 }
162
163
164 public NamingEnumeration<SearchResult> search( String name, Attributes matchingAttributes ) throws NamingException
165 {
166 throw new ServiceUnavailableException( EXCEPTION_MSG );
167 }
168
169
170 public NamingEnumeration<SearchResult> search( Name name, Attributes matchingAttributes ) throws NamingException
171 {
172 throw new ServiceUnavailableException( EXCEPTION_MSG );
173 }
174
175
176 public void bind( String name, Object obj, Attributes attrs ) throws NamingException
177 {
178 throw new ServiceUnavailableException( EXCEPTION_MSG );
179 }
180
181
182 public void rebind( String name, Object obj, Attributes attrs ) throws NamingException
183 {
184 throw new ServiceUnavailableException( EXCEPTION_MSG );
185 }
186
187
188 public void bind( Name name, Object obj, Attributes attrs ) throws NamingException
189 {
190 throw new ServiceUnavailableException( EXCEPTION_MSG );
191 }
192
193
194 public void rebind( Name name, Object obj, Attributes attrs ) throws NamingException
195 {
196 throw new ServiceUnavailableException( EXCEPTION_MSG );
197 }
198
199
200 public Attributes getAttributes( String name, String[] attrIds ) throws NamingException
201 {
202 throw new ServiceUnavailableException( EXCEPTION_MSG );
203 }
204
205
206 public Attributes getAttributes( Name name, String[] attrIds ) throws NamingException
207 {
208 throw new ServiceUnavailableException( EXCEPTION_MSG );
209 }
210
211
212 public DirContext createSubcontext( String name, Attributes attrs ) throws NamingException
213 {
214 throw new ServiceUnavailableException( EXCEPTION_MSG );
215 }
216
217
218 public DirContext createSubcontext( Name name, Attributes attrs ) throws NamingException
219 {
220 throw new ServiceUnavailableException( EXCEPTION_MSG );
221 }
222
223
224 public NamingEnumeration<SearchResult> search( String name, Attributes matchingAttributes, String[] attributesToReturn )
225 throws NamingException
226 {
227 throw new ServiceUnavailableException( EXCEPTION_MSG );
228 }
229
230
231 public NamingEnumeration<SearchResult> search( Name name, Attributes matchingAttributes, String[] attributesToReturn )
232 throws NamingException
233 {
234 throw new ServiceUnavailableException( EXCEPTION_MSG );
235 }
236
237
238 public NamingEnumeration<SearchResult> search( String name, String filter, SearchControls cons ) throws NamingException
239 {
240 throw new ServiceUnavailableException( EXCEPTION_MSG );
241 }
242
243
244 public NamingEnumeration<SearchResult> search( Name name, String filter, SearchControls cons ) throws NamingException
245 {
246 throw new ServiceUnavailableException( EXCEPTION_MSG );
247 }
248
249
250 public NamingEnumeration<SearchResult> search( String name, String filterExpr, Object[] filterArgs, SearchControls cons )
251 throws NamingException
252 {
253 throw new ServiceUnavailableException( EXCEPTION_MSG );
254 }
255
256
257 public NamingEnumeration<SearchResult> search( Name name, String filterExpr, Object[] filterArgs, SearchControls cons )
258 throws NamingException
259 {
260 throw new ServiceUnavailableException( EXCEPTION_MSG );
261 }
262
263
264 public void close() throws NamingException
265 {
266 throw new ServiceUnavailableException( EXCEPTION_MSG );
267 }
268
269
270 public String getNameInNamespace() throws NamingException
271 {
272 throw new ServiceUnavailableException( EXCEPTION_MSG );
273 }
274
275
276 public void destroySubcontext( String name ) throws NamingException
277 {
278 throw new ServiceUnavailableException( EXCEPTION_MSG );
279 }
280
281
282 public void unbind( String name ) throws NamingException
283 {
284 throw new ServiceUnavailableException( EXCEPTION_MSG );
285 }
286
287
288 public Hashtable<String,Object> getEnvironment() throws NamingException
289 {
290 throw new ServiceUnavailableException( EXCEPTION_MSG );
291 }
292
293
294 public void destroySubcontext( Name name ) throws NamingException
295 {
296 throw new ServiceUnavailableException( EXCEPTION_MSG );
297 }
298
299
300 public void unbind( Name name ) throws NamingException
301 {
302 throw new ServiceUnavailableException( EXCEPTION_MSG );
303 }
304
305
306 public Object lookup( String name ) throws NamingException
307 {
308 throw new ServiceUnavailableException( EXCEPTION_MSG );
309 }
310
311
312 public Object lookupLink( String name ) throws NamingException
313 {
314 throw new ServiceUnavailableException( EXCEPTION_MSG );
315 }
316
317
318 public Object removeFromEnvironment( String propName ) throws NamingException
319 {
320 throw new ServiceUnavailableException( EXCEPTION_MSG );
321 }
322
323
324 public void bind( String name, Object obj ) throws NamingException
325 {
326 throw new ServiceUnavailableException( EXCEPTION_MSG );
327 }
328
329
330 public void rebind( String name, Object obj ) throws NamingException
331 {
332 throw new ServiceUnavailableException( EXCEPTION_MSG );
333 }
334
335
336 public Object lookup( Name name ) throws NamingException
337 {
338 throw new ServiceUnavailableException( EXCEPTION_MSG );
339 }
340
341
342 public Object lookupLink( Name name ) throws NamingException
343 {
344 throw new ServiceUnavailableException( EXCEPTION_MSG );
345 }
346
347
348 public void bind( Name name, Object obj ) throws NamingException
349 {
350 throw new ServiceUnavailableException( EXCEPTION_MSG );
351 }
352
353
354 public void rebind( Name name, Object obj ) throws NamingException
355 {
356 throw new ServiceUnavailableException( EXCEPTION_MSG );
357 }
358
359
360 public void rename( String oldName, String newName ) throws NamingException
361 {
362 throw new ServiceUnavailableException( EXCEPTION_MSG );
363 }
364
365
366 public Context createSubcontext( String name ) throws NamingException
367 {
368 throw new ServiceUnavailableException( EXCEPTION_MSG );
369 }
370
371
372 public Context createSubcontext( Name name ) throws NamingException
373 {
374 throw new ServiceUnavailableException( EXCEPTION_MSG );
375 }
376
377
378 public void rename( Name oldName, Name newName ) throws NamingException
379 {
380 throw new ServiceUnavailableException( EXCEPTION_MSG );
381 }
382
383
384 public NameParser getNameParser( String name ) throws NamingException
385 {
386 throw new ServiceUnavailableException( EXCEPTION_MSG );
387 }
388
389
390 public NameParser getNameParser( Name name ) throws NamingException
391 {
392 throw new ServiceUnavailableException( EXCEPTION_MSG );
393 }
394
395
396 public NamingEnumeration<NameClassPair> list( String name ) throws NamingException
397 {
398 throw new ServiceUnavailableException( EXCEPTION_MSG );
399 }
400
401
402 public NamingEnumeration<Binding> listBindings( String name ) throws NamingException
403 {
404 throw new ServiceUnavailableException( EXCEPTION_MSG );
405 }
406
407
408 public NamingEnumeration<NameClassPair> list( Name name ) throws NamingException
409 {
410 throw new ServiceUnavailableException( EXCEPTION_MSG );
411 }
412
413
414 public NamingEnumeration<Binding> listBindings( Name name ) throws NamingException
415 {
416 throw new ServiceUnavailableException( EXCEPTION_MSG );
417 }
418
419
420 public Object addToEnvironment( String propName, Object propVal ) throws NamingException
421 {
422 throw new ServiceUnavailableException( EXCEPTION_MSG );
423 }
424
425
426 public String composeName( String name, String prefix ) throws NamingException
427 {
428 throw new ServiceUnavailableException( EXCEPTION_MSG );
429 }
430
431
432 public Name composeName( Name name, Name prefix ) throws NamingException
433 {
434 throw new ServiceUnavailableException( EXCEPTION_MSG );
435 }
436
437
438 public void addNamingListener( Name name, String s, SearchControls searchControls, NamingListener namingListener )
439 throws NamingException
440 {
441 throw new ServiceUnavailableException( EXCEPTION_MSG );
442 }
443
444
445 public void addNamingListener( String s, String s1, SearchControls searchControls, NamingListener namingListener )
446 throws NamingException
447 {
448 throw new ServiceUnavailableException( EXCEPTION_MSG );
449 }
450
451
452 public void addNamingListener( Name name, String s, Object[] objects, SearchControls searchControls,
453 NamingListener namingListener ) throws NamingException
454 {
455 throw new ServiceUnavailableException( EXCEPTION_MSG );
456 }
457
458
459 public void addNamingListener( String s, String s1, Object[] objects, SearchControls searchControls,
460 NamingListener namingListener ) throws NamingException
461 {
462 throw new ServiceUnavailableException( EXCEPTION_MSG );
463 }
464
465
466 public void addNamingListener( Name name, int i, NamingListener namingListener ) throws NamingException
467 {
468 throw new ServiceUnavailableException( EXCEPTION_MSG );
469 }
470
471
472 public void addNamingListener( String s, int i, NamingListener namingListener ) throws NamingException
473 {
474 throw new ServiceUnavailableException( EXCEPTION_MSG );
475 }
476
477
478 public void removeNamingListener( NamingListener namingListener ) throws NamingException
479 {
480 throw new ServiceUnavailableException( EXCEPTION_MSG );
481 }
482
483
484 public boolean targetMustExist() throws NamingException
485 {
486 throw new ServiceUnavailableException( EXCEPTION_MSG );
487 }
488 }