/** * Checks if the given {@link ImmutableClassType} or any of it's super classes implement an * interface that matches given annotation pattern. * * @param classType * Type to check. * @param pattern * Pattern to test interface FQNs with. * @return <code>true</code> if class or any super-classes implements interface that matches the * pattern. */ private boolean checkClassAndSuperClassForInterface(ImmutableClassType classType, IMatchPattern pattern) { // match any interface for (ImmutableAbstractInterfaceType interfaceType : classType.getImmutableRealizedInterfaces()) { if (interfaceType.isInterface() && checkInterfaceAndSuperInterfacesForName(interfaceType.castToInterface(), pattern)) { return true; } } for (ImmutableClassType superClassType : classType.getImmutableSuperClasses()) { if (checkClassAndSuperClassForInterface(superClassType, pattern)) { return true; } } return false; }
return checkClassAndSuperClassForInterface(classType, pattern); } else {