private boolean isChildOfClass(ClassNode classNode, String className){
List<String> list = Lists.newArrayList();
list.add(classNode.name);
printSuperClassNames(classNode.name, list);
for(String s : list){
if(className.equals(s)){
return true;
}
}
return false;
}
private void printSuperClassNames(String className, List<String> list){
if(className == null){
return;
}
ClassReader classReader;
try{
classReader = new ClassReader(className);
}catch(Throwable ignored){
return;
}
String superName = classReader.getSuperName();
if(superName != null && !superName.equals("java/lang/Object")){
list.add(superName);
String superClass = superName.replace('.', '/');
printSuperClassNames(superClass, list);
}
if(classReader.getInterfaces() != null && classReader.getInterfaces().length > 0){
for(String itf : classReader.getInterfaces()){
list.add(itf);
String interfaceName = itf.replace('.', '/');
printSuperClassNames(interfaceName, list);
}
}
}