01 /*
02 * Copyright 2008-2017 the original author or authors.
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 */
16 package griffon.exceptions;
17
18 import javax.annotation.Nonnull;
19 import javax.annotation.Nullable;
20
21 /**
22 * @author Andres Almiray
23 * @since 2.1.0
24 */
25 public class FieldException extends GriffonException {
26 private static final long serialVersionUID = 4319304904847269368L;
27 private static final String CAUSE = "cause";
28 private static final String BEAN = "bean";
29 private static final String FIELD_NAME = "fieldName";
30
31 public FieldException(@Nonnull Object bean, @Nonnull String fieldName, @Nullable Object value) {
32 super(formatArgs(bean, fieldName, value));
33 }
34
35 public FieldException(@Nonnull Object bean, @Nonnull String fieldName, @Nullable Object value, @Nonnull Throwable cause) {
36 super(formatArgs(bean, fieldName, value), checkNonNull(cause, CAUSE));
37 }
38
39 public FieldException(@Nonnull Object bean, @Nonnull String fieldName) {
40 super(formatArgs(bean, fieldName));
41 }
42
43 public FieldException(@Nonnull Object bean, @Nonnull String fieldName, @Nonnull Throwable cause) {
44 super(formatArgs(bean, fieldName), checkNonNull(cause, CAUSE));
45 }
46
47 public FieldException(@Nonnull Class<?> klass, @Nonnull String fieldName) {
48 super(formatArgs(klass, fieldName));
49 }
50
51 public FieldException(@Nonnull Class<?> klass, @Nonnull String fieldName, @Nonnull Throwable cause) {
52 super(formatArgs(klass, fieldName), checkNonNull(cause, CAUSE));
53 }
54
55 @Nonnull
56 private static String formatArgs(@Nonnull Object bean, @Nonnull String fieldName, @Nullable Object value) {
57 checkNonNull(bean, BEAN);
58 checkNonBlank(fieldName, FIELD_NAME);
59 return "Cannot set field " + fieldName + " with value " + value + " on " + bean;
60 }
61
62 @Nonnull
63 private static String formatArgs(@Nonnull Object bean, @Nonnull String fieldName) {
64 checkNonNull(bean, BEAN);
65 checkNonBlank(fieldName, FIELD_NAME);
66 return "Cannot get field " + fieldName + " from " + bean;
67 }
68
69 @Nonnull
70 private static String formatArgs(@Nonnull Class<?> klass, @Nonnull String fieldName) {
71 checkNonNull(klass, "klass");
72 checkNonBlank(fieldName, FIELD_NAME);
73 return klass + " does not have a field named " + fieldName;
74 }
75 }
|