1.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java Tue Nov 30 09:38:48 2010 -0800 1.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java Wed Dec 01 11:02:38 2010 -0800 1.3 @@ -25,10 +25,10 @@ 1.4 1.5 package com.sun.tools.doclets.internal.toolkit.builders; 1.6 1.7 +import java.util.*; 1.8 import com.sun.tools.doclets.internal.toolkit.util.*; 1.9 import com.sun.tools.doclets.internal.toolkit.*; 1.10 import com.sun.javadoc.*; 1.11 -import java.util.*; 1.12 1.13 /** 1.14 * Builds the member summary. 1.15 @@ -38,49 +38,50 @@ 1.16 * Do not use it as an API 1.17 * 1.18 * @author Jamie Ho 1.19 + * @author Bhavesh Patel (Modified) 1.20 * @since 1.5 1.21 */ 1.22 public class MemberSummaryBuilder extends AbstractMemberBuilder { 1.23 1.24 - /** 1.25 - * The XML root for this builder. 1.26 - */ 1.27 - public static final String NAME = "MemberSummary"; 1.28 + /** 1.29 + * The XML root for this builder. 1.30 + */ 1.31 + public static final String NAME = "MemberSummary"; 1.32 1.33 - /** 1.34 - * The visible members for the given class. 1.35 - */ 1.36 - private VisibleMemberMap[] visibleMemberMaps; 1.37 + /** 1.38 + * The visible members for the given class. 1.39 + */ 1.40 + private VisibleMemberMap[] visibleMemberMaps; 1.41 1.42 - /** 1.43 - * The member summary writers for the given class. 1.44 - */ 1.45 - private MemberSummaryWriter[] memberSummaryWriters; 1.46 + /** 1.47 + * The member summary writers for the given class. 1.48 + */ 1.49 + private MemberSummaryWriter[] memberSummaryWriters; 1.50 1.51 - /** 1.52 - * The type being documented. 1.53 - */ 1.54 - private ClassDoc classDoc; 1.55 + /** 1.56 + * The type being documented. 1.57 + */ 1.58 + private ClassDoc classDoc; 1.59 1.60 - private MemberSummaryBuilder(Configuration configuration) { 1.61 - super(configuration); 1.62 - } 1.63 + private MemberSummaryBuilder(Configuration configuration) { 1.64 + super(configuration); 1.65 + } 1.66 1.67 - /** 1.68 - * Construct a new MemberSummaryBuilder. 1.69 - * 1.70 - * @param classWriter the writer for the class whose members are being 1.71 - * summarized. 1.72 - * @param configuration the current configuration of the doclet. 1.73 - */ 1.74 - public static MemberSummaryBuilder getInstance( 1.75 - ClassWriter classWriter, Configuration configuration) 1.76 - throws Exception { 1.77 - MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration); 1.78 - builder.classDoc = classWriter.getClassDoc(); 1.79 - builder.init(classWriter); 1.80 - return builder; 1.81 - } 1.82 + /** 1.83 + * Construct a new MemberSummaryBuilder. 1.84 + * 1.85 + * @param classWriter the writer for the class whose members are being 1.86 + * summarized. 1.87 + * @param configuration the current configuration of the doclet. 1.88 + */ 1.89 + public static MemberSummaryBuilder getInstance( 1.90 + ClassWriter classWriter, Configuration configuration) 1.91 + throws Exception { 1.92 + MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration); 1.93 + builder.classDoc = classWriter.getClassDoc(); 1.94 + builder.init(classWriter); 1.95 + return builder; 1.96 + } 1.97 1.98 /** 1.99 * Construct a new MemberSummaryBuilder. 1.100 @@ -90,8 +91,8 @@ 1.101 * @param configuration the current configuration of the doclet. 1.102 */ 1.103 public static MemberSummaryBuilder getInstance( 1.104 - AnnotationTypeWriter annotationTypeWriter, Configuration configuration) 1.105 - throws Exception { 1.106 + AnnotationTypeWriter annotationTypeWriter, Configuration configuration) 1.107 + throws Exception { 1.108 MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration); 1.109 builder.classDoc = annotationTypeWriter.getAnnotationTypeDoc(); 1.110 builder.init(annotationTypeWriter); 1.111 @@ -100,200 +101,209 @@ 1.112 1.113 private void init(Object writer) throws Exception { 1.114 visibleMemberMaps = 1.115 - new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES]; 1.116 + new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES]; 1.117 for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) { 1.118 visibleMemberMaps[i] = 1.119 - new VisibleMemberMap( 1.120 + new VisibleMemberMap( 1.121 classDoc, 1.122 i, 1.123 configuration.nodeprecated); 1.124 } 1.125 memberSummaryWriters = 1.126 - new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES]; 1.127 + new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES]; 1.128 for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) { 1.129 if (classDoc.isAnnotationType()) { 1.130 memberSummaryWriters[i] = 1.131 visibleMemberMaps[i].noVisibleMembers()? 1.132 null : 1.133 configuration.getWriterFactory().getMemberSummaryWriter( 1.134 - (AnnotationTypeWriter) writer, i); 1.135 + (AnnotationTypeWriter) writer, i); 1.136 } else { 1.137 memberSummaryWriters[i] = 1.138 visibleMemberMaps[i].noVisibleMembers()? 1.139 null : 1.140 configuration.getWriterFactory().getMemberSummaryWriter( 1.141 - (ClassWriter) writer, i); 1.142 + (ClassWriter) writer, i); 1.143 } 1.144 } 1.145 1.146 } 1.147 1.148 - /** 1.149 - * {@inheritDoc} 1.150 - */ 1.151 - public String getName() { 1.152 - return NAME; 1.153 - } 1.154 + /** 1.155 + * {@inheritDoc} 1.156 + */ 1.157 + public String getName() { 1.158 + return NAME; 1.159 + } 1.160 1.161 - /** 1.162 - * Return the specified visible member map. 1.163 - * 1.164 - * @param type the type of visible member map to return. 1.165 - * @return the specified visible member map. 1.166 - * @throws ArrayIndexOutOfBoundsException when the type is invalid. 1.167 - * @see VisibleMemberMap 1.168 - */ 1.169 - public VisibleMemberMap getVisibleMemberMap(int type) { 1.170 - return visibleMemberMaps[type]; 1.171 - } 1.172 + /** 1.173 + * Return the specified visible member map. 1.174 + * 1.175 + * @param type the type of visible member map to return. 1.176 + * @return the specified visible member map. 1.177 + * @throws ArrayIndexOutOfBoundsException when the type is invalid. 1.178 + * @see VisibleMemberMap 1.179 + */ 1.180 + public VisibleMemberMap getVisibleMemberMap(int type) { 1.181 + return visibleMemberMaps[type]; 1.182 + } 1.183 1.184 - /** 1.185 - * Return the specified member summary writer. 1.186 - * 1.187 - * @param type the type of member summary writer to return. 1.188 - * @return the specified member summary writer. 1.189 - * @throws ArrayIndexOutOfBoundsException when the type is invalid. 1.190 - * @see VisibleMemberMap 1.191 - */ 1.192 - public MemberSummaryWriter getMemberSummaryWriter(int type) { 1.193 - return memberSummaryWriters[type]; 1.194 - } 1.195 + /** 1.196 + * Return the specified member summary writer. 1.197 + * 1.198 + * @param type the type of member summary writer to return. 1.199 + * @return the specified member summary writer. 1.200 + * @throws ArrayIndexOutOfBoundsException when the type is invalid. 1.201 + * @see VisibleMemberMap 1.202 + */ 1.203 + public MemberSummaryWriter getMemberSummaryWriter(int type) { 1.204 + return memberSummaryWriters[type]; 1.205 + } 1.206 1.207 - /** 1.208 - * Returns a list of methods that will be documented for the given class. 1.209 - * This information can be used for doclet specific documentation 1.210 - * generation. 1.211 - * 1.212 - * @param classDoc the {@link ClassDoc} we want to check. 1.213 - * @param type the type of members to return. 1.214 - * @return a list of methods that will be documented. 1.215 - * @see VisibleMemberMap 1.216 - */ 1.217 - public List<ProgramElementDoc> members(int type) { 1.218 - return visibleMemberMaps[type].getLeafClassMembers(configuration); 1.219 - } 1.220 + /** 1.221 + * Returns a list of methods that will be documented for the given class. 1.222 + * This information can be used for doclet specific documentation 1.223 + * generation. 1.224 + * 1.225 + * @param classDoc the {@link ClassDoc} we want to check. 1.226 + * @param type the type of members to return. 1.227 + * @return a list of methods that will be documented. 1.228 + * @see VisibleMemberMap 1.229 + */ 1.230 + public List<ProgramElementDoc> members(int type) { 1.231 + return visibleMemberMaps[type].getLeafClassMembers(configuration); 1.232 + } 1.233 1.234 - /** 1.235 - * Return true it there are any members to summarize. 1.236 - * 1.237 - * @return true if there are any members to summarize. 1.238 - */ 1.239 - public boolean hasMembersToDocument() { 1.240 + /** 1.241 + * Return true it there are any members to summarize. 1.242 + * 1.243 + * @return true if there are any members to summarize. 1.244 + */ 1.245 + public boolean hasMembersToDocument() { 1.246 if (classDoc instanceof AnnotationTypeDoc) { 1.247 return ((AnnotationTypeDoc) classDoc).elements().length > 0; 1.248 } 1.249 - for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) { 1.250 - VisibleMemberMap members = visibleMemberMaps[i]; 1.251 - if (!members.noVisibleMembers()) { 1.252 - return true; 1.253 - } 1.254 - } 1.255 - return false; 1.256 + for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) { 1.257 + VisibleMemberMap members = visibleMemberMaps[i]; 1.258 + if (!members.noVisibleMembers()) { 1.259 + return true; 1.260 + } 1.261 } 1.262 - 1.263 - /** 1.264 - * Build the summary for the enum constants. 1.265 - */ 1.266 - public void buildEnumConstantsSummary(XMLNode node) { 1.267 - buildSummary( 1.268 - memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS], 1.269 - visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS]); 1.270 - } 1.271 + return false; 1.272 + } 1.273 1.274 /** 1.275 - * Build the summary for the optional members. 1.276 + * Build the summary for the enum constants. 1.277 + * 1.278 + * @param node the XML element that specifies which components to document 1.279 + * @param memberSummaryTree the content tree to which the documentation will be added 1.280 */ 1.281 - public void buildAnnotationTypeOptionalMemberSummary(XMLNode node) { 1.282 - buildSummary( 1.283 - memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL], 1.284 - visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL]); 1.285 + public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) { 1.286 + MemberSummaryWriter writer = 1.287 + memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS]; 1.288 + VisibleMemberMap visibleMemberMap = 1.289 + visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS]; 1.290 + addSummary(writer, visibleMemberMap, false, memberSummaryTree); 1.291 } 1.292 1.293 /** 1.294 * Build the summary for the optional members. 1.295 + * 1.296 + * @param node the XML element that specifies which components to document 1.297 + * @param memberSummaryTree the content tree to which the documentation will be added 1.298 */ 1.299 - public void buildAnnotationTypeRequiredMemberSummary(XMLNode node) { 1.300 - buildSummary( 1.301 - memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED], 1.302 - visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED]); 1.303 + public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) { 1.304 + MemberSummaryWriter writer = 1.305 + memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL]; 1.306 + VisibleMemberMap visibleMemberMap = 1.307 + visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL]; 1.308 + addSummary(writer, visibleMemberMap, false, memberSummaryTree); 1.309 } 1.310 1.311 - /** 1.312 - * Build the summary for the fields. 1.313 - */ 1.314 - public void buildFieldsSummary(XMLNode node) { 1.315 - buildSummary( 1.316 - memberSummaryWriters[VisibleMemberMap.FIELDS], 1.317 - visibleMemberMaps[VisibleMemberMap.FIELDS]); 1.318 - } 1.319 + /** 1.320 + * Build the summary for the optional members. 1.321 + * 1.322 + * @param node the XML element that specifies which components to document 1.323 + * @param memberSummaryTree the content tree to which the documentation will be added 1.324 + */ 1.325 + public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) { 1.326 + MemberSummaryWriter writer = 1.327 + memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED]; 1.328 + VisibleMemberMap visibleMemberMap = 1.329 + visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED]; 1.330 + addSummary(writer, visibleMemberMap, false, memberSummaryTree); 1.331 + } 1.332 1.333 - /** 1.334 - * Build the inherited summary for the fields. 1.335 - */ 1.336 - public void buildFieldsInheritedSummary(XMLNode node) { 1.337 - buildInheritedSummary( 1.338 - memberSummaryWriters[VisibleMemberMap.FIELDS], 1.339 - visibleMemberMaps[VisibleMemberMap.FIELDS]); 1.340 - } 1.341 + /** 1.342 + * Build the summary for the fields. 1.343 + * 1.344 + * @param node the XML element that specifies which components to document 1.345 + * @param memberSummaryTree the content tree to which the documentation will be added 1.346 + */ 1.347 + public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) { 1.348 + MemberSummaryWriter writer = 1.349 + memberSummaryWriters[VisibleMemberMap.FIELDS]; 1.350 + VisibleMemberMap visibleMemberMap = 1.351 + visibleMemberMaps[VisibleMemberMap.FIELDS]; 1.352 + addSummary(writer, visibleMemberMap, true, memberSummaryTree); 1.353 + } 1.354 1.355 - /** 1.356 - * Build the summary for the nested classes. 1.357 - */ 1.358 - public void buildNestedClassesSummary(XMLNode node) { 1.359 - buildSummary( 1.360 - memberSummaryWriters[VisibleMemberMap.INNERCLASSES], 1.361 - visibleMemberMaps[VisibleMemberMap.INNERCLASSES]); 1.362 - } 1.363 + /** 1.364 + * Build the summary for the nested classes. 1.365 + * 1.366 + * @param node the XML element that specifies which components to document 1.367 + * @param memberSummaryTree the content tree to which the documentation will be added 1.368 + */ 1.369 + public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) { 1.370 + MemberSummaryWriter writer = 1.371 + memberSummaryWriters[VisibleMemberMap.INNERCLASSES]; 1.372 + VisibleMemberMap visibleMemberMap = 1.373 + visibleMemberMaps[VisibleMemberMap.INNERCLASSES]; 1.374 + addSummary(writer, visibleMemberMap, true, memberSummaryTree); 1.375 + } 1.376 1.377 - /** 1.378 - * Build the inherited summary for the nested classes. 1.379 - */ 1.380 - public void buildNestedClassesInheritedSummary(XMLNode node) { 1.381 - buildInheritedSummary( 1.382 - memberSummaryWriters[VisibleMemberMap.INNERCLASSES], 1.383 - visibleMemberMaps[VisibleMemberMap.INNERCLASSES]); 1.384 - } 1.385 + /** 1.386 + * Build the method summary. 1.387 + * 1.388 + * @param node the XML element that specifies which components to document 1.389 + * @param memberSummaryTree the content tree to which the documentation will be added 1.390 + */ 1.391 + public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) { 1.392 + MemberSummaryWriter writer = 1.393 + memberSummaryWriters[VisibleMemberMap.METHODS]; 1.394 + VisibleMemberMap visibleMemberMap = 1.395 + visibleMemberMaps[VisibleMemberMap.METHODS]; 1.396 + addSummary(writer, visibleMemberMap, true, memberSummaryTree); 1.397 + } 1.398 1.399 - /** 1.400 - * Build the method summary. 1.401 - */ 1.402 - public void buildMethodsSummary(XMLNode node) { 1.403 - buildSummary( 1.404 - memberSummaryWriters[VisibleMemberMap.METHODS], 1.405 - visibleMemberMaps[VisibleMemberMap.METHODS]); 1.406 - } 1.407 + /** 1.408 + * Build the constructor summary. 1.409 + * 1.410 + * @param node the XML element that specifies which components to document 1.411 + * @param memberSummaryTree the content tree to which the documentation will be added 1.412 + */ 1.413 + public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) { 1.414 + MemberSummaryWriter writer = 1.415 + memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS]; 1.416 + VisibleMemberMap visibleMemberMap = 1.417 + visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS]; 1.418 + addSummary(writer, visibleMemberMap, false, memberSummaryTree); 1.419 + } 1.420 1.421 - /** 1.422 - * Build the inherited method summary. 1.423 - */ 1.424 - public void buildMethodsInheritedSummary(XMLNode node) { 1.425 - buildInheritedSummary( 1.426 - memberSummaryWriters[VisibleMemberMap.METHODS], 1.427 - visibleMemberMaps[VisibleMemberMap.METHODS]); 1.428 - } 1.429 - 1.430 - /** 1.431 - * Build the constructor summary. 1.432 - */ 1.433 - public void buildConstructorsSummary(XMLNode node) { 1.434 - buildSummary( 1.435 - memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS], 1.436 - visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS]); 1.437 - } 1.438 - 1.439 - /** 1.440 - * Build the member summary for the given members. 1.441 - * 1.442 - * @param writer the summary writer to write the output. 1.443 - * @param visibleMemberMap the given members to summarize. 1.444 - */ 1.445 - private void buildSummary(MemberSummaryWriter writer, 1.446 - VisibleMemberMap visibleMemberMap) { 1.447 + /** 1.448 + * Build the member summary for the given members. 1.449 + * 1.450 + * @param writer the summary writer to write the output. 1.451 + * @param visibleMemberMap the given members to summarize. 1.452 + * @param summaryTreeList list of content trees to which the documentation will be added 1.453 + */ 1.454 + private void buildSummary(MemberSummaryWriter writer, 1.455 + VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) { 1.456 List<ProgramElementDoc> members = new ArrayList<ProgramElementDoc>(visibleMemberMap.getLeafClassMembers( 1.457 - configuration)); 1.458 + configuration)); 1.459 if (members.size() > 0) { 1.460 Collections.sort(members); 1.461 - writer.writeMemberSummaryHeader(classDoc); 1.462 + Content tableTree = writer.getSummaryTableTree(classDoc); 1.463 for (int i = 0; i < members.size(); i++) { 1.464 ProgramElementDoc member = members.get(i); 1.465 Tag[] firstSentenceTags = member.firstSentenceTags(); 1.466 @@ -301,32 +311,32 @@ 1.467 //Inherit comments from overriden or implemented method if 1.468 //necessary. 1.469 DocFinder.Output inheritedDoc = 1.470 - DocFinder.search(new DocFinder.Input((MethodDoc) member)); 1.471 + DocFinder.search(new DocFinder.Input((MethodDoc) member)); 1.472 if (inheritedDoc.holder != null && 1.473 inheritedDoc.holder.firstSentenceTags().length > 0) { 1.474 firstSentenceTags = inheritedDoc.holder.firstSentenceTags(); 1.475 } 1.476 } 1.477 - writer.writeMemberSummary(classDoc, member, firstSentenceTags, 1.478 - i == 0, i == members.size() - 1); 1.479 + writer.addMemberSummary(classDoc, member, firstSentenceTags, tableTree, i); 1.480 } 1.481 - writer.writeMemberSummaryFooter(classDoc); 1.482 + summaryTreeList.add(tableTree); 1.483 } 1.484 - } 1.485 + } 1.486 1.487 /** 1.488 * Build the inherited member summary for the given methods. 1.489 * 1.490 - * @param writer the writer for this member summary. 1.491 + * @param writer the writer for this member summary. 1.492 * @param visibleMemberMap the map for the members to document. 1.493 + * @param summaryTreeList list of content trees to which the documentation will be added 1.494 */ 1.495 - private void buildInheritedSummary(MemberSummaryWriter writer, 1.496 - VisibleMemberMap visibleMemberMap) { 1.497 + private void buildInheritedSummary(MemberSummaryWriter writer, 1.498 + VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) { 1.499 for (Iterator<ClassDoc> iter = visibleMemberMap.getVisibleClassesList().iterator(); 1.500 iter.hasNext();) { 1.501 ClassDoc inhclass = iter.next(); 1.502 if (! (inhclass.isPublic() || 1.503 - Util.isLinkable(inhclass, configuration))) { 1.504 + Util.isLinkable(inhclass, configuration))) { 1.505 continue; 1.506 } 1.507 if (inhclass == classDoc) { 1.508 @@ -335,18 +345,45 @@ 1.509 List<ProgramElementDoc> inhmembers = visibleMemberMap.getMembersFor(inhclass); 1.510 if (inhmembers.size() > 0) { 1.511 Collections.sort(inhmembers); 1.512 - writer.writeInheritedMemberSummaryHeader(inhclass); 1.513 + Content inheritedTree = writer.getInheritedSummaryHeader(inhclass); 1.514 + Content linksTree = writer.getInheritedSummaryLinksTree(); 1.515 for (int j = 0; j < inhmembers.size(); ++j) { 1.516 - writer.writeInheritedMemberSummary( 1.517 - inhclass.isPackagePrivate() && 1.518 + writer.addInheritedMemberSummary( 1.519 + inhclass.isPackagePrivate() && 1.520 ! Util.isLinkable(inhclass, configuration) ? 1.521 classDoc : inhclass, 1.522 - inhmembers.get(j), 1.523 - j == 0, 1.524 - j == inhmembers.size() - 1); 1.525 + inhmembers.get(j), 1.526 + j == 0, 1.527 + j == inhmembers.size() - 1, linksTree); 1.528 } 1.529 - writer.writeInheritedMemberSummaryFooter(inhclass); 1.530 + inheritedTree.addContent(linksTree); 1.531 + summaryTreeList.add(writer.getMemberTree(inheritedTree)); 1.532 } 1.533 } 1.534 } 1.535 + 1.536 + /** 1.537 + * Add the summary for the documentation. 1.538 + * 1.539 + * @param writer the writer for this member summary. 1.540 + * @param visibleMemberMap the map for the members to document. 1.541 + * @param showInheritedSummary true if inherited summary should be documented 1.542 + * @param memberSummaryTree the content tree to which the documentation will be added 1.543 + */ 1.544 + private void addSummary(MemberSummaryWriter writer, 1.545 + VisibleMemberMap visibleMemberMap, boolean showInheritedSummary, 1.546 + Content memberSummaryTree) { 1.547 + LinkedList<Content> summaryTreeList = new LinkedList<Content>(); 1.548 + buildSummary(writer, visibleMemberMap, summaryTreeList); 1.549 + if (showInheritedSummary) 1.550 + buildInheritedSummary(writer, visibleMemberMap, summaryTreeList); 1.551 + if (!summaryTreeList.isEmpty()) { 1.552 + Content memberTree = writer.getMemberSummaryHeader( 1.553 + classDoc, memberSummaryTree); 1.554 + for (int i = 0; i < summaryTreeList.size(); i++) { 1.555 + memberTree.addContent(summaryTreeList.get(i)); 1.556 + } 1.557 + memberSummaryTree.addContent(writer.getMemberTree(memberTree)); 1.558 + } 1.559 + } 1.560 }