diff -r 5198affdb915 -r d382dacfd73f rt/emul/compact/src/main/java/java/io/WriteAbortedException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rt/emul/compact/src/main/java/java/io/WriteAbortedException.java Tue Feb 26 16:54:16 2013 +0100 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package java.io; + +/** + * Signals that one of the ObjectStreamExceptions was thrown during a + * write operation. Thrown during a read operation when one of the + * ObjectStreamExceptions was thrown during a write operation. The + * exception that terminated the write can be found in the detail + * field. The stream is reset to it's initial state and all references + * to objects already deserialized are discarded. + * + *

As of release 1.4, this exception has been retrofitted to conform to + * the general purpose exception-chaining mechanism. The "exception causing + * the abort" that is provided at construction time and + * accessed via the public {@link #detail} field is now known as the + * cause, and may be accessed via the {@link Throwable#getCause()} + * method, as well as the aforementioned "legacy field." + * + * @author unascribed + * @since JDK1.1 + */ +public class WriteAbortedException extends ObjectStreamException { + private static final long serialVersionUID = -3326426625597282442L; + + /** + * Exception that was caught while writing the ObjectStream. + * + *

This field predates the general-purpose exception chaining facility. + * The {@link Throwable#getCause()} method is now the preferred means of + * obtaining this information. + * + * @serial + */ + public Exception detail; + + /** + * Constructs a WriteAbortedException with a string describing + * the exception and the exception causing the abort. + * @param s String describing the exception. + * @param ex Exception causing the abort. + */ + public WriteAbortedException(String s, Exception ex) { + super(s); + initCause(null); // Disallow subsequent initCause + detail = ex; + } + + /** + * Produce the message and include the message from the nested + * exception, if there is one. + */ + public String getMessage() { + if (detail == null) + return super.getMessage(); + else + return super.getMessage() + "; " + detail.toString(); + } + + /** + * Returns the exception that terminated the operation (the cause). + * + * @return the exception that terminated the operation (the cause), + * which may be null. + * @since 1.4 + */ + public Throwable getCause() { + return detail; + } +}