0N/A/*
2273N/A * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
0N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
0N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
1472N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1472N/A *
1472N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
0N/A * or visit www.oracle.com if you need additional information or have any
0N/A * questions.
0N/A */
1879N/A
1879N/Apackage javax.naming;
1879N/A
1879N/A/**
1879N/A * This exception is used to describe problems encounter while resolving links.
1879N/A * Addition information is added to the base NamingException for pinpointing
1879N/A * the problem with the link.
0N/A *<p>
0N/A * Analogous to how NamingException captures name resolution information,
2062N/A * LinkException captures "link"-name resolution information pinpointing
0N/A * the problem encountered while resolving a link. All these fields may
0N/A * be null.
0N/A * <ul>
0N/A * <li> Link Resolved Name. Portion of link name that has been resolved.
0N/A * <li> Link Resolved Object. Object to which resolution of link name proceeded.
0N/A * <li> Link Remaining Name. Portion of link name that has not been resolved.
0N/A * <li> Link Explanation. Detail explaining why link resolution failed.
0N/A *</ul>
2062N/A *
0N/A *<p>
0N/A * A LinkException instance is not synchronized against concurrent
0N/A * multithreaded access. Multiple threads trying to access and modify
0N/A * a single LinkException instance should lock the object.
0N/A *
0N/A * @author Rosanna Lee
2062N/A * @author Scott Seligman
0N/A *
0N/A * @see Context#lookupLink
2062N/A * @see LinkRef
0N/A * @since 1.3
0N/A */
2062N/A
0N/A
0N/A /*<p>
0N/A * The serialized form of a LinkException object consists of the
2062N/A * serialized fields of its NamingException superclass, the link resolved
0N/A * name (a Name object), the link resolved object, link remaining name
0N/A * (a Name object), and the link explanation String.
0N/A*/
0N/A
0N/A
0N/Apublic class LinkException extends NamingException {
2062N/A /**
0N/A * Contains the part of the link that has been successfully resolved.
0N/A * It is a composite name and can be null.
665N/A * This field is initialized by the constructors.
2062N/A * You should access and manipulate this field
665N/A * through its get and set methods.
665N/A * @serial
0N/A * @see #getLinkResolvedName
2062N/A * @see #setLinkResolvedName
0N/A */
0N/A protected Name linkResolvedName;
0N/A
0N/A /**
0N/A * Contains the object to which resolution of the part of the link was successful.
0N/A * Can be null. This field is initialized by the constructors.
0N/A * You should access and manipulate this field
0N/A * through its get and set methods.
0N/A * @serial
0N/A * @see #getLinkResolvedObj
2062N/A * @see #setLinkResolvedObj
0N/A */
0N/A protected Object linkResolvedObj;
0N/A
0N/A /**
1258N/A * Contains the remaining link name that has not been resolved yet.
0N/A * It is a composite name and can be null.
0N/A * This field is initialized by the constructors.
0N/A * You should access and manipulate this field
0N/A * through its get and set methods.
0N/A * @serial
2062N/A * @see #getLinkRemainingName
0N/A * @see #setLinkRemainingName
0N/A */
2062N/A protected Name linkRemainingName;
0N/A
0N/A /**
0N/A * Contains the exception of why resolution of the link failed.
0N/A * Can be null. This field is initialized by the constructors.
0N/A * You should access and manipulate this field
0N/A * through its get and set methods.
2062N/A * @serial
2062N/A * @see #getLinkExplanation
0N/A * @see #setLinkExplanation
0N/A */
0N/A protected String linkExplanation;
2062N/A
0N/A /**
0N/A * Constructs a new instance of LinkException with an explanation
0N/A * All the other fields are initialized to null.
2062N/A * @param explanation A possibly null string containing additional
0N/A * detail about this exception.
0N/A * @see java.lang.Throwable#getMessage
2062N/A */
0N/A public LinkException(String explanation) {
0N/A super(explanation);
2062N/A linkResolvedName = null;
2062N/A linkResolvedObj = null;
2062N/A linkRemainingName = null;
2062N/A linkExplanation = null;
2062N/A }
0N/A
0N/A /**
0N/A * Constructs a new instance of LinkException.
0N/A * All the non-link-related and link-related fields are initialized to null.
0N/A */
0N/A public LinkException() {
0N/A super();
0N/A linkResolvedName = null;
0N/A linkResolvedObj = null;
0N/A linkRemainingName = null;
0N/A linkExplanation = null;
0N/A }
0N/A
0N/A /**
0N/A * Retrieves the leading portion of the link name that was resolved
1879N/A * successfully.
1879N/A *
* @return The part of the link name that was resolved successfully.
* It is a composite name. It can be null, which means
* the link resolved name field has not been set.
* @see #getLinkResolvedObj
* @see #setLinkResolvedName
*/
public Name getLinkResolvedName() {
return this.linkResolvedName;
}
/**
* Retrieves the remaining unresolved portion of the link name.
* @return The part of the link name that has not been resolved.
* It is a composite name. It can be null, which means
* the link remaining name field has not been set.
* @see #setLinkRemainingName
*/
public Name getLinkRemainingName() {
return this.linkRemainingName;
}
/**
* Retrieves the object to which resolution was successful.
* This is the object to which the resolved link name is bound.
*
* @return The possibly null object that was resolved so far.
* If null, it means the link resolved object field has not been set.
* @see #getLinkResolvedName
* @see #setLinkResolvedObj
*/
public Object getLinkResolvedObj() {
return this.linkResolvedObj;
}
/**
* Retrieves the explanation associated with the problem encounter
* when resolving a link.
*
* @return The possibly null detail string explaining more about the problem
* with resolving a link.
* If null, it means there is no
* link detail message for this exception.
* @see #setLinkExplanation
*/
public String getLinkExplanation() {
return this.linkExplanation;
}
/**
* Sets the explanation associated with the problem encounter
* when resolving a link.
*
* @param msg The possibly null detail string explaining more about the problem
* with resolving a link. If null, it means no detail will be recorded.
* @see #getLinkExplanation
*/
public void setLinkExplanation(String msg) {
this.linkExplanation = msg;
}
/**
* Sets the resolved link name field of this exception.
*<p>
* <tt>name</tt> is a composite name. If the intent is to set
* this field using a compound name or string, you must
* "stringify" the compound name, and create a composite
* name with a single component using the string. You can then
* invoke this method using the resulting composite name.
*<p>
* A copy of <code>name</code> is made and stored.
* Subsequent changes to <code>name</code> does not
* affect the copy in this NamingException and vice versa.
*
*
* @param name The name to set resolved link name to. This can be null.
* If null, it sets the link resolved name field to null.
* @see #getLinkResolvedName
*/
public void setLinkResolvedName(Name name) {
if (name != null) {
this.linkResolvedName = (Name)(name.clone());
} else {
this.linkResolvedName = null;
}
}
/**
* Sets the remaining link name field of this exception.
*<p>
* <tt>name</tt> is a composite name. If the intent is to set
* this field using a compound name or string, you must
* "stringify" the compound name, and create a composite
* name with a single component using the string. You can then
* invoke this method using the resulting composite name.
*<p>
* A copy of <code>name</code> is made and stored.
* Subsequent changes to <code>name</code> does not
* affect the copy in this NamingException and vice versa.
*
* @param name The name to set remaining link name to. This can be null.
* If null, it sets the remaining name field to null.
* @see #getLinkRemainingName
*/
public void setLinkRemainingName(Name name) {
if (name != null)
this.linkRemainingName = (Name)(name.clone());
else
this.linkRemainingName = null;
}
/**
* Sets the link resolved object field of this exception.
* This indicates the last successfully resolved object of link name.
* @param obj The object to set link resolved object to. This can be null.
* If null, the link resolved object field is set to null.
* @see #getLinkResolvedObj
*/
public void setLinkResolvedObj(Object obj) {
this.linkResolvedObj = obj;
}
/**
* Generates the string representation of this exception.
* This string consists of the NamingException information plus
* the link's remaining name.
* This string is used for debugging and not meant to be interpreted
* programmatically.
* @return The non-null string representation of this link exception.
*/
public String toString() {
return super.toString() + "; Link Remaining Name: '" +
this.linkRemainingName + "'";
}
/**
* Generates the string representation of this exception.
* This string consists of the NamingException information plus
* the additional information of resolving the link.
* If 'detail' is true, the string also contains information on
* the link resolved object. If false, this method is the same
* as the form of toString() that accepts no parameters.
* This string is used for debugging and not meant to be interpreted
* programmatically.
*
* @param detail If true, add information about the link resolved
* object.
* @return The non-null string representation of this link exception.
*/
public String toString(boolean detail) {
if (!detail || this.linkResolvedObj == null)
return this.toString();
return this.toString() + "; Link Resolved Object: " +
this.linkResolvedObj;
}
/**
* Use serialVersionUID from JNDI 1.1.1 for interoperability
*/
private static final long serialVersionUID = -7967662604076777712L;
};