| /* | |
| * 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. | |
| *<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 | |
| * {@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 | |
| * {@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 {@code setNameInNamespace()} | |
| * @serial | |
| * @see #getNameInNamespace | |
| * @see #setNameInNamespace | |
| */ | |
| private String fullName = null; | |
| /** | |
| * 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. | |
| * | |
| * @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. | |
| * | |
| * @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 {@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 {@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. | |
| * | |
| * @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. | |
| * | |
| * @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 <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 <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 {@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 | |
| * {@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. | |
| * | |
| * @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 | |
| */ | |
| private static final long serialVersionUID = 5620776610160863339L; | |
| } |