/* * @(#)SerialMethodSubWriter.java 1.20 00/02/02 * * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package com.sun.tools.doclets.standard; import com.sun.javadoc.*; import com.sun.tools.doclets.*; import java.util.*; /** * Generate serialized form for Serializable/Externalizable methods. * Documentation denoted by the serialData tag is processed. * * @author Joe Fialli */ public class SerialMethodSubWriter extends MethodSubWriter { public SerialMethodSubWriter(SubWriterHolderWriter writer, ClassDoc classdoc) { super(writer, classdoc); } public List members(ClassDoc cd) { return Util.asList(cd.serializationMethods()); } protected void printHeader(ClassDoc cd) { writer.anchor("serialized_methods"); writer.printTableHeadingBackground(writer.getText("doclet.Serialized_Form_methods")); // Specify if Class is Serializable or Externalizable. writer.p(); if (cd.isSerializable() && !cd.isExternalizable()) { if (members(cd).size() == 0) { String msg = writer.getText("doclet.Serializable_no_customization"); writer.print(msg); writer.p(); } } } protected void printMember(ClassDoc cd, ProgramElementDoc member) { ExecutableMemberDoc emd = (ExecutableMemberDoc)member; String name = emd.name(); printHead(emd); printFullComment(emd); } protected void printSerialDataTag(Tag[] serialData) { if (serialData != null && serialData.length > 0) { writer.dt(); writer.boldText("doclet.SerialData"); writer.dd(); for (int i = 0; i < serialData.length; i++) writer.printInlineComment(serialData[i]); } } /** * Print comments, See tags and serialData for SerialMethods. */ protected void printTags(ProgramElementDoc member) { MethodDoc method = (MethodDoc)member; Tag[] serialData = method.tags("serialData"); Tag[] sinces = method.tags("since"); SeeTag[] sees = method.seeTags(); if (serialData.length + sees.length + sinces.length > 0) { writer.dd(); writer.dl(); printSerialDataTag(serialData); writer.printSinceTag(method); writer.printSeeTags(method); writer.dlEnd(); writer.ddEnd(); } else { if (method.name().compareTo("writeExternal") == 0) { serialWarning("doclet.MissingSerialDataTag", method.containingClass().qualifiedName(), method.name()); } } } /** * Print header even if there are no serializable methods. */ public void printMembers() { if (members(classdoc).size() > 0) { super.printMembers(); } } public void buildVisibleMemberMap() { // Do nothing. } }