001/* 002 GRANITE DATA SERVICES 003 Copyright (C) 2011 GRANITE DATA SERVICES S.A.S. 004 005 This file is part of Granite Data Services. 006 007 Granite Data Services is free software; you can redistribute it and/or modify 008 it under the terms of the GNU Library General Public License as published by 009 the Free Software Foundation; either version 2 of the License, or (at your 010 option) any later version. 011 012 Granite Data Services is distributed in the hope that it will be useful, but 013 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License 015 for more details. 016 017 You should have received a copy of the GNU Library General Public License 018 along with this library; if not, see <http://www.gnu.org/licenses/>. 019*/ 020 021package org.granite.messaging.amf.io.convert; 022 023import java.lang.reflect.Type; 024 025/** 026 * @author Franck WOLFF 027 */ 028public class NoConverterFoundException extends RuntimeException { 029 030 private static final long serialVersionUID = 1L; 031 032 private final Object value; 033 private final Type targetType; 034 035 public NoConverterFoundException(Object value, Type targetType) { 036 this(value, targetType, buildDefaultMessage(value, targetType), null); 037 } 038 039 public NoConverterFoundException(Object value, Type targetType, String message) { 040 this(value, targetType, message, null); 041 } 042 043 public NoConverterFoundException(Object value, Type targetType, Throwable cause) { 044 this(value, targetType, buildDefaultMessage(value, targetType), cause); 045 } 046 047 public NoConverterFoundException(Object value, Type targetType, String message, Throwable cause) { 048 super(message, cause); 049 this.value = value; 050 this.targetType = targetType; 051 } 052 053 public Object getValue() { 054 return value; 055 } 056 057 public Type getTargetType() { 058 return targetType; 059 } 060 061 private static String buildDefaultMessage(Object value, Type targetType) { 062 try { 063 return "Cannot convert: " + value + " to: " + targetType; 064 } catch (Exception e) { 065 return "No converter found. Additionally, an error occured when trying to build default error message: " + e.toString(); 066 } 067 } 068}