| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package javax.naming; |
| |
| /** |
| * Binding extends <code>NameClassPair</code> to associate an object in a |
| * naming service with its name, specified class name and relative flag. As with |
| * <code>NameClassPair</code>, a class name is only specified when it is |
| * necessary to override the real class name of the associated object. |
| * <p> |
| * Multithreaded access to a <code>Binding</code> instance is only safe when |
| * client code locks the object first. |
| * </p> |
| */ |
| public class Binding extends NameClassPair { |
| |
| private static final long serialVersionUID = 8839217842691845890L; |
| |
| private Object boundObj; |
| |
| /** |
| * Construct a <code>Binding</code> from a name and a class. Relative flag |
| * is true. |
| * |
| * @param name |
| * a name, may not be <code>null</code>. |
| * @param obj |
| * an object bound with the name, may be <code>null</code>. |
| */ |
| public Binding(String name, Object obj) { |
| this(name, null, obj, true); |
| } |
| |
| /** |
| * Construct a <code>Binding</code> from a name, an object and a relative |
| * flag. |
| * |
| * @param name |
| * a name, which may not be <code>null</code>. |
| * @param obj |
| * an object bound with the name, may be <code>null</code>. |
| * @param relative |
| * a relative flag |
| */ |
| public Binding(String name, Object obj, boolean relative) { |
| this(name, null, obj, relative); |
| } |
| |
| /** |
| * Construct a <code>Binding</code> from a name, a class, and an object. |
| * The class and object parameters may be null. Relative flag is true. |
| * |
| * @param name |
| * a name, which may not be <code>null</code>. |
| * @param className |
| * a class name, may be <code>null</code>. |
| * @param obj |
| * an object bound with the name, may be <code>null</code>. |
| */ |
| public Binding(String name, String className, Object obj) { |
| this(name, className, obj, true); |
| } |
| |
| /** |
| * Construct a <code>Binding</code> from a name, a class, an object and a |
| * relative flag. The class and object parameters may be null. |
| * |
| * @param name |
| * a name, which may not be <code>null</code>. |
| * @param className |
| * a class name, may be <code>null</code>. |
| * @param obj |
| * an object bound with the name, may be <code>null</code>. |
| * @param relative |
| * a relative flag |
| */ |
| public Binding(String name, String className, Object obj, boolean relative) { |
| super(name, className, relative); |
| this.boundObj = obj; |
| } |
| |
| /** |
| * Get the class name of this <code>Binding</code>. It may have been |
| * specified, in which case the class name field is set, and that is the |
| * string returned by this method. If the class name field has not been |
| * specified then the object associated with this <code>Binding</code> is |
| * interrogated to find its actual class name. If there is no class name |
| * field specified and no associated object then this method returns null. |
| * |
| * @return the class name |
| */ |
| @Override |
| public String getClassName() { |
| if (super.getClassName() != null) { |
| return super.getClassName(); |
| } |
| if (boundObj != null) { |
| return boundObj.getClass().getName(); |
| } |
| return null; |
| } |
| |
| /** |
| * Get the object associated with this <code>Binding</code>. May return |
| * null. |
| * |
| * @return the object associated with this <code>Binding</code>. May |
| * return null. |
| */ |
| public Object getObject() { |
| return boundObj; |
| } |
| |
| /** |
| * Set the object o associated with this <code>Binding</code>. The object |
| * may be null. |
| * |
| * @param object |
| * an object |
| */ |
| public void setObject(Object object) { |
| this.boundObj = object; |
| } |
| |
| /** |
| * Provide a string representation of this object. This is the same as for |
| * <code>NameClassPair</code> but with the string representation of the |
| * <code>Binding</code> object appended to the end. |
| * |
| * @return a string representation of this <code>Binding</code> |
| */ |
| @Override |
| public String toString() { |
| return super.toString() + ":" + boundObj; //$NON-NLS-1$ |
| } |
| |
| } |