home *** CD-ROM | disk | FTP | other *** search
/ Internet News 1999 October / INEWS_10_CD.ISO / pc / jdk / jdk1.2.2 / docs / tooldocs / javadoc / source / standard / SerialMethodSubWriter.java < prev    next >
Encoding:
Java Source  |  1999-09-19  |  3.1 KB  |  107 lines

  1. /*
  2.  * @(#)SerialMethodSubWriter.java    1.13 98/07/18
  3.  *
  4.  * Copyright 1998 by Sun Microsystems, Inc.,
  5.  * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
  6.  * All rights reserved.
  7.  *
  8.  * This software is the confidential and proprietary information
  9.  * of Sun Microsystems, Inc. ("Confidential Information").  You
  10.  * shall not disclose such Confidential Information and shall use
  11.  * it only in accordance with the terms of the license agreement
  12.  * you entered into with Sun.
  13.  */
  14.  
  15. package com.sun.tools.doclets.standard;
  16.  
  17. import com.sun.javadoc.*;
  18. import com.sun.tools.doclets.*;
  19.  
  20. /**
  21.  * Generate serialized form for Serializable/Externalizable methods.
  22.  * Documentation denoted by the <code>serialData</code> tag is processed.
  23.  *
  24.  * @author Joe Fialli
  25.  */
  26. public class SerialMethodSubWriter extends MethodSubWriter {
  27.     SerialMethodSubWriter(SubWriterHolderWriter writer) {
  28.         super(writer);
  29.     }
  30.  
  31.     public ProgramElementDoc[] members(ClassDoc cd) {
  32.     return eligibleMembers(cd.serializationMethods());
  33.     }
  34.  
  35.     protected void printHeader(ClassDoc cd) {
  36.         writer.anchor("serialized_methods");
  37.         writer.printTableHeadingBackground(writer.getText("doclet.Serialized_Form_methods"));
  38.  
  39.     // Specify if Class is Serializable or Externalizable.
  40.  
  41.         writer.p();
  42.  
  43.     if (cd.isSerializable() && !cd.isExternalizable()) {
  44.             if (members(cd).length == 0) {
  45.         String msg =
  46.             writer.getText("doclet.Serializable_no_customization");
  47.         writer.print(msg);
  48.         writer.p();
  49.         }
  50.     }
  51.     }
  52.  
  53.     protected void printMember(ClassDoc cd, ProgramElementDoc member) {
  54.         ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
  55.         String name = emd.name();
  56.         printHead(emd);
  57.         printFullComment(emd);
  58.     }
  59.  
  60.     protected void printSerialDataTag(Tag[] serialData) {
  61.         if (serialData != null && serialData.length > 0) {
  62.             writer.dt();
  63.             writer.boldText("doclet.SerialData");
  64.             writer.dd();
  65.         for (int i = 0; i < serialData.length; i++)
  66.         writer.print(serialData[i].text());
  67.         }
  68.     }
  69.  
  70.     /**
  71.      * Print comments, See tags and serialData for SerialMethods.
  72.      */
  73.     protected void printTags(ProgramElementDoc member) {
  74.         MethodDoc method = (MethodDoc)member;
  75.     Tag[] serialData = method.tags("serialData");
  76.     Tag[] sinces = method.tags("since");
  77.         SeeTag[] sees = method.seeTags();
  78.         if (serialData.length + sees.length + sinces.length > 0) {
  79.             writer.dd();
  80.             writer.dl();
  81.         printSerialDataTag(serialData);
  82.             writer.printSinceTag(method);
  83.             writer.printSeeTags(method);
  84.             writer.dlEnd();
  85.             writer.ddEnd();
  86.     } else {
  87.         if (method.name().compareTo("writeExternal") == 0) {
  88.         Standard.configuration().standardmessage.
  89.             warning("doclet.MissingSerialDataTag",
  90.                 method.containingClass().qualifiedName(),
  91.                 method.name());
  92.         }
  93.     }
  94.     }
  95.  
  96.     /**
  97.      * Print header even if there are no serializable methods.
  98.      */
  99.     public void printMembers(ClassDoc cd) {
  100.         if (members(cd).length > 0) {
  101.         super.printMembers(cd);
  102.         }
  103.     }
  104. }
  105.  
  106.  
  107.