    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *      http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017    package org.apache.commons.fileupload;
    018
    019    import java.io.PrintStream;
    020    import java.io.PrintWriter;
    021
    022
    023    /**
    024     * Exception for errors encountered while processing the request.
    025     *
    026     * @author <a href="mailto:jmcnally@collab.net">John McNally</a>
    027     * @version $Id: FileUploadException.java 551000 2007-06-27 00:59:16Z jochen $
    028     */
    029    public class FileUploadException extends Exception {
    030        /**
    031         * Serial version UID, being used, if the exception
    032         * is serialized.
    033         */
    034        private static final long serialVersionUID = 8881893724388807504L;
    035        /**
    036         * The exceptions cause. We overwrite the cause of
    037         * the super class, which isn't available in Java 1.3.
    038         */
    039        private final Throwable cause;
    040
    041        /**
    042         * Constructs a new <code>FileUploadException</code> without message.
    043         */
    044        public FileUploadException() {
    045            this(null, null);
    046        }
    047
    048        /**
    049         * Constructs a new <code>FileUploadException</code> with specified detail
    050         * message.
    051         *
    052         * @param msg the error message.
    053         */
    054        public FileUploadException(final String msg) {
    055            this(msg, null);
    056        }
    057
    058        /**
    059         * Creates a new <code>FileUploadException</code> with the given
    060         * detail message and cause.
    061         * @param msg The exceptions detail message.
    062         * @param cause The exceptions cause.
    063         */
    064        public FileUploadException(String msg, Throwable cause) {
    065            super(msg);
    066            this.cause = cause;
    067        }
    068
    069        /**
    070         * Prints this throwable and its backtrace to the specified print stream.
    071         *
    072         * @param stream <code>PrintStream</code> to use for output
    073         */
    074        public void printStackTrace(PrintStream stream) {
    075            super.printStackTrace(stream);
    076            if (cause != null) {
    077                stream.println("Caused by:");
    078                cause.printStackTrace(stream);
    079            }
    080        }
    081
    082        /**
    083         * Prints this throwable and its backtrace to the specified
    084         * print writer.
    085         *
    086         * @param writer <code>PrintWriter</code> to use for output
    087         */
    088        public void printStackTrace(PrintWriter writer) {
    089            super.printStackTrace(writer);
    090            if (cause != null) {
    091                writer.println("Caused by:");
    092                cause.printStackTrace(writer);
    093            }
    094        }
    095
    096        public Throwable getCause() {
    097            return cause;
    098        }
    099    }