langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java
changeset 44460 9adfc635dd7b
parent 44385 f777a2822087
child 45599 8bc3a019f948
equal deleted inserted replaced
44459:5224425af378 44460:9adfc635dd7b
    68      * The XML root for this builder.
    68      * The XML root for this builder.
    69      */
    69      */
    70     public static final String NAME = "MemberSummary";
    70     public static final String NAME = "MemberSummary";
    71 
    71 
    72     /**
    72     /**
    73      * The visible members for the given class.
       
    74      */
       
    75     private final EnumMap<VisibleMemberMap.Kind, VisibleMemberMap> visibleMemberMaps;
       
    76     /**
       
    77      * The member summary writers for the given class.
    73      * The member summary writers for the given class.
    78      */
    74      */
    79     private final EnumMap<VisibleMemberMap.Kind, MemberSummaryWriter> memberSummaryWriters;
    75     private final EnumMap<VisibleMemberMap.Kind, MemberSummaryWriter> memberSummaryWriters;
    80 
    76 
    81     /**
    77     /**
    92      */
    88      */
    93     private MemberSummaryBuilder(Context context, TypeElement typeElement) {
    89     private MemberSummaryBuilder(Context context, TypeElement typeElement) {
    94         super(context);
    90         super(context);
    95         this.typeElement = typeElement;
    91         this.typeElement = typeElement;
    96         memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class);
    92         memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class);
    97         visibleMemberMaps = new EnumMap<>(VisibleMemberMap.Kind.class);
       
    98         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
       
    99             visibleMemberMaps.put(kind,
       
   100                     new VisibleMemberMap(
       
   101                     typeElement,
       
   102                     kind,
       
   103                     configuration));
       
   104         }
       
   105     }
    93     }
   106 
    94 
   107     /**
    95     /**
   108      * Construct a new MemberSummaryBuilder.
    96      * Construct a new MemberSummaryBuilder.
   109      *
    97      *
   115             ClassWriter classWriter, Context context) {
   103             ClassWriter classWriter, Context context) {
   116         MemberSummaryBuilder builder = new MemberSummaryBuilder(context,
   104         MemberSummaryBuilder builder = new MemberSummaryBuilder(context,
   117                 classWriter.getTypeElement());
   105                 classWriter.getTypeElement());
   118         WriterFactory wf = context.configuration.getWriterFactory();
   106         WriterFactory wf = context.configuration.getWriterFactory();
   119         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
   107         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
   120             MemberSummaryWriter msw = builder.visibleMemberMaps.get(kind).noVisibleMembers()
   108             MemberSummaryWriter msw =  builder.getVisibleMemberMap(kind).noVisibleMembers()
   121                     ? null
   109                     ? null
   122                     : wf.getMemberSummaryWriter(classWriter, kind);
   110                     : wf.getMemberSummaryWriter(classWriter, kind);
   123             builder.memberSummaryWriters.put(kind, msw);
   111             builder.memberSummaryWriters.put(kind, msw);
   124         }
   112         }
   125         return builder;
   113         return builder;
   136             AnnotationTypeWriter annotationTypeWriter, Context context) {
   124             AnnotationTypeWriter annotationTypeWriter, Context context) {
   137         MemberSummaryBuilder builder = new MemberSummaryBuilder(context,
   125         MemberSummaryBuilder builder = new MemberSummaryBuilder(context,
   138                 annotationTypeWriter.getAnnotationTypeElement());
   126                 annotationTypeWriter.getAnnotationTypeElement());
   139         WriterFactory wf = context.configuration.getWriterFactory();
   127         WriterFactory wf = context.configuration.getWriterFactory();
   140         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
   128         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
   141             MemberSummaryWriter msw = builder.visibleMemberMaps.get(kind).noVisibleMembers()
   129             MemberSummaryWriter msw = builder.getVisibleMemberMap(kind).noVisibleMembers()
   142                     ? null
   130                     ? null
   143                     : wf.getMemberSummaryWriter(annotationTypeWriter, kind);
   131                     : wf.getMemberSummaryWriter(annotationTypeWriter, kind);
   144             builder.memberSummaryWriters.put(kind, msw);
   132             builder.memberSummaryWriters.put(kind, msw);
   145         }
   133         }
   146         return builder;
   134         return builder;
   155     }
   143     }
   156 
   144 
   157     /**
   145     /**
   158      * Return the specified visible member map.
   146      * Return the specified visible member map.
   159      *
   147      *
   160      * @param type the type of visible member map to return.
   148      * @param kind the kind of visible member map to return.
   161      * @return the specified visible member map.
   149      * @return the specified visible member map.
   162      * @throws ArrayIndexOutOfBoundsException when the type is invalid.
   150      * @throws ArrayIndexOutOfBoundsException when the type is invalid.
   163      * @see VisibleMemberMap
   151      * @see VisibleMemberMap
   164      */
   152      */
   165     public VisibleMemberMap getVisibleMemberMap(VisibleMemberMap.Kind type) {
   153     public VisibleMemberMap getVisibleMemberMap(VisibleMemberMap.Kind kind) {
   166         return visibleMemberMaps.get(type);
   154         return configuration.getVisibleMemberMap(typeElement, kind);
   167     }
   155     }
   168 
   156 
   169     /**.
   157     /**.
   170      * Return the specified member summary writer.
   158      * Return the specified member summary writer.
   171      *
   159      *
   172      * @param type the type of member summary writer to return.
   160      * @param kind the kind of member summary writer to return.
   173      * @return the specified member summary writer.
   161      * @return the specified member summary writer.
   174      * @throws ArrayIndexOutOfBoundsException when the type is invalid.
   162      * @throws ArrayIndexOutOfBoundsException when the type is invalid.
   175      * @see VisibleMemberMap
   163      * @see VisibleMemberMap
   176      */
   164      */
   177     public MemberSummaryWriter getMemberSummaryWriter(VisibleMemberMap.Kind type) {
   165     public MemberSummaryWriter getMemberSummaryWriter(VisibleMemberMap.Kind kind) {
   178         return memberSummaryWriters.get(type);
   166         return memberSummaryWriters.get(kind);
   179     }
   167     }
   180 
   168 
   181     /**
   169     /**
   182      * Returns a list of methods that will be documented for the given class.
   170      * Returns a list of methods that will be documented for the given class.
   183      * This information can be used for doclet specific documentation
   171      * This information can be used for doclet specific documentation
   184      * generation.
   172      * generation.
   185      *
   173      *
   186      * @param type the type of members to return.
   174      * @param kind the kind of elements to return.
   187      * @return a list of methods that will be documented.
   175      * @return a list of methods that will be documented.
   188      * @see VisibleMemberMap
   176      * @see VisibleMemberMap
   189      */
   177      */
   190     public SortedSet<Element> members(VisibleMemberMap.Kind type) {
   178     public SortedSet<Element> members(VisibleMemberMap.Kind kind) {
   191         TreeSet<Element> out = new TreeSet<>(comparator);
   179         TreeSet<Element> out = new TreeSet<>(comparator);
   192         out.addAll(visibleMemberMaps.get(type).getLeafMembers());
   180         out.addAll(getVisibleMemberMap(kind).getLeafMembers());
   193         return out;
   181         return out;
   194     }
   182     }
   195 
   183 
   196     /**
   184     /**
   197      * Return true it there are any members to summarize.
   185      * Return true it there are any members to summarize.
   202     public boolean hasMembersToDocument() {
   190     public boolean hasMembersToDocument() {
   203         if (utils.isAnnotationType(typeElement)) {
   191         if (utils.isAnnotationType(typeElement)) {
   204             return !utils.getAnnotationMethods(typeElement).isEmpty();
   192             return !utils.getAnnotationMethods(typeElement).isEmpty();
   205         }
   193         }
   206         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
   194         for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
   207             VisibleMemberMap members = visibleMemberMaps.get(kind);
   195             VisibleMemberMap members = getVisibleMemberMap(kind);
   208             if (!members.noVisibleMembers()) {
   196             if (!members.noVisibleMembers()) {
   209                 return true;
   197                 return true;
   210             }
   198             }
   211         }
   199         }
   212         return false;
   200         return false;
   220      */
   208      */
   221     public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) {
   209     public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) {
   222         MemberSummaryWriter writer =
   210         MemberSummaryWriter writer =
   223                 memberSummaryWriters.get(VisibleMemberMap.Kind.ENUM_CONSTANTS);
   211                 memberSummaryWriters.get(VisibleMemberMap.Kind.ENUM_CONSTANTS);
   224         VisibleMemberMap visibleMemberMap =
   212         VisibleMemberMap visibleMemberMap =
   225                 visibleMemberMaps.get(VisibleMemberMap.Kind.ENUM_CONSTANTS);
   213                 getVisibleMemberMap(VisibleMemberMap.Kind.ENUM_CONSTANTS);
   226         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   214         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   227     }
   215     }
   228 
   216 
   229     /**
   217     /**
   230      * Build the summary for fields.
   218      * Build the summary for fields.
   234      */
   222      */
   235     public void buildAnnotationTypeFieldsSummary(XMLNode node, Content memberSummaryTree) {
   223     public void buildAnnotationTypeFieldsSummary(XMLNode node, Content memberSummaryTree) {
   236         MemberSummaryWriter writer =
   224         MemberSummaryWriter writer =
   237                 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS);
   225                 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS);
   238         VisibleMemberMap visibleMemberMap =
   226         VisibleMemberMap visibleMemberMap =
   239                 visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS);
   227                 getVisibleMemberMap(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS);
   240         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   228         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   241     }
   229     }
   242 
   230 
   243     /**
   231     /**
   244      * Build the summary for the optional members.
   232      * Build the summary for the optional members.
   248      */
   236      */
   249     public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) {
   237     public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) {
   250         MemberSummaryWriter writer =
   238         MemberSummaryWriter writer =
   251                 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL);
   239                 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL);
   252         VisibleMemberMap visibleMemberMap =
   240         VisibleMemberMap visibleMemberMap =
   253                 visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL);
   241                 getVisibleMemberMap(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL);
   254         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   242         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   255     }
   243     }
   256 
   244 
   257     /**
   245     /**
   258      * Build the summary for the optional members.
   246      * Build the summary for the optional members.
   262      */
   250      */
   263     public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) {
   251     public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) {
   264         MemberSummaryWriter writer =
   252         MemberSummaryWriter writer =
   265                 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED);
   253                 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED);
   266         VisibleMemberMap visibleMemberMap =
   254         VisibleMemberMap visibleMemberMap =
   267                 visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED);
   255                 getVisibleMemberMap(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED);
   268         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   256         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   269     }
   257     }
   270 
   258 
   271     /**
   259     /**
   272      * Build the summary for the fields.
   260      * Build the summary for the fields.
   276      */
   264      */
   277     public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) {
   265     public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) {
   278         MemberSummaryWriter writer =
   266         MemberSummaryWriter writer =
   279                 memberSummaryWriters.get(VisibleMemberMap.Kind.FIELDS);
   267                 memberSummaryWriters.get(VisibleMemberMap.Kind.FIELDS);
   280         VisibleMemberMap visibleMemberMap =
   268         VisibleMemberMap visibleMemberMap =
   281                 visibleMemberMaps.get(VisibleMemberMap.Kind.FIELDS);
   269                 getVisibleMemberMap(VisibleMemberMap.Kind.FIELDS);
   282         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   270         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   283     }
   271     }
   284 
   272 
   285     /**
   273     /**
   286      * Build the summary for the fields.
   274      * Build the summary for the fields.
   287      */
   275      */
   288     public void buildPropertiesSummary(XMLNode node, Content memberSummaryTree) {
   276     public void buildPropertiesSummary(XMLNode node, Content memberSummaryTree) {
   289         MemberSummaryWriter writer =
   277         MemberSummaryWriter writer =
   290                 memberSummaryWriters.get(VisibleMemberMap.Kind.PROPERTIES);
   278                 memberSummaryWriters.get(VisibleMemberMap.Kind.PROPERTIES);
   291         VisibleMemberMap visibleMemberMap =
   279         VisibleMemberMap visibleMemberMap =
   292                 visibleMemberMaps.get(VisibleMemberMap.Kind.PROPERTIES);
   280                 getVisibleMemberMap(VisibleMemberMap.Kind.PROPERTIES);
   293         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   281         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   294     }
   282     }
   295 
   283 
   296     /**
   284     /**
   297      * Build the summary for the nested classes.
   285      * Build the summary for the nested classes.
   301      */
   289      */
   302     public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) {
   290     public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) {
   303         MemberSummaryWriter writer =
   291         MemberSummaryWriter writer =
   304                 memberSummaryWriters.get(VisibleMemberMap.Kind.INNER_CLASSES);
   292                 memberSummaryWriters.get(VisibleMemberMap.Kind.INNER_CLASSES);
   305         VisibleMemberMap visibleMemberMap =
   293         VisibleMemberMap visibleMemberMap =
   306                 visibleMemberMaps.get(VisibleMemberMap.Kind.INNER_CLASSES);
   294                 getVisibleMemberMap(VisibleMemberMap.Kind.INNER_CLASSES);
   307         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   295         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   308     }
   296     }
   309 
   297 
   310     /**
   298     /**
   311      * Build the method summary.
   299      * Build the method summary.
   315      */
   303      */
   316     public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) {
   304     public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) {
   317         MemberSummaryWriter writer =
   305         MemberSummaryWriter writer =
   318                 memberSummaryWriters.get(VisibleMemberMap.Kind.METHODS);
   306                 memberSummaryWriters.get(VisibleMemberMap.Kind.METHODS);
   319         VisibleMemberMap visibleMemberMap =
   307         VisibleMemberMap visibleMemberMap =
   320                 visibleMemberMaps.get(VisibleMemberMap.Kind.METHODS);
   308                getVisibleMemberMap(VisibleMemberMap.Kind.METHODS);
   321         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   309         addSummary(writer, visibleMemberMap, true, memberSummaryTree);
   322     }
   310     }
   323 
   311 
   324     /**
   312     /**
   325      * Build the constructor summary.
   313      * Build the constructor summary.
   329      */
   317      */
   330     public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) {
   318     public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) {
   331         MemberSummaryWriter writer =
   319         MemberSummaryWriter writer =
   332                 memberSummaryWriters.get(VisibleMemberMap.Kind.CONSTRUCTORS);
   320                 memberSummaryWriters.get(VisibleMemberMap.Kind.CONSTRUCTORS);
   333         VisibleMemberMap visibleMemberMap =
   321         VisibleMemberMap visibleMemberMap =
   334                 visibleMemberMaps.get(VisibleMemberMap.Kind.CONSTRUCTORS);
   322                 getVisibleMemberMap(VisibleMemberMap.Kind.CONSTRUCTORS);
   335         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   323         addSummary(writer, visibleMemberMap, false, memberSummaryTree);
   336     }
   324     }
   337 
   325 
   338     /**
   326     /**
   339      * Build the member summary for the given members.
   327      * Build the member summary for the given members.