001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/framework/xml/XMLParsingException.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003    
004     This file is part of deegree.
005     Copyright (C) 2001-2008 by:
006     EXSE, Department of Geography, University of Bonn
007     http://www.giub.uni-bonn.de/deegree/
008     lat/lon GmbH
009     http://www.lat-lon.de
010    
011     This library is free software; you can redistribute it and/or
012     modify it under the terms of the GNU Lesser General Public
013     License as published by the Free Software Foundation; either
014     version 2.1 of the License, or (at your option) any later version.
015    
016     This library is distributed in the hope that it will be useful,
017     but WITHOUT ANY WARRANTY; without even the implied warranty of
018     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
019     Lesser General Public License for more details.
020    
021     You should have received a copy of the GNU Lesser General Public
022     License along with this library; if not, write to the Free Software
023     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
024    
025     Contact:
026    
027     Andreas Poth  
028     lat/lon GmbH
029     Aennchenstr. 19
030     53115 Bonn
031     Germany
032     E-Mail: poth@lat-lon.de
033    
034     Prof. Dr. Klaus Greve
035     Department of Geography
036     University of Bonn
037     Meckenheimer Allee 166
038     53115 Bonn
039     Germany
040     E-Mail: greve@giub.uni-bonn.de
041    
042     
043     ---------------------------------------------------------------------------*/
044    package org.deegree.framework.xml;
045    
046    /**
047     * This exception is thrown when a syntactic or semantic error has been
048     * encountered during the parsing process of an XML document.
049     * 
050     * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider </a>
051     * @version $Revision: 9339 $
052     */
053    public class XMLParsingException extends Exception {
054    
055        private static final long serialVersionUID = -375766555263169888L;
056    
057        private String message = "org.deegree.xml.XMLParsingException";
058    
059        private String stackTrace = "<< is empty >>";
060    
061        /**
062         * Creates a new instance of <code>XMLParsingException</code> without
063         * detail message.
064         */
065        XMLParsingException() {
066        }
067    
068        /**
069         * Constructs an instance of <code>XMLParsingException</code> with the
070         * specified detail message.
071         * 
072         * @param msg
073         *            the detail message.
074         */
075        public XMLParsingException(String msg) {
076            super();
077            message = msg;
078    
079        }
080    
081        /**
082         * Constructs an instance of <code>XMLParsingException</code> with the specified cause.
083         * 
084         * @param cause
085         *            the Throwable that caused this XMLParsingException
086         * 
087         */
088        public XMLParsingException( Throwable cause ) {
089            super( cause );
090        }    
091        
092        /**
093         * Constructs an instance of <code>XMLParsingException</code> with the
094         * specified detail message.
095         * 
096         * @param msg
097         *            the detail message.
098         */
099        public XMLParsingException(String msg, Throwable e) {
100            this(msg);
101            if (e != null) {
102                StackTraceElement[] se = e.getStackTrace();
103                StringBuffer sb = new StringBuffer();
104                for (int i = 0; i < se.length; i++) {
105                    sb.append(se[i].getClassName() + " ");
106                    sb.append(se[i].getFileName() + " ");
107                    sb.append(se[i].getMethodName() + "(");
108                    sb.append(se[i].getLineNumber() + ")\n");
109                }
110                stackTrace = e.getMessage() + sb.toString();
111            }
112        }
113    
114        public String toString() {
115            return message + "\n" + stackTrace;
116        }
117    
118        /**
119         * 
120         */
121        public String getMessage() {
122            return message;
123        }
124    
125    }