185 /** |
185 /** |
186 * The mapping of TypeElements representing annotation to fields that use them. |
186 * The mapping of TypeElements representing annotation to fields that use them. |
187 */ |
187 */ |
188 public final Map<TypeElement, List<VariableElement>> annotationToField = new HashMap<>(); |
188 public final Map<TypeElement, List<VariableElement>> annotationToField = new HashMap<>(); |
189 |
189 |
190 private final DocletEnvironment root; |
190 private final DocletEnvironment docEnv; |
191 private final Elements elementUtils; |
191 private final Elements elementUtils; |
192 private final Types typeUtils; |
192 private final Types typeUtils; |
193 private final Utils utils; |
193 private final Utils utils; |
194 |
194 |
195 public ClassUseMapper(ConfigurationImpl configuration, ClassTree classtree) { |
195 public ClassUseMapper(ConfigurationImpl configuration, ClassTree classtree) { |
196 root = configuration.root; |
196 docEnv = configuration.docEnv; |
197 elementUtils = root.getElementUtils(); |
197 elementUtils = docEnv.getElementUtils(); |
198 typeUtils = root.getTypeUtils(); |
198 typeUtils = docEnv.getTypeUtils(); |
199 utils = configuration.utils; |
199 utils = configuration.utils; |
200 this.classtree = classtree; |
200 this.classtree = classtree; |
201 classToPackage = new TreeMap<>(utils.makeClassUseComparator()); |
201 classToPackage = new TreeMap<>(utils.makeClassUseComparator()); |
202 // Map subclassing, subinterfacing implementing, ... |
202 // Map subclassing, subinterfacing implementing, ... |
203 for (TypeElement te : classtree.baseClasses()) { |
203 for (TypeElement te : classtree.baseClasses()) { |
206 for (TypeElement intfc : classtree.baseInterfaces()) { |
206 for (TypeElement intfc : classtree.baseInterfaces()) { |
207 // does subinterfacing as side-effect |
207 // does subinterfacing as side-effect |
208 implementingClasses(intfc); |
208 implementingClasses(intfc); |
209 } |
209 } |
210 // Map methods, fields, constructors using a class. |
210 // Map methods, fields, constructors using a class. |
211 Set<TypeElement> classes = root.getIncludedClasses(); |
211 Set<TypeElement> classes = docEnv.getIncludedClasses(); |
212 for (TypeElement aClass : classes) { |
212 for (TypeElement aClass : classes) { |
213 PackageElement pkg = elementUtils.getPackageOf(aClass); |
213 PackageElement pkg = elementUtils.getPackageOf(aClass); |
214 mapAnnotations(classToPackageAnnotations, pkg, pkg); |
214 mapAnnotations(classToPackageAnnotations, pkg, pkg); |
215 mapTypeParameters(classToClassTypeParam, aClass, aClass); |
215 mapTypeParameters(classToClassTypeParam, aClass, aClass); |
216 mapAnnotations(classToClassAnnotations, aClass, aClass); |
216 mapAnnotations(classToClassAnnotations, aClass, aClass); |