1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.common.validator;
17
18 import java.beans.BeanInfo;
19 import java.beans.IntrospectionException;
20 import java.beans.Introspector;
21 import java.beans.PropertyDescriptor;
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import org.apache.log4j.Logger;
26
27 public class BeanConstraintDataProvider implements ConstraintDataProvider {
28 final static Logger LOG = Logger.getLogger(BeanConstraintDataProvider.class);
29
30 private static final String DYNAMIC_ATTRIBUTE = "attributes";
31
32 Map<String, Object> dataMap = null;
33
34
35
36
37
38 public BeanConstraintDataProvider() {
39
40 }
41
42
43 public String getPath(){
44 return "";
45 }
46
47 @SuppressWarnings("unchecked")
48 @Override
49 public void initialize(Object o) {
50
51 dataMap = new HashMap<String, Object>();
52
53 try {
54 BeanInfo beanInfo = Introspector.getBeanInfo(o.getClass());
55
56 for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
57 Object value = null;
58 try {
59 value = pd.getReadMethod().invoke(o);
60 } catch (Exception e) {
61 LOG.warn("Method invokation failed",e);
62 }
63
64
65 if(DYNAMIC_ATTRIBUTE.equals(pd.getName())) {
66 dataMap.putAll((Map<String, String>)value);
67 } else {
68 dataMap.put(pd.getName(), value);
69 }
70 }
71 } catch (IntrospectionException e) {
72 throw new RuntimeException(e);
73 }
74 }
75
76 @Override
77 public String getObjectId() {
78 return (dataMap.containsKey("id") && null != dataMap.get("id")) ? dataMap.get("id").toString() : null;
79 }
80
81 @Override
82 public Object getValue(String fieldKey) {
83 return dataMap.get(fieldKey);
84 }
85
86 @Override
87 public Boolean hasField(String fieldKey) {
88 return dataMap.containsKey(fieldKey);
89 }
90
91 }