View Javadoc

    1   package org.codehaus.xfire;
    2
    3   import java.io.PrintStream;
    4   import java.io.PrintWriter;
    5
    6   /***
    7    * Used for internal XFire exceptions when a fault shouldn't be returned to the service invoker.
    8    *
    9    * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
    10   * @since Feb 14, 2004
    11   */
    12  public class XFireRuntimeException
    13          extends RuntimeException
    14  {
    15      private Throwable cause;
    16      private String message;
    17
    18      /***
    19       * Constructs a new xfire runtime exception with the specified detail message.
    20       *
    21       * @param message the detail message.
    22       */
    23      public XFireRuntimeException(String message)
    24      {
    25          super(message);
    26          this.message = message;
    27      }
    28
    29      /***
    30       * Constructs a new xfire runtime exception with the specified detail message and cause.
    31       *
    32       * @param message the detail message.
    33       * @param cause   the cause.
    34       */
    35      public XFireRuntimeException(String message, Throwable cause)
    36      {
    37          super(message);
    38          this.message = message;
    39          this.cause = cause;
    40      }
    41
    42
    43      /***
    44       * Returns the cause of this throwable or <code>null</code> if the  cause is nonexistent or unknown.
    45       *
    46       * @return the nested cause.
    47       */
    48      public Throwable getCause()
    49      {
    50          return (this.cause == this ? null : this.cause);
    51      }
    52
    53      /***
    54       * Return the detail message, including the message from the {@link #getCause() nested exception} if there is one.
    55       *
    56       * @return the detail message.
    57       */
    58      public String getMessage()
    59      {
    60          if (this.cause == null || this.cause == this)
    61          {
    62              return message;
    63          }
    64          else
    65          {
    66              return message + ". Nested exception is " + this.cause.getClass().getName() +
    67                      ": " + this.cause.getMessage();
    68          }
    69      }
    70
    71      public String getActualMessage()
    72      {
    73          return message;
    74      }
    75
    76      /***
    77       * Prints this throwable and its backtrace to the specified print stream.
    78       *
    79       * @param s <code>PrintStream</code> to use for output
    80       */
    81      public void printStackTrace(PrintStream s)
    82      {
    83          if (this.cause == null || this.cause == this)
    84          {
    85              super.printStackTrace(s);
    86          }
    87          else
    88          {
    89              s.println(this);
    90              this.cause.printStackTrace(s);
    91          }
    92      }
    93
    94      /***
    95       * Prints this throwable and its backtrace to the specified print writer.
    96       *
    97       * @param w <code>PrintWriter</code> to use for output
    98       */
    99      public void printStackTrace(PrintWriter w)
    100     {
    101         if (this.cause == null || this.cause == this)
    102         {
    103             super.printStackTrace(w);
    104         }
    105         else
    106         {
    107             w.println(this);
    108             this.cause.printStackTrace(w);
    109         }
    110     }
    111
    112     public void prepend(String message)
    113     {
    114         if(this.message != null)
    115         {
    116             this.message = message + ": " + this.message;
    117         }
    118         else
    119         {
    120             this.message = message;
    121         }
    122     }
    123
    124     public void setMessage(String s)
    125     {
    126         message = s;
    127     }
    128 }