001 /*
002 * Copyright 2007 Stephen J. McConnell.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied.
014 *
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package net.dpml.lang;
020
021 import dpml.util.StandardClassLoader;
022
023 /**
024 * Exception raised when class cannot be cast to a requested type.
025 *
026 * @author <a href="http://www.dpml.net">Digital Product Management Library</a>
027 * @version 2.1.1
028 */
029 public class TypeCastException extends ClassCastException
030 {
031 /**
032 * Serial version identifier.
033 */
034 static final long serialVersionUID = 1L;
035
036 private final Class m_base;
037 private final Class m_type;
038
039 /**
040 * Construct a new <code>TypeCastException</code> instance.
041 *
042 * @param message the message
043 * @param base the base class against which a failed cast was attempted
044 * @param type the class used as the cast criteria
045 */
046 public TypeCastException( final String message, Class base, Class type )
047 {
048 super( message );
049 m_base = base;
050 m_type = type;
051 }
052
053 /**
054 * Get the base class.
055 * @return the class
056 */
057 public Class getBase()
058 {
059 return m_base;
060 }
061
062 /**
063 * Get the type class.
064 * @return the type
065 */
066 public Class getType()
067 {
068 return m_type;
069 }
070
071 /**
072 * Get the reported type cast error.
073 * @return the reported error
074 */
075 public String getReport()
076 {
077 return StandardClassLoader.toString( m_base, m_type );
078 }
079 }
080