package org.itsnat.droid.impl.xmlinflater.shared.attr; import org.itsnat.droid.impl.xmlinflater.AttrContext; 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 AttrDescReflecMethod<TclassDesc extends ClassDesc,TattrTarget,TattrContext extends AttrContext> extends AttrDesc<TclassDesc,TattrTarget,TattrContext> { protected MethodContainer method; public AttrDescReflecMethod(TclassDesc parent, String name, String methodName, Class classParam) { super(parent,name); this.method = new MethodContainer(parent.getDeclaredClass(),methodName,classParam != null ? new Class[]{classParam} : null); } public AttrDescReflecMethod(TclassDesc parent, String name, Class classParam) { this(parent,name,genMethodName(name),classParam); } public static String genMethodName(String name) { return "set" + Character.toUpperCase(name.charAt(0)) + name.substring(1); } protected void callMethod(TattrTarget target, Object convertedValue) { method.invoke(target, convertedValue); } }