jaxp/src/javax/xml/xpath/XPathException.java

Print this page

        

*** 24,44 **** */ package javax.xml.xpath; import java.io.PrintWriter; /** * <code>XPathException</code> represents a generic XPath exception.</p> * * @author <a href="Norman.Walsh@Sun.com">Norman Walsh</a> * @author <a href="mailto:Jeff.Suttor@Sun.COM">Jeff Suttor</a> * @since 1.5 */ public class XPathException extends Exception { ! private final Throwable cause; /** * <p>Stream Unique Identifier.</p> */ private static final long serialVersionUID = -1837080260374986980L; --- 24,51 ---- */ package javax.xml.xpath; import java.io.PrintWriter; + import java.io.IOException; + import java.io.ObjectInputStream; + import java.io.ObjectOutputStream; + import java.io.ObjectStreamField; + import java.io.InvalidClassException; /** * <code>XPathException</code> represents a generic XPath exception.</p> * * @author <a href="Norman.Walsh@Sun.com">Norman Walsh</a> * @author <a href="mailto:Jeff.Suttor@Sun.COM">Jeff Suttor</a> * @since 1.5 */ public class XPathException extends Exception { ! private static final ObjectStreamField[] serialPersistentFields = { ! new ObjectStreamField( "cause", Throwable.class ) ! }; /** * <p>Stream Unique Identifier.</p> */ private static final long serialVersionUID = -1837080260374986980L;
*** 60,70 **** public XPathException(String message) { super(message); if ( message == null ) { throw new NullPointerException ( "message can't be null"); } - this.cause = null; } /** * <p>Constructs a new <code>XPathException</code> * with the specified <code>cause</code>.</p> --- 67,76 ----
*** 75,86 **** * @param cause The cause. * * @throws NullPointerException if <code>cause</code> is <code>null</code>. */ public XPathException(Throwable cause) { ! super(); ! this.cause = cause; if ( cause == null ) { throw new NullPointerException ( "cause can't be null"); } } --- 81,91 ---- * @param cause The cause. * * @throws NullPointerException if <code>cause</code> is <code>null</code>. */ public XPathException(Throwable cause) { ! super(cause); if ( cause == null ) { throw new NullPointerException ( "cause can't be null"); } }
*** 88,98 **** * <p>Get the cause of this XPathException.</p> * * @return Cause of this XPathException. */ public Throwable getCause() { ! return cause; } /** * <p>Print stack trace to specified <code>PrintStream</code>.</p> * --- 93,143 ---- * <p>Get the cause of this XPathException.</p> * * @return Cause of this XPathException. */ public Throwable getCause() { ! return super.getCause(); ! } ! ! /** ! * Writes "cause" field to the stream. ! * The cause is got from the parent class. ! * ! * @param out stream used for serialization. ! * @throws IOException thrown by <code>ObjectOutputStream</code> ! * ! */ ! private void writeObject(ObjectOutputStream out) ! throws IOException ! { ! ObjectOutputStream.PutField fields = out.putFields(); ! fields.put("cause", (Throwable) super.getCause()); ! out.writeFields(); ! } ! ! /** ! * Reads the "cause" field from the stream. ! * And initializes the "cause" if it wasn't ! * done before. ! * ! * @param in stream used for deserialization ! * @throws IOException thrown by <code>ObjectInputStream</code> ! * @throws ClassNotFoundException thrown by <code>ObjectInputStream</code> ! */ ! private void readObject(ObjectInputStream in) ! throws IOException, ClassNotFoundException ! { ! ObjectInputStream.GetField fields = in.readFields(); ! Throwable scause = (Throwable) fields.get("cause", null); ! ! if (super.getCause() == null && scause != null) { ! try { ! super.initCause(scause); ! } catch(IllegalStateException e) { ! throw new InvalidClassException("Inconsistent state: two causes"); ! } ! } } /** * <p>Print stack trace to specified <code>PrintStream</code>.</p> *