< prev index next >

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

Print this page
rev 58565 : records: mark record related model API as preview


  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package jdk.javadoc.internal.doclets.toolkit.util;
  27 
  28 import javax.lang.model.element.Element;
  29 import javax.lang.model.element.ExecutableElement;
  30 import javax.lang.model.element.TypeElement;
  31 import javax.lang.model.element.VariableElement;
  32 import javax.lang.model.type.TypeKind;
  33 import javax.lang.model.type.TypeMirror;
  34 import javax.lang.model.util.Elements;
  35 import javax.lang.model.util.SimpleElementVisitor9;
  36 import java.lang.ref.SoftReference;
  37 import java.util.ArrayList;
  38 import java.util.Collections;
  39 import java.util.EnumMap;
  40 import java.util.EnumSet;
  41 import java.util.HashMap;
  42 import java.util.LinkedHashMap;
  43 import java.util.LinkedHashSet;
  44 import java.util.List;
  45 import java.util.Map;
  46 import java.util.Set;
  47 import java.util.function.Predicate;
  48 import java.util.stream.Collectors;
  49 
  50 import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
  51 import jdk.javadoc.internal.doclets.toolkit.PropertyUtils;
  52 
  53 /**
  54  * This class computes the main data structure for the doclet's
  55  * operations. Essentially, the implementation encapsulating the


 683                         break;
 684                     case CONSTRUCTOR:
 685                             addMember(e, Kind.CONSTRUCTORS);
 686                         break;
 687                     case ENUM_CONSTANT:
 688                         addMember(e, Kind.ENUM_CONSTANTS);
 689                         break;
 690                 }
 691             }
 692 
 693             // Freeze the data structures
 694             for (Kind kind : Kind.values()) {
 695                 orderedMembers.computeIfPresent(kind, (k, v) -> Collections.unmodifiableList(v));
 696                 orderedMembers.computeIfAbsent(kind, t -> Collections.emptyList());
 697 
 698                 memberMap.computeIfPresent(kind, (k, v) -> Collections.unmodifiableMap(v));
 699                 memberMap.computeIfAbsent(kind, t -> Collections.emptyMap());
 700             }
 701         }
 702 

 703         String getMemberKey(Element e) {
 704             return new SimpleElementVisitor9<String, Void>() {
 705                 @Override
 706                 public String visitExecutable(ExecutableElement e, Void aVoid) {
 707                     return e.getSimpleName() + ":" + e.getParameters().size();
 708                 }
 709 
 710                 @Override
 711                 protected String defaultAction(Element e, Void aVoid) {
 712                     return e.getSimpleName().toString();
 713                 }
 714             }.visit(e);
 715         }
 716 
 717         void addMember(Element e, Kind kind) {
 718             List<Element> list = orderedMembers.computeIfAbsent(kind, k -> new ArrayList<>());
 719             list.add(e);
 720 
 721             Map<String, List<Element>> map = memberMap.computeIfAbsent(kind, k -> new HashMap<>());
 722             list = map.computeIfAbsent(getMemberKey(e), l -> new ArrayList<>());
 723             list.add(e);
 724         }




  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package jdk.javadoc.internal.doclets.toolkit.util;
  27 
  28 import javax.lang.model.element.Element;
  29 import javax.lang.model.element.ExecutableElement;
  30 import javax.lang.model.element.TypeElement;
  31 import javax.lang.model.element.VariableElement;
  32 import javax.lang.model.type.TypeKind;
  33 import javax.lang.model.type.TypeMirror;
  34 import javax.lang.model.util.Elements;
  35 import javax.lang.model.util.SimpleElementVisitor14;
  36 import java.lang.ref.SoftReference;
  37 import java.util.ArrayList;
  38 import java.util.Collections;
  39 import java.util.EnumMap;
  40 import java.util.EnumSet;
  41 import java.util.HashMap;
  42 import java.util.LinkedHashMap;
  43 import java.util.LinkedHashSet;
  44 import java.util.List;
  45 import java.util.Map;
  46 import java.util.Set;
  47 import java.util.function.Predicate;
  48 import java.util.stream.Collectors;
  49 
  50 import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
  51 import jdk.javadoc.internal.doclets.toolkit.PropertyUtils;
  52 
  53 /**
  54  * This class computes the main data structure for the doclet's
  55  * operations. Essentially, the implementation encapsulating the


 683                         break;
 684                     case CONSTRUCTOR:
 685                             addMember(e, Kind.CONSTRUCTORS);
 686                         break;
 687                     case ENUM_CONSTANT:
 688                         addMember(e, Kind.ENUM_CONSTANTS);
 689                         break;
 690                 }
 691             }
 692 
 693             // Freeze the data structures
 694             for (Kind kind : Kind.values()) {
 695                 orderedMembers.computeIfPresent(kind, (k, v) -> Collections.unmodifiableList(v));
 696                 orderedMembers.computeIfAbsent(kind, t -> Collections.emptyList());
 697 
 698                 memberMap.computeIfPresent(kind, (k, v) -> Collections.unmodifiableMap(v));
 699                 memberMap.computeIfAbsent(kind, t -> Collections.emptyMap());
 700             }
 701         }
 702 
 703         @SuppressWarnings("preview")
 704         String getMemberKey(Element e) {
 705             return new SimpleElementVisitor14<String, Void>() {
 706                 @Override
 707                 public String visitExecutable(ExecutableElement e, Void aVoid) {
 708                     return e.getSimpleName() + ":" + e.getParameters().size();
 709                 }
 710 
 711                 @Override
 712                 protected String defaultAction(Element e, Void aVoid) {
 713                     return e.getSimpleName().toString();
 714                 }
 715             }.visit(e);
 716         }
 717 
 718         void addMember(Element e, Kind kind) {
 719             List<Element> list = orderedMembers.computeIfAbsent(kind, k -> new ArrayList<>());
 720             list.add(e);
 721 
 722             Map<String, List<Element>> map = memberMap.computeIfAbsent(kind, k -> new HashMap<>());
 723             list = map.computeIfAbsent(getMemberKey(e), l -> new ArrayList<>());
 724             list.add(e);
 725         }


< prev index next >