Open Source Repository

Home /hibernate/hibernate-3.2.7.ga | Repository Home


org/hibernate/hql/ast/DetailedSemanticException.java
// $Id: DetailedSemanticException.java 5690 2005-02-12 20:27:50Z pgmjsd $
package org.hibernate.hql.ast;

import antlr.SemanticException;

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

/**
 * Thrown when a call to the underlying Hibernate engine fails, indicating
 * some form of semantic exception (e.g. a class name was not found in the
 * current mappings, etc.).
 */
public class DetailedSemanticException extends SemanticException {
  private Throwable cause;
  private boolean showCauseMessage = true;

  public DetailedSemanticException(String message) {
    supermessage );
  }

  public DetailedSemanticException(String s, Throwable e) {
    super);
    cause = e;
  }

  /**
   * Converts everything to a string.
   *
   @return a string.
   */
  public String toString() {
    if cause == null || !showCauseMessage ) ) {
      return super.toString();
    }
    else {
      return super.toString() "\n[cause=" + cause.toString() "]";
    }
  }

  /**
   * Prints a stack trace.
   */
  public void printStackTrace() {
    super.printStackTrace();
    if cause != null ) {
      cause.printStackTrace();
    }
  }

  /**
   * Prints a stack trace to the specified print stream.
   *
   @param s the print stream.
   */
  public void printStackTrace(PrintStream s) {
    super.printStackTrace);
    if cause != null ) {
      s.println"Cause:" );
      cause.printStackTrace);
    }
  }

  /**
   * Prints this throwable and its backtrace to the specified print writer.
   *
   @param w the print writer.s
   */
  public void printStackTrace(PrintWriter w) {
    super.printStackTrace);
    if cause != null ) {
      w.println"Cause:" );
      cause.printStackTrace);
    }
  }

}