1 8 9 15 package jfun.yan; 16 17 import jfun.yan.function.Function; 18 19 20 26 final class PropertyWriter implements Function { 27 private final jfun.util.beans.Bean bean; 28 private final String prop; 29 private final Class ptype; 30 PropertyWriter(final jfun.util.beans.Bean bean, final String prop) { 31 this.bean = bean; 32 this.prop = prop; 33 this.ptype = bean.getBeanType().getPropertySetterType(prop); 34 } 35 36 public Object call(Object [] args) throws Throwable { 37 bean.setProperty(prop, args[0]); 38 return bean.getObject(); 39 } 40 public Class [] getParameterTypes() { 41 return new Class []{ptype}; 42 } 43 public Class getReturnType() { 44 final Object obj = bean.getObject(); 45 return obj==null?bean.getBeanType().getType():obj.getClass(); 46 } 47 public boolean isConcrete(){ 48 return bean.getObject()!=null; 49 } 50 public boolean equals(Object obj) { 51 if(obj instanceof PropertyWriter){ 52 final PropertyWriter other = (PropertyWriter)obj; 53 return prop.equals(other.prop) && bean.equals(other.bean); 54 } 55 else return false; 56 } 57 public int hashCode() { 58 return bean.hashCode() * 31 + prop.hashCode(); 59 } 60 public String toString() { 61 return bean.toString() + "." + prop +""; 62 } 63 public String getName(){ 64 return prop; 65 } 66 } 67 | Popular Tags |