1.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java Tue Nov 30 09:38:48 2010 -0800 1.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java Wed Dec 01 11:02:38 2010 -0800 1.3 @@ -27,7 +27,6 @@ 1.4 1.5 import java.io.*; 1.6 import java.util.*; 1.7 - 1.8 import com.sun.javadoc.*; 1.9 import com.sun.tools.doclets.internal.toolkit.util.*; 1.10 import com.sun.tools.doclets.internal.toolkit.*; 1.11 @@ -87,6 +86,11 @@ 1.12 */ 1.13 protected MemberDoc currentMember; 1.14 1.15 + /** 1.16 + * The content that will be added to the serialized form documentation tree. 1.17 + */ 1.18 + private Content contentTree; 1.19 + 1.20 private SerializedFormBuilder(Configuration configuration) { 1.21 super(configuration); 1.22 } 1.23 @@ -117,7 +121,7 @@ 1.24 } catch (Exception e) { 1.25 throw new DocletAbortException(); 1.26 } 1.27 - build(LayoutParser.getInstance(configuration).parseXML(NAME)); 1.28 + build(LayoutParser.getInstance(configuration).parseXML(NAME), contentTree); 1.29 writer.close(); 1.30 } 1.31 1.32 @@ -130,34 +134,44 @@ 1.33 1.34 /** 1.35 * Build the serialized form. 1.36 + * 1.37 + * @param node the XML element that specifies which components to document 1.38 + * @param serializedTree content tree to which the documentation will be added 1.39 */ 1.40 - public void buildSerializedForm(XMLNode node) throws Exception { 1.41 - buildChildren(node); 1.42 + public void buildSerializedForm(XMLNode node, Content serializedTree) throws Exception { 1.43 + serializedTree = writer.getHeader(configuration.getText( 1.44 + "doclet.Serialized_Form")); 1.45 + buildChildren(node, serializedTree); 1.46 + writer.addFooter(serializedTree); 1.47 + writer.printDocument(serializedTree); 1.48 writer.close(); 1.49 } 1.50 1.51 /** 1.52 - * Build the header. 1.53 + * Build the serialized form summaries. 1.54 + * 1.55 + * @param node the XML element that specifies which components to document 1.56 + * @param serializedTree content tree to which the documentation will be added 1.57 */ 1.58 - public void buildHeader(XMLNode node) { 1.59 - writer.writeHeader(configuration.getText("doclet.Serialized_Form")); 1.60 + public void buildSerializedFormSummaries(XMLNode node, Content serializedTree) { 1.61 + Content serializedSummariesTree = writer.getSerializedSummariesHeader(); 1.62 + PackageDoc[] packages = configuration.packages; 1.63 + for (int i = 0; i < packages.length; i++) { 1.64 + currentPackage = packages[i]; 1.65 + buildChildren(node, serializedSummariesTree); 1.66 + } 1.67 + serializedTree.addContent(writer.getSerializedContent( 1.68 + serializedSummariesTree)); 1.69 } 1.70 1.71 /** 1.72 - * Build the contents. 1.73 + * Build the package serialized form for the current package being processed. 1.74 + * 1.75 + * @param node the XML element that specifies which components to document 1.76 + * @param serializedSummariesTree content tree to which the documentation will be added 1.77 */ 1.78 - public void buildSerializedFormSummaries(XMLNode node) { 1.79 - PackageDoc[] packages = configuration.packages; 1.80 - for (int i = 0; i < packages.length; i++) { 1.81 - currentPackage = packages[i]; 1.82 - buildChildren(node); 1.83 - } 1.84 - } 1.85 - 1.86 - /** 1.87 - * Build the package serialized for for the current package being processed. 1.88 - */ 1.89 - public void buildPackageSerializedForm(XMLNode node) { 1.90 + public void buildPackageSerializedForm(XMLNode node, Content serializedSummariesTree) { 1.91 + Content packageSerializedTree = writer.getPackageSerializedHeader(); 1.92 String foo = currentPackage.name(); 1.93 ClassDoc[] classes = currentPackage.allClasses(false); 1.94 if (classes == null || classes.length == 0) { 1.95 @@ -169,14 +183,29 @@ 1.96 if (!serialClassFoundToDocument(classes)) { 1.97 return; 1.98 } 1.99 - buildChildren(node); 1.100 + buildChildren(node, packageSerializedTree); 1.101 + serializedSummariesTree.addContent(packageSerializedTree); 1.102 } 1.103 1.104 - public void buildPackageHeader(XMLNode node) { 1.105 - writer.writePackageHeader(Util.getPackageName(currentPackage)); 1.106 + /** 1.107 + * Build the package header. 1.108 + * 1.109 + * @param node the XML element that specifies which components to document 1.110 + * @param packageSerializedTree content tree to which the documentation will be added 1.111 + */ 1.112 + public void buildPackageHeader(XMLNode node, Content packageSerializedTree) { 1.113 + packageSerializedTree.addContent(writer.getPackageHeader( 1.114 + Util.getPackageName(currentPackage))); 1.115 } 1.116 1.117 - public void buildClassSerializedForm(XMLNode node) { 1.118 + /** 1.119 + * Build the class serialized form. 1.120 + * 1.121 + * @param node the XML element that specifies which components to document 1.122 + * @param packageSerializedTree content tree to which the documentation will be added 1.123 + */ 1.124 + public void buildClassSerializedForm(XMLNode node, Content packageSerializedTree) { 1.125 + Content classSerializedTree = writer.getClassSerializedHeader(); 1.126 ClassDoc[] classes = currentPackage.allClasses(false); 1.127 Arrays.sort(classes); 1.128 for (int j = 0; j < classes.length; j++) { 1.129 @@ -187,35 +216,293 @@ 1.130 if(!serialClassInclude(currentClass)) { 1.131 continue; 1.132 } 1.133 - buildChildren(node); 1.134 + Content classTree = writer.getClassHeader(currentClass); 1.135 + buildChildren(node, classTree); 1.136 + classSerializedTree.addContent(classTree); 1.137 } 1.138 } 1.139 - } 1.140 - 1.141 - public void buildClassHeader(XMLNode node) { 1.142 - writer.writeClassHeader(currentClass); 1.143 + packageSerializedTree.addContent(classSerializedTree); 1.144 } 1.145 1.146 /** 1.147 * Build the serial UID information for the given class. 1.148 + * 1.149 + * @param node the XML element that specifies which components to document 1.150 + * @param classTree content tree to which the serial UID information will be added 1.151 */ 1.152 - public void buildSerialUIDInfo(XMLNode node) { 1.153 + public void buildSerialUIDInfo(XMLNode node, Content classTree) { 1.154 + Content serialUidTree = writer.getSerialUIDInfoHeader(); 1.155 FieldDoc[] fields = currentClass.fields(false); 1.156 for (int i = 0; i < fields.length; i++) { 1.157 if (fields[i].name().equals("serialVersionUID") && 1.158 fields[i].constantValueExpression() != null) { 1.159 - writer.writeSerialUIDInfo(SERIAL_VERSION_UID_HEADER, 1.160 - fields[i].constantValueExpression()); 1.161 - return; 1.162 + writer.addSerialUIDInfo(SERIAL_VERSION_UID_HEADER, 1.163 + fields[i].constantValueExpression(), serialUidTree); 1.164 + break; 1.165 + } 1.166 + } 1.167 + classTree.addContent(serialUidTree); 1.168 + } 1.169 + 1.170 + /** 1.171 + * Build the summaries for the methods and fields. 1.172 + * 1.173 + * @param node the XML element that specifies which components to document 1.174 + * @param classTree content tree to which the documentation will be added 1.175 + */ 1.176 + public void buildClassContent(XMLNode node, Content classTree) { 1.177 + Content classContentTree = writer.getClassContentHeader(); 1.178 + buildChildren(node, classContentTree); 1.179 + classTree.addContent(classContentTree); 1.180 + } 1.181 + 1.182 + /** 1.183 + * Build the summaries for the methods that belong to the given 1.184 + * class. 1.185 + * 1.186 + * @param node the XML element that specifies which components to document 1.187 + * @param classContentTree content tree to which the documentation will be added 1.188 + */ 1.189 + public void buildSerializableMethods(XMLNode node, Content classContentTree) { 1.190 + Content serializableMethodTree = methodWriter.getSerializableMethodsHeader(); 1.191 + MemberDoc[] members = currentClass.serializationMethods(); 1.192 + int membersLength = members.length; 1.193 + if (membersLength > 0) { 1.194 + for (int i = 0; i < membersLength; i++) { 1.195 + currentMember = members[i]; 1.196 + Content methodsContentTree = methodWriter.getMethodsContentHeader( 1.197 + (i == membersLength - 1)); 1.198 + buildChildren(node, methodsContentTree); 1.199 + serializableMethodTree.addContent(methodsContentTree); 1.200 + } 1.201 + } 1.202 + if (currentClass.serializationMethods().length > 0) { 1.203 + classContentTree.addContent(methodWriter.getSerializableMethods( 1.204 + configuration.getText("doclet.Serialized_Form_methods"), 1.205 + serializableMethodTree)); 1.206 + if (currentClass.isSerializable() && !currentClass.isExternalizable()) { 1.207 + if (currentClass.serializationMethods().length == 0) { 1.208 + Content noCustomizationMsg = methodWriter.getNoCustomizationMsg( 1.209 + configuration.getText( 1.210 + "doclet.Serializable_no_customization")); 1.211 + classContentTree.addContent(methodWriter.getSerializableMethods( 1.212 + configuration.getText("doclet.Serialized_Form_methods"), 1.213 + noCustomizationMsg)); 1.214 + } 1.215 } 1.216 } 1.217 } 1.218 1.219 /** 1.220 - * Build the footer. 1.221 + * Build the method sub header. 1.222 + * 1.223 + * @param node the XML element that specifies which components to document 1.224 + * @param methodsContentTree content tree to which the documentation will be added 1.225 */ 1.226 - public void buildFooter(XMLNode node) { 1.227 - writer.writeFooter(); 1.228 + public void buildMethodSubHeader(XMLNode node, Content methodsContentTree) { 1.229 + methodWriter.addMemberHeader((MethodDoc)currentMember, methodsContentTree); 1.230 + } 1.231 + 1.232 + /** 1.233 + * Build the deprecated method description. 1.234 + * 1.235 + * @param node the XML element that specifies which components to document 1.236 + * @param methodsContentTree content tree to which the documentation will be added 1.237 + */ 1.238 + public void buildDeprecatedMethodInfo(XMLNode node, Content methodsContentTree) { 1.239 + methodWriter.addDeprecatedMemberInfo((MethodDoc) currentMember, methodsContentTree); 1.240 + } 1.241 + 1.242 + /** 1.243 + * Build the information for the method. 1.244 + * 1.245 + * @param node the XML element that specifies which components to document 1.246 + * @param methodsContentTree content tree to which the documentation will be added 1.247 + */ 1.248 + public void buildMethodInfo(XMLNode node, Content methodsContentTree) { 1.249 + if(configuration.nocomment){ 1.250 + return; 1.251 + } 1.252 + buildChildren(node, methodsContentTree); 1.253 + } 1.254 + 1.255 + /** 1.256 + * Build method description. 1.257 + * 1.258 + * @param node the XML element that specifies which components to document 1.259 + * @param methodsContentTree content tree to which the documentation will be added 1.260 + */ 1.261 + public void buildMethodDescription(XMLNode node, Content methodsContentTree) { 1.262 + methodWriter.addMemberDescription((MethodDoc) currentMember, methodsContentTree); 1.263 + } 1.264 + 1.265 + /** 1.266 + * Build the method tags. 1.267 + * 1.268 + * @param node the XML element that specifies which components to document 1.269 + * @param methodsContentTree content tree to which the documentation will be added 1.270 + */ 1.271 + public void buildMethodTags(XMLNode node, Content methodsContentTree) { 1.272 + methodWriter.addMemberTags((MethodDoc) currentMember, methodsContentTree); 1.273 + MethodDoc method = (MethodDoc)currentMember; 1.274 + if (method.name().compareTo("writeExternal") == 0 1.275 + && method.tags("serialData").length == 0) { 1.276 + if (configuration.serialwarn) { 1.277 + configuration.getDocletSpecificMsg().warning( 1.278 + currentMember.position(), "doclet.MissingSerialDataTag", 1.279 + method.containingClass().qualifiedName(), method.name()); 1.280 + } 1.281 + } 1.282 + } 1.283 + 1.284 + /** 1.285 + * Build the field header. 1.286 + * 1.287 + * @param node the XML element that specifies which components to document 1.288 + * @param classContentTree content tree to which the documentation will be added 1.289 + */ 1.290 + public void buildFieldHeader(XMLNode node, Content classContentTree) { 1.291 + if (currentClass.serializableFields().length > 0) { 1.292 + buildFieldSerializationOverview(currentClass, classContentTree); 1.293 + } 1.294 + } 1.295 + 1.296 + /** 1.297 + * Build the serialization overview for the given class. 1.298 + * 1.299 + * @param classDoc the class to print the overview for. 1.300 + * @param classContentTree content tree to which the documentation will be added 1.301 + */ 1.302 + public void buildFieldSerializationOverview(ClassDoc classDoc, Content classContentTree) { 1.303 + if (classDoc.definesSerializableFields()) { 1.304 + FieldDoc serialPersistentField = 1.305 + Util.asList(classDoc.serializableFields()).get(0); 1.306 + // Check to see if there are inline comments, tags or deprecation 1.307 + // information to be printed. 1.308 + if (fieldWriter.shouldPrintOverview(serialPersistentField)) { 1.309 + Content serializableFieldsTree = fieldWriter.getSerializableFieldsHeader(); 1.310 + Content fieldsOverviewContentTree = fieldWriter.getFieldsContentHeader(true); 1.311 + fieldWriter.addMemberDeprecatedInfo(serialPersistentField, 1.312 + fieldsOverviewContentTree); 1.313 + if (!configuration.nocomment) { 1.314 + fieldWriter.addMemberDescription(serialPersistentField, 1.315 + fieldsOverviewContentTree); 1.316 + fieldWriter.addMemberTags(serialPersistentField, 1.317 + fieldsOverviewContentTree); 1.318 + } 1.319 + serializableFieldsTree.addContent(fieldsOverviewContentTree); 1.320 + classContentTree.addContent(fieldWriter.getSerializableFields( 1.321 + configuration.getText("doclet.Serialized_Form_class"), 1.322 + serializableFieldsTree)); 1.323 + } 1.324 + } 1.325 + } 1.326 + 1.327 + /** 1.328 + * Build the summaries for the fields that belong to the given class. 1.329 + * 1.330 + * @param node the XML element that specifies which components to document 1.331 + * @param classContentTree content tree to which the documentation will be added 1.332 + */ 1.333 + public void buildSerializableFields(XMLNode node, Content classContentTree) { 1.334 + MemberDoc[] members = currentClass.serializableFields(); 1.335 + int membersLength = members.length; 1.336 + if (membersLength > 0) { 1.337 + Content serializableFieldsTree = fieldWriter.getSerializableFieldsHeader(); 1.338 + for (int i = 0; i < membersLength; i++) { 1.339 + currentMember = members[i]; 1.340 + if (!currentClass.definesSerializableFields()) { 1.341 + Content fieldsContentTree = fieldWriter.getFieldsContentHeader( 1.342 + (i == membersLength - 1)); 1.343 + buildChildren(node, fieldsContentTree); 1.344 + serializableFieldsTree.addContent(fieldsContentTree); 1.345 + } 1.346 + else { 1.347 + buildSerialFieldTagsInfo(serializableFieldsTree); 1.348 + } 1.349 + } 1.350 + classContentTree.addContent(fieldWriter.getSerializableFields( 1.351 + configuration.getText("doclet.Serialized_Form_fields"), 1.352 + serializableFieldsTree)); 1.353 + } 1.354 + } 1.355 + 1.356 + /** 1.357 + * Build the field sub header. 1.358 + * 1.359 + * @param node the XML element that specifies which components to document 1.360 + * @param fieldsContentTree content tree to which the documentation will be added 1.361 + */ 1.362 + public void buildFieldSubHeader(XMLNode node, Content fieldsContentTree) { 1.363 + if (!currentClass.definesSerializableFields()) { 1.364 + FieldDoc field = (FieldDoc) currentMember; 1.365 + fieldWriter.addMemberHeader(field.type().asClassDoc(), 1.366 + field.type().typeName(), field.type().dimension(), field.name(), 1.367 + fieldsContentTree); 1.368 + } 1.369 + } 1.370 + 1.371 + /** 1.372 + * Build the field deprecation information. 1.373 + * 1.374 + * @param node the XML element that specifies which components to document 1.375 + * @param fieldsContentTree content tree to which the documentation will be added 1.376 + */ 1.377 + public void buildFieldDeprecationInfo(XMLNode node, Content fieldsContentTree) { 1.378 + if (!currentClass.definesSerializableFields()) { 1.379 + FieldDoc field = (FieldDoc)currentMember; 1.380 + fieldWriter.addMemberDeprecatedInfo(field, fieldsContentTree); 1.381 + } 1.382 + } 1.383 + 1.384 + /** 1.385 + * Build the serial field tags information. 1.386 + * 1.387 + * @param serializableFieldsTree content tree to which the documentation will be added 1.388 + */ 1.389 + public void buildSerialFieldTagsInfo(Content serializableFieldsTree) { 1.390 + if(configuration.nocomment){ 1.391 + return; 1.392 + } 1.393 + FieldDoc field = (FieldDoc)currentMember; 1.394 + // Process Serializable Fields specified as array of 1.395 + // ObjectStreamFields. Print a member for each serialField tag. 1.396 + // (There should be one serialField tag per ObjectStreamField 1.397 + // element.) 1.398 + SerialFieldTag[] tags = field.serialFieldTags(); 1.399 + Arrays.sort(tags); 1.400 + int tagsLength = tags.length; 1.401 + for (int i = 0; i < tagsLength; i++) { 1.402 + Content fieldsContentTree = fieldWriter.getFieldsContentHeader( 1.403 + (i == tagsLength - 1)); 1.404 + fieldWriter.addMemberHeader(tags[i].fieldTypeDoc(), 1.405 + tags[i].fieldType(), "", tags[i].fieldName(), fieldsContentTree); 1.406 + fieldWriter.addMemberDescription(tags[i], fieldsContentTree); 1.407 + serializableFieldsTree.addContent(fieldsContentTree); 1.408 + } 1.409 + } 1.410 + 1.411 + /** 1.412 + * Build the field information. 1.413 + * 1.414 + * @param node the XML element that specifies which components to document 1.415 + * @param fieldsContentTree content tree to which the documentation will be added 1.416 + */ 1.417 + public void buildFieldInfo(XMLNode node, Content fieldsContentTree) { 1.418 + if(configuration.nocomment){ 1.419 + return; 1.420 + } 1.421 + FieldDoc field = (FieldDoc)currentMember; 1.422 + ClassDoc cd = field.containingClass(); 1.423 + // Process default Serializable field. 1.424 + if ((field.tags("serial").length == 0) && ! field.isSynthetic() 1.425 + && configuration.serialwarn) { 1.426 + configuration.message.warning(field.position(), 1.427 + "doclet.MissingSerialTag", cd.qualifiedName(), 1.428 + field.name()); 1.429 + } 1.430 + fieldWriter.addMemberDescription(field, fieldsContentTree); 1.431 + fieldWriter.addMemberTags(field, fieldsContentTree); 1.432 } 1.433 1.434 /** 1.435 @@ -297,208 +584,4 @@ 1.436 } 1.437 return false; 1.438 } 1.439 - 1.440 - /** 1.441 - * Build the method header. 1.442 - */ 1.443 - public void buildMethodHeader(XMLNode node) { 1.444 - if (currentClass.serializationMethods().length > 0) { 1.445 - methodWriter.writeHeader( 1.446 - configuration.getText("doclet.Serialized_Form_methods")); 1.447 - if (currentClass.isSerializable() && !currentClass.isExternalizable()) { 1.448 - if (currentClass.serializationMethods().length == 0) { 1.449 - methodWriter.writeNoCustomizationMsg( 1.450 - configuration.getText( 1.451 - "doclet.Serializable_no_customization")); 1.452 - } 1.453 - } 1.454 - } 1.455 - } 1.456 - 1.457 - /** 1.458 - * Build the method sub header. 1.459 - */ 1.460 - public void buildMethodSubHeader(XMLNode node) { 1.461 - methodWriter.writeMemberHeader((MethodDoc) currentMember); 1.462 - } 1.463 - 1.464 - /** 1.465 - * Build the deprecated method description. 1.466 - */ 1.467 - public void buildDeprecatedMethodInfo(XMLNode node) { 1.468 - methodWriter.writeDeprecatedMemberInfo((MethodDoc) currentMember); 1.469 - } 1.470 - 1.471 - /** 1.472 - * Build method tags. 1.473 - */ 1.474 - public void buildMethodDescription(XMLNode node) { 1.475 - methodWriter.writeMemberDescription((MethodDoc) currentMember); 1.476 - } 1.477 - 1.478 - /** 1.479 - * Build the method tags. 1.480 - */ 1.481 - public void buildMethodTags(XMLNode node) { 1.482 - methodWriter.writeMemberTags((MethodDoc) currentMember); 1.483 - MethodDoc method = (MethodDoc)currentMember; 1.484 - if (method.name().compareTo("writeExternal") == 0 1.485 - && method.tags("serialData").length == 0) { 1.486 - if (configuration.serialwarn) { 1.487 - configuration.getDocletSpecificMsg().warning( 1.488 - currentMember.position(), "doclet.MissingSerialDataTag", 1.489 - method.containingClass().qualifiedName(), method.name()); 1.490 - } 1.491 - } 1.492 - } 1.493 - 1.494 - /** 1.495 - * build the information for the method. 1.496 - */ 1.497 - public void buildMethodInfo(XMLNode node) { 1.498 - if(configuration.nocomment){ 1.499 - return; 1.500 - } 1.501 - buildChildren(node); 1.502 - } 1.503 - 1.504 - /** 1.505 - * Build the method footer. 1.506 - */ 1.507 - public void buildMethodFooter(XMLNode node) { 1.508 - methodWriter.writeMemberFooter(); 1.509 - } 1.510 - 1.511 - /** 1.512 - * Build the field header. 1.513 - */ 1.514 - public void buildFieldHeader(XMLNode node) { 1.515 - if (currentClass.serializableFields().length > 0) { 1.516 - buildFieldSerializationOverview(currentClass); 1.517 - fieldWriter.writeHeader(configuration.getText( 1.518 - "doclet.Serialized_Form_fields")); 1.519 - } 1.520 - } 1.521 - 1.522 - /** 1.523 - * If possible, build the serialization overview for the given 1.524 - * class. 1.525 - * 1.526 - * @param classDoc the class to print the overview for. 1.527 - */ 1.528 - public void buildFieldSerializationOverview(ClassDoc classDoc) { 1.529 - if (classDoc.definesSerializableFields()) { 1.530 - FieldDoc serialPersistentField = 1.531 - Util.asList(classDoc.serializableFields()).get(0); 1.532 - // Check to see if there are inline comments, tags or deprecation 1.533 - // information to be printed. 1.534 - if (fieldWriter.shouldPrintOverview(serialPersistentField)) { 1.535 - fieldWriter.writeHeader( 1.536 - configuration.getText("doclet.Serialized_Form_class")); 1.537 - fieldWriter.writeMemberDeprecatedInfo(serialPersistentField); 1.538 - if (!configuration.nocomment) { 1.539 - fieldWriter.writeMemberDescription(serialPersistentField); 1.540 - fieldWriter.writeMemberTags(serialPersistentField); 1.541 - } 1.542 - // Footer required to close the definition list tag 1.543 - // for serialization overview. 1.544 - fieldWriter.writeFooter( 1.545 - configuration.getText("doclet.Serialized_Form_class")); 1.546 - } 1.547 - } 1.548 - } 1.549 - 1.550 - /** 1.551 - * Build the field sub header. 1.552 - */ 1.553 - public void buildFieldSubHeader(XMLNode node) { 1.554 - if (! currentClass.definesSerializableFields() ){ 1.555 - FieldDoc field = (FieldDoc) currentMember; 1.556 - fieldWriter.writeMemberHeader(field.type().asClassDoc(), 1.557 - field.type().typeName(), field.type().dimension(), field.name()); 1.558 - } 1.559 - } 1.560 - 1.561 - /** 1.562 - * Build the field deprecation information. 1.563 - */ 1.564 - public void buildFieldDeprecationInfo(XMLNode node) { 1.565 - if (!currentClass.definesSerializableFields()) { 1.566 - FieldDoc field = (FieldDoc)currentMember; 1.567 - fieldWriter.writeMemberDeprecatedInfo(field); 1.568 - } 1.569 - } 1.570 - 1.571 - /** 1.572 - * Build the field information. 1.573 - */ 1.574 - public void buildFieldInfo(XMLNode node) { 1.575 - if(configuration.nocomment){ 1.576 - return; 1.577 - } 1.578 - FieldDoc field = (FieldDoc)currentMember; 1.579 - ClassDoc cd = field.containingClass(); 1.580 - if (cd.definesSerializableFields()) { 1.581 - // Process Serializable Fields specified as array of 1.582 - // ObjectStreamFields. Print a member for each serialField tag. 1.583 - // (There should be one serialField tag per ObjectStreamField 1.584 - // element.) 1.585 - SerialFieldTag[] tags = field.serialFieldTags(); 1.586 - Arrays.sort(tags); 1.587 - for (int i = 0; i < tags.length; i++) { 1.588 - fieldWriter.writeMemberHeader(tags[i].fieldTypeDoc(), 1.589 - tags[i].fieldType(), "", tags[i].fieldName()); 1.590 - fieldWriter.writeMemberDescription(tags[i]); 1.591 - 1.592 - } 1.593 - } else { 1.594 - 1.595 - // Process default Serializable field. 1.596 - if ((field.tags("serial").length == 0) && ! field.isSynthetic() 1.597 - && configuration.serialwarn) { 1.598 - configuration.message.warning(field.position(), 1.599 - "doclet.MissingSerialTag", cd.qualifiedName(), 1.600 - field.name()); 1.601 - } 1.602 - fieldWriter.writeMemberDescription(field); 1.603 - fieldWriter.writeMemberTags(field); 1.604 - } 1.605 - } 1.606 - 1.607 - /** 1.608 - * Build the field sub footer. 1.609 - */ 1.610 - public void buildFieldSubFooter(XMLNode node) { 1.611 - if (! currentClass.definesSerializableFields()) { 1.612 - fieldWriter.writeMemberFooter(); 1.613 - } 1.614 - } 1.615 - 1.616 - /** 1.617 - * Build the summaries for the methods that belong to the given 1.618 - * class. 1.619 - */ 1.620 - public void buildSerializableMethods(XMLNode node) { 1.621 - MemberDoc[] members = currentClass.serializationMethods(); 1.622 - if (members.length > 0) { 1.623 - for (int i = 0; i < members.length; i++) { 1.624 - currentMember = members[i]; 1.625 - buildChildren(node); 1.626 - } 1.627 - } 1.628 - } 1.629 - 1.630 - /** 1.631 - * Build the summaries for the fields that belong to the given 1.632 - * class. 1.633 - */ 1.634 - public void buildSerializableFields(XMLNode node) { 1.635 - MemberDoc[] members = currentClass.serializableFields(); 1.636 - if (members.length > 0) { 1.637 - for (int i = 0; i < members.length; i++) { 1.638 - currentMember = members[i]; 1.639 - buildChildren(node); 1.640 - } 1.641 - } 1.642 - } 1.643 }