// debug purposes: to inspect unknown objects at runtime
static void inspect(Object obj) {
try {
for (Field f : obj.getClass().getDeclaredFields()) {
f.setAccessible(true);
System.out.printf("%s %s %s %s%n",
Modifier.toString(f.getModifiers()),
f.getType().getSimpleName(),
f.getName(),
f.get(obj)
);
if ("Object[]".equals(f.getType().getSimpleName())) {
LOG.warn("further inspect object " + f.get(obj));
}
if ("int".equals(f.getType().getSimpleName())) {
LOG.warn("expected size " + f.get(obj));
}
if ("List".equals(f.getType().getSimpleName())) {
List<Object> objects = (List<Object>)(List<?>) f.get(obj);
for (Object o : objects) {
inspect(o);
}
}
}
} catch (IllegalAccessException iae) {
System.out.println("IllegalAccessException : " + iae.getMessage());
}
}