OSDN Git Service

libjava/ChangeLog:
[pf3gnuchains/gcc-fork.git] / libjava / classpath / tools / gnu / classpath / tools / doclets / debugdoclet / DebugDoclet.java
1 package gnu.classpath.tools.doclets.debugdoclet;
2
3 import com.sun.javadoc.ClassDoc;
4 import com.sun.javadoc.FieldDoc;
5 import com.sun.javadoc.MethodDoc;
6 import com.sun.javadoc.PackageDoc;
7 import com.sun.javadoc.RootDoc;
8 import com.sun.javadoc.Tag;
9
10 import java.io.PrintStream;
11
12 import java.util.Arrays;
13
14 public class DebugDoclet
15 {
16    public static boolean start(RootDoc rootDoc)
17    {
18       new DebugDoclet().run(rootDoc);
19       return true;
20    }
21    
22    private PrintStream out;
23
24    public DebugDoclet()
25    {
26       out = System.out;
27    }
28
29    private void printHeader(String header)
30    {
31       out.println();
32       out.println("******** " + header + " ********");
33       out.println();
34    }
35
36    private void printSubHeader(String header)
37    {
38       out.println();
39       out.println("======== " + header + " ========");
40       out.println();
41    }
42
43    private void printSub2Header(String header)
44    {
45       out.println();
46       out.println("-------- " + header + " --------");
47       out.println();
48    }
49
50    private void run(RootDoc rootDoc) 
51    {
52       printHeader("Overview");
53
54       printSubHeader("Specified Packages");
55
56       PackageDoc[] specifiedPackages = rootDoc.specifiedPackages();
57       Arrays.sort(specifiedPackages);
58       for (int i=0; i<specifiedPackages.length; ++i) {
59          out.println(specifiedPackages[i].name());
60       }
61
62       printSubHeader("Specified Classes");
63
64       ClassDoc[] specifiedClasses = rootDoc.specifiedClasses();
65       Arrays.sort(specifiedClasses);
66       for (int i=0; i<specifiedClasses.length; ++i) {
67          out.println(specifiedClasses[i].qualifiedTypeName());
68       }
69       printSubHeader("Classes");
70
71       ClassDoc[] classes = rootDoc.classes();
72       Arrays.sort(classes);
73       for (int i=0; i<classes.length; ++i) {
74          out.println(classes[i].qualifiedTypeName());
75       }
76
77       printHeader("Class Detail");
78
79       for (int i=0; i<classes.length; ++i) {
80          printSubHeader(classes[i].qualifiedTypeName());
81
82          printTags(classes[i].firstSentenceTags());
83
84          printSub2Header("Methods");
85
86          MethodDoc[] methods = classes[i].methods();
87
88          for (int j=0; j<methods.length; ++j) {
89             out.println("name: \"" + methods[j].name() + "\"");
90             out.println("signature: \"" + methods[j].signature() + "\"");
91             out.println("modifiers: \"" + methods[j].modifiers() + "\"");
92             out.print("throws: ");
93             ClassDoc[] thrownExceptions = methods[j].thrownExceptions();
94             for (int k=0; k<thrownExceptions.length; ++k) {
95                if (k>0) { out.print(", "); }
96                out.print(thrownExceptions[k].qualifiedTypeName());
97             }
98             out.println();
99          }
100
101          printSub2Header("Fields");
102
103          FieldDoc[] fields = classes[i].fields();
104
105          for (int j=0; j<fields.length; ++j) {
106             out.println("name: \"" + fields[j].name() + "\"");
107             out.println("modifiers: \"" + fields[j].modifiers() + "\"");
108             out.println();
109          }
110
111          printSub2Header("Serializable Fields");
112
113          FieldDoc[] sfields = classes[i].serializableFields();
114
115          for (int j=0; j<sfields.length; ++j) {
116             out.println("name: \"" + sfields[j].name() + "\"");
117             out.println("modifiers: \"" + sfields[j].modifiers() + "\"");
118             out.println();
119          }
120       }
121    }
122
123    private void printTag(Tag tag)
124    {
125       if (null != tag.text()) { 
126          System.out.println(tag.text());
127       }
128    }
129
130    private void printTags(Tag[] tags)
131    {
132       for (int i=0; i<tags.length; ++i) {
133          out.println("Tag #" + (i+1) + ":");
134          printTag(tags[i]);
135       }
136    }
137 }