src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -21,19 +21,33 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-package com.sun.tools.doclets.internal.toolkit.builders;
+package jdk.javadoc.internal.doclets.toolkit.builders;
-import java.util.*;
import java.text.MessageFormat;
+import java.util.*;
-import com.sun.javadoc.*;
-import com.sun.tools.doclets.internal.toolkit.*;
-import com.sun.tools.doclets.internal.toolkit.util.*;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.VariableElement;
+import com.sun.source.doctree.DocTree;
+import com.sun.source.doctree.DocTree.Kind;
+import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeWriter;
+import jdk.javadoc.internal.doclets.toolkit.ClassWriter;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
+import jdk.javadoc.internal.doclets.toolkit.WriterFactory;
+import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper;
+import jdk.javadoc.internal.doclets.toolkit.util.DocFinder;
+import jdk.javadoc.internal.doclets.toolkit.util.Utils;
+import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberMap;
+import jdk.javadoc.internal.doclets.toolkit.CommentUtils;
+
/**
* Builds the member summary.
*
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
@@ -52,40 +66,39 @@
public static final String NAME = "MemberSummary";
/**
* The visible members for the given class.
*/
- private final VisibleMemberMap[] visibleMemberMaps;
-
+ private final EnumMap<VisibleMemberMap.Kind, VisibleMemberMap> visibleMemberMaps;
/**
* The member summary writers for the given class.
*/
- private MemberSummaryWriter[] memberSummaryWriters;
+ private final EnumMap<VisibleMemberMap.Kind, MemberSummaryWriter> memberSummaryWriters;
/**
* The type being documented.
*/
- private final ClassDoc classDoc;
+ private 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, ClassDoc classDoc) {
+ private MemberSummaryBuilder(Context context, TypeElement typeElement) {
super(context);
- this.classDoc = classDoc;
- visibleMemberMaps =
- new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES];
- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
- visibleMemberMaps[i] =
+ this.typeElement = typeElement;
+ memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class);
+ visibleMemberMaps = new EnumMap<>(VisibleMemberMap.Kind.class);
+ for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
+ visibleMemberMaps.put(kind,
new VisibleMemberMap(
- classDoc,
- i,
- configuration);
+ typeElement,
+ kind,
+ configuration));
}
}
/**
* Construct a new MemberSummaryBuilder.
@@ -96,19 +109,17 @@
*/
public static MemberSummaryBuilder getInstance(
ClassWriter classWriter, Context context)
throws Exception {
MemberSummaryBuilder builder = new MemberSummaryBuilder(context,
- classWriter.getClassDoc());
- builder.memberSummaryWriters =
- new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES];
+ classWriter.getTypeElement());
WriterFactory wf = context.configuration.getWriterFactory();
- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
- builder.memberSummaryWriters[i] =
- builder.visibleMemberMaps[i].noVisibleMembers() ?
- null :
- wf.getMemberSummaryWriter(classWriter, i);
+ for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
+ MemberSummaryWriter msw = builder.visibleMemberMaps.get(kind).noVisibleMembers()
+ ? null
+ : wf.getMemberSummaryWriter(classWriter, kind);
+ builder.memberSummaryWriters.put(kind, msw);
}
return builder;
}
/**
@@ -120,27 +131,25 @@
*/
public static MemberSummaryBuilder getInstance(
AnnotationTypeWriter annotationTypeWriter, Context context)
throws Exception {
MemberSummaryBuilder builder = new MemberSummaryBuilder(context,
- annotationTypeWriter.getAnnotationTypeDoc());
- builder.memberSummaryWriters =
- new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES];
+ annotationTypeWriter.getAnnotationTypeElement());
WriterFactory wf = context.configuration.getWriterFactory();
- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
- builder.memberSummaryWriters[i] =
- builder.visibleMemberMaps[i].noVisibleMembers()?
- null :
- wf.getMemberSummaryWriter(
- annotationTypeWriter, i);
+ for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
+ MemberSummaryWriter msw = builder.visibleMemberMaps.get(kind).noVisibleMembers()
+ ? null
+ : wf.getMemberSummaryWriter(annotationTypeWriter, kind);
+ builder.memberSummaryWriters.put(kind, msw);
}
return builder;
}
/**
* {@inheritDoc}
*/
+ @Override
public String getName() {
return NAME;
}
/**
@@ -149,24 +158,24 @@
* @param type the type of visible member map to return.
* @return the specified visible member map.
* @throws ArrayIndexOutOfBoundsException when the type is invalid.
* @see VisibleMemberMap
*/
- public VisibleMemberMap getVisibleMemberMap(int type) {
- return visibleMemberMaps[type];
+ public VisibleMemberMap getVisibleMemberMap(VisibleMemberMap.Kind type) {
+ return visibleMemberMaps.get(type);
}
- /**
+ /**.
* Return the specified member summary writer.
*
* @param type the type of member summary writer to return.
* @return the specified member summary writer.
* @throws ArrayIndexOutOfBoundsException when the type is invalid.
* @see VisibleMemberMap
*/
- public MemberSummaryWriter getMemberSummaryWriter(int type) {
- return memberSummaryWriters[type];
+ public MemberSummaryWriter getMemberSummaryWriter(VisibleMemberMap.Kind type) {
+ return memberSummaryWriters.get(type);
}
/**
* Returns a list of methods that will be documented for the given class.
* This information can be used for doclet specific documentation
@@ -174,25 +183,26 @@
*
* @param type the type of members to return.
* @return a list of methods that will be documented.
* @see VisibleMemberMap
*/
- public List<ProgramElementDoc> members(int type) {
- return visibleMemberMaps[type].getLeafClassMembers(configuration);
+ public SortedSet<Element> members(VisibleMemberMap.Kind type) {
+ return visibleMemberMaps.get(type).getLeafClassMembers();
}
/**
* Return true it there are any members to summarize.
*
* @return true if there are any members to summarize.
*/
+ @Override
public boolean hasMembersToDocument() {
- if (classDoc instanceof AnnotationTypeDoc) {
- return ((AnnotationTypeDoc) classDoc).elements().length > 0;
+ if (utils.isAnnotationType(typeElement)) {
+ return !utils.getAnnotationMethods(typeElement).isEmpty();
}
- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
- VisibleMemberMap members = visibleMemberMaps[i];
+ for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) {
+ VisibleMemberMap members = visibleMemberMaps.get(kind);
if (!members.noVisibleMembers()) {
return true;
}
}
return false;
@@ -204,13 +214,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.ENUM_CONSTANTS);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.ENUM_CONSTANTS);
addSummary(writer, visibleMemberMap, false, memberSummaryTree);
}
/**
* Build the summary for fields.
@@ -218,13 +228,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildAnnotationTypeFieldsSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_FIELDS];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_FIELDS];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS);
addSummary(writer, visibleMemberMap, false, memberSummaryTree);
}
/**
* Build the summary for the optional members.
@@ -232,13 +242,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL);
addSummary(writer, visibleMemberMap, false, memberSummaryTree);
}
/**
* Build the summary for the optional members.
@@ -246,13 +256,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED);
addSummary(writer, visibleMemberMap, false, memberSummaryTree);
}
/**
* Build the summary for the fields.
@@ -260,24 +270,24 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.FIELDS];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.FIELDS);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.FIELDS];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.FIELDS);
addSummary(writer, visibleMemberMap, true, memberSummaryTree);
}
/**
* Build the summary for the fields.
*/
public void buildPropertiesSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.PROPERTIES];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.PROPERTIES);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.PROPERTIES];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.PROPERTIES);
addSummary(writer, visibleMemberMap, true, memberSummaryTree);
}
/**
* Build the summary for the nested classes.
@@ -285,13 +295,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.INNERCLASSES];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.INNER_CLASSES);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.INNERCLASSES];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.INNER_CLASSES);
addSummary(writer, visibleMemberMap, true, memberSummaryTree);
}
/**
* Build the method summary.
@@ -299,13 +309,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.METHODS];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.METHODS);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.METHODS];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.METHODS);
addSummary(writer, visibleMemberMap, true, memberSummaryTree);
}
/**
* Build the constructor summary.
@@ -313,13 +323,13 @@
* @param node the XML element that specifies which components to document
* @param memberSummaryTree the content tree to which the documentation will be added
*/
public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) {
MemberSummaryWriter writer =
- memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS];
+ memberSummaryWriters.get(VisibleMemberMap.Kind.CONSTRUCTORS);
VisibleMemberMap visibleMemberMap =
- visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS];
+ visibleMemberMaps.get(VisibleMemberMap.Kind.CONSTRUCTORS);
addSummary(writer, visibleMemberMap, false, memberSummaryTree);
}
/**
* Build the member summary for the given members.
@@ -328,37 +338,39 @@
* @param visibleMemberMap the given members to summarize.
* @param summaryTreeList list of content trees to which the documentation will be added
*/
private void buildSummary(MemberSummaryWriter writer,
VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
- List<ProgramElementDoc> members = new ArrayList<>(visibleMemberMap.getLeafClassMembers(
- configuration));
- if (members.size() > 0) {
- Collections.sort(members);
+ SortedSet<Element> members = visibleMemberMap.getLeafClassMembers();
+ if (!members.isEmpty()) {
List<Content> tableContents = new LinkedList<>();
- for (int i = 0; i < members.size(); i++) {
- ProgramElementDoc member = members.get(i);
- final ProgramElementDoc propertyDoc =
- visibleMemberMap.getPropertyMemberDoc(member);
- if (propertyDoc != null) {
- processProperty(visibleMemberMap, member, propertyDoc);
+ int counter = 0;
+ for (Element member : members) {
+ final Element property = visibleMemberMap.getPropertyMemberDoc(member);
+ if (property != null) {
+ processProperty(visibleMemberMap, member, property);
}
- Tag[] firstSentenceTags = member.firstSentenceTags();
- if (member instanceof MethodDoc && firstSentenceTags.length == 0) {
+ List<? extends DocTree> firstSentenceTags = utils.getFirstSentenceTrees(member);
+ if (utils.isExecutableElement(member) && firstSentenceTags.isEmpty()) {
//Inherit comments from overriden or implemented method if
//necessary.
DocFinder.Output inheritedDoc =
- DocFinder.search(configuration, new DocFinder.Input((MethodDoc) member));
+ DocFinder.search(configuration,
+ new DocFinder.Input(utils, (ExecutableElement) member));
if (inheritedDoc.holder != null
- && inheritedDoc.holder.firstSentenceTags().length > 0) {
- firstSentenceTags = inheritedDoc.holder.firstSentenceTags();
+ && !utils.getFirstSentenceTrees(inheritedDoc.holder).isEmpty()) {
+ // let the comment helper know of the overridden element
+ CommentHelper ch = utils.getCommentHelper(member);
+ ch.setOverrideElement(inheritedDoc.holder);
+ firstSentenceTags = utils.getFirstSentenceTrees(inheritedDoc.holder);
}
}
- writer.addMemberSummary(classDoc, member, firstSentenceTags,
- tableContents, i);
+ writer.addMemberSummary(typeElement, member, firstSentenceTags,
+ tableContents, counter);
+ counter++;
}
- summaryTreeList.add(writer.getSummaryTableTree(classDoc, tableContents));
+ summaryTreeList.add(writer.getSummaryTableTree(typeElement, tableContents));
}
}
/**
* Process the property method, property setter and/or property getter
@@ -368,104 +380,106 @@
* the see tags if the appropriate property getter and setter are
* available.
*
* @param visibleMemberMap the members information.
* @param member the member which is to be augmented.
- * @param propertyDoc the original property documentation.
+ * @param property the original property documentation.
*/
private void processProperty(VisibleMemberMap visibleMemberMap,
- ProgramElementDoc member,
- ProgramElementDoc propertyDoc) {
- StringBuilder commentTextBuilder = new StringBuilder();
+ Element member,
+ Element property) {
+ CommentUtils cmtutils = configuration.cmtutils;
final boolean isSetter = isSetter(member);
final boolean isGetter = isGetter(member);
+ List<DocTree> firstSentence = new ArrayList<>();
+ List<DocTree> bodyTags = new ArrayList<>();
+ List<DocTree> blockTags = new ArrayList<>();
if (isGetter || isSetter) {
//add "[GS]ets the value of the property PROPERTY_NAME."
if (isSetter) {
- commentTextBuilder.append(
- MessageFormat.format(
+ String text = MessageFormat.format(
configuration.getText("doclet.PropertySetterWithName"),
- utils.propertyNameFromMethodName(configuration, member.name())));
+ utils.propertyName((ExecutableElement)member));
+ firstSentence.addAll(cmtutils.makeFirstSentenceTree(text));
}
if (isGetter) {
- commentTextBuilder.append(
- MessageFormat.format(
+ String text = MessageFormat.format(
configuration.getText("doclet.PropertyGetterWithName"),
- utils.propertyNameFromMethodName(configuration, member.name())));
+ utils.propertyName((ExecutableElement) member));
+ firstSentence.addAll(cmtutils.makeFirstSentenceTree(text));
}
- if (propertyDoc.commentText() != null
- && !propertyDoc.commentText().isEmpty()) {
- commentTextBuilder.append(" \n @propertyDescription ");
+ List<? extends DocTree> propertyTags = utils.getBlockTags(property, "propertyDescription");
+ if (propertyTags.isEmpty()) {
+ List<? extends DocTree> comment = utils.getBody(property);
+ blockTags.addAll(cmtutils.makePropertyDescriptionTree(comment));
}
+ } else {
+ firstSentence.addAll(utils.getBody(property));
}
- commentTextBuilder.append(propertyDoc.commentText());
// copy certain tags
- List<Tag> allTags = new LinkedList<>();
- String[] tagNames = {"@defaultValue", "@since"};
- for (String tagName: tagNames) {
- Tag[] tags = propertyDoc.tags(tagName);
- if (tags != null) {
- allTags.addAll(Arrays.asList(tags));
+ List<? extends DocTree> tags = utils.getBlockTags(property, Kind.SINCE);
+ blockTags.addAll(tags);
+
+ List<? extends DocTree> bTags = utils.getBlockTags(property, Kind.UNKNOWN_BLOCK_TAG);
+ CommentHelper ch = utils.getCommentHelper(property);
+ for (DocTree dt : bTags) {
+ String tagName = ch.getTagName(dt);
+ if ( "defaultValue".equals(tagName)) {
+ blockTags.add(dt);
}
}
- for (Tag tag: allTags) {
- commentTextBuilder.append("\n")
- .append(tag.name())
- .append(" ")
- .append(tag.text());
- }
//add @see tags
if (!isGetter && !isSetter) {
- MethodDoc getter = (MethodDoc) visibleMemberMap.getGetterForProperty(member);
- MethodDoc setter = (MethodDoc) visibleMemberMap.getSetterForProperty(member);
+ ExecutableElement getter = (ExecutableElement) visibleMemberMap.getGetterForProperty(member);
+ ExecutableElement setter = (ExecutableElement) visibleMemberMap.getSetterForProperty(member);
- if ((null != getter)
- && (commentTextBuilder.indexOf("@see #" + getter.name()) == -1)) {
- commentTextBuilder.append("\n @see #")
- .append(getter.name())
- .append("() ");
+ if (null != getter) {
+ StringBuilder sb = new StringBuilder("#");
+ sb.append(utils.getSimpleName(getter)).append("()");
+ blockTags.add(cmtutils.makeSeeTree(sb.toString(), getter));
}
- if ((null != setter)
- && (commentTextBuilder.indexOf("@see #" + setter.name()) == -1)) {
- String typeName = setter.parameters()[0].typeName();
+ if (null != setter) {
+ VariableElement param = setter.getParameters().get(0);
+ String typeName = utils.getTypeName(param.asType(), false);
// Removal of type parameters and package information.
typeName = typeName.split("<")[0];
if (typeName.contains(".")) {
typeName = typeName.substring(typeName.lastIndexOf(".") + 1);
}
- commentTextBuilder.append("\n @see #").append(setter.name());
-
- if (setter.parameters()[0].type().asTypeVariable() == null) {
- commentTextBuilder.append("(").append(typeName).append(")");
+ StringBuilder sb = new StringBuilder("#");
+ sb.append(utils.getSimpleName(setter));
+ if (!utils.isTypeVariable(param.asType())) {
+ sb.append("(").append(typeName).append(")");
}
- commentTextBuilder.append(" \n");
+ blockTags.add(cmtutils.makeSeeTree(sb.toString(), setter));
}
}
- member.setRawCommentText(commentTextBuilder.toString());
+ cmtutils.setDocCommentTree(member, firstSentence, bodyTags, blockTags, utils);
}
+
/**
* Test whether the method is a getter.
- * @param ped property method documentation. Needs to be either property
+ * @param element property method documentation. Needs to be either property
* method, property getter, or property setter.
* @return true if the given documentation belongs to a getter.
*/
- private boolean isGetter(ProgramElementDoc ped) {
- final String pedName = ped.name();
+ private boolean isGetter(Element element) {
+ final String pedName = element.getSimpleName().toString();
return pedName.startsWith("get") || pedName.startsWith("is");
}
/**
* Test whether the method is a setter.
- * @param ped property method documentation. Needs to be either property
+ * @param element property method documentation. Needs to be either property
* method, property getter, or property setter.
* @return true if the given documentation belongs to a setter.
*/
- private boolean isSetter(ProgramElementDoc ped) {
- return ped.name().startsWith("set");
+ private boolean isSetter(Element element) {
+ return element.getSimpleName().toString().startsWith("set");
}
/**
* Build the inherited member summary for the given methods.
*
@@ -473,32 +487,29 @@
* @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 (ClassDoc inhclass : visibleMemberMap.getVisibleClassesList()) {
- if (!(inhclass.isPublic() ||
- utils.isLinkable(inhclass, configuration))) {
+ for (TypeElement inhclass : visibleMemberMap.getVisibleClasses()) {
+ if (!(utils.isPublic(inhclass) || utils.isLinkable(inhclass))) {
continue;
}
- if (inhclass == classDoc) {
+ if (inhclass == typeElement) {
continue;
}
- List<ProgramElementDoc> inhmembers = visibleMemberMap.getMembersFor(inhclass);
- if (inhmembers.size() > 0) {
- Collections.sort(inhmembers);
+ SortedSet<Element> inhmembers = visibleMemberMap.getMembersFor(inhclass);
+ if (!inhmembers.isEmpty()) {
Content inheritedTree = writer.getInheritedSummaryHeader(inhclass);
Content linksTree = writer.getInheritedSummaryLinksTree();
- for (int j = 0; j < inhmembers.size(); ++j) {
- writer.addInheritedMemberSummary(
- inhclass.isPackagePrivate() &&
- !utils.isLinkable(inhclass, configuration) ?
- classDoc : inhclass,
- inhmembers.get(j),
- j == 0,
- j == inhmembers.size() - 1, linksTree);
+ 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));
}
}
}
@@ -517,14 +528,13 @@
LinkedList<Content> summaryTreeList = new LinkedList<>();
buildSummary(writer, visibleMemberMap, summaryTreeList);
if (showInheritedSummary)
buildInheritedSummary(writer, visibleMemberMap, summaryTreeList);
if (!summaryTreeList.isEmpty()) {
- Content memberTree = writer.getMemberSummaryHeader(
- classDoc, memberSummaryTree);
- for (Content aSummaryTreeList : summaryTreeList) {
+ Content memberTree = writer.getMemberSummaryHeader(typeElement, memberSummaryTree);
+ summaryTreeList.stream().forEach((aSummaryTreeList) -> {
memberTree.addContent(aSummaryTreeList);
- }
+ });
writer.addMemberTree(memberSummaryTree, memberTree);
}
}
}