private static boolean isSubClassOfAny(AsmClass thrownClass, List<AsmClass> thrownClassCandidates) { for (AsmClass current = thrownClass.getSuperClass(); current != null; current = current.getSuperClass()) { for (AsmClass thrownClassCandidate : thrownClassCandidates) { if (current.equals(thrownClassCandidate)) { return true; } } } return false; }
private static boolean isSubClassOfRuntimeException(AsmClass thrownClass) { for (AsmClass current = thrownClass; current != null; current = current.getSuperClass()) { if ("java/lang/RuntimeException".equals(current.getInternalName())) { return true; } } return false; }
private AsmMethod findImplementation(AsmClass asmClass, String methodKey) { AsmMethod method = asmClass.getMethod(methodKey); if (method != null && method.isBodyLoaded()) { return method; } if (asmClass.getSuperClass() != null) { return findImplementation(asmClass.getSuperClass(), methodKey); } return null; }
private static AsmMethod findImplementation(AsmClass asmClass, String methodKey) { AsmMethod method = asmClass.getMethod(methodKey); if (method != null && method.isBodyLoaded()) { return method; } if (asmClass.getSuperClass() != null) { return findImplementation(asmClass.getSuperClass(), methodKey); } return null; }
private boolean isInheritedMethodSignature(AsmClass parent, String key) { if (parent.getSuperClass() != null && (parent.getSuperClass().getMethod(key) != null || isInheritedMethodSignature(parent.getSuperClass(), key))) { return true; } for (AsmClass interfaceClass : parent.getInterfaces()) { if (interfaceClass.getMethod(key) != null || isInheritedMethodSignature(interfaceClass, key)) { return true; } } return false; } }
private static boolean isInheritedMethodSignature(AsmClass parent, String key) { if (parent.getSuperClass() != null && (parent.getSuperClass().getMethod(key) != null || isInheritedMethodSignature(parent.getSuperClass(), key))) { return true; } for (AsmClass interfaceClass : parent.getInterfaces()) { if (interfaceClass.getMethod(key) != null || isInheritedMethodSignature(interfaceClass, key)) { return true; } } return false; } }