Clover Coverage Report - KS Common 1.1.0-SNAPSHOT (Aggregated)
Coverage timestamp: Tue Feb 15 2011 04:43:03 EST
../../../../../img/srcFileCovDistChart8.png 25% of files have more coverage
24   104   12   3.43
4   65   0.5   7
7     1.71  
1    
 
  BeanConstraintDataProvider       Line # 27 24 0% 12 8 77.1% 0.7714286
 
  (68)
 
1    /**
2    * Copyright 2010 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10    * software distributed under the License is distributed on an "AS IS"
11    * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12    * or implied. See the License for the specific language governing
13    * permissions and limitations under the License.
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    * The only place where the dataprovider should get initialized is
36    * BeanConstraintSetupFactory
37    */
 
38  1551 toggle public BeanConstraintDataProvider() {
39   
40    }
41   
42    //TODO fix it later.
 
43  1537 toggle public String getPath(){
44  1537 return "";
45    }
46   
 
47  1551 toggle @SuppressWarnings("unchecked")
48    @Override
49    public void initialize(Object o) {
50   
51  1551 dataMap = new HashMap<String, Object>();
52   
53  1551 Map<String, PropertyDescriptor> beanInfo = getBeanInfo(o.getClass());
54   
55  1551 for (String propName : beanInfo.keySet()) {
56   
57  11799 PropertyDescriptor pd = beanInfo.get(propName);
58  11799 Object value = null;
59  11799 try {
60  11799 value = pd.getReadMethod().invoke(o);
61    } catch (Exception e) {
62  0 LOG.warn("Method invokation failed",e);
63    }
64   
65    // Extract dynamic attributes
66  11799 if(DYNAMIC_ATTRIBUTE.equals(propName)) {
67  688 dataMap.putAll((Map<String, String>)value);
68    } else {
69  11111 dataMap.put(propName, value);
70    }
71    }
72    }
73   
 
74  0 toggle @Override
75    public String getObjectId() {
76  0 return (dataMap.containsKey("id") && null != dataMap.get("id")) ? dataMap.get("id").toString() : null;
77    }
78   
 
79  8758 toggle @Override
80    public Object getValue(String fieldKey) {
81  8758 return dataMap.get(fieldKey);
82    }
83   
 
84  0 toggle @Override
85    public Boolean hasField(String fieldKey) {
86  0 return dataMap.containsKey(fieldKey);
87    }
88   
 
89  1551 toggle private Map<String, PropertyDescriptor> getBeanInfo(Class<?> clazz) {
90  1551 Map<String, PropertyDescriptor> properties = new HashMap<String, PropertyDescriptor>();
91  1551 BeanInfo beanInfo = null;
92  1551 try {
93  1551 beanInfo = Introspector.getBeanInfo(clazz);
94    } catch (IntrospectionException e) {
95  0 throw new RuntimeException(e);
96    }
97  1551 PropertyDescriptor[] propertyDescriptors = beanInfo
98    .getPropertyDescriptors();
99  1551 for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
100  11799 properties.put(propertyDescriptor.getName(), propertyDescriptor);
101    }
102  1551 return properties;
103    }
104    }