author | sspitsyn |
Wed, 07 Sep 2016 03:35:45 +0000 | |
changeset 40963 | c7c990c4ec68 |
parent 32029 | a5538163e144 |
permissions | -rw-r--r-- |
2 | 1 |
/* |
18580 | 2 |
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. |
2 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
5506 | 7 |
* published by the Free Software Foundation. Oracle designates this |
2 | 8 |
* particular file as subject to the "Classpath" exception as provided |
5506 | 9 |
* by Oracle in the LICENSE file that accompanied this code. |
2 | 10 |
* |
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
15 |
* accompanied this code). |
|
16 |
* |
|
17 |
* You should have received a copy of the GNU General Public License version |
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 |
* |
|
5506 | 21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 |
* or visit www.oracle.com if you need additional information or have any |
|
23 |
* questions. |
|
2 | 24 |
*/ |
25 |
||
26 |
package javax.naming.directory; |
|
27 |
||
28 |
import javax.naming.*; |
|
29 |
||
30 |
/** |
|
31 |
* The directory service interface, containing |
|
32 |
* methods for examining and updating attributes |
|
33 |
* associated with objects, and for searching the directory. |
|
21285 | 34 |
* |
18580 | 35 |
* <h1>Names</h1> |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
36 |
* Each name passed as an argument to a {@code DirContext} method is relative |
2 | 37 |
* to that context. The empty name is used to name the context itself. |
38 |
* The name parameter may never be null. |
|
39 |
* <p> |
|
40 |
* Most of the methods have overloaded versions with one taking a |
|
41 |
* <code>Name</code> parameter and one taking a <code>String</code>. |
|
42 |
* These overloaded versions are equivalent in that if |
|
43 |
* the <code>Name</code> and <code>String</code> parameters are just |
|
44 |
* different representations of the same name, then the overloaded |
|
45 |
* versions of the same methods behave the same. |
|
46 |
* In the method descriptions below, only one version is documented. |
|
47 |
* The second version instead has a link to the first: the same |
|
48 |
* documentation applies to both. |
|
49 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
50 |
* See {@code Context} for a discussion on the interpretation of the |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
51 |
* name argument to the {@code Context} methods. These same rules |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
52 |
* apply to the name argument to the {@code DirContext} methods. |
21285 | 53 |
* |
18580 | 54 |
* <h1>Attribute Models</h1> |
2 | 55 |
* There are two basic models of what attributes should be |
56 |
* associated with. First, attributes may be directly associated with a |
|
57 |
* DirContext object. |
|
58 |
* In this model, an attribute operation on the named object is |
|
59 |
* roughly equivalent |
|
60 |
* to a lookup on the name (which returns the DirContext object), |
|
61 |
* followed by the attribute operation invoked on the DirContext object |
|
62 |
* in which the caller supplies an empty name. The attributes can be viewed |
|
63 |
* as being stored along with the object (note that this does not imply that |
|
64 |
* the implementation must do so). |
|
65 |
* <p> |
|
66 |
* The second model is that attributes are associated with a |
|
67 |
* name (typically an atomic name) in a DirContext. |
|
68 |
* In this model, an attribute operation on the named object is |
|
69 |
* roughly equivalent to a lookup on the name of the parent DirContext of the |
|
70 |
* named object, followed by the attribute operation invoked on the parent |
|
71 |
* in which the caller supplies the terminal atomic name. |
|
72 |
* The attributes can be viewed as being stored in the parent DirContext |
|
73 |
* (again, this does not imply that the implementation must do so). |
|
74 |
* Objects that are not DirContexts can have attributes, as long as |
|
75 |
* their parents are DirContexts. |
|
76 |
* <p> |
|
77 |
* JNDI support both of these models. |
|
78 |
* It is up to the individual service providers to decide where to |
|
79 |
* "store" attributes. |
|
80 |
* JNDI clients are safest when they do not make assumptions about |
|
81 |
* whether an object's attributes are stored as part of the object, or stored |
|
82 |
* within the parent object and associated with the object's name. |
|
21285 | 83 |
* |
18580 | 84 |
* <h1>Attribute Type Names</h1> |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
85 |
* In the {@code getAttributes()} and {@code search()} methods, |
2 | 86 |
* you can supply the attributes to return by supplying a list of |
87 |
* attribute names (strings). |
|
88 |
* The attributes that you get back might not have the same names as the |
|
89 |
* attribute names you have specified. This is because some directories |
|
90 |
* support features that cause them to return other attributes. Such |
|
91 |
* features include attribute subclassing, attribute name synonyms, and |
|
92 |
* attribute language codes. |
|
93 |
* <p> |
|
94 |
* In attribute subclassing, attributes are defined in a class hierarchy. |
|
95 |
* In some directories, for example, the "name" attribute might be the |
|
96 |
* superclass of all name-related attributes, including "commonName" and |
|
97 |
* "surName". Asking for the "name" attribute might return both the |
|
98 |
* "commonName" and "surName" attributes. |
|
99 |
* <p> |
|
100 |
* With attribute type synonyms, a directory can assign multiple names to |
|
101 |
* the same attribute. For example, "cn" and "commonName" might both |
|
102 |
* refer to the same attribute. Asking for "cn" might return the |
|
103 |
* "commonName" attribute. |
|
104 |
* <p> |
|
105 |
* Some directories support the language codes for attributes. |
|
106 |
* Asking such a directory for the "description" attribute, for example, |
|
107 |
* might return all of the following attributes: |
|
108 |
* <ul> |
|
109 |
* <li>description |
|
110 |
* <li>description;lang-en |
|
111 |
* <li>description;lang-de |
|
112 |
* <li>description;lang-fr |
|
113 |
* </ul> |
|
114 |
* |
|
21285 | 115 |
* |
18580 | 116 |
*<h1>Operational Attributes</h1> |
2 | 117 |
*<p> |
118 |
* Some directories have the notion of "operational attributes" which are |
|
119 |
* attributes associated with a directory object for administrative |
|
120 |
* purposes. An example of operational attributes is the access control |
|
121 |
* list for an object. |
|
122 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
123 |
* In the {@code getAttributes()} and {@code search()} methods, |
2 | 124 |
* you can specify that all attributes associated with the requested objects |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
125 |
* be returned by supply {@code null} as the list of attributes to return. |
2 | 126 |
* The attributes returned do <em>not</em> include operational attributes. |
127 |
* In order to retrieve operational attributes, you must name them explicitly. |
|
128 |
* |
|
21285 | 129 |
* |
18580 | 130 |
* <h1>Named Context</h1> |
2 | 131 |
* <p> |
132 |
* There are certain methods in which the name must resolve to a context |
|
133 |
* (for example, when searching a single level context). The documentation |
|
134 |
* of such methods |
|
135 |
* use the term <em>named context</em> to describe their name parameter. |
|
136 |
* For these methods, if the named object is not a DirContext, |
|
137 |
* <code>NotContextException</code> is thrown. |
|
138 |
* Aside from these methods, there is no requirement that the |
|
139 |
* <em>named object</em> be a DirContext. |
|
21285 | 140 |
* |
18580 | 141 |
*<h1>Parameters</h1> |
2 | 142 |
*<p> |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
143 |
* An {@code Attributes}, {@code SearchControls}, or array object |
2 | 144 |
* passed as a parameter to any method will not be modified by the |
145 |
* service provider. The service provider may keep a reference to it |
|
146 |
* for the duration of the operation, including any enumeration of the |
|
147 |
* method's results and the processing of any referrals generated. |
|
148 |
* The caller should not modify the object during this time. |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
149 |
* An {@code Attributes} object returned by any method is owned by |
2 | 150 |
* the caller. The caller may subsequently modify it; the service |
151 |
* provider will not. |
|
21285 | 152 |
* |
18580 | 153 |
*<h1>Exceptions</h1> |
2 | 154 |
*<p> |
155 |
* All the methods in this interface can throw a NamingException or |
|
156 |
* any of its subclasses. See NamingException and their subclasses |
|
157 |
* for details on each exception. |
|
158 |
* |
|
159 |
* @author Rosanna Lee |
|
160 |
* @author Scott Seligman |
|
161 |
* @author R. Vasudevan |
|
162 |
* |
|
163 |
* @see javax.naming.Context |
|
164 |
* @since 1.3 |
|
165 |
*/ |
|
166 |
||
167 |
public interface DirContext extends Context { |
|
168 |
||
169 |
/** |
|
170 |
* Retrieves all of the attributes associated with a named object. |
|
171 |
* See the class description regarding attribute models, attribute |
|
172 |
* type names, and operational attributes. |
|
173 |
* |
|
174 |
* @param name |
|
175 |
* the name of the object from which to retrieve attributes |
|
176 |
* @return the set of attributes associated with <code>name</code>. |
|
177 |
* Returns an empty attribute set if name has no attributes; |
|
178 |
* never null. |
|
179 |
* @throws NamingException if a naming exception is encountered |
|
180 |
* |
|
181 |
* @see #getAttributes(String) |
|
182 |
* @see #getAttributes(Name, String[]) |
|
183 |
*/ |
|
184 |
public Attributes getAttributes(Name name) throws NamingException; |
|
185 |
||
186 |
/** |
|
187 |
* Retrieves all of the attributes associated with a named object. |
|
188 |
* See {@link #getAttributes(Name)} for details. |
|
189 |
* |
|
190 |
* @param name |
|
191 |
* the name of the object from which to retrieve attributes |
|
192 |
* @return the set of attributes associated with <code>name</code> |
|
193 |
* |
|
194 |
* @throws NamingException if a naming exception is encountered |
|
195 |
*/ |
|
196 |
public Attributes getAttributes(String name) throws NamingException; |
|
197 |
||
198 |
/** |
|
199 |
* Retrieves selected attributes associated with a named object. |
|
200 |
* See the class description regarding attribute models, attribute |
|
201 |
* type names, and operational attributes. |
|
202 |
* |
|
203 |
* <p> If the object does not have an attribute |
|
204 |
* specified, the directory will ignore the nonexistent attribute |
|
205 |
* and return those requested attributes that the object does have. |
|
206 |
* |
|
207 |
* <p> A directory might return more attributes than was requested |
|
208 |
* (see <strong>Attribute Type Names</strong> in the class description), |
|
209 |
* but is not allowed to return arbitrary, unrelated attributes. |
|
210 |
* |
|
211 |
* <p> See also <strong>Operational Attributes</strong> in the class |
|
212 |
* description. |
|
213 |
* |
|
214 |
* @param name |
|
215 |
* the name of the object from which to retrieve attributes |
|
216 |
* @param attrIds |
|
217 |
* the identifiers of the attributes to retrieve. |
|
218 |
* null indicates that all attributes should be retrieved; |
|
219 |
* an empty array indicates that none should be retrieved. |
|
220 |
* @return the requested attributes; never null |
|
221 |
* |
|
222 |
* @throws NamingException if a naming exception is encountered |
|
223 |
*/ |
|
224 |
public Attributes getAttributes(Name name, String[] attrIds) |
|
225 |
throws NamingException; |
|
226 |
||
227 |
/** |
|
228 |
* Retrieves selected attributes associated with a named object. |
|
229 |
* See {@link #getAttributes(Name, String[])} for details. |
|
230 |
* |
|
231 |
* @param name |
|
232 |
* The name of the object from which to retrieve attributes |
|
233 |
* @param attrIds |
|
234 |
* the identifiers of the attributes to retrieve. |
|
235 |
* null indicates that all attributes should be retrieved; |
|
236 |
* an empty array indicates that none should be retrieved. |
|
237 |
* @return the requested attributes; never null |
|
238 |
* |
|
239 |
* @throws NamingException if a naming exception is encountered |
|
240 |
*/ |
|
241 |
public Attributes getAttributes(String name, String[] attrIds) |
|
242 |
throws NamingException; |
|
243 |
||
244 |
/** |
|
245 |
* This constant specifies to add an attribute with the specified values. |
|
246 |
* <p> |
|
247 |
* If attribute does not exist, |
|
248 |
* create the attribute. The resulting attribute has a union of the |
|
249 |
* specified value set and the prior value set. |
|
250 |
* Adding an attribute with no value will throw |
|
251 |
* <code>InvalidAttributeValueException</code> if the attribute must have |
|
252 |
* at least one value. For a single-valued attribute where that attribute |
|
253 |
* already exists, throws <code>AttributeInUseException</code>. |
|
254 |
* If attempting to add more than one value to a single-valued attribute, |
|
255 |
* throws <code>InvalidAttributeValueException</code>. |
|
256 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
257 |
* The value of this constant is {@code 1}. |
2 | 258 |
* |
259 |
* @see ModificationItem |
|
260 |
* @see #modifyAttributes |
|
261 |
*/ |
|
262 |
public final static int ADD_ATTRIBUTE = 1; |
|
263 |
||
264 |
/** |
|
265 |
* This constant specifies to replace an attribute with specified values. |
|
266 |
*<p> |
|
267 |
* If attribute already exists, |
|
268 |
* replaces all existing values with new specified values. If the |
|
269 |
* attribute does not exist, creates it. If no value is specified, |
|
270 |
* deletes all the values of the attribute. |
|
271 |
* Removal of the last value will remove the attribute if the attribute |
|
272 |
* is required to have at least one value. If |
|
273 |
* attempting to add more than one value to a single-valued attribute, |
|
274 |
* throws <code>InvalidAttributeValueException</code>. |
|
275 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
276 |
* The value of this constant is {@code 2}. |
2 | 277 |
* |
278 |
* @see ModificationItem |
|
279 |
* @see #modifyAttributes |
|
280 |
*/ |
|
281 |
public final static int REPLACE_ATTRIBUTE = 2; |
|
282 |
||
283 |
/** |
|
284 |
* This constant specifies to delete |
|
285 |
* the specified attribute values from the attribute. |
|
286 |
*<p> |
|
287 |
* The resulting attribute has the set difference of its prior value set |
|
288 |
* and the specified value set. |
|
289 |
* If no values are specified, deletes the entire attribute. |
|
290 |
* If the attribute does not exist, or if some or all members of the |
|
291 |
* specified value set do not exist, this absence may be ignored |
|
292 |
* and the operation succeeds, or a NamingException may be thrown to |
|
293 |
* indicate the absence. |
|
294 |
* Removal of the last value will remove the attribute if the |
|
295 |
* attribute is required to have at least one value. |
|
296 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
297 |
* The value of this constant is {@code 3}. |
2 | 298 |
* |
299 |
* @see ModificationItem |
|
300 |
* @see #modifyAttributes |
|
301 |
*/ |
|
302 |
public final static int REMOVE_ATTRIBUTE = 3; |
|
303 |
||
304 |
/** |
|
305 |
* Modifies the attributes associated with a named object. |
|
306 |
* The order of the modifications is not specified. Where |
|
307 |
* possible, the modifications are performed atomically. |
|
308 |
* |
|
309 |
* @param name |
|
310 |
* the name of the object whose attributes will be updated |
|
311 |
* @param mod_op |
|
312 |
* the modification operation, one of: |
|
313 |
* <code>ADD_ATTRIBUTE</code>, |
|
314 |
* <code>REPLACE_ATTRIBUTE</code>, |
|
315 |
* <code>REMOVE_ATTRIBUTE</code>. |
|
316 |
* @param attrs |
|
317 |
* the attributes to be used for the modification; may not be null |
|
318 |
* |
|
319 |
* @throws AttributeModificationException if the modification cannot |
|
320 |
* be completed successfully |
|
321 |
* @throws NamingException if a naming exception is encountered |
|
322 |
* |
|
323 |
* @see #modifyAttributes(Name, ModificationItem[]) |
|
324 |
*/ |
|
325 |
public void modifyAttributes(Name name, int mod_op, Attributes attrs) |
|
326 |
throws NamingException; |
|
327 |
||
328 |
/** |
|
329 |
* Modifies the attributes associated with a named object. |
|
330 |
* See {@link #modifyAttributes(Name, int, Attributes)} for details. |
|
331 |
* |
|
332 |
* @param name |
|
333 |
* the name of the object whose attributes will be updated |
|
334 |
* @param mod_op |
|
335 |
* the modification operation, one of: |
|
336 |
* <code>ADD_ATTRIBUTE</code>, |
|
337 |
* <code>REPLACE_ATTRIBUTE</code>, |
|
338 |
* <code>REMOVE_ATTRIBUTE</code>. |
|
339 |
* @param attrs |
|
340 |
* the attributes to be used for the modification; may not be null |
|
341 |
* |
|
342 |
* @throws AttributeModificationException if the modification cannot |
|
343 |
* be completed successfully |
|
344 |
* @throws NamingException if a naming exception is encountered |
|
345 |
*/ |
|
346 |
public void modifyAttributes(String name, int mod_op, Attributes attrs) |
|
347 |
throws NamingException; |
|
348 |
||
349 |
/** |
|
350 |
* Modifies the attributes associated with a named object using |
|
351 |
* an ordered list of modifications. |
|
352 |
* The modifications are performed |
|
353 |
* in the order specified. Each modification specifies a |
|
354 |
* modification operation code and an attribute on which to |
|
355 |
* operate. Where possible, the modifications are |
|
356 |
* performed atomically. |
|
357 |
* |
|
358 |
* @param name |
|
359 |
* the name of the object whose attributes will be updated |
|
360 |
* @param mods |
|
361 |
* an ordered sequence of modifications to be performed; |
|
362 |
* may not be null |
|
363 |
* |
|
364 |
* @throws AttributeModificationException if the modifications |
|
365 |
* cannot be completed successfully |
|
366 |
* @throws NamingException if a naming exception is encountered |
|
367 |
* |
|
368 |
* @see #modifyAttributes(Name, int, Attributes) |
|
369 |
* @see ModificationItem |
|
370 |
*/ |
|
371 |
public void modifyAttributes(Name name, ModificationItem[] mods) |
|
372 |
throws NamingException; |
|
373 |
||
374 |
/** |
|
375 |
* Modifies the attributes associated with a named object using |
|
376 |
* an ordered list of modifications. |
|
377 |
* See {@link #modifyAttributes(Name, ModificationItem[])} for details. |
|
378 |
* |
|
379 |
* @param name |
|
380 |
* the name of the object whose attributes will be updated |
|
381 |
* @param mods |
|
382 |
* an ordered sequence of modifications to be performed; |
|
383 |
* may not be null |
|
384 |
* |
|
385 |
* @throws AttributeModificationException if the modifications |
|
386 |
* cannot be completed successfully |
|
387 |
* @throws NamingException if a naming exception is encountered |
|
388 |
*/ |
|
389 |
public void modifyAttributes(String name, ModificationItem[] mods) |
|
390 |
throws NamingException; |
|
391 |
||
392 |
/** |
|
393 |
* Binds a name to an object, along with associated attributes. |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
394 |
* If {@code attrs} is null, the resulting binding will have |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
395 |
* the attributes associated with {@code obj} if {@code obj} is a |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
396 |
* {@code DirContext}, and no attributes otherwise. |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
397 |
* If {@code attrs} is non-null, the resulting binding will have |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
398 |
* {@code attrs} as its attributes; any attributes associated with |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
399 |
* {@code obj} are ignored. |
2 | 400 |
* |
401 |
* @param name |
|
402 |
* the name to bind; may not be empty |
|
403 |
* @param obj |
|
404 |
* the object to bind; possibly null |
|
405 |
* @param attrs |
|
406 |
* the attributes to associate with the binding |
|
407 |
* |
|
408 |
* @throws NameAlreadyBoundException if name is already bound |
|
409 |
* @throws InvalidAttributesException if some "mandatory" attributes |
|
410 |
* of the binding are not supplied |
|
411 |
* @throws NamingException if a naming exception is encountered |
|
412 |
* |
|
413 |
* @see Context#bind(Name, Object) |
|
414 |
* @see #rebind(Name, Object, Attributes) |
|
415 |
*/ |
|
416 |
public void bind(Name name, Object obj, Attributes attrs) |
|
417 |
throws NamingException; |
|
418 |
||
419 |
/** |
|
420 |
* Binds a name to an object, along with associated attributes. |
|
421 |
* See {@link #bind(Name, Object, Attributes)} for details. |
|
422 |
* |
|
423 |
* @param name |
|
424 |
* the name to bind; may not be empty |
|
425 |
* @param obj |
|
426 |
* the object to bind; possibly null |
|
427 |
* @param attrs |
|
428 |
* the attributes to associate with the binding |
|
429 |
* |
|
430 |
* @throws NameAlreadyBoundException if name is already bound |
|
431 |
* @throws InvalidAttributesException if some "mandatory" attributes |
|
432 |
* of the binding are not supplied |
|
433 |
* @throws NamingException if a naming exception is encountered |
|
434 |
*/ |
|
435 |
public void bind(String name, Object obj, Attributes attrs) |
|
436 |
throws NamingException; |
|
437 |
||
438 |
/** |
|
439 |
* Binds a name to an object, along with associated attributes, |
|
440 |
* overwriting any existing binding. |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
441 |
* If {@code attrs} is null and {@code obj} is a {@code DirContext}, |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
442 |
* the attributes from {@code obj} are used. |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
443 |
* If {@code attrs} is null and {@code obj} is not a {@code DirContext}, |
2 | 444 |
* any existing attributes associated with the object already bound |
445 |
* in the directory remain unchanged. |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
446 |
* If {@code attrs} is non-null, any existing attributes associated with |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
447 |
* the object already bound in the directory are removed and {@code attrs} |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
448 |
* is associated with the named object. If {@code obj} is a |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
449 |
* {@code DirContext} and {@code attrs} is non-null, the attributes |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
450 |
* of {@code obj} are ignored. |
2 | 451 |
* |
452 |
* @param name |
|
453 |
* the name to bind; may not be empty |
|
454 |
* @param obj |
|
455 |
* the object to bind; possibly null |
|
456 |
* @param attrs |
|
457 |
* the attributes to associate with the binding |
|
458 |
* |
|
459 |
* @throws InvalidAttributesException if some "mandatory" attributes |
|
460 |
* of the binding are not supplied |
|
461 |
* @throws NamingException if a naming exception is encountered |
|
462 |
* |
|
463 |
* @see Context#bind(Name, Object) |
|
464 |
* @see #bind(Name, Object, Attributes) |
|
465 |
*/ |
|
466 |
public void rebind(Name name, Object obj, Attributes attrs) |
|
467 |
throws NamingException; |
|
468 |
||
469 |
/** |
|
470 |
* Binds a name to an object, along with associated attributes, |
|
471 |
* overwriting any existing binding. |
|
472 |
* See {@link #rebind(Name, Object, Attributes)} for details. |
|
473 |
* |
|
474 |
* @param name |
|
475 |
* the name to bind; may not be empty |
|
476 |
* @param obj |
|
477 |
* the object to bind; possibly null |
|
478 |
* @param attrs |
|
479 |
* the attributes to associate with the binding |
|
480 |
* |
|
481 |
* @throws InvalidAttributesException if some "mandatory" attributes |
|
482 |
* of the binding are not supplied |
|
483 |
* @throws NamingException if a naming exception is encountered |
|
484 |
*/ |
|
485 |
public void rebind(String name, Object obj, Attributes attrs) |
|
486 |
throws NamingException; |
|
487 |
||
488 |
/** |
|
489 |
* Creates and binds a new context, along with associated attributes. |
|
490 |
* This method creates a new subcontext with the given name, binds it in |
|
491 |
* the target context (that named by all but terminal atomic |
|
492 |
* component of the name), and associates the supplied attributes |
|
493 |
* with the newly created object. |
|
494 |
* All intermediate and target contexts must already exist. |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
495 |
* If {@code attrs} is null, this method is equivalent to |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
496 |
* {@code Context.createSubcontext()}. |
2 | 497 |
* |
498 |
* @param name |
|
499 |
* the name of the context to create; may not be empty |
|
500 |
* @param attrs |
|
501 |
* the attributes to associate with the newly created context |
|
502 |
* @return the newly created context |
|
503 |
* |
|
504 |
* @throws NameAlreadyBoundException if the name is already bound |
|
505 |
* @throws InvalidAttributesException if <code>attrs</code> does not |
|
506 |
* contain all the mandatory attributes required for creation |
|
507 |
* @throws NamingException if a naming exception is encountered |
|
508 |
* |
|
509 |
* @see Context#createSubcontext(Name) |
|
510 |
*/ |
|
511 |
public DirContext createSubcontext(Name name, Attributes attrs) |
|
512 |
throws NamingException; |
|
513 |
||
514 |
/** |
|
515 |
* Creates and binds a new context, along with associated attributes. |
|
516 |
* See {@link #createSubcontext(Name, Attributes)} for details. |
|
517 |
* |
|
518 |
* @param name |
|
519 |
* the name of the context to create; may not be empty |
|
520 |
* @param attrs |
|
521 |
* the attributes to associate with the newly created context |
|
522 |
* @return the newly created context |
|
523 |
* |
|
524 |
* @throws NameAlreadyBoundException if the name is already bound |
|
525 |
* @throws InvalidAttributesException if <code>attrs</code> does not |
|
526 |
* contain all the mandatory attributes required for creation |
|
527 |
* @throws NamingException if a naming exception is encountered |
|
528 |
*/ |
|
529 |
public DirContext createSubcontext(String name, Attributes attrs) |
|
530 |
throws NamingException; |
|
531 |
||
532 |
// -------------------- schema operations |
|
533 |
||
534 |
/** |
|
535 |
* Retrieves the schema associated with the named object. |
|
536 |
* The schema describes rules regarding the structure of the namespace |
|
537 |
* and the attributes stored within it. The schema |
|
538 |
* specifies what types of objects can be added to the directory and where |
|
539 |
* they can be added; what mandatory and optional attributes an object |
|
540 |
* can have. The range of support for schemas is directory-specific. |
|
541 |
* |
|
542 |
* <p> This method returns the root of the schema information tree |
|
543 |
* that is applicable to the named object. Several named objects |
|
544 |
* (or even an entire directory) might share the same schema. |
|
545 |
* |
|
546 |
* <p> Issues such as structure and contents of the schema tree, |
|
547 |
* permission to modify to the contents of the schema |
|
548 |
* tree, and the effect of such modifications on the directory |
|
549 |
* are dependent on the underlying directory. |
|
550 |
* |
|
551 |
* @param name |
|
552 |
* the name of the object whose schema is to be retrieved |
|
553 |
* @return the schema associated with the context; never null |
|
554 |
* @throws OperationNotSupportedException if schema not supported |
|
555 |
* @throws NamingException if a naming exception is encountered |
|
556 |
*/ |
|
557 |
public DirContext getSchema(Name name) throws NamingException; |
|
558 |
||
559 |
/** |
|
560 |
* Retrieves the schema associated with the named object. |
|
561 |
* See {@link #getSchema(Name)} for details. |
|
562 |
* |
|
563 |
* @param name |
|
564 |
* the name of the object whose schema is to be retrieved |
|
565 |
* @return the schema associated with the context; never null |
|
566 |
* @throws OperationNotSupportedException if schema not supported |
|
567 |
* @throws NamingException if a naming exception is encountered |
|
568 |
*/ |
|
569 |
public DirContext getSchema(String name) throws NamingException; |
|
570 |
||
571 |
/** |
|
572 |
* Retrieves a context containing the schema objects of the |
|
573 |
* named object's class definitions. |
|
574 |
*<p> |
|
575 |
* One category of information found in directory schemas is |
|
576 |
* <em>class definitions</em>. An "object class" definition |
|
577 |
* specifies the object's <em>type</em> and what attributes (mandatory |
|
578 |
* and optional) the object must/can have. Note that the term |
|
579 |
* "object class" being referred to here is in the directory sense |
|
580 |
* rather than in the Java sense. |
|
581 |
* For example, if the named object is a directory object of |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
582 |
* "Person" class, {@code getSchemaClassDefinition()} would return a |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
583 |
* {@code DirContext} representing the (directory's) object class |
2 | 584 |
* definition of "Person". |
585 |
*<p> |
|
586 |
* The information that can be retrieved from an object class definition |
|
587 |
* is directory-dependent. |
|
588 |
*<p> |
|
589 |
* Prior to JNDI 1.2, this method |
|
590 |
* returned a single schema object representing the class definition of |
|
591 |
* the named object. |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
592 |
* Since JNDI 1.2, this method returns a {@code DirContext} containing |
2 | 593 |
* all of the named object's class definitions. |
594 |
* |
|
595 |
* @param name |
|
596 |
* the name of the object whose object class |
|
597 |
* definition is to be retrieved |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
598 |
* @return the {@code DirContext} containing the named |
2 | 599 |
* object's class definitions; never null |
600 |
* |
|
601 |
* @throws OperationNotSupportedException if schema not supported |
|
602 |
* @throws NamingException if a naming exception is encountered |
|
603 |
*/ |
|
604 |
public DirContext getSchemaClassDefinition(Name name) |
|
605 |
throws NamingException; |
|
606 |
||
607 |
/** |
|
608 |
* Retrieves a context containing the schema objects of the |
|
609 |
* named object's class definitions. |
|
610 |
* See {@link #getSchemaClassDefinition(Name)} for details. |
|
611 |
* |
|
612 |
* @param name |
|
613 |
* the name of the object whose object class |
|
614 |
* definition is to be retrieved |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
615 |
* @return the {@code DirContext} containing the named |
2 | 616 |
* object's class definitions; never null |
617 |
* |
|
618 |
* @throws OperationNotSupportedException if schema not supported |
|
619 |
* @throws NamingException if a naming exception is encountered |
|
620 |
*/ |
|
621 |
public DirContext getSchemaClassDefinition(String name) |
|
622 |
throws NamingException; |
|
623 |
||
624 |
// -------------------- search operations |
|
625 |
||
626 |
/** |
|
627 |
* Searches in a single context for objects that contain a |
|
628 |
* specified set of attributes, and retrieves selected attributes. |
|
629 |
* The search is performed using the default |
|
630 |
* <code>SearchControls</code> settings. |
|
631 |
* <p> |
|
632 |
* For an object to be selected, each attribute in |
|
633 |
* <code>matchingAttributes</code> must match some attribute of the |
|
634 |
* object. If <code>matchingAttributes</code> is empty or |
|
635 |
* null, all objects in the target context are returned. |
|
636 |
*<p> |
|
637 |
* An attribute <em>A</em><sub>1</sub> in |
|
638 |
* <code>matchingAttributes</code> is considered to match an |
|
639 |
* attribute <em>A</em><sub>2</sub> of an object if |
|
640 |
* <em>A</em><sub>1</sub> and <em>A</em><sub>2</sub> have the same |
|
641 |
* identifier, and each value of <em>A</em><sub>1</sub> is equal |
|
642 |
* to some value of <em>A</em><sub>2</sub>. This implies that the |
|
643 |
* order of values is not significant, and that |
|
644 |
* <em>A</em><sub>2</sub> may contain "extra" values not found in |
|
645 |
* <em>A</em><sub>1</sub> without affecting the comparison. It |
|
646 |
* also implies that if <em>A</em><sub>1</sub> has no values, then |
|
647 |
* testing for a match is equivalent to testing for the presence |
|
648 |
* of an attribute <em>A</em><sub>2</sub> with the same |
|
649 |
* identifier. |
|
650 |
*<p> |
|
651 |
* The precise definition of "equality" used in comparing attribute values |
|
652 |
* is defined by the underlying directory service. It might use the |
|
653 |
* <code>Object.equals</code> method, for example, or might use a schema |
|
654 |
* to specify a different equality operation. |
|
655 |
* For matching based on operations other than equality (such as |
|
656 |
* substring comparison) use the version of the <code>search</code> |
|
657 |
* method that takes a filter argument. |
|
658 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
659 |
* When changes are made to this {@code DirContext}, |
2 | 660 |
* the effect on enumerations returned by prior calls to this method |
661 |
* is undefined. |
|
662 |
*<p> |
|
663 |
* If the object does not have the attribute |
|
664 |
* specified, the directory will ignore the nonexistent attribute |
|
665 |
* and return the requested attributes that the object does have. |
|
666 |
*<p> |
|
667 |
* A directory might return more attributes than was requested |
|
668 |
* (see <strong>Attribute Type Names</strong> in the class description), |
|
669 |
* but is not allowed to return arbitrary, unrelated attributes. |
|
670 |
*<p> |
|
671 |
* See also <strong>Operational Attributes</strong> in the class |
|
672 |
* description. |
|
673 |
* |
|
674 |
* @param name |
|
675 |
* the name of the context to search |
|
676 |
* @param matchingAttributes |
|
677 |
* the attributes to search for. If empty or null, |
|
678 |
* all objects in the target context are returned. |
|
679 |
* @param attributesToReturn |
|
680 |
* the attributes to return. null indicates that |
|
681 |
* all attributes are to be returned; |
|
682 |
* an empty array indicates that none are to be returned. |
|
683 |
* @return |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
684 |
* a non-null enumeration of {@code SearchResult} objects. |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
685 |
* Each {@code SearchResult} contains the attributes |
2 | 686 |
* identified by <code>attributesToReturn</code> |
687 |
* and the name of the corresponding object, named relative |
|
688 |
* to the context named by <code>name</code>. |
|
689 |
* @throws NamingException if a naming exception is encountered |
|
690 |
* |
|
691 |
* @see SearchControls |
|
692 |
* @see SearchResult |
|
693 |
* @see #search(Name, String, Object[], SearchControls) |
|
694 |
*/ |
|
695 |
public NamingEnumeration<SearchResult> |
|
696 |
search(Name name, |
|
697 |
Attributes matchingAttributes, |
|
698 |
String[] attributesToReturn) |
|
699 |
throws NamingException; |
|
700 |
||
701 |
/** |
|
702 |
* Searches in a single context for objects that contain a |
|
703 |
* specified set of attributes, and retrieves selected attributes. |
|
704 |
* See {@link #search(Name, Attributes, String[])} for details. |
|
705 |
* |
|
706 |
* @param name |
|
707 |
* the name of the context to search |
|
708 |
* @param matchingAttributes |
|
709 |
* the attributes to search for |
|
710 |
* @param attributesToReturn |
|
711 |
* the attributes to return |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
712 |
* @return a non-null enumeration of {@code SearchResult} objects |
2 | 713 |
* @throws NamingException if a naming exception is encountered |
714 |
*/ |
|
715 |
public NamingEnumeration<SearchResult> |
|
716 |
search(String name, |
|
717 |
Attributes matchingAttributes, |
|
718 |
String[] attributesToReturn) |
|
719 |
throws NamingException; |
|
720 |
||
721 |
/** |
|
722 |
* Searches in a single context for objects that contain a |
|
723 |
* specified set of attributes. |
|
724 |
* This method returns all the attributes of such objects. |
|
725 |
* It is equivalent to supplying null as |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
726 |
* the {@code attributesToReturn} parameter to the method |
2 | 727 |
* <code>search(Name, Attributes, String[])</code>. |
728 |
* <br> |
|
729 |
* See {@link #search(Name, Attributes, String[])} for a full description. |
|
730 |
* |
|
731 |
* @param name |
|
732 |
* the name of the context to search |
|
733 |
* @param matchingAttributes |
|
734 |
* the attributes to search for |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
735 |
* @return an enumeration of {@code SearchResult} objects |
2 | 736 |
* @throws NamingException if a naming exception is encountered |
737 |
* |
|
738 |
* @see #search(Name, Attributes, String[]) |
|
739 |
*/ |
|
740 |
public NamingEnumeration<SearchResult> |
|
741 |
search(Name name, Attributes matchingAttributes) |
|
742 |
throws NamingException; |
|
743 |
||
744 |
/** |
|
745 |
* Searches in a single context for objects that contain a |
|
746 |
* specified set of attributes. |
|
747 |
* See {@link #search(Name, Attributes)} for details. |
|
748 |
* |
|
749 |
* @param name |
|
750 |
* the name of the context to search |
|
751 |
* @param matchingAttributes |
|
752 |
* the attributes to search for |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
753 |
* @return an enumeration of {@code SearchResult} objects |
2 | 754 |
* @throws NamingException if a naming exception is encountered |
755 |
*/ |
|
756 |
public NamingEnumeration<SearchResult> |
|
757 |
search(String name, Attributes matchingAttributes) |
|
758 |
throws NamingException; |
|
759 |
||
760 |
/** |
|
761 |
* Searches in the named context or object for entries that satisfy the |
|
762 |
* given search filter. Performs the search as specified by |
|
763 |
* the search controls. |
|
764 |
* <p> |
|
765 |
* The format and interpretation of <code>filter</code> follows RFC 2254 |
|
766 |
* with the |
|
767 |
* following interpretations for <code>attr</code> and <code>value</code> |
|
768 |
* mentioned in the RFC. |
|
769 |
* <p> |
|
770 |
* <code>attr</code> is the attribute's identifier. |
|
771 |
* <p> |
|
772 |
* <code>value</code> is the string representation the attribute's value. |
|
773 |
* The translation of this string representation into the attribute's value |
|
774 |
* is directory-specific. |
|
775 |
* <p> |
|
776 |
* For the assertion "someCount=127", for example, <code>attr</code> |
|
777 |
* is "someCount" and <code>value</code> is "127". |
|
778 |
* The provider determines, based on the attribute ID ("someCount") |
|
779 |
* (and possibly its schema), that the attribute's value is an integer. |
|
780 |
* It then parses the string "127" appropriately. |
|
781 |
*<p> |
|
782 |
* Any non-ASCII characters in the filter string should be |
|
783 |
* represented by the appropriate Java (Unicode) characters, and |
|
784 |
* not encoded as UTF-8 octets. Alternately, the |
|
785 |
* "backslash-hexcode" notation described in RFC 2254 may be used. |
|
786 |
*<p> |
|
787 |
* If the directory does not support a string representation of |
|
788 |
* some or all of its attributes, the form of <code>search</code> that |
|
789 |
* accepts filter arguments in the form of Objects can be used instead. |
|
790 |
* The service provider for such a directory would then translate |
|
791 |
* the filter arguments to its service-specific representation |
|
792 |
* for filter evaluation. |
|
793 |
* See <code>search(Name, String, Object[], SearchControls)</code>. |
|
794 |
* <p> |
|
795 |
* RFC 2254 defines certain operators for the filter, including substring |
|
796 |
* matches, equality, approximate match, greater than, less than. These |
|
797 |
* operators are mapped to operators with corresponding semantics in the |
|
798 |
* underlying directory. For example, for the equals operator, suppose |
|
799 |
* the directory has a matching rule defining "equality" of the |
|
800 |
* attributes in the filter. This rule would be used for checking |
|
801 |
* equality of the attributes specified in the filter with the attributes |
|
802 |
* of objects in the directory. Similarly, if the directory has a |
|
803 |
* matching rule for ordering, this rule would be used for |
|
804 |
* making "greater than" and "less than" comparisons. |
|
805 |
*<p> |
|
806 |
* Not all of the operators defined in RFC 2254 are applicable to all |
|
807 |
* attributes. When an operator is not applicable, the exception |
|
808 |
* <code>InvalidSearchFilterException</code> is thrown. |
|
809 |
* <p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
810 |
* The result is returned in an enumeration of {@code SearchResult}s. |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
811 |
* Each {@code SearchResult} contains the name of the object |
2 | 812 |
* and other information about the object (see SearchResult). |
813 |
* The name is either relative to the target context of the search |
|
814 |
* (which is named by the <code>name</code> parameter), or |
|
815 |
* it is a URL string. If the target context is included in |
|
816 |
* the enumeration (as is possible when |
|
817 |
* <code>cons</code> specifies a search scope of |
|
818 |
* <code>SearchControls.OBJECT_SCOPE</code> or |
|
819 |
* <code>SearchControls.SUBSTREE_SCOPE</code>), its name is the empty |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
820 |
* string. The {@code SearchResult} may also contain attributes of the |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
821 |
* matching object if the {@code cons} argument specified that attributes |
2 | 822 |
* be returned. |
823 |
*<p> |
|
824 |
* If the object does not have a requested attribute, that |
|
825 |
* nonexistent attribute will be ignored. Those requested |
|
826 |
* attributes that the object does have will be returned. |
|
827 |
*<p> |
|
828 |
* A directory might return more attributes than were requested |
|
829 |
* (see <strong>Attribute Type Names</strong> in the class description) |
|
830 |
* but is not allowed to return arbitrary, unrelated attributes. |
|
831 |
*<p> |
|
832 |
* See also <strong>Operational Attributes</strong> in the class |
|
833 |
* description. |
|
834 |
* |
|
835 |
* @param name |
|
836 |
* the name of the context or object to search |
|
837 |
* @param filter |
|
838 |
* the filter expression to use for the search; may not be null |
|
839 |
* @param cons |
|
840 |
* the search controls that control the search. If null, |
|
841 |
* the default search controls are used (equivalent |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
842 |
* to {@code (new SearchControls())}). |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
843 |
* @return an enumeration of {@code SearchResult}s of |
2 | 844 |
* the objects that satisfy the filter; never null |
845 |
* |
|
846 |
* @throws InvalidSearchFilterException if the search filter specified is |
|
847 |
* not supported or understood by the underlying directory |
|
848 |
* @throws InvalidSearchControlsException if the search controls |
|
849 |
* contain invalid settings |
|
850 |
* @throws NamingException if a naming exception is encountered |
|
851 |
* |
|
852 |
* @see #search(Name, String, Object[], SearchControls) |
|
853 |
* @see SearchControls |
|
854 |
* @see SearchResult |
|
855 |
*/ |
|
856 |
public NamingEnumeration<SearchResult> |
|
857 |
search(Name name, |
|
858 |
String filter, |
|
859 |
SearchControls cons) |
|
860 |
throws NamingException; |
|
861 |
||
862 |
/** |
|
863 |
* Searches in the named context or object for entries that satisfy the |
|
864 |
* given search filter. Performs the search as specified by |
|
865 |
* the search controls. |
|
866 |
* See {@link #search(Name, String, SearchControls)} for details. |
|
867 |
* |
|
868 |
* @param name |
|
869 |
* the name of the context or object to search |
|
870 |
* @param filter |
|
871 |
* the filter expression to use for the search; may not be null |
|
872 |
* @param cons |
|
873 |
* the search controls that control the search. If null, |
|
874 |
* the default search controls are used (equivalent |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
875 |
* to {@code (new SearchControls())}). |
2 | 876 |
* |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
877 |
* @return an enumeration of {@code SearchResult}s for |
2 | 878 |
* the objects that satisfy the filter. |
879 |
* @throws InvalidSearchFilterException if the search filter specified is |
|
880 |
* not supported or understood by the underlying directory |
|
881 |
* @throws InvalidSearchControlsException if the search controls |
|
882 |
* contain invalid settings |
|
883 |
* @throws NamingException if a naming exception is encountered |
|
884 |
*/ |
|
885 |
public NamingEnumeration<SearchResult> |
|
886 |
search(String name, |
|
887 |
String filter, |
|
888 |
SearchControls cons) |
|
889 |
throws NamingException; |
|
890 |
||
891 |
/** |
|
892 |
* Searches in the named context or object for entries that satisfy the |
|
893 |
* given search filter. Performs the search as specified by |
|
894 |
* the search controls. |
|
895 |
*<p> |
|
896 |
* The interpretation of <code>filterExpr</code> is based on RFC |
|
897 |
* 2254. It may additionally contain variables of the form |
|
898 |
* <code>{i}</code> -- where <code>i</code> is an integer -- that |
|
899 |
* refer to objects in the <code>filterArgs</code> array. The |
|
900 |
* interpretation of <code>filterExpr</code> is otherwise |
|
901 |
* identical to that of the <code>filter</code> parameter of the |
|
902 |
* method <code>search(Name, String, SearchControls)</code>. |
|
903 |
*<p> |
|
904 |
* When a variable <code>{i}</code> appears in a search filter, it |
|
905 |
* indicates that the filter argument <code>filterArgs[i]</code> |
|
906 |
* is to be used in that place. Such variables may be used |
|
907 |
* wherever an <em>attr</em>, <em>value</em>, or |
|
908 |
* <em>matchingrule</em> production appears in the filter grammar |
|
909 |
* of RFC 2254, section 4. When a string-valued filter argument |
|
910 |
* is substituted for a variable, the filter is interpreted as if |
|
911 |
* the string were given in place of the variable, with any |
|
912 |
* characters having special significance within filters (such as |
|
913 |
* <code>'*'</code>) having been escaped according to the rules of |
|
914 |
* RFC 2254. |
|
915 |
*<p> |
|
916 |
* For directories that do not use a string representation for |
|
917 |
* some or all of their attributes, the filter argument |
|
918 |
* corresponding to an attribute value may be of a type other than |
|
919 |
* String. Directories that support unstructured binary-valued |
|
920 |
* attributes, for example, should accept byte arrays as filter |
|
921 |
* arguments. The interpretation (if any) of filter arguments of |
|
922 |
* any other type is determined by the service provider for that |
|
923 |
* directory, which maps the filter operations onto operations with |
|
924 |
* corresponding semantics in the underlying directory. |
|
925 |
*<p> |
|
926 |
* This method returns an enumeration of the results. |
|
927 |
* Each element in the enumeration contains the name of the object |
|
928 |
* and other information about the object (see <code>SearchResult</code>). |
|
929 |
* The name is either relative to the target context of the search |
|
930 |
* (which is named by the <code>name</code> parameter), or |
|
931 |
* it is a URL string. If the target context is included in |
|
932 |
* the enumeration (as is possible when |
|
933 |
* <code>cons</code> specifies a search scope of |
|
934 |
* <code>SearchControls.OBJECT_SCOPE</code> or |
|
935 |
* <code>SearchControls.SUBSTREE_SCOPE</code>), |
|
936 |
* its name is the empty string. |
|
937 |
*<p> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
938 |
* The {@code SearchResult} may also contain attributes of the matching |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
939 |
* object if the {@code cons} argument specifies that attributes be |
2 | 940 |
* returned. |
941 |
*<p> |
|
942 |
* If the object does not have a requested attribute, that |
|
943 |
* nonexistent attribute will be ignored. Those requested |
|
944 |
* attributes that the object does have will be returned. |
|
945 |
*<p> |
|
946 |
* A directory might return more attributes than were requested |
|
947 |
* (see <strong>Attribute Type Names</strong> in the class description) |
|
948 |
* but is not allowed to return arbitrary, unrelated attributes. |
|
949 |
*<p> |
|
950 |
* If a search filter with invalid variable substitutions is provided |
|
951 |
* to this method, the result is undefined. |
|
952 |
* When changes are made to this DirContext, |
|
953 |
* the effect on enumerations returned by prior calls to this method |
|
954 |
* is undefined. |
|
955 |
*<p> |
|
956 |
* See also <strong>Operational Attributes</strong> in the class |
|
957 |
* description. |
|
958 |
* |
|
959 |
* @param name |
|
960 |
* the name of the context or object to search |
|
961 |
* @param filterExpr |
|
962 |
* the filter expression to use for the search. |
|
963 |
* The expression may contain variables of the |
|
964 |
* form "<code>{i}</code>" where <code>i</code> |
|
965 |
* is a nonnegative integer. May not be null. |
|
966 |
* @param filterArgs |
|
967 |
* the array of arguments to substitute for the variables |
|
968 |
* in <code>filterExpr</code>. The value of |
|
969 |
* <code>filterArgs[i]</code> will replace each |
|
970 |
* occurrence of "<code>{i}</code>". |
|
971 |
* If null, equivalent to an empty array. |
|
972 |
* @param cons |
|
973 |
* the search controls that control the search. If null, |
|
974 |
* the default search controls are used (equivalent |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
975 |
* to {@code (new SearchControls())}). |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
976 |
* @return an enumeration of {@code SearchResult}s of the objects |
2 | 977 |
* that satisfy the filter; never null |
978 |
* |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
979 |
* @throws ArrayIndexOutOfBoundsException if {@code filterExpr} contains |
2 | 980 |
* <code>{i}</code> expressions where <code>i</code> is outside |
981 |
* the bounds of the array <code>filterArgs</code> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
982 |
* @throws InvalidSearchControlsException if {@code cons} contains |
2 | 983 |
* invalid settings |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
984 |
* @throws InvalidSearchFilterException if {@code filterExpr} with |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
985 |
* {@code filterArgs} represents an invalid search filter |
2 | 986 |
* @throws NamingException if a naming exception is encountered |
987 |
* |
|
988 |
* @see #search(Name, Attributes, String[]) |
|
989 |
* @see java.text.MessageFormat |
|
990 |
*/ |
|
991 |
public NamingEnumeration<SearchResult> |
|
992 |
search(Name name, |
|
993 |
String filterExpr, |
|
994 |
Object[] filterArgs, |
|
995 |
SearchControls cons) |
|
996 |
throws NamingException; |
|
997 |
||
998 |
/** |
|
999 |
* Searches in the named context or object for entries that satisfy the |
|
1000 |
* given search filter. Performs the search as specified by |
|
1001 |
* the search controls. |
|
1002 |
* See {@link #search(Name, String, Object[], SearchControls)} for details. |
|
1003 |
* |
|
1004 |
* @param name |
|
1005 |
* the name of the context or object to search |
|
1006 |
* @param filterExpr |
|
1007 |
* the filter expression to use for the search. |
|
1008 |
* The expression may contain variables of the |
|
1009 |
* form "<code>{i}</code>" where <code>i</code> |
|
1010 |
* is a nonnegative integer. May not be null. |
|
1011 |
* @param filterArgs |
|
1012 |
* the array of arguments to substitute for the variables |
|
1013 |
* in <code>filterExpr</code>. The value of |
|
1014 |
* <code>filterArgs[i]</code> will replace each |
|
1015 |
* occurrence of "<code>{i}</code>". |
|
1016 |
* If null, equivalent to an empty array. |
|
1017 |
* @param cons |
|
1018 |
* the search controls that control the search. If null, |
|
1019 |
* the default search controls are used (equivalent |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
1020 |
* to {@code (new SearchControls())}). |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
1021 |
* @return an enumeration of {@code SearchResult}s of the objects |
2 | 1022 |
* that satisfy the filter; never null |
1023 |
* |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
1024 |
* @throws ArrayIndexOutOfBoundsException if {@code filterExpr} contains |
2 | 1025 |
* <code>{i}</code> expressions where <code>i</code> is outside |
1026 |
* the bounds of the array <code>filterArgs</code> |
|
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
1027 |
* @throws InvalidSearchControlsException if {@code cons} contains |
2 | 1028 |
* invalid settings |
32029
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
1029 |
* @throws InvalidSearchFilterException if {@code filterExpr} with |
a5538163e144
8132877: docs: replace <tt> tags (obsolete in html5) for javax.naming
avstepan
parents:
25859
diff
changeset
|
1030 |
* {@code filterArgs} represents an invalid search filter |
2 | 1031 |
* @throws NamingException if a naming exception is encountered |
1032 |
*/ |
|
1033 |
public NamingEnumeration<SearchResult> |
|
1034 |
search(String name, |
|
1035 |
String filterExpr, |
|
1036 |
Object[] filterArgs, |
|
1037 |
SearchControls cons) |
|
1038 |
throws NamingException; |
|
1039 |
} |