mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			317 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			317 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Java
		
	
	
	
/* 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);
 | 
						|
  }
 | 
						|
}
 |