Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/javax/naming/Name.java
38829 views
1
/*
2
* Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
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
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
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
*
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.
24
*/
25
26
package javax.naming;
27
28
import java.util.Enumeration;
29
30
/**
31
* The <tt>Name</tt> interface represents a generic name -- an ordered
32
* sequence of components. It can be a composite name (names that
33
* span multiple namespaces), or a compound name (names that are
34
* used within individual hierarchical naming systems).
35
*
36
* <p> There can be different implementations of <tt>Name</tt>; for example,
37
* composite names, URLs, or namespace-specific compound names.
38
*
39
* <p> The components of a name are numbered. The indexes of a name
40
* with N components range from 0 up to, but not including, N. This
41
* range may be written as [0,N).
42
* The most significant component is at index 0.
43
* An empty name has no components.
44
*
45
* <p> None of the methods in this interface accept null as a valid
46
* value for a parameter that is a name or a name component.
47
* Likewise, methods that return a name or name component never return null.
48
*
49
* <p> An instance of a <tt>Name</tt> may not be synchronized against
50
* concurrent multithreaded access if that access is not read-only.
51
*
52
* @author Rosanna Lee
53
* @author Scott Seligman
54
* @author R. Vasudevan
55
* @since 1.3
56
*/
57
58
public interface Name
59
extends Cloneable, java.io.Serializable, Comparable<Object>
60
{
61
62
/**
63
* The class fingerprint that is set to indicate
64
* serialization compatibility with a previous
65
* version of the class.
66
*/
67
static final long serialVersionUID = -3617482732056931635L;
68
69
/**
70
* Generates a new copy of this name.
71
* Subsequent changes to the components of this name will not
72
* affect the new copy, and vice versa.
73
*
74
* @return a copy of this name
75
*
76
* @see Object#clone()
77
*/
78
public Object clone();
79
80
/**
81
* Compares this name with another name for order.
82
* Returns a negative integer, zero, or a positive integer as this
83
* name is less than, equal to, or greater than the given name.
84
*
85
* <p> As with <tt>Object.equals()</tt>, the notion of ordering for names
86
* depends on the class that implements this interface.
87
* For example, the ordering may be
88
* based on lexicographical ordering of the name components.
89
* Specific attributes of the name, such as how it treats case,
90
* may affect the ordering. In general, two names of different
91
* classes may not be compared.
92
*
93
* @param obj the non-null object to compare against.
94
* @return a negative integer, zero, or a positive integer as this name
95
* is less than, equal to, or greater than the given name
96
* @throws ClassCastException if obj is not a <tt>Name</tt> of a
97
* type that may be compared with this name
98
*
99
* @see Comparable#compareTo(Object)
100
*/
101
public int compareTo(Object obj);
102
103
/**
104
* Returns the number of components in this name.
105
*
106
* @return the number of components in this name
107
*/
108
public int size();
109
110
/**
111
* Determines whether this name is empty.
112
* An empty name is one with zero components.
113
*
114
* @return true if this name is empty, false otherwise
115
*/
116
public boolean isEmpty();
117
118
/**
119
* Retrieves the components of this name as an enumeration
120
* of strings. The effect on the enumeration of updates to
121
* this name is undefined. If the name has zero components,
122
* an empty (non-null) enumeration is returned.
123
*
124
* @return an enumeration of the components of this name, each a string
125
*/
126
public Enumeration<String> getAll();
127
128
/**
129
* Retrieves a component of this name.
130
*
131
* @param posn
132
* the 0-based index of the component to retrieve.
133
* Must be in the range [0,size()).
134
* @return the component at index posn
135
* @throws ArrayIndexOutOfBoundsException
136
* if posn is outside the specified range
137
*/
138
public String get(int posn);
139
140
/**
141
* Creates a name whose components consist of a prefix of the
142
* components of this name. Subsequent changes to
143
* this name will not affect the name that is returned and vice versa.
144
*
145
* @param posn
146
* the 0-based index of the component at which to stop.
147
* Must be in the range [0,size()].
148
* @return a name consisting of the components at indexes in
149
* the range [0,posn).
150
* @throws ArrayIndexOutOfBoundsException
151
* if posn is outside the specified range
152
*/
153
public Name getPrefix(int posn);
154
155
/**
156
* Creates a name whose components consist of a suffix of the
157
* components in this name. Subsequent changes to
158
* this name do not affect the name that is returned and vice versa.
159
*
160
* @param posn
161
* the 0-based index of the component at which to start.
162
* Must be in the range [0,size()].
163
* @return a name consisting of the components at indexes in
164
* the range [posn,size()). If posn is equal to
165
* size(), an empty name is returned.
166
* @throws ArrayIndexOutOfBoundsException
167
* if posn is outside the specified range
168
*/
169
public Name getSuffix(int posn);
170
171
/**
172
* Determines whether this name starts with a specified prefix.
173
* A name <tt>n</tt> is a prefix if it is equal to
174
* <tt>getPrefix(n.size())</tt>.
175
*
176
* @param n
177
* the name to check
178
* @return true if <tt>n</tt> is a prefix of this name, false otherwise
179
*/
180
public boolean startsWith(Name n);
181
182
/**
183
* Determines whether this name ends with a specified suffix.
184
* A name <tt>n</tt> is a suffix if it is equal to
185
* <tt>getSuffix(size()-n.size())</tt>.
186
*
187
* @param n
188
* the name to check
189
* @return true if <tt>n</tt> is a suffix of this name, false otherwise
190
*/
191
public boolean endsWith(Name n);
192
193
/**
194
* Adds the components of a name -- in order -- to the end of this name.
195
*
196
* @param suffix
197
* the components to add
198
* @return the updated name (not a new one)
199
*
200
* @throws InvalidNameException if <tt>suffix</tt> is not a valid name,
201
* or if the addition of the components would violate the syntax
202
* rules of this name
203
*/
204
public Name addAll(Name suffix) throws InvalidNameException;
205
206
/**
207
* Adds the components of a name -- in order -- at a specified position
208
* within this name.
209
* Components of this name at or after the index of the first new
210
* component are shifted up (away from 0) to accommodate the new
211
* components.
212
*
213
* @param n
214
* the components to add
215
* @param posn
216
* the index in this name at which to add the new
217
* components. Must be in the range [0,size()].
218
* @return the updated name (not a new one)
219
*
220
* @throws ArrayIndexOutOfBoundsException
221
* if posn is outside the specified range
222
* @throws InvalidNameException if <tt>n</tt> is not a valid name,
223
* or if the addition of the components would violate the syntax
224
* rules of this name
225
*/
226
public Name addAll(int posn, Name n) throws InvalidNameException;
227
228
/**
229
* Adds a single component to the end of this name.
230
*
231
* @param comp
232
* the component to add
233
* @return the updated name (not a new one)
234
*
235
* @throws InvalidNameException if adding <tt>comp</tt> would violate
236
* the syntax rules of this name
237
*/
238
public Name add(String comp) throws InvalidNameException;
239
240
/**
241
* Adds a single component at a specified position within this name.
242
* Components of this name at or after the index of the new component
243
* are shifted up by one (away from index 0) to accommodate the new
244
* component.
245
*
246
* @param comp
247
* the component to add
248
* @param posn
249
* the index at which to add the new component.
250
* Must be in the range [0,size()].
251
* @return the updated name (not a new one)
252
*
253
* @throws ArrayIndexOutOfBoundsException
254
* if posn is outside the specified range
255
* @throws InvalidNameException if adding <tt>comp</tt> would violate
256
* the syntax rules of this name
257
*/
258
public Name add(int posn, String comp) throws InvalidNameException;
259
260
/**
261
* Removes a component from this name.
262
* The component of this name at the specified position is removed.
263
* Components with indexes greater than this position
264
* are shifted down (toward index 0) by one.
265
*
266
* @param posn
267
* the index of the component to remove.
268
* Must be in the range [0,size()).
269
* @return the component removed (a String)
270
*
271
* @throws ArrayIndexOutOfBoundsException
272
* if posn is outside the specified range
273
* @throws InvalidNameException if deleting the component
274
* would violate the syntax rules of the name
275
*/
276
public Object remove(int posn) throws InvalidNameException;
277
}
278
279