Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.naming/share/classes/javax/naming/NameClassPair.java
41152 views
1
/*
2
* Copyright (c) 1999, 2003, 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
/**
29
* This class represents the object name and class name pair of a binding
30
* found in a context.
31
*<p>
32
* A context consists of name-to-object bindings.
33
* The NameClassPair class represents the name and the
34
* class of the bound object. It consists
35
* of a name and a string representing the
36
* package-qualified class name.
37
*<p>
38
* Use subclassing for naming systems that generate contents of
39
* a name/class pair dynamically.
40
*<p>
41
* A NameClassPair instance is not synchronized against concurrent
42
* access by multiple threads. Threads that need to access a NameClassPair
43
* concurrently should synchronize amongst themselves and provide
44
* the necessary locking.
45
*
46
* @author Rosanna Lee
47
* @author Scott Seligman
48
*
49
* @see Context#list
50
* @since 1.3
51
*/
52
53
/*
54
* <p>
55
* The serialized form of a NameClassPair object consists of the name (a
56
* String), class name (a String), and isRelative flag (a boolean).
57
*/
58
59
public class NameClassPair implements java.io.Serializable {
60
/**
61
* Contains the name of this NameClassPair.
62
* It is initialized by the constructor and can be updated using
63
* {@code setName()}.
64
* @serial
65
* @see #getName
66
* @see #setName
67
*/
68
private String name;
69
70
/**
71
*Contains the class name contained in this NameClassPair.
72
* It is initialized by the constructor and can be updated using
73
* {@code setClassName()}.
74
* @serial
75
* @see #getClassName
76
* @see #setClassName
77
*/
78
private String className;
79
80
/**
81
* Contains the full name of this NameClassPair within its
82
* own namespace.
83
* It is initialized using {@code setNameInNamespace()}
84
* @serial
85
* @see #getNameInNamespace
86
* @see #setNameInNamespace
87
*/
88
private String fullName = null;
89
90
91
/**
92
* Records whether the name of this {@code NameClassPair}
93
* is relative to the target context.
94
* It is initialized by the constructor and can be updated using
95
* {@code setRelative()}.
96
* @serial
97
* @see #isRelative
98
* @see #setRelative
99
* @see #getName
100
* @see #setName
101
*/
102
private boolean isRel = true;
103
104
/**
105
* Constructs an instance of a NameClassPair given its
106
* name and class name.
107
*
108
* @param name The non-null name of the object. It is relative
109
* to the <em>target context</em> (which is
110
* named by the first parameter of the <code>list()</code> method)
111
* @param className The possibly null class name of the object
112
* bound to name. It is null if the object bound is null.
113
* @see #getClassName
114
* @see #setClassName
115
* @see #getName
116
* @see #setName
117
*/
118
public NameClassPair(String name, String className) {
119
this.name = name;
120
this.className = className;
121
}
122
123
/**
124
* Constructs an instance of a NameClassPair given its
125
* name, class name, and whether it is relative to the listing context.
126
*
127
* @param name The non-null name of the object.
128
* @param className The possibly null class name of the object
129
* bound to name. It is null if the object bound is null.
130
* @param isRelative true if <code>name</code> is a name relative
131
* to the target context (which is named by the first parameter
132
* of the <code>list()</code> method); false if <code>name</code>
133
* is a URL string.
134
* @see #getClassName
135
* @see #setClassName
136
* @see #getName
137
* @see #setName
138
* @see #isRelative
139
* @see #setRelative
140
*/
141
public NameClassPair(String name, String className, boolean isRelative) {
142
this.name = name;
143
this.className = className;
144
this.isRel = isRelative;
145
}
146
147
/**
148
* Retrieves the class name of the object bound to the name of this binding.
149
* If a reference or some other indirect information is bound,
150
* retrieves the class name of the eventual object that
151
* will be returned by {@code Binding.getObject()}.
152
*
153
* @return The possibly null class name of object bound.
154
* It is null if the object bound is null.
155
* @see Binding#getObject
156
* @see Binding#getClassName
157
* @see #setClassName
158
*/
159
public String getClassName() {
160
return className;
161
}
162
163
/**
164
* Retrieves the name of this binding.
165
* If {@code isRelative()} is true, this name is relative to the
166
* target context (which is named by the first parameter of the
167
* {@code list()}).
168
* If {@code isRelative()} is false, this name is a URL string.
169
*
170
* @return The non-null name of this binding.
171
* @see #isRelative
172
* @see #setName
173
*/
174
public String getName() {
175
return name;
176
}
177
178
/**
179
* Sets the name of this binding.
180
*
181
* @param name the non-null string to use as the name.
182
* @see #getName
183
* @see #setRelative
184
*/
185
public void setName(String name) {
186
this.name = name;
187
}
188
189
/**
190
* Sets the class name of this binding.
191
*
192
* @param name the possibly null string to use as the class name.
193
* If null, {@code Binding.getClassName()} will return
194
* the actual class name of the object in the binding.
195
* The class name will be null if the object bound is null.
196
* @see #getClassName
197
* @see Binding#getClassName
198
*/
199
public void setClassName(String name) {
200
this.className = name;
201
}
202
203
/**
204
* Determines whether the name of this binding is
205
* relative to the target context (which is named by
206
* the first parameter of the <code>list()</code> method).
207
*
208
* @return true if the name of this binding is relative to the
209
* target context;
210
* false if the name of this binding is a URL string.
211
* @see #setRelative
212
* @see #getName
213
*/
214
public boolean isRelative() {
215
return isRel;
216
}
217
218
/**
219
* Sets whether the name of this binding is relative to the target
220
* context (which is named by the first parameter of the <code>list()</code>
221
* method).
222
*
223
* @param r If true, the name of binding is relative to the target context;
224
* if false, the name of binding is a URL string.
225
* @see #isRelative
226
* @see #setName
227
*/
228
public void setRelative(boolean r) {
229
isRel = r;
230
}
231
232
/**
233
* Retrieves the full name of this binding.
234
* The full name is the absolute name of this binding within
235
* its own namespace. See {@link Context#getNameInNamespace()}.
236
* <p>
237
*
238
* In naming systems for which the notion of full name does not
239
* apply to this binding an {@code UnsupportedOperationException}
240
* is thrown.
241
* This exception is also thrown when a service provider written before
242
* the introduction of the method is in use.
243
* <p>
244
* The string returned by this method is not a JNDI composite name and
245
* should not be passed directly to context methods.
246
*
247
* @return The full name of this binding.
248
* @throws UnsupportedOperationException if the notion of full name
249
* does not apply to this binding in the naming system.
250
* @since 1.5
251
* @see #setNameInNamespace
252
* @see #getName
253
*/
254
public String getNameInNamespace() {
255
if (fullName == null) {
256
throw new UnsupportedOperationException();
257
}
258
return fullName;
259
}
260
261
/**
262
* Sets the full name of this binding.
263
* This method must be called to set the full name whenever a
264
* {@code NameClassPair} is created and a full name is
265
* applicable to this binding.
266
* <p>
267
* Setting the full name to null, or not setting it at all, will
268
* cause {@code getNameInNamespace()} to throw an exception.
269
*
270
* @param fullName The full name to use.
271
* @since 1.5
272
* @see #getNameInNamespace
273
* @see #setName
274
*/
275
public void setNameInNamespace(String fullName) {
276
this.fullName = fullName;
277
}
278
279
/**
280
* Generates the string representation of this name/class pair.
281
* The string representation consists of the name and class name separated
282
* by a colon (':').
283
* The contents of this string is useful
284
* for debugging and is not meant to be interpreted programmatically.
285
*
286
* @return The string representation of this name/class pair.
287
*/
288
public String toString() {
289
return (isRelative() ? "" : "(not relative)") + getName() + ": " +
290
getClassName();
291
}
292
293
294
/**
295
* Use serialVersionUID from JNDI 1.1.1 for interoperability
296
*/
297
private static final long serialVersionUID = 5620776610160863339L;
298
}
299
300