Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.naming/share/classes/javax/naming/LinkException.java
41152 views
1
/*
2
* Copyright (c) 1999, 2019, 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 exception is used to describe problems encountered while resolving links.
30
* Additional information is added to the base NamingException for pinpointing
31
* the problem with the link.
32
*<p>
33
* Analogously to how NamingException captures name resolution information,
34
* LinkException captures "link"-name resolution information pinpointing
35
* the problem encountered while resolving a link. All these fields may
36
* be null.
37
* <ul>
38
* <li> Link Resolved Name. Portion of link name that has been resolved.
39
* <li> Link Resolved Object. Object to which resolution of link name proceeded.
40
* <li> Link Remaining Name. Portion of link name that has not been resolved.
41
* <li> Link Explanation. Detail explaining why link resolution failed.
42
*</ul>
43
*
44
*<p>
45
* A LinkException instance is not synchronized against concurrent
46
* multithreaded access. Multiple threads trying to access and modify
47
* a single LinkException instance should lock the object.
48
*
49
* @author Rosanna Lee
50
* @author Scott Seligman
51
*
52
* @see Context#lookupLink
53
* @see LinkRef
54
* @since 1.3
55
*/
56
57
58
/*<p>
59
* The serialized form of a LinkException object consists of the
60
* serialized fields of its NamingException superclass, the link resolved
61
* name (a Name object), the link resolved object, link remaining name
62
* (a Name object), and the link explanation String.
63
*/
64
65
66
public class LinkException extends NamingException {
67
/**
68
* Contains the part of the link that has been successfully resolved.
69
* It is a composite name and can be null.
70
* This field is initialized by the constructors.
71
* You should access and manipulate this field
72
* through its get and set methods.
73
* @serial
74
* @see #getLinkResolvedName
75
* @see #setLinkResolvedName
76
*/
77
protected Name linkResolvedName;
78
79
/**
80
* Contains the object to which resolution of the part of the link was successful.
81
* Can be null. This field is initialized by the constructors.
82
* You should access and manipulate this field
83
* through its get and set methods.
84
* @serial
85
* @see #getLinkResolvedObj
86
* @see #setLinkResolvedObj
87
*/
88
@SuppressWarnings("serial") // Not statically typed as Serializable
89
protected Object linkResolvedObj;
90
91
/**
92
* Contains the remaining link name that has not been resolved yet.
93
* It is a composite name and can be null.
94
* This field is initialized by the constructors.
95
* You should access and manipulate this field
96
* through its get and set methods.
97
* @serial
98
* @see #getLinkRemainingName
99
* @see #setLinkRemainingName
100
*/
101
protected Name linkRemainingName;
102
103
/**
104
* Contains the exception of why resolution of the link failed.
105
* Can be null. This field is initialized by the constructors.
106
* You should access and manipulate this field
107
* through its get and set methods.
108
* @serial
109
* @see #getLinkExplanation
110
* @see #setLinkExplanation
111
*/
112
protected String linkExplanation;
113
114
/**
115
* Constructs a new instance of LinkException with an explanation.
116
* All the other fields are initialized to null.
117
* @param explanation A possibly null string containing additional
118
* detail about this exception.
119
* @see java.lang.Throwable#getMessage
120
*/
121
public LinkException(String explanation) {
122
super(explanation);
123
linkResolvedName = null;
124
linkResolvedObj = null;
125
linkRemainingName = null;
126
linkExplanation = null;
127
}
128
129
/**
130
* Constructs a new instance of LinkException.
131
* All the non-link-related and link-related fields are initialized to null.
132
*/
133
public LinkException() {
134
super();
135
linkResolvedName = null;
136
linkResolvedObj = null;
137
linkRemainingName = null;
138
linkExplanation = null;
139
}
140
141
/**
142
* Retrieves the leading portion of the link name that was resolved
143
* successfully.
144
*
145
* @return The part of the link name that was resolved successfully.
146
* It is a composite name. It can be null, which means
147
* the link resolved name field has not been set.
148
* @see #getLinkResolvedObj
149
* @see #setLinkResolvedName
150
*/
151
public Name getLinkResolvedName() {
152
return this.linkResolvedName;
153
}
154
155
/**
156
* Retrieves the remaining unresolved portion of the link name.
157
* @return The part of the link name that has not been resolved.
158
* It is a composite name. It can be null, which means
159
* the link remaining name field has not been set.
160
* @see #setLinkRemainingName
161
*/
162
public Name getLinkRemainingName() {
163
return this.linkRemainingName;
164
}
165
166
/**
167
* Retrieves the object to which resolution was successful.
168
* This is the object to which the resolved link name is bound.
169
*
170
* @return The possibly null object that was resolved so far.
171
* If null, it means the link resolved object field has not been set.
172
* @see #getLinkResolvedName
173
* @see #setLinkResolvedObj
174
*/
175
public Object getLinkResolvedObj() {
176
return this.linkResolvedObj;
177
}
178
179
/**
180
* Retrieves the explanation associated with the problem encountered
181
* when resolving a link.
182
*
183
* @return The possibly null detail string explaining more about the problem
184
* with resolving a link.
185
* If null, it means there is no
186
* link detail message for this exception.
187
* @see #setLinkExplanation
188
*/
189
public String getLinkExplanation() {
190
return this.linkExplanation;
191
}
192
193
/**
194
* Sets the explanation associated with the problem encountered
195
* when resolving a link.
196
*
197
* @param msg The possibly null detail string explaining more about the problem
198
* with resolving a link. If null, it means no detail will be recorded.
199
* @see #getLinkExplanation
200
*/
201
public void setLinkExplanation(String msg) {
202
this.linkExplanation = msg;
203
}
204
205
/**
206
* Sets the resolved link name field of this exception.
207
*<p>
208
* {@code name} is a composite name. If the intent is to set
209
* this field using a compound name or string, you must
210
* "stringify" the compound name, and create a composite
211
* name with a single component using the string. You can then
212
* invoke this method using the resulting composite name.
213
*<p>
214
* A copy of <code>name</code> is made and stored.
215
* Subsequent changes to <code>name</code> do not
216
* affect the copy in this NamingException and vice versa.
217
*
218
*
219
* @param name The name to set resolved link name to. This can be null.
220
* If null, it sets the link resolved name field to null.
221
* @see #getLinkResolvedName
222
*/
223
public void setLinkResolvedName(Name name) {
224
if (name != null) {
225
this.linkResolvedName = (Name)(name.clone());
226
} else {
227
this.linkResolvedName = null;
228
}
229
}
230
231
/**
232
* Sets the remaining link name field of this exception.
233
*<p>
234
* {@code name} is a composite name. If the intent is to set
235
* this field using a compound name or string, you must
236
* "stringify" the compound name, and create a composite
237
* name with a single component using the string. You can then
238
* invoke this method using the resulting composite name.
239
*<p>
240
* A copy of <code>name</code> is made and stored.
241
* Subsequent changes to <code>name</code> do not
242
* affect the copy in this NamingException and vice versa.
243
*
244
* @param name The name to set remaining link name to. This can be null.
245
* If null, it sets the remaining name field to null.
246
* @see #getLinkRemainingName
247
*/
248
public void setLinkRemainingName(Name name) {
249
if (name != null)
250
this.linkRemainingName = (Name)(name.clone());
251
else
252
this.linkRemainingName = null;
253
}
254
255
/**
256
* Sets the link resolved object field of this exception.
257
* This indicates the last successfully resolved object of link name.
258
* @param obj The object to set link resolved object to. This can be null.
259
* If null, the link resolved object field is set to null.
260
* @see #getLinkResolvedObj
261
*/
262
public void setLinkResolvedObj(Object obj) {
263
this.linkResolvedObj = obj;
264
}
265
266
/**
267
* Generates the string representation of this exception.
268
* This string consists of the NamingException information plus
269
* the link's remaining name.
270
* This string is used for debugging and not meant to be interpreted
271
* programmatically.
272
* @return The non-null string representation of this link exception.
273
*/
274
public String toString() {
275
return super.toString() + "; Link Remaining Name: '" +
276
this.linkRemainingName + "'";
277
}
278
279
/**
280
* Generates the string representation of this exception.
281
* This string consists of the NamingException information plus
282
* the additional information of resolving the link.
283
* If 'detail' is true, the string also contains information on
284
* the link resolved object. If false, this method is the same
285
* as the form of toString() that accepts no parameters.
286
* This string is used for debugging and not meant to be interpreted
287
* programmatically.
288
*
289
* @param detail If true, add information about the link resolved
290
* object.
291
* @return The non-null string representation of this link exception.
292
*/
293
public String toString(boolean detail) {
294
if (!detail || this.linkResolvedObj == null)
295
return this.toString();
296
297
return this.toString() + "; Link Resolved Object: " +
298
this.linkResolvedObj;
299
}
300
301
/**
302
* Use serialVersionUID from JNDI 1.1.1 for interoperability
303
*/
304
private static final long serialVersionUID = -7967662604076777712L;
305
};
306
307