01: /**
02: * Copyright (C) 2006 Google Inc.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */package com.google.inject;
16:
17: import java.lang.reflect.Member;
18:
19: /**
20: * Thrown when a constant type conversion error occurs.
21: *
22: * @author crazybob@google.com (Bob Lee)
23: */
24: class ConstantConversionException extends Exception {
25:
26: ConstantConversionException(Member member, Key<?> key,
27: String value, String reason) {
28: super (createMessage(value, key, member, reason));
29: }
30:
31: ConstantConversionException(Member member, Key<?> key,
32: String value, Throwable reason) {
33: this (member, key, value, reason.toString());
34: }
35:
36: static String createMessage(String value, Key<?> key,
37: Member member, String reason) {
38: String annotationMessage = key.hasAnnotationType() ? " annotated with "
39: + key.getAnnotationName()
40: : "";
41:
42: return member == null ? "Error converting '" + value + "' to "
43: + key.getRawType().getSimpleName()
44: + " while getting binding value" + annotationMessage
45: + ". Reason: " + reason : "Error converting '" + value
46: + "' to " + key.getRawType().getSimpleName()
47: + " while injecting " + member.getName()
48: + " with binding value" + annotationMessage
49: + " required by "
50: + member.getDeclaringClass().getSimpleName()
51: + ". Reason: " + reason;
52: }
53: }
|