package at.gv.egovernment.moa.util;

import java.io.PrintStream;
import java.io.PrintWriter;

/**
 * An exception occurred evaluating an XPath.
 * 
 * @author Patrick Peck
 * @version $Id$
 */
public class XPathException extends RuntimeException {
  /** The wrapped exception. */
  private Throwable wrapped;
  
  /**
   * Create a <code>XPathException</code>.
   * 
   * @param message The exception message.
   * @param wrapped The exception being the likely cause of this exception.
   */
  public XPathException(String message, Throwable wrapped) {
    super(message);
    this.wrapped = wrapped; 
  }
  
  /**
   * Return the wrapped exception.
   * 
   * @return The wrapped exception being the likely cause of this exception.
   */
  public Throwable getWrapped() {
    return wrapped;
  }

  /**
   * @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
   */
  public void printStackTrace(PrintStream s) {
    super.printStackTrace(s);
    if (getWrapped() != null) {
      s.print("Caused by: ");
      getWrapped().printStackTrace(s);
    }
  }

  /**
   * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
   */
  public void printStackTrace(PrintWriter s) {
    super.printStackTrace(s);
    if (getWrapped() != null) {
      s.print("Caused by: ");
      getWrapped().printStackTrace(s);
    }
  }
 
}