22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package jdk.javadoc.internal.doclets.toolkit.util;
26
27 import java.util.*;
28
29 import javax.lang.model.element.AnnotationMirror;
30 import javax.lang.model.element.Element;
31 import javax.lang.model.element.ExecutableElement;
32 import javax.lang.model.element.PackageElement;
33 import javax.lang.model.element.TypeElement;
34 import javax.lang.model.element.TypeParameterElement;
35 import javax.lang.model.element.VariableElement;
36 import javax.lang.model.type.ArrayType;
37 import javax.lang.model.type.DeclaredType;
38 import javax.lang.model.type.ErrorType;
39 import javax.lang.model.type.TypeMirror;
40 import javax.lang.model.type.TypeVariable;
41 import javax.lang.model.type.WildcardType;
42 import javax.lang.model.util.Elements;
43 import javax.lang.model.util.SimpleElementVisitor9;
44 import javax.lang.model.util.SimpleTypeVisitor9;
45 import javax.lang.model.util.Types;
46
47 import jdk.javadoc.doclet.DocletEnvironment;
48 import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration;
49
50 /**
51 * Map all class uses for a given class.
52 *
53 * <p>
54 * <b>This is NOT part of any supported API. If you write code that depends on this, you do so at
55 * your own risk. This code and its internal interfaces are subject to change or deletion without
56 * notice.</b>
57 *
58 * @author Robert G. Field
59 */
60 public class ClassUseMapper {
61
62 private final ClassTree classtree;
63
64 /**
65 * Mapping of TypeElements to set of PackageElements used by that class.
66 */
67 public final Map<TypeElement, Set<PackageElement>> classToPackage;
68
224
225 @Override
226 public Void visitDeclared(DeclaredType t, VariableElement p) {
227 add(classToField, (TypeElement) t.asElement(), p);
228 return null;
229 }
230 @Override
231 public Void visitTypeVariable(TypeVariable t, VariableElement p) {
232 return visit(typeUtils.erasure(t), p);
233 }
234 };
235 stv.visit(fd.asType(), fd);
236 }
237
238 List<ExecutableElement> ctors = utils.getConstructors(aClass);
239 for (ExecutableElement ctor : ctors) {
240 mapAnnotations(classToConstructorAnnotations, ctor, ctor);
241 mapExecutable(ctor);
242 }
243
244 List<ExecutableElement> methods = utils.getMethods(aClass);
245 for (ExecutableElement method : methods) {
246 mapExecutable(method);
247 mapTypeParameters(classToMethodTypeParam, method, method);
248 mapAnnotations(classToMethodAnnotations, method, method);
249 SimpleTypeVisitor9<Void, ExecutableElement> stv = new SimpleTypeVisitor9<Void, ExecutableElement>() {
250 @Override
251 public Void visitArray(ArrayType t, ExecutableElement p) {
252 TypeMirror componentType = t.getComponentType();
253 return visit(utils.isTypeVariable(componentType)
254 ? typeUtils.erasure(componentType)
255 : componentType, p);
256 }
257
258 @Override
259 public Void visitDeclared(DeclaredType t, ExecutableElement p) {
260 mapTypeParameters(classToMethodReturnTypeParam, t, p);
261 add(classToMethodReturn, (TypeElement) t.asElement(), p);
262 return null;
263 }
264
|
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package jdk.javadoc.internal.doclets.toolkit.util;
26
27 import java.util.*;
28
29 import javax.lang.model.element.AnnotationMirror;
30 import javax.lang.model.element.Element;
31 import javax.lang.model.element.ExecutableElement;
32 import javax.lang.model.element.PackageElement;
33 import javax.lang.model.element.TypeElement;
34 import javax.lang.model.element.TypeParameterElement;
35 import javax.lang.model.element.VariableElement;
36 import javax.lang.model.type.ArrayType;
37 import javax.lang.model.type.DeclaredType;
38 import javax.lang.model.type.ErrorType;
39 import javax.lang.model.type.TypeMirror;
40 import javax.lang.model.type.TypeVariable;
41 import javax.lang.model.type.WildcardType;
42 import javax.lang.model.util.ElementFilter;
43 import javax.lang.model.util.Elements;
44 import javax.lang.model.util.SimpleElementVisitor9;
45 import javax.lang.model.util.SimpleTypeVisitor9;
46 import javax.lang.model.util.Types;
47
48 import jdk.javadoc.doclet.DocletEnvironment;
49 import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration;
50 import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberMap.Kind;
51
52 /**
53 * Map all class uses for a given class.
54 *
55 * <p>
56 * <b>This is NOT part of any supported API. If you write code that depends on this, you do so at
57 * your own risk. This code and its internal interfaces are subject to change or deletion without
58 * notice.</b>
59 *
60 * @author Robert G. Field
61 */
62 public class ClassUseMapper {
63
64 private final ClassTree classtree;
65
66 /**
67 * Mapping of TypeElements to set of PackageElements used by that class.
68 */
69 public final Map<TypeElement, Set<PackageElement>> classToPackage;
70
226
227 @Override
228 public Void visitDeclared(DeclaredType t, VariableElement p) {
229 add(classToField, (TypeElement) t.asElement(), p);
230 return null;
231 }
232 @Override
233 public Void visitTypeVariable(TypeVariable t, VariableElement p) {
234 return visit(typeUtils.erasure(t), p);
235 }
236 };
237 stv.visit(fd.asType(), fd);
238 }
239
240 List<ExecutableElement> ctors = utils.getConstructors(aClass);
241 for (ExecutableElement ctor : ctors) {
242 mapAnnotations(classToConstructorAnnotations, ctor, ctor);
243 mapExecutable(ctor);
244 }
245
246 VisibleMemberMap vmm = configuration.getVisibleMemberMap(aClass, Kind.METHODS);
247 List<ExecutableElement> methods = ElementFilter.methodsIn(vmm.getMembers(aClass));
248 for (ExecutableElement method : methods) {
249 mapExecutable(method);
250 mapTypeParameters(classToMethodTypeParam, method, method);
251 mapAnnotations(classToMethodAnnotations, method, method);
252 SimpleTypeVisitor9<Void, ExecutableElement> stv = new SimpleTypeVisitor9<Void, ExecutableElement>() {
253 @Override
254 public Void visitArray(ArrayType t, ExecutableElement p) {
255 TypeMirror componentType = t.getComponentType();
256 return visit(utils.isTypeVariable(componentType)
257 ? typeUtils.erasure(componentType)
258 : componentType, p);
259 }
260
261 @Override
262 public Void visitDeclared(DeclaredType t, ExecutableElement p) {
263 mapTypeParameters(classToMethodReturnTypeParam, t, p);
264 add(classToMethodReturn, (TypeElement) t.asElement(), p);
265 return null;
266 }
267
|