< prev index next >
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java
Print this page
*** 77,89 ****
protected final TypeElement typeElement;
/**
* Construct a new MemberSummaryBuilder.
*
- * @param classWriter the writer for the class whose members are being
- * summarized.
* @param context the build context.
*/
private MemberSummaryBuilder(Context context, TypeElement typeElement) {
super(context);
this.typeElement = typeElement;
memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class);
--- 77,88 ----
protected final TypeElement typeElement;
/**
* Construct a new MemberSummaryBuilder.
*
* @param context the build context.
+ * @param typeElement the typeElement.
*/
private MemberSummaryBuilder(Context context, TypeElement typeElement) {
super(context);
this.typeElement = typeElement;
memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class);
*** 335,345 ****
SortedSet<Element> members = asSortedSet(visibleMemberMap.getLeafMembers());
if (!members.isEmpty()) {
List<Content> tableContents = new LinkedList<>();
int counter = 0;
for (Element member : members) {
! final Element property = visibleMemberMap.getPropertyMemberDoc(member);
if (property != null) {
processProperty(visibleMemberMap, member, property);
}
List<? extends DocTree> firstSentenceTags = utils.getFirstSentenceTrees(member);
if (utils.isExecutableElement(member) && firstSentenceTags.isEmpty()) {
--- 334,344 ----
SortedSet<Element> members = asSortedSet(visibleMemberMap.getLeafMembers());
if (!members.isEmpty()) {
List<Content> tableContents = new LinkedList<>();
int counter = 0;
for (Element member : members) {
! final Element property = visibleMemberMap.getPropertyElement(member);
if (property != null) {
processProperty(visibleMemberMap, member, property);
}
List<? extends DocTree> firstSentenceTags = utils.getFirstSentenceTrees(member);
if (utils.isExecutableElement(member) && firstSentenceTags.isEmpty()) {
*** 473,506 ****
* @param visibleMemberMap the map for the members to document.
* @param summaryTreeList list of content trees to which the documentation will be added
*/
private void buildInheritedSummary(MemberSummaryWriter writer,
VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
! for (TypeElement inhclass : visibleMemberMap.getVisibleClasses()) {
! if (!(utils.isPublic(inhclass) || utils.isLinkable(inhclass))) {
continue;
}
! if (inhclass == typeElement) {
continue;
}
! SortedSet<Element> inhmembers = asSortedSet(visibleMemberMap.getMembers(inhclass));
! if (!inhmembers.isEmpty()) {
! Content inheritedTree = writer.getInheritedSummaryHeader(inhclass);
! Content linksTree = writer.getInheritedSummaryLinksTree();
! for (Element member : inhmembers) {
! TypeElement t= inhclass;
! if (utils.isPackagePrivate(inhclass) && !utils.isLinkable(inhclass)) {
! t = typeElement;
}
! writer.addInheritedMemberSummary(t, member, inhmembers.first() == member,
! inhmembers.last() == member, linksTree);
}
inheritedTree.addContent(linksTree);
summaryTreeList.add(writer.getMemberTree(inheritedTree));
}
}
}
/**
* Add the summary for the documentation.
*
* @param writer the writer for this member summary.
--- 472,532 ----
* @param visibleMemberMap the map for the members to document.
* @param summaryTreeList list of content trees to which the documentation will be added
*/
private void buildInheritedSummary(MemberSummaryWriter writer,
VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
! for (TypeElement inheritedClass : visibleMemberMap.getVisibleClasses()) {
! if (!(utils.isPublic(inheritedClass) || utils.isLinkable(inheritedClass))) {
continue;
}
! if (inheritedClass == typeElement) {
continue;
}
! SortedSet<Element> inheritedMembersFromMap = asSortedSet(
! visibleMemberMap.getMembers(inheritedClass));
!
! if (!inheritedMembersFromMap.isEmpty()) {
! SortedSet<Element> inheritedMembers = new TreeSet<>(comparator);
! List<ExecutableElement> enclosedSuperMethods = utils.getMethods(inheritedClass);
! for (Element inheritedMember : inheritedMembersFromMap) {
! if (visibleMemberMap.kind != VisibleMemberMap.Kind.METHODS) {
! inheritedMembers.add(inheritedMember);
! continue;
}
!
! // If applicable, filter those overridden methods that
! // should not be documented in the summary/detail sections
! // instead document them in the footnote, care must be taken
! // to handle fx property methods which have no source comments,
! // but comments are synthesized on the output.
! ExecutableElement inheritedMethod = (ExecutableElement)inheritedMember;
! if (enclosedSuperMethods.stream()
! .anyMatch(e -> utils.executableMembersEqual(inheritedMethod, e)
! && (!utils.isSimpleOverride(e)
! || visibleMemberMap.getPropertyElement(e) != null))) {
! inheritedMembers.add(inheritedMember);
}
+ }
+
+ Content inheritedTree = writer.getInheritedSummaryHeader(inheritedClass);
+ Content linksTree = writer.getInheritedSummaryLinksTree();
+ addSummaryFootNote(inheritedClass, inheritedMembers, linksTree, writer);
inheritedTree.addContent(linksTree);
summaryTreeList.add(writer.getMemberTree(inheritedTree));
}
}
}
+
+ private void addSummaryFootNote(TypeElement inheritedClass, SortedSet<Element> inheritedMembers,
+ Content linksTree, MemberSummaryWriter writer) {
+ for (Element member : inheritedMembers) {
+ TypeElement t = (utils.isPackagePrivate(inheritedClass) && !utils.isLinkable(inheritedClass))
+ ? typeElement : inheritedClass;
+ writer.addInheritedMemberSummary(t, member, inheritedMembers.first() == member,
+ inheritedMembers.last() == member, linksTree);
+ }
+ }
/**
* Add the summary for the documentation.
*
* @param writer the writer for this member summary.
< prev index next >