< prev index next >

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ClassUseMapper.java

Print this page




  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 


< prev index next >