/*
 * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package javax.naming;

This class represents the object name and class name pair of a binding found in a context.

A context consists of name-to-object bindings. The NameClassPair class represents the name and the class of the bound object. It consists of a name and a string representing the package-qualified class name.

Use subclassing for naming systems that generate contents of a name/class pair dynamically.

A NameClassPair instance is not synchronized against concurrent access by multiple threads. Threads that need to access a NameClassPair concurrently should synchronize amongst themselves and provide the necessary locking.

Author:Rosanna Lee, Scott Seligman
See Also:
Since:1.3
/** * This class represents the object name and class name pair of a binding * found in a context. *<p> * A context consists of name-to-object bindings. * The NameClassPair class represents the name and the * class of the bound object. It consists * of a name and a string representing the * package-qualified class name. *<p> * Use subclassing for naming systems that generate contents of * a name/class pair dynamically. *<p> * A NameClassPair instance is not synchronized against concurrent * access by multiple threads. Threads that need to access a NameClassPair * concurrently should synchronize amongst themselves and provide * the necessary locking. * * @author Rosanna Lee * @author Scott Seligman * * @see Context#list * @since 1.3 */
/* * <p> * The serialized form of a NameClassPair object consists of the name (a * String), class name (a String), and isRelative flag (a boolean). */ public class NameClassPair implements java.io.Serializable {
Contains the name of this NameClassPair. It is initialized by the constructor and can be updated using setName().
See Also:
@serial
/** * Contains the name of this NameClassPair. * It is initialized by the constructor and can be updated using * {@code setName()}. * @serial * @see #getName * @see #setName */
private String name;
Contains the class name contained in this NameClassPair. It is initialized by the constructor and can be updated using setClassName().
See Also:
@serial
/** *Contains the class name contained in this NameClassPair. * It is initialized by the constructor and can be updated using * {@code setClassName()}. * @serial * @see #getClassName * @see #setClassName */
private String className;
Contains the full name of this NameClassPair within its own namespace. It is initialized using setNameInNamespace()
See Also:
@serial
/** * Contains the full name of this NameClassPair within its * own namespace. * It is initialized using {@code setNameInNamespace()} * @serial * @see #getNameInNamespace * @see #setNameInNamespace */
private String fullName = null;
Records whether the name of this NameClassPair is relative to the target context. It is initialized by the constructor and can be updated using setRelative().
See Also:
@serial
/** * Records whether the name of this {@code NameClassPair} * is relative to the target context. * It is initialized by the constructor and can be updated using * {@code setRelative()}. * @serial * @see #isRelative * @see #setRelative * @see #getName * @see #setName */
private boolean isRel = true;
Constructs an instance of a NameClassPair given its name and class name.
Params:
  • name – The non-null name of the object. It is relative to the target context (which is named by the first parameter of the list() method)
  • className – The possibly null class name of the object bound to name. It is null if the object bound is null.
See Also:
/** * Constructs an instance of a NameClassPair given its * name and class name. * * @param name The non-null name of the object. It is relative * to the <em>target context</em> (which is * named by the first parameter of the <code>list()</code> method) * @param className The possibly null class name of the object * bound to name. It is null if the object bound is null. * @see #getClassName * @see #setClassName * @see #getName * @see #setName */
public NameClassPair(String name, String className) { this.name = name; this.className = className; }
Constructs an instance of a NameClassPair given its name, class name, and whether it is relative to the listing context.
Params:
  • name – The non-null name of the object.
  • className – The possibly null class name of the object bound to name. It is null if the object bound is null.
  • isRelative – true if name is a name relative to the target context (which is named by the first parameter of the list() method); false if name is a URL string.
See Also:
/** * Constructs an instance of a NameClassPair given its * name, class name, and whether it is relative to the listing context. * * @param name The non-null name of the object. * @param className The possibly null class name of the object * bound to name. It is null if the object bound is null. * @param isRelative true if <code>name</code> is a name relative * to the target context (which is named by the first parameter * of the <code>list()</code> method); false if <code>name</code> * is a URL string. * @see #getClassName * @see #setClassName * @see #getName * @see #setName * @see #isRelative * @see #setRelative */
public NameClassPair(String name, String className, boolean isRelative) { this.name = name; this.className = className; this.isRel = isRelative; }
Retrieves the class name of the object bound to the name of this binding. If a reference or some other indirect information is bound, retrieves the class name of the eventual object that will be returned by Binding.getObject().
See Also:
Returns: The possibly null class name of object bound. It is null if the object bound is null.
/** * Retrieves the class name of the object bound to the name of this binding. * If a reference or some other indirect information is bound, * retrieves the class name of the eventual object that * will be returned by {@code Binding.getObject()}. * * @return The possibly null class name of object bound. * It is null if the object bound is null. * @see Binding#getObject * @see Binding#getClassName * @see #setClassName */
public String getClassName() { return className; }
Retrieves the name of this binding. If isRelative() is true, this name is relative to the target context (which is named by the first parameter of the list()). If isRelative() is false, this name is a URL string.
See Also:
Returns: The non-null name of this binding.
/** * Retrieves the name of this binding. * If {@code isRelative()} is true, this name is relative to the * target context (which is named by the first parameter of the * {@code list()}). * If {@code isRelative()} is false, this name is a URL string. * * @return The non-null name of this binding. * @see #isRelative * @see #setName */
public String getName() { return name; }
Sets the name of this binding.
Params:
  • name – the non-null string to use as the name.
See Also:
/** * Sets the name of this binding. * * @param name the non-null string to use as the name. * @see #getName * @see #setRelative */
public void setName(String name) { this.name = name; }
Sets the class name of this binding.
Params:
  • name – the possibly null string to use as the class name. If null, Binding.getClassName() will return the actual class name of the object in the binding. The class name will be null if the object bound is null.
See Also:
/** * Sets the class name of this binding. * * @param name the possibly null string to use as the class name. * If null, {@code Binding.getClassName()} will return * the actual class name of the object in the binding. * The class name will be null if the object bound is null. * @see #getClassName * @see Binding#getClassName */
public void setClassName(String name) { this.className = name; }
Determines whether the name of this binding is relative to the target context (which is named by the first parameter of the list() method).
See Also:
Returns:true if the name of this binding is relative to the target context; false if the name of this binding is a URL string.
/** * Determines whether the name of this binding is * relative to the target context (which is named by * the first parameter of the <code>list()</code> method). * * @return true if the name of this binding is relative to the * target context; * false if the name of this binding is a URL string. * @see #setRelative * @see #getName */
public boolean isRelative() { return isRel; }
Sets whether the name of this binding is relative to the target context (which is named by the first parameter of the list() method).
Params:
  • r – If true, the name of binding is relative to the target context; if false, the name of binding is a URL string.
See Also:
/** * Sets whether the name of this binding is relative to the target * context (which is named by the first parameter of the <code>list()</code> * method). * * @param r If true, the name of binding is relative to the target context; * if false, the name of binding is a URL string. * @see #isRelative * @see #setName */
public void setRelative(boolean r) { isRel = r; }
Retrieves the full name of this binding. The full name is the absolute name of this binding within its own namespace. See Context.getNameInNamespace().

In naming systems for which the notion of full name does not apply to this binding an UnsupportedOperationException is thrown. This exception is also thrown when a service provider written before the introduction of the method is in use.

The string returned by this method is not a JNDI composite name and should not be passed directly to context methods.

Throws:
See Also:
Returns:The full name of this binding.
Since:1.5
/** * Retrieves the full name of this binding. * The full name is the absolute name of this binding within * its own namespace. See {@link Context#getNameInNamespace()}. * <p> * * In naming systems for which the notion of full name does not * apply to this binding an {@code UnsupportedOperationException} * is thrown. * This exception is also thrown when a service provider written before * the introduction of the method is in use. * <p> * The string returned by this method is not a JNDI composite name and * should not be passed directly to context methods. * * @return The full name of this binding. * @throws UnsupportedOperationException if the notion of full name * does not apply to this binding in the naming system. * @since 1.5 * @see #setNameInNamespace * @see #getName */
public String getNameInNamespace() { if (fullName == null) { throw new UnsupportedOperationException(); } return fullName; }
Sets the full name of this binding. This method must be called to set the full name whenever a NameClassPair is created and a full name is applicable to this binding.

Setting the full name to null, or not setting it at all, will cause getNameInNamespace() to throw an exception.

Params:
  • fullName – The full name to use.
See Also:
Since:1.5
/** * Sets the full name of this binding. * This method must be called to set the full name whenever a * {@code NameClassPair} is created and a full name is * applicable to this binding. * <p> * Setting the full name to null, or not setting it at all, will * cause {@code getNameInNamespace()} to throw an exception. * * @param fullName The full name to use. * @since 1.5 * @see #getNameInNamespace * @see #setName */
public void setNameInNamespace(String fullName) { this.fullName = fullName; }
Generates the string representation of this name/class pair. The string representation consists of the name and class name separated by a colon (':'). The contents of this string is useful for debugging and is not meant to be interpreted programmatically.
Returns:The string representation of this name/class pair.
/** * Generates the string representation of this name/class pair. * The string representation consists of the name and class name separated * by a colon (':'). * The contents of this string is useful * for debugging and is not meant to be interpreted programmatically. * * @return The string representation of this name/class pair. */
public String toString() { return (isRelative() ? "" : "(not relative)") + getName() + ": " + getClassName(); }
Use serialVersionUID from JNDI 1.1.1 for interoperability
/** * Use serialVersionUID from JNDI 1.1.1 for interoperability */
private static final long serialVersionUID = 5620776610160863339L; }