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("removal")
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<>());
|
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<>());
|