/* * @(#)SerializedFormWriter.java 1.27 98/04/28 * * Copyright 1997, 1998 by Sun Microsystems, Inc., * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. * All rights reserved. * * This software is the confidential and proprietary information * of Sun Microsystems, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Sun. */ package com.sun.tools.doclets.standard; import com.sun.tools.doclets.*; import com.sun.javadoc.*; import java.io.*; import java.lang.*; import java.util.*; /** * Generate the Serialized Form Information Page. * * @author Atul M Dambalkar */ public class SerializedFormWriter extends SubWriterHolderWriter { public SerializedFormWriter(String filename) throws IOException, DocletAbortException { super(filename); } /** * Generate a serialized form page. */ public static void generate(RootDoc root) throws DocletAbortException { SerializedFormWriter serialgen; String filename = "serializedform.html"; try { serialgen = new SerializedFormWriter(filename); serialgen.generateSerializedFormFile(root); serialgen.close(); } catch (IOException exc) { Standard.configuration().standardmessage. error("doclet.exception_encountered", exc.toString(), filename); throw new DocletAbortException(); } } /** * Generate the serialized form file. */ public void generateSerializedFormFile(RootDoc root) { printHeader(getText("doclet.Serialized_Form")); navLinks(true); hr(); center(); h1(); printText("doclet.Serialized_Form"); h1End(); centerEnd(); hr(4, "noshade"); generateContents(root); hr(); navLinks(false); printBottom(); printFooter(); } /** * Generate the serialized form file contents. */ protected void generateContents(RootDoc root) { PackageDoc[] packages = Standard.configuration().packages; ClassDoc[] cmdlineClasses = root.specifiedClasses(); boolean first = true; for (int i = 0; i < packages.length; i++) { ClassDoc[] classes = packages[i].allClasses(); boolean printPackageName = true; Arrays.sort(classes); for (int j = 0; j < classes.length; j++) { ClassDoc classdoc = classes[j]; if(classdoc.isClass() && classdoc.isSerializable()) { if (printPackageName) { center(); h2(); boldText("doclet.Package"); print(' '); bold(packages[i].name()); h2End(); centerEnd(); p(); printPackageName = false; } if (!first) { hr(4, "noshade"); } first = false; printSerialMemberInfo(classdoc); } } } if (cmdlineClasses.length > 0) { Arrays.sort(cmdlineClasses); for (int i = 0; i < cmdlineClasses.length; i++) { ClassDoc classdoc = cmdlineClasses[i]; if(classdoc.isClass() && classdoc.isSerializable()) { if (!first) { hr(4, "noshade"); } first = false; printSerialMemberInfo(classdoc); } } } } /** * Print all the serializable member information. */ protected void printSerialMemberInfo(ClassDoc cd) { anchor(cd.qualifiedName()); h2(); printText("doclet.Class"); print(' '); printQualifiedClassLink(cd); h2End(); println(' '); printText("doclet.This_class_implements_serializable"); p(); printMembers(cd); p(); } /** * Print summary and detail information for the serial members in the * class. */ protected void printMembers(ClassDoc cd) { new SerialMethodSubWriter(this).printMembers(cd); new SerialFieldSubWriter(this).printMembers(cd); } }