1 package com.atlassian.plugins.rest.common.util;
2
3 import com.google.common.collect.Lists;
4
5 import java.lang.reflect.Field;
6 import java.util.List;
7 import java.util.Arrays;
8
9
10
11
12 public class ReflectionUtils
13 {
14
15
16
17
18
19
20
21 public static Object getFieldValue(Field field, Object object)
22 {
23 final boolean accessible = field.isAccessible();
24 try
25 {
26 if (!accessible)
27 {
28 field.setAccessible(true);
29 }
30 return field.get(object);
31 }
32 catch (IllegalAccessException e)
33 {
34 throw new RuntimeException("Could not access '" + field + "' from '" + object + "'", e);
35 }
36 finally
37 {
38 if (!accessible)
39 {
40 field.setAccessible(false);
41 }
42 }
43 }
44
45
46
47
48
49
50
51
52 public static void setFieldValue(Field field, Object object, Object value)
53 {
54 final boolean accessible = field.isAccessible();
55 try
56 {
57 if (!accessible)
58 {
59 field.setAccessible(true);
60 }
61 field.set(object, value);
62 }
63 catch (IllegalAccessException e)
64 {
65 throw new RuntimeException("Could not access '" + field + "' from '" + object + "'", e);
66 }
67 finally
68 {
69 if (!accessible)
70 {
71 field.setAccessible(false);
72 }
73 }
74 }
75
76
77
78
79
80
81
82
83
84
85 public static List<Field> getDeclaredFields(Class clazz)
86 {
87 if (clazz == null)
88 {
89 return Lists.newArrayList();
90 }
91 else
92 {
93 final List<Field> superFields = getDeclaredFields(clazz.getSuperclass());
94 superFields.addAll(0, Arrays.asList(clazz.getDeclaredFields()));
95 return superFields;
96 }
97 }
98 }