Coverage Report - org.jaxen.saxpath.SAXPathException
 
Classes in this File Line Coverage Branch Coverage Complexity
SAXPathException
75%
24/32
75%
3/4
1.857
 
 1  
 /*
 2  
  * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/SAXPathException.java,v 1.14 2006/06/03 20:28:45 elharo Exp $
 3  
  * $Revision: 1.14 $
 4  
  * $Date: 2006/06/03 20:28:45 $
 5  
  *
 6  
  * ====================================================================
 7  
  *
 8  
  * Copyright 2000-2002 bob mcwhirter & James Strachan.
 9  
  * All rights reserved.
 10  
  *
 11  
  *
 12  
  * Redistribution and use in source and binary forms, with or without
 13  
  * modification, are permitted provided that the following conditions are
 14  
  * met:
 15  
  * 
 16  
  *   * Redistributions of source code must retain the above copyright
 17  
  *     notice, this list of conditions and the following disclaimer.
 18  
  * 
 19  
  *   * Redistributions in binary form must reproduce the above copyright
 20  
  *     notice, this list of conditions and the following disclaimer in the
 21  
  *     documentation and/or other materials provided with the distribution.
 22  
  * 
 23  
  *   * Neither the name of the Jaxen Project nor the names of its
 24  
  *     contributors may be used to endorse or promote products derived 
 25  
  *     from this software without specific prior written permission.
 26  
  * 
 27  
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 28  
  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 29  
  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 30  
  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
 31  
  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 32  
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 33  
  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 34  
  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 35  
  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 36  
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 37  
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 38  
  *
 39  
  * ====================================================================
 40  
  * This software consists of voluntary contributions made by many
 41  
  * individuals on behalf of the Jaxen Project and was originally
 42  
  * created by bob mcwhirter <bob@werken.com> and
 43  
  * James Strachan <jstrachan@apache.org>.  For more information on the
 44  
  * Jaxen Project, please see <http://www.jaxen.org/>.
 45  
  *
 46  
  * $Id: SAXPathException.java,v 1.14 2006/06/03 20:28:45 elharo Exp $
 47  
  */
 48  
 
 49  
 package org.jaxen.saxpath;
 50  
 
 51  
 import java.io.PrintStream;
 52  
 import java.io.PrintWriter;
 53  
 
 54  
 /** Base of all SAXPath exceptions.
 55  
  *
 56  
  *  @author bob mcwhirter (bob@werken.com)
 57  
  */
 58  
 public class SAXPathException extends Exception
 59  
 {
 60  
     
 61  
     /**
 62  
      * 
 63  
      */
 64  
     private static final long serialVersionUID = 4826444568928720706L;
 65  
     
 66  94
     private static double javaVersion = 1.4;
 67  
     
 68  
     static {
 69  
         try {
 70  94
             String versionString = System.getProperty("java.version");
 71  94
             versionString = versionString.substring(0, 3);
 72  94
             javaVersion = Double.valueOf(versionString).doubleValue();
 73  
         }
 74  0
         catch (Exception ex) {
 75  
             // The version string format changed so presumably it's
 76  
             // 1.4 or later.
 77  94
         }
 78  94
     }
 79  
     
 80  
     /** Create a new SAXPathException with a given message.
 81  
      *
 82  
      *  @param message the error message
 83  
      */
 84  
     public SAXPathException(String message)
 85  
     {
 86  258
         super( message );
 87  258
     }
 88  
 
 89  
     /** Create a new SAXPathException based on another exception
 90  
      *
 91  
      *  @param cause the error source
 92  
      */
 93  
     public SAXPathException(Throwable cause)
 94  
     {
 95  92
         super ( cause.getMessage() );
 96  92
         initCause(cause);
 97  92
     }
 98  
 
 99  
     /**
 100  
      * Create a new SAXPathException with the specified detail message
 101  
      * and root cause.
 102  
      * 
 103  
      * @param message the detail message
 104  
      * @param cause the cause of this exception
 105  
      */
 106  
     public SAXPathException(String message, Throwable cause) {
 107  2
         super( message );
 108  2
         initCause(cause);
 109  2
     }
 110  
     
 111  
     
 112  
     private Throwable cause;
 113  352
     private boolean causeSet = false;
 114  
 
 115  
     /**
 116  
      * Returns the exception that caused this exception.
 117  
      * This is necessary to implement Java 1.4 chained exception 
 118  
      * functionality in a Java 1.3-compatible way.
 119  
      * 
 120  
      * @return the exception that caused this exception
 121  
      */
 122  
     public Throwable getCause() {
 123  10
         return cause;
 124  
     }
 125  
     
 126  
 
 127  
     /**
 128  
      * Sets the exception that caused this exception.
 129  
      * This is necessary to implement Java 1.4 chained exception 
 130  
      * functionality in a Java 1.3-compatible way.
 131  
      * 
 132  
      * @param cause the exception wrapped in this runtime exception
 133  
      * 
 134  
      * @return this exception
 135  
      */
 136  
     public Throwable initCause(Throwable cause) {
 137  94
         if (causeSet) throw new IllegalStateException("Cause cannot be reset");
 138  94
         if (cause == this) throw new IllegalArgumentException("Exception cannot be its own cause");
 139  94
         causeSet = true;
 140  94
         this.cause = cause;
 141  94
         return this;
 142  
     }
 143  
 
 144  
     /** Print this exception's stack trace, followed by the
 145  
      *  source exception's trace, if any.
 146  
      *
 147  
      * @param s the stream on which to print the stack trace
 148  
      */
 149  
     public void printStackTrace ( PrintStream s )
 150  
     {
 151  0
         super.printStackTrace ( s );
 152  0
         if (javaVersion < 1.4 && getCause() != null) {
 153  0
             s.print( "Caused by: " );
 154  0
             getCause().printStackTrace( s );
 155  
         }
 156  0
     }
 157  
 
 158  
     /** Print this exception's stack trace, followed by the
 159  
      *  source exception's stack trace, if any.
 160  
      *
 161  
      * @param s the writer on which to print the stack trace
 162  
      */
 163  
     public void printStackTrace ( PrintWriter s )
 164  
     {
 165  4
         super.printStackTrace( s );
 166  4
         if (javaVersion < 1.4 && getCause() != null) {
 167  0
             s.print( "Caused by: " );
 168  0
             getCause().printStackTrace( s );
 169  
         }
 170  4
     }
 171  
 
 172  
 }