123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /* NamingException.java -- Superclass of all naming Exceptions
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- This file is part of GNU Classpath.
- GNU Classpath is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- GNU Classpath 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 for more details.
- You should have received a copy of the GNU General Public License
- along with GNU Classpath; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301 USA.
- Linking this library statically or dynamically with other modules is
- making a combined work based on this library. Thus, the terms and
- conditions of the GNU General Public License cover the whole
- combination.
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent
- modules, and to copy and distribute the resulting executable under
- terms of your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of that
- module. An independent module is a module which is not derived from
- or based on this library. If you modify this library, you may extend
- this exception to your version of the library, but you are not
- obligated to do so. If you do not wish to do so, delete this
- exception statement from your version. */
- package javax.naming;
- import gnu.java.lang.CPStringBuilder;
- import java.io.PrintStream;
- import java.io.PrintWriter;
- /**
- * Superclass of all naming Exceptions.
- * Can contain extra information about the root cause of this exception
- * (for example when the original exception was not a subclass of
- * <code>NamingException</code>), the part of the <code>Name</code> that
- * could be resolved (including the <code>Object</code> it resolved to)
- * and the part of the <code>Name</code> that could not be resolved when
- * the exception occured.
- *
- * @since 1.3
- * @author Anthony Green (green@redhat.com)
- * @author Mark Wielaard (mark@klomp.org)
- */
- public class NamingException extends Exception
- {
- private static final long serialVersionUID = -1299181962103167177L;
- /**
- * The root cause of this exception. Might be null. Set by calling
- * <code>setRootCause()</code>, can be accessed by calling
- * <code>getRootCause()</code>.
- */
- protected Throwable rootException;
- /**
- * If the exception was caused while resolving a <code>Name</code> then
- * this field contains that part of the name that could be resolved.
- * Field might be null. Set by calling <code>setResolvedName()</code>.
- * Can be accessed by calling <code>getResolvedName</code>.
- */
- protected Name resolvedName;
- /**
- * If the exception was caused while resolving a <code>Name</code> then
- * this field contains the object that part of the name could be resolved to.
- * Field might be null. Set by calling <code>setResolvedObj()</code>.
- * Can be accessed by calling <code>getResolvedObj</code>.
- */
- protected Object resolvedObj;
- /**
- * If the exception was caused while resolving a <code>Name</code> then
- * this field contains that part of the name that could not be resolved.
- * Field might be null. Set by calling <code>setRemainingName()</code>.
- * The field can be extended by calling <code>appendRemainingName()</code>
- * or <code>appendRemainingComponent()</code>.
- * Can be accessed by calling <code>getRemainingName</code>.
- */
- protected Name remainingName;
- /**
- * Creates a new NamingException without a message. Does not set any of the
- * <code>rootException</code>, <code>resolvedName</code>,
- * <code>resolvedObj</code> or <code>remainingObject</code> fields.
- * These fields can be set later.
- */
- public NamingException ()
- {
- super();
- }
- /**
- * Creates a new NamingException with a detailed message. Does not set
- * the <code>rootException</code>, <code>resolvedName</code>,
- * <code>resolvedObj</code> or <code>remainingObject,</code> fields.
- * These fields can be set later.
- */
- public NamingException (String msg)
- {
- super(msg);
- }
- /**
- * Gets the root cause field <code>rootException</code> of this Exception.
- */
- public Throwable getRootCause ()
- {
- return rootException;
- }
- /**
- * Sets the root cause field <code>rootException</code> of this Exception.
- */
- public void setRootCause (Throwable e)
- {
- rootException = e;
- }
- /**
- * Gets the part of the name that could be resolved before this exception
- * happend. Returns the <code>resolvedName</code> field of this Exception.
- */
- public Name getResolvedName ()
- {
- return resolvedName;
- }
- /**
- * Sets the part of the name that could be resolved before this exception
- * happend. Sets the <code>resolvedName</code> field of this Exception.
- */
- public void setResolvedName (Name name)
- {
- resolvedName = name;
- }
- /**
- * Gets the Object to which (part of) the name could be resolved before this
- * exception happend. Returns the <code>resolvedObj</code> field of this
- * Exception.
- */
- public Object getResolvedObj ()
- {
- return resolvedObj;
- }
- /**
- * Sets the Object to which (part of) the name could be resolved before this
- * exception happend. Sets the <code>resolvedObj</code> field of this
- * Exception.
- */
- public void setResolvedObj (Object o)
- {
- resolvedObj = o;
- }
- /**
- * Gets the part of the name that could not be resolved before this exception
- * happend. Returns the <code>remainingName</code> field of this Exception.
- */
- public Name getRemainingName ()
- {
- return remainingName;
- }
- /**
- * Sets the part of the name that could be resolved before this exception
- * happend. Sets the <code>resolvedName</code> field of this Exception.
- * The field can be extended by calling <code>appendRemainingName()</code>
- * or <code>appendRemainingComponent()</code>.
- */
- public void setRemainingName (Name name)
- {
- remainingName = name;
- }
- /**
- * Adds the given <code>Name</code> to the <code>remainingName</code> field.
- * Does nothing when <code>name</code> is null or when a
- * <code>InvalidNameException</code> is thrown when adding the name.
- *
- * @see Name#addAll(Name)
- */
- public void appendRemainingName (Name name)
- {
- if (name != null)
- try
- {
- remainingName.addAll(name);
- }
- catch(InvalidNameException ine) { /* ignored */ }
- }
- /**
- * Adds the given <code>String</code> to the <code>remainingName</code> field.
- * Does nothing when <code>name</code> is null or when a
- * <code>InvalidNameException</code> is thrown when adding the component.
- *
- * @see Name#add(String)
- */
- public void appendRemainingComponent (String name)
- {
- if (name != null)
- try
- {
- remainingName.add(name);
- }
- catch(InvalidNameException ine) { /* ignored */ }
- }
- /**
- * Gets the message given to the constructor or null if no message was given.
- *
- * @see Throwable#getMessage()
- */
- public String getExplanation()
- {
- return getMessage();
- }
- /**
- * Returns a String representation of this exception and possibly including
- * the part object that could be resolved if the given flag is set to true.
- * Always includes the root cause and the remaining name if not null.
- */
- public String toString(boolean objectInfo)
- {
- CPStringBuilder sb = new CPStringBuilder(super.toString());
- Throwable cause = getRootCause();
- if (cause != null)
- {
- sb.append(" caused by ");
- sb.append(cause);
- }
- Name remaining = getRemainingName();
- if (remaining != null)
- {
- sb.append(" [remainingName: ");
- sb.append(remaining);
- }
- Object resolved = getResolvedObj();
- if (objectInfo && resolved != null)
- {
- if (remainingName == null)
- sb.append(" [");
- else
- sb.append(", ");
- sb.append("resolvedObj: ");
- sb.append(resolved);
- }
- if ((remaining != null) || (objectInfo && resolved != null))
- sb.append(']');
- return sb.toString();
- }
- /**
- * Returns a string representation of this exception.
- * Calls <code>toString(false)</code>.
- */
- public String toString()
- {
- return toString(false);
- }
- /**
- * Prints the stacktrace of this exception or of the root cause if not null.
- */
- public void printStackTrace()
- {
- Throwable cause = getRootCause();
- if (cause != null)
- cause.printStackTrace();
- else
- super.printStackTrace();
- }
- /**
- * Prints the stacktrace of this exception or of the root cause if not null
- * to the given <code>PrintStream</code>.
- */
- public void printStackTrace(PrintStream ps)
- {
- Throwable cause = getRootCause();
- if (cause != null)
- cause.printStackTrace(ps);
- else
- super.printStackTrace(ps);
- }
- /**
- * Prints the stacktrace of this exception or of the root cause if not null
- * to the given <code>PrintWriter</code>.
- */
- public void printStackTrace(PrintWriter pw)
- {
- Throwable cause = getRootCause();
- if (cause != null)
- cause.printStackTrace(pw);
- else
- super.printStackTrace(pw);
- }
- }
|