View Javadoc
1   /*
2    * Copyright 2005 Werner Guttmann
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.castor.xmlctf.compiler;
17  
18  import java.io.PrintStream;
19  import java.io.PrintWriter;
20  
21  /**
22   * Exception that signals a compilation error.
23   */
24  public class CompilationException extends RuntimeException {
25      /** SerialVersionUID. */
26      private static final long serialVersionUID = -1459631801932567828L;
27  
28      /** The cause for this exception. */
29      private Throwable _cause;
30  
31      /**
32       * Creates an instance of this exception type.
33       */
34      public CompilationException() {
35          super();
36      }
37  
38      /**
39       * Creates an instance of this exception type.
40       * @param message The error message
41       * @param cause The root cause
42       */
43      public CompilationException(final String message, final Throwable cause) {
44          super(message);
45          _cause = cause;
46      }
47  
48      /**
49       * Creates an instance of this exception type.
50       * @param message The error message
51       */
52      public CompilationException(final String message) {
53          super(message);
54      }
55  
56      /**
57       * Creates an instance of this exception type.
58       * @param cause The root cause
59       */
60      public CompilationException(final Throwable cause) {
61          super();
62          _cause = cause;
63      }
64  
65      /**
66       * Match the JDK 1.4 Throwable version of getCause() on JDK<1.4 systems.
67       *
68       * @return The throwable cause of this exception.
69       */
70      public final Throwable getCause() {
71          return _cause;
72      }
73  
74      /**
75       * Print a stack trace to stderr.
76       */
77      public final void printStackTrace() {
78          // Print the stack trace for this exception.
79          super.printStackTrace();
80  
81          if (_cause != null) {
82              System.err.print("Caused by: ");
83              _cause.printStackTrace();
84          }
85      }
86  
87      /**
88       * Print a stack trace to the specified PrintStream.
89       *
90       * @param s The PrintStream to print a stack trace to.
91       */
92      public final void printStackTrace(final PrintStream s) {
93          // Print the stack trace for this exception.
94          super.printStackTrace(s);
95  
96          if (_cause != null) {
97              s.print("Caused by: ");
98              _cause.printStackTrace(s);
99          }
100     }
101 
102     /**
103      * Print a stack trace to the specified PrintWriter.
104      *
105      * @param w The PrintWriter to print a stack trace to.
106      */
107     public final void printStackTrace(final PrintWriter w) {
108         // Print the stack trace for this exception.
109         super.printStackTrace(w);
110 
111         if (_cause != null) {
112             w.print("Caused by: ");
113             _cause.printStackTrace(w);
114         }
115     }
116 
117 }