src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstantsSummaryBuilder.java
changeset 49879 601277b1d582
parent 47216 71c04702a3d5
child 59294 48b88b9c11eb
equal deleted inserted replaced
49878:2422d4e027b0 49879:601277b1d582
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    33 import javax.lang.model.element.VariableElement;
    33 import javax.lang.model.element.VariableElement;
    34 
    34 
    35 import jdk.javadoc.internal.doclets.toolkit.ConstantsSummaryWriter;
    35 import jdk.javadoc.internal.doclets.toolkit.ConstantsSummaryWriter;
    36 import jdk.javadoc.internal.doclets.toolkit.Content;
    36 import jdk.javadoc.internal.doclets.toolkit.Content;
    37 import jdk.javadoc.internal.doclets.toolkit.DocletException;
    37 import jdk.javadoc.internal.doclets.toolkit.DocletException;
    38 import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberMap;
    38 import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable;
    39 
    39 
       
    40 import static jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable.Kind.*;
    40 
    41 
    41 /**
    42 /**
    42  * Builds the Constants Summary Page.
    43  * Builds the Constants Summary Page.
    43  *
    44  *
    44  *  <p><b>This is NOT part of any supported API.
    45  *  <p><b>This is NOT part of any supported API.
   260      *
   261      *
   261      * @param typeElement the class being checked.
   262      * @param typeElement the class being checked.
   262      * @return true if the given package has constant fields to document.
   263      * @return true if the given package has constant fields to document.
   263      */
   264      */
   264     private boolean hasConstantField (TypeElement typeElement) {
   265     private boolean hasConstantField (TypeElement typeElement) {
   265         VisibleMemberMap visibleMemberMapFields = configuration.getVisibleMemberMap(typeElement,
   266         VisibleMemberTable vmt = configuration.getVisibleMemberTable(typeElement);
   266             VisibleMemberMap.Kind.FIELDS);
   267         List<? extends Element> fields = vmt.getVisibleMembers(FIELDS);
   267         List<Element> fields = visibleMemberMapFields.getLeafMembers();
       
   268         for (Element f : fields) {
   268         for (Element f : fields) {
   269             VariableElement field = (VariableElement)f;
   269             VariableElement field = (VariableElement)f;
   270             if (field.getConstantValue() != null) {
   270             if (field.getConstantValue() != null) {
   271                 typeElementsWithConstFields.add(typeElement);
   271                 typeElementsWithConstFields.add(typeElement);
   272                 return true;
   272                 return true;
   277 
   277 
   278     /**
   278     /**
   279      * Return true if the given package name has been printed.  Also
   279      * Return true if the given package name has been printed.  Also
   280      * return true if the root of this package has been printed.
   280      * return true if the root of this package has been printed.
   281      *
   281      *
   282      * @param pkgname the name of the package to check.
   282      * @param pkg the name of the package to check.
   283      */
   283      */
   284     private boolean hasPrintedPackageIndex(PackageElement pkg) {
   284     private boolean hasPrintedPackageIndex(PackageElement pkg) {
   285         for (PackageElement printedPkg : printedPackageHeaders) {
   285         for (PackageElement printedPkg : printedPackageHeaders) {
   286             if (utils.getPackageName(pkg).startsWith(utils.parsePackageName(printedPkg))) {
   286             if (utils.getPackageName(pkg).startsWith(utils.parsePackageName(printedPkg))) {
   287                 return true;
   287                 return true;
   294      * Print the table of constants.
   294      * Print the table of constants.
   295      *
   295      *
   296      * @author Jamie Ho
   296      * @author Jamie Ho
   297      */
   297      */
   298     private class ConstantFieldBuilder {
   298     private class ConstantFieldBuilder {
   299 
       
   300         /**
       
   301          * The map used to get the visible variables.
       
   302          */
       
   303         protected VisibleMemberMap visibleMemberMapFields = null;
       
   304 
       
   305         /**
       
   306          * The map used to get the visible variables.
       
   307          */
       
   308         protected VisibleMemberMap visibleMemberMapEnumConst = null;
       
   309 
   299 
   310         /**
   300         /**
   311          * The typeElement that we are examining constants for.
   301          * The typeElement that we are examining constants for.
   312          */
   302          */
   313         protected TypeElement typeElement;
   303         protected TypeElement typeElement;
   316          * Construct a ConstantFieldSubWriter.
   306          * Construct a ConstantFieldSubWriter.
   317          * @param typeElement the typeElement that we are examining constants for.
   307          * @param typeElement the typeElement that we are examining constants for.
   318          */
   308          */
   319         public ConstantFieldBuilder(TypeElement typeElement) {
   309         public ConstantFieldBuilder(TypeElement typeElement) {
   320             this.typeElement = typeElement;
   310             this.typeElement = typeElement;
   321             visibleMemberMapFields = configuration.getVisibleMemberMap(typeElement,
       
   322                 VisibleMemberMap.Kind.FIELDS);
       
   323             visibleMemberMapEnumConst = configuration.getVisibleMemberMap(typeElement,
       
   324                 VisibleMemberMap.Kind.ENUM_CONSTANTS);
       
   325         }
   311         }
   326 
   312 
   327         /**
   313         /**
   328          * Builds the table of constants for a given class.
   314          * Builds the table of constants for a given class.
   329          *
   315          *
   340         /**
   326         /**
   341          * Returns a set of visible constant fields for the given type.
   327          * Returns a set of visible constant fields for the given type.
   342          * @return the set of visible constant fields for the given type.
   328          * @return the set of visible constant fields for the given type.
   343          */
   329          */
   344         protected SortedSet<VariableElement> members() {
   330         protected SortedSet<VariableElement> members() {
   345             List<Element> members = visibleMemberMapFields.getLeafMembers();
   331             VisibleMemberTable vmt = configuration.getVisibleMemberTable(typeElement);
   346             members.addAll(visibleMemberMapEnumConst.getLeafMembers());
   332             List<Element> members = new ArrayList<>();
       
   333             members.addAll(vmt.getVisibleMembers(FIELDS));
       
   334             members.addAll(vmt.getVisibleMembers(ENUM_CONSTANTS));
   347             SortedSet<VariableElement> includes =
   335             SortedSet<VariableElement> includes =
   348                     new TreeSet<>(utils.makeGeneralPurposeComparator());
   336                     new TreeSet<>(utils.makeGeneralPurposeComparator());
   349             for (Element element : members) {
   337             for (Element element : members) {
   350                 VariableElement member = (VariableElement)element;
   338                 VariableElement member = (VariableElement)element;
   351                 if (member.getConstantValue() != null) {
   339                 if (member.getConstantValue() != null) {