14c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/*
24c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more
34c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * contributor license agreements.  See the NOTICE file distributed with
44c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * this work for additional information regarding copyright ownership.
54c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0
64c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * (the "License"); you may not use this file except in compliance with
74c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * the License.  You may obtain a copy of the License at
84c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *
94c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *
114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Unless required by applicable law or agreed to in writing, software
124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * See the License for the specific language governing permissions and
154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * limitations under the License.
164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */
174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson// $Id: XPathException.java 446598 2006-09-15 12:55:40Z jeremias $
184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonpackage javax.xml.xpath;
204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport java.io.PrintWriter;
224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/**
244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * <code>XPathException</code> represents a generic XPath exception.</p>
254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *
264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @author  <a href="Norman.Walsh@Sun.com">Norman Walsh</a>
274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @author <a href="mailto:Jeff.Suttor@Sun.COM">Jeff Suttor</a>
284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @version $Revision: 446598 $, $Date: 2006-09-15 05:55:40 -0700 (Fri, 15 Sep 2006) $
294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @since 1.5
304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */
314c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonpublic class XPathException extends Exception {
324c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
334c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    private final Throwable cause;
344c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
354c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    /**
364c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * <p>Stream Unique Identifier.</p>
374c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     */
384c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    private static final long serialVersionUID = -1837080260374986980L;
394c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
404c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    /**
414c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * <p>Constructs a new <code>XPathException</code> with the specified detail <code>message</code>.</p>
424c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     *
434c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * <p>The <code>cause</code> is not initialized.</p>
444c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     *
454c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * <p>If <code>message</code> is <code>null</code>, then a <code>NullPointerException</code> is thrown.</p>
464c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     *
474c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * @param message The detail message.
484c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     */
494c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    public XPathException(String message) {
504c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        super(message);
514c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        if ( message == null ) {
524c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson            throw new NullPointerException ( "message can't be null");
534c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        }
544c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        this.cause = null;
554c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    }
564c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
574c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    /**
584c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * <p>Constructs a new <code>XPathException</code> with the specified <code>cause</code>.</p>
594c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     *
604c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * <p>If <code>cause</code> is <code>null</code>, then a <code>NullPointerException</code> is thrown.</p>
614c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     *
624c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * @param cause The cause.
634c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     *
644c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     * @throws NullPointerException if <code>cause</code> is <code>null</code>.
654c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson     */
664c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    public XPathException(Throwable cause) {
674c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        super(cause == null ? null : cause.toString());
684c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        this.cause = cause;
694c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        if ( cause == null ) {
704c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson            throw new NullPointerException ( "cause can't be null");
714c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        }
724c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    }
734c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
744c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    public Throwable getCause() {
754c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        return cause;
764c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    }
774c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
784c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    public void printStackTrace( java.io.PrintStream s ) {
794c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        if( getCause() != null ) {
804c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson            getCause().printStackTrace(s);
814c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson          s.println("--------------- linked to ------------------");
824c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        }
834c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
844c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        super.printStackTrace(s);
854c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    }
864c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
874c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    public void printStackTrace() {
884c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        printStackTrace(System.err);
894c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    }
904c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
914c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    public void printStackTrace(PrintWriter s) {
924c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        if( getCause() != null ) {
934c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson            getCause().printStackTrace(s);
944c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson          s.println("--------------- linked to ------------------");
954c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        }
964c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
974c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson        super.printStackTrace(s);
984c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    }
994c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson}
100