View Javadoc

1   package org.apache.maven.doxia.parser;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  /**
23   * Encapsulate a Doxia parse error.
24   *
25   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
26   * @version $Id: ParseException.java 747780 2009-02-25 13:55:23Z vsiveton $
27   * @since 1.0
28   */
29  public class ParseException
30      extends Exception
31  {
32      /** serialVersionUID */
33      static final long serialVersionUID = 295967936746221567L;
34  
35      /** The file that caused the ParseException. */
36      private String fileName;
37  
38      /** Line number where the parse exception occurred. */
39      private int lineNumber;
40  
41      /** Column number where the parse exception occurred. */
42      private int columnNumber;
43  
44      /**
45       * Construct a new <code>ParseException</code> with the specified detail message.
46       * <br/>
47       * <b>Note</b>: no line or column number will be used.
48       *
49       * @param message The detailed message.
50       * This can later be retrieved by the <code>Throwable.getMessage()</code> method.
51       */
52      public ParseException( String message )
53      {
54          this( null, message, null, -1, -1 );
55      }
56  
57      /**
58       * Construct a new <code>ParseException</code> with the specified detail message and cause.
59       * <br/>
60       * <b>Note</b>: no line or column number will be used.
61       *
62       * @param message The detailed message.
63       * This can later be retrieved by the <code>Throwable.getMessage()</code> method.
64       * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
65       * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
66       */
67      public ParseException( String message, Exception e )
68      {
69          this( e, message, null, -1, -1 );
70      }
71  
72      /**
73       * Construct a new <code>ParseException</code> with the specified detail message,
74       * line number and column number.
75       *
76       * @param message The detailed message.
77       * This can later be retrieved by the <code>Throwable.getMessage()</code> method.
78       * @param line The line number where the parsing failed.
79       * This can later be retrieved by the getLineNumber() method.
80       * @param column The column number where the parsing failed.
81       * This can later be retrieved by the getColumnNumber() method.
82       * @since 1.1
83       */
84      public ParseException( String message, int line, int column )
85      {
86          this( null, message, null, line, column );
87      }
88  
89      /**
90       * Construct a new <code>ParseException</code> with the specified detail message and cause,
91       * line number and column number.
92       *
93       * @param message The detailed message.
94       * This can later be retrieved by the <code>Throwable.getMessage()</code> method.
95       * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
96       * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
97       * @param line The line number where the parsing failed.
98       * This can later be retrieved by the getLineNumber() method.
99       * @param column The column number where the parsing failed.
100      * This can later be retrieved by the getColumnNumber() method.
101      * @since 1.1
102      */
103     public ParseException( String message, Exception e, int line, int column )
104     {
105         this( e, message, null, line, column );
106     }
107 
108     /**
109      * Constructs a new exception with the specified cause. The error message is
110      *  (cause == null ? null : cause.toString() ).
111      *
112      * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
113      * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
114      * @deprecated Using {@link #ParseException(Exception, int, int)} to specify the line and column number.
115      */
116     public ParseException( Exception e )
117     {
118         this( e, null, null, -1, -1 );
119     }
120 
121     /**
122      * Constructs a new exception with the specified cause, line number and column number. The error message is
123      *  (cause == null ? null : cause.toString() ).
124      *
125      * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
126      * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
127      * @param line The line number where the parsing failed.
128      * This can later be retrieved by the getLineNumber() method.
129      * @param column The column number where the parsing failed.
130      * This can later be retrieved by the getColumnNumber() method.
131      * @since 1.1
132      */
133     public ParseException( Exception e, int line, int column )
134     {
135         this( e, null, null, line, column );
136     }
137 
138     /**
139      * Construct a new <code>ParseException</code> with the specified cause,
140      * filename and linenumber.
141      *
142      * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
143      * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
144      * @param file Name of a file that couldn't be parsed.
145      * This can later be retrieved by the getFileName() method.
146      * @param line The line number where the parsing failed.
147      * This can later be retrieved by the getLineNumber() method.
148      * @deprecated Using {@link #ParseException(Exception, String, int, int)} to specify the column number.
149      */
150     public ParseException( Exception e, String file, int line )
151     {
152         this( e, null, file, line, -1 );
153     }
154 
155     /**
156      * Construct a new <code>ParseException</code> with the specified cause,
157      * filename, line number and column number.
158      *
159      * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
160      * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
161      * @param file Name of a file that couldn't be parsed.
162      * This can later be retrieved by the getFileName() method.
163      * @param line The line number where the parsing failed.
164      * This can later be retrieved by the getLineNumber() method.
165      * @param column The column number where the parsing failed.
166      * This can later be retrieved by the getColumnNumber() method.
167      */
168     public ParseException( Exception e, String file, int line, int column )
169     {
170         this( e, null, file, line, column );
171     }
172 
173     /**
174      * Construct a new <code>ParseException</code> with the specified cause, detail message,
175      * filename, line number and column number.
176      *
177      * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
178      * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
179      * @param message The detailed message.
180      * This can later be retrieved by the <code>Throwable.getMessage()</code> method.
181      * @param file Name of a file that couldn't be parsed.
182      * This can later be retrieved by the getFileName() method.
183      * @param line The line number where the parsing failed.
184      * This can later be retrieved by the getLineNumber() method.
185      * @param column The column number where the parsing failed.
186      * This can later be retrieved by the getColumnNumber() method.
187      * @since 1.1
188      */
189     public ParseException( Exception e, String message, String file, int line, int column )
190     {
191         super( ( message == null ) ? ( ( e == null ) ? null : e.getMessage() ) : message, e );
192 
193         this.fileName = file;
194         this.lineNumber = line;
195         this.columnNumber = column;
196     }
197 
198     /**
199      * <p>Getter for the field <code>fileName</code>.</p>
200      *
201      * @return the file name that caused the <code>ParseException</code>.
202      */
203     public String getFileName()
204     {
205         return fileName;
206     }
207 
208     /**
209      * <p>Getter for the field <code>lineNumber</code>.</p>
210      *
211      * @return the line number where the <code>ParseException</code> occurred.
212      */
213     public int getLineNumber()
214     {
215         return lineNumber;
216     }
217 
218     /**
219      * <p>Getter for the field <code>columnNumber</code>.</p>
220      *
221      * @return the column number where the <code>ParseException</code> occurred.
222      * @since 1.1
223      */
224     public int getColumnNumber()
225     {
226         return columnNumber;
227     }
228 }