package org.xpect.doc.doclet; public class DocAccess { // private final RootDoc root; // private final Multimap<String, ClassDoc> byAnnotation; // private final Multimap<String, ClassDoc> bySuperclass; // private final List<ClassDoc> tests; // // public DocAccess(RootDoc root) { // super(); // this.root = root; // this.byAnnotation = groupByAnnotation(root); // this.bySuperclass = groupBySuperClass(root); // this.tests = collectTests(root); // } // // public RootDoc getRoot() { // return root; // } // // private Multimap<String, ClassDoc> groupBySuperClass(RootDoc root) { // Multimap<String, ClassDoc> result = LinkedHashMultimap.create(); // for (ClassDoc cls : root.classes()) // groupBySuperClass(result, cls, cls); // return result; // } // // private void groupBySuperClass(Multimap<String, ClassDoc> result, ClassDoc cls, ClassDoc subclass) { // ClassDoc superclass = subclass.superclass(); // if (superclass != null) { // result.put(superclass.qualifiedName(), cls); // groupBySuperClass(result, cls, superclass); // } // for (ClassDoc i : subclass.interfaces()) { // result.put(i.qualifiedName(), cls); // groupBySuperClass(result, cls, i); // } // } // // private Multimap<String, ClassDoc> groupByAnnotation(RootDoc root) { // Multimap<String, ClassDoc> result = LinkedHashMultimap.create(); // for (ClassDoc cls : root.classes()) // for (AnnotationDesc a : cls.annotations()) // result.put(a.annotationType().qualifiedName(), cls); // return result; // } // // private List<ClassDoc> collectTests(RootDoc root) { // List<ClassDoc> result = Lists.newArrayList(); // CLS: for (ClassDoc cls : root.classes()) { // for (AnnotationDesc a : cls.annotations()) { // String name = a.annotationType().qualifiedName(); // if (XpectSuiteClasses.class.getName().equals(name) || XpectSetup.class.getName().equals(name)) { // result.add(cls); // continue CLS; // } // } // for (MethodDoc m : cls.methods()) // for (AnnotationDesc a : m.annotations()) { // String name = a.annotationType().qualifiedName(); // if (Test.class.getName().equals(name) || Xpect.class.getName().equals(name)) { // result.add(cls); // continue CLS; // } // } // } // return result; // } // // public List<AnnotationTypeDoc> findAnnotationsAnnotatedWith(Class<? extends Annotation> type) { // List<AnnotationTypeDoc> result = Lists.newArrayList(); // for (ClassDoc cls : byAnnotation.get(qualifiedName(type))) // if (cls instanceof AnnotationTypeDoc) // result.add((AnnotationTypeDoc) cls); // return result; // } // // public AnnotationTypeDoc findAnnotation(Class<? extends Annotation> type) { // return (AnnotationTypeDoc) root.classNamed(qualifiedName(type)); // } // // public Collection<ClassDoc> findSubclassesOf(Class<?> cls) { // return bySuperclass.get(qualifiedName(cls)); // } // // public List<ClassDoc> findXpectTests() { // return tests; // } // // private String qualifiedName(Class<?> cls) { // return cls.getName().replace('$', '.'); // } }