package org.itsnat.droid.impl.xmlinflater.shared.attr; import org.itsnat.droid.impl.xmlinflater.AttrContext; import org.itsnat.droid.impl.xmlinflater.FieldContainer; import org.itsnat.droid.impl.xmlinflater.MethodContainer; import org.itsnat.droid.impl.xmlinflater.shared.classtree.ClassDesc; /** * Created by jmarranz on 30/04/14. */ public abstract class AttrDescReflecFieldMethod<TclassDesc extends ClassDesc,TattrTarget,TattrContext extends AttrContext> extends AttrDesc<TclassDesc,TattrTarget,TattrContext> { protected FieldContainer<Object> field; protected MethodContainer method; public AttrDescReflecFieldMethod(TclassDesc parent, String name,String fieldName,Class methodClass,String methodName,Class classParam) { super(parent,name); this.field = new FieldContainer<Object>(parent.getDeclaredClass(),fieldName); this.method = new MethodContainer(methodClass,methodName,classParam != null ? new Class[]{classParam} : null); } protected void callFieldMethod(TattrTarget target, Object convertedValue) { Object fieldValue = field.get(target); method.invoke(fieldValue,convertedValue); } }