static List<TypeElement> getImplementedInterfaces( TypeElement type ,
AnnotationModelHelper helper)
{
List<? extends TypeMirror> interfaces = type.getInterfaces();
List<TypeElement> result = new ArrayList<TypeElement>(interfaces
.size());
for (TypeMirror typeMirror : interfaces) {
if (TypeKind.DECLARED.equals(typeMirror.getKind())) {
Element element = ((DeclaredType) typeMirror).asElement();
if (ElementKind.INTERFACE.equals(element.getKind())) {
result.add( (TypeElement) element );
List<TypeElement> superInterfaces =
getImplementedInterfaces((TypeElement) element, helper);
result.addAll( superInterfaces );
}
}
}
List<? extends TypeElement> superClasses = helper.getSuperclasses(type);
for (TypeElement typeElement : superClasses) {
List<TypeElement> list = getImplementedInterfaces(typeElement,
helper);
result.addAll( list );
}
return result;
}