package jef.database.test.generator;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import jef.tools.reflect.ConvertUtils;
public class TestObject {
static boolean printStacktrace=false;
static Map<Class,Object> defaultValueMap=new HashMap<Class,Object>();
public static void invokeStatic(Class c) {
for (Method m : c.getDeclaredMethods()) {
if (!Modifier.isStatic(m.getModifiers())) {
continue;
}
if (!Modifier.isPublic(m.getModifiers())) {
continue;
}
doInvoke(m, null);
}
}
public static void invokeObject(Object o) {
Class clz=o.getClass();
for (Method m : clz.getMethods()) {
if(m.getDeclaringClass()!=clz){
continue;
}
doInvoke(m, o);
}
}
private static void doInvoke(Method m, Object o) {
Class<?>[] clz = m.getParameterTypes();
Object[] params = new Object[clz.length];
for (int i = 0; i < clz.length; i++) {
params[i] = getParam(clz[i]);
}
try {
m.invoke(o, params);
// System.out.println("==method Invoked: "+m.toGenericString());
} catch (Exception e) {
if(printStacktrace){
e.printStackTrace();
}else{
String message = e.getMessage();
if (message == null) {
message = e.getClass().getSimpleName();
} else {
message = e.getClass().getSimpleName() + ":" + message;
}
System.err.println("Error invoke "+ m.toString()+" "+message);
}
}
}
private static Object getParam(Class<?> class1) {
Object obj=defaultValueMap.get(class1);
if(obj!=null)return obj;
return ConvertUtils.defaultValueForBasicType(class1);
}
static{
defaultValueMap.put(Date.class, new Date());
defaultValueMap.put(int.class, 1);
}
}