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.collections;
018    
019    import java.util.NoSuchElementException;
020    
021    /**
022     * The BufferUnderflowException is used when the buffer is already empty.
023     * <p>
024     * NOTE: From version 3.0, this exception extends NoSuchElementException.
025     * 
026     * @since Commons Collections 2.1
027     * @version $Revision: 555824 $ $Date: 2007-07-13 01:27:15 +0100 (Fri, 13 Jul 2007) $
028     *
029     * @author Avalon
030     * @author Berin Loritsch
031     * @author Jeff Turner
032     * @author Paul Jack
033     * @author Stephen Colebourne
034     */
035    public class BufferUnderflowException extends NoSuchElementException {
036        
037        /** The root cause throwable */
038        private final Throwable throwable;
039    
040        /**
041         * Constructs a new <code>BufferUnderflowException</code>.
042         */
043        public BufferUnderflowException() {
044            super();
045            throwable = null;
046        }
047    
048        /** 
049         * Construct a new <code>BufferUnderflowException</code>.
050         * 
051         * @param message  the detail message for this exception
052         */
053        public BufferUnderflowException(String message) {
054            this(message, null);
055        }
056    
057        /** 
058         * Construct a new <code>BufferUnderflowException</code>.
059         * 
060         * @param message  the detail message for this exception
061         * @param exception  the root cause of the exception
062         */
063        public BufferUnderflowException(String message, Throwable exception) {
064            super(message);
065            throwable = exception;
066        }
067    
068        /**
069         * Gets the root cause of the exception.
070         *
071         * @return the root cause
072         */
073        public final Throwable getCause() {
074            return throwable;
075        }
076        
077    }