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/Binding.java
38829 views
1
/*
2
* Copyright (c) 1999, 2013, 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 a name-to-object binding found in a context.
30
*<p>
31
* A context consists of name-to-object bindings.
32
* The Binding class represents such a binding. It consists
33
* of a name and an object. The <code>Context.listBindings()</code>
34
* method returns an enumeration of Binding.
35
*<p>
36
* Use subclassing for naming systems that generate contents of
37
* a binding dynamically.
38
*<p>
39
* A Binding instance is not synchronized against concurrent access by multiple
40
* threads. Threads that need to access a Binding concurrently should
41
* synchronize amongst themselves and provide the necessary locking.
42
*
43
* @author Rosanna Lee
44
* @author Scott Seligman
45
* @since 1.3
46
*/
47
48
public class Binding extends NameClassPair {
49
/**
50
* Contains this binding's object.
51
* It is initialized by the constructor and can be updated using
52
* <tt>setObject</tt>.
53
* @serial
54
* @see #getObject
55
* @see #setObject
56
*/
57
private Object boundObj;
58
59
/**
60
* Constructs an instance of a Binding given its name and object.
61
*<p>
62
* <tt>getClassName()</tt> will return
63
* the class name of <tt>obj</tt> (or null if <tt>obj</tt> is null)
64
* unless the class name has been explicitly set using <tt>setClassName()</tt>
65
*
66
* @param name The non-null name of the object. It is relative
67
* to the <em>target context</em> (which is
68
* named by the first parameter of the <code>listBindings()</code> method)
69
* @param obj The possibly null object bound to name.
70
* @see NameClassPair#setClassName
71
*/
72
public Binding(String name, Object obj) {
73
super(name, null);
74
this.boundObj = obj;
75
}
76
77
/**
78
* Constructs an instance of a Binding given its name, object, and whether
79
* the name is relative.
80
*<p>
81
* <tt>getClassName()</tt> will return the class name of <tt>obj</tt>
82
* (or null if <tt>obj</tt> is null) unless the class name has been
83
* explicitly set using <tt>setClassName()</tt>
84
*
85
* @param name The non-null string name of the object.
86
* @param obj The possibly null object bound to name.
87
* @param isRelative true if <code>name</code> is a name relative
88
* to the target context (which is named by
89
* the first parameter of the <code>listBindings()</code> method);
90
* false if <code>name</code> is a URL string.
91
* @see NameClassPair#isRelative
92
* @see NameClassPair#setRelative
93
* @see NameClassPair#setClassName
94
*/
95
public Binding(String name, Object obj, boolean isRelative) {
96
super(name, null, isRelative);
97
this.boundObj = obj;
98
}
99
100
/**
101
* Constructs an instance of a Binding given its name, class name, and object.
102
*
103
* @param name The non-null name of the object. It is relative
104
* to the <em>target context</em> (which is
105
* named by the first parameter of the <code>listBindings()</code> method)
106
* @param className The possibly null class name of the object
107
* bound to <tt>name</tt>. If null, the class name of <tt>obj</tt> is
108
* returned by <tt>getClassName()</tt>. If <tt>obj</tt> is also
109
* null, <tt>getClassName()</tt> will return null.
110
* @param obj The possibly null object bound to name.
111
* @see NameClassPair#setClassName
112
*/
113
public Binding(String name, String className, Object obj) {
114
super(name, className);
115
this.boundObj = obj;
116
}
117
118
/**
119
* Constructs an instance of a Binding given its
120
* name, class name, object, and whether the name is relative.
121
*
122
* @param name The non-null string name of the object.
123
* @param className The possibly null class name of the object
124
* bound to <tt>name</tt>. If null, the class name of <tt>obj</tt> is
125
* returned by <tt>getClassName()</tt>. If <tt>obj</tt> is also
126
* null, <tt>getClassName()</tt> will return null.
127
* @param obj The possibly null object bound to name.
128
* @param isRelative true if <code>name</code> is a name relative
129
* to the target context (which is named by
130
* the first parameter of the <code>listBindings()</code> method);
131
* false if <code>name</code> is a URL string.
132
* @see NameClassPair#isRelative
133
* @see NameClassPair#setRelative
134
* @see NameClassPair#setClassName
135
*/
136
public Binding(String name, String className, Object obj, boolean isRelative) {
137
super(name, className, isRelative);
138
this.boundObj = obj;
139
}
140
141
/**
142
* Retrieves the class name of the object bound to the name of this binding.
143
* If the class name has been set explicitly, return it.
144
* Otherwise, if this binding contains a non-null object,
145
* that object's class name is used. Otherwise, null is returned.
146
*
147
* @return A possibly null string containing class name of object bound.
148
*/
149
public String getClassName() {
150
String cname = super.getClassName();
151
if (cname != null) {
152
return cname;
153
}
154
if (boundObj != null)
155
return boundObj.getClass().getName();
156
else
157
return null;
158
}
159
160
/**
161
* Retrieves the object bound to the name of this binding.
162
*
163
* @return The object bound; null if this binding does not contain an object.
164
* @see #setObject
165
*/
166
167
public Object getObject() {
168
return boundObj;
169
}
170
171
/**
172
* Sets the object associated with this binding.
173
* @param obj The possibly null object to use.
174
* @see #getObject
175
*/
176
public void setObject(Object obj) {
177
boundObj = obj;
178
}
179
180
/**
181
* Generates the string representation of this binding.
182
* The string representation consists of the string representation
183
* of the name/class pair and the string representation of
184
* this binding's object, separated by ':'.
185
* The contents of this string is useful
186
* for debugging and is not meant to be interpreted programmatically.
187
*
188
* @return The non-null string representation of this binding.
189
*/
190
191
public String toString() {
192
return super.toString() + ":" + getObject();
193
}
194
195
/**
196
* Use serialVersionUID from JNDI 1.1.1 for interoperability
197
*/
198
private static final long serialVersionUID = 8839217842691845890L;
199
};
200
201