Coverage Summary for Class: PropertyInfo (net.sf.persism)
| Class | Class, % | Method, % | Line, % |
|---|---|---|---|
| PropertyInfo | 100% (1/1) | 100% (6/6) | 87.5% (14/16) |
1 package net.sf.persism; 2 3 import java.lang.annotation.Annotation; 4 import java.lang.reflect.Field; 5 import java.lang.reflect.InvocationTargetException; 6 import java.lang.reflect.Method; 7 import java.util.HashMap; 8 import java.util.Map; 9 10 /** 11 * Created by IntelliJ IDEA. 12 * User: DHoward 13 * Date: 9/8/11 14 * Time: 8:09 AM 15 */ 16 final class PropertyInfo { 17 18 String propertyName; 19 Method getter; 20 Method setter; 21 Field field; 22 boolean isJoin; 23 24 Map<Class<? extends Annotation>, Annotation> annotations = new HashMap<>(4); 25 26 Annotation getAnnotation(Class<? extends Annotation> annotationClass) { 27 return annotations.get(annotationClass); 28 } 29 30 // for collections 31 boolean isJoin() { 32 return isJoin; 33 } 34 35 // Convenience getter with runtime exception for functional 36 Object getValue(Object object) { 37 try { 38 return getter.invoke(object); 39 } catch (IllegalAccessException | InvocationTargetException e) { 40 throw new PersismException(e.getMessage(), e); 41 } 42 } 43 44 void setValue(Object object, Object value) { 45 try { 46 if (setter != null) { 47 setter.invoke(object, value); 48 } else { 49 field.setAccessible(true); 50 field.set(object, value); 51 field.setAccessible(false); 52 } 53 } catch (IllegalAccessException | InvocationTargetException e) { 54 throw new PersismException(e.getMessage(), e); 55 } 56 } 57 58 @Override 59 public String toString() { 60 return "PropertyInfo{" + 61 "propertyName='" + propertyName + '\'' + 62 ", getter=" + getter + 63 ", setter=" + setter + 64 ", annotations=" + annotations + 65 '}'; 66 } 67 }