diff -r fd16c54261b3 -r 06bc494ca11e langtools/src/share/classes/com/sun/javadoc/package.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/src/share/classes/com/sun/javadoc/package.html Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,152 @@ + + +Doclet API Package + + + + +The Doclet API (also called the Javadoc API) provides a mechanism +for clients to inspect the source-level structure of programs and +libraries, including javadoc comments embedded in the source. +This is useful for documentation, program checking, automatic +code generation and many other tools. +

+ +Doclets are invoked by javadoc and use this API to write out +program information to files. For example, the standard doclet is called +by default and writes out documentation to HTML files. +

+ +The invocation is defined by the abstract {@link com.sun.javadoc.Doclet} class +-- the entry point is the {@link com.sun.javadoc.Doclet#start(RootDoc) start} method: +

+    public static boolean start(RootDoc root)
+
+The {@link com.sun.javadoc.RootDoc} instance holds the root of the program structure +information. From this root all other program structure +information can be extracted. +

+ + +

Terminology

+ + +When calling javadoc, you pass in package names and source file names -- +these are called the specified packages and classes. +You also pass in Javadoc options; the access control Javadoc options +(-public, -protected, -package, +and -private) filter program elements, producing a +result set, called the included set, or "documented" set. +(The unfiltered set is also available through +{@link com.sun.javadoc.PackageDoc#allClasses(boolean) allClasses(false)}.) +

+ + +Throughout this API, the term class is normally a +shorthand for "class or interface", as in: {@link com.sun.javadoc.ClassDoc}, +{@link com.sun.javadoc.PackageDoc#allClasses() allClasses()}, and +{@link com.sun.javadoc.PackageDoc#findClass(String) findClass(String)}. +In only a couple of other places, it means "class, as opposed to interface", +as in: {@link com.sun.javadoc.Doc#isClass()}. +In the second sense, this API calls out four kinds of classes: +{@linkplain com.sun.javadoc.Doc#isOrdinaryClass() ordinary classes}, +{@linkplain com.sun.javadoc.Doc#isEnum() enums}, +{@linkplain com.sun.javadoc.Doc#isError() errors} and +{@linkplain com.sun.javadoc.Doc#isException() exceptions}. +Throughout the API, the detailed description of each program element +describes explicitly which meaning is being used. +

+ + +A qualified class or interface name is one that has its package +name prepended to it, such as java.lang.String. A non-qualified +name has no package name, such as String. +

+ + +

Example

+ +The following is an example doclet that +displays information in the @param tags of the processed +classes: +
+import com.sun.javadoc.*;
+
+public class ListParams extends Doclet {
+
+    public static boolean start(RootDoc root) {
+        ClassDoc[] classes = root.classes();
+        for (int i = 0; i < classes.length; ++i) {
+            ClassDoc cd = classes[i];
+            printMembers(cd.constructors());
+            printMembers(cd.methods());
+        }
+        return true;
+    }
+
+    static void printMembers(ExecutableMemberDoc[] mems) {
+        for (int i = 0; i < mems.length; ++i) {
+            ParamTag[] params = mems[i].paramTags();
+            System.out.println(mems[i].qualifiedName());
+            for (int j = 0; j < params.length; ++j) {
+                System.out.println("   " + params[j].parameterName()
+                    + " - " + params[j].parameterComment());
+            }
+        }
+    }        
+}
+
+Interfaces and methods from the Javadoc API are marked in +red. +{@link com.sun.javadoc.Doclet Doclet} is an abstract class that specifies +the invocation interface for doclets, +{@link com.sun.javadoc.Doclet Doclet} holds class or interface information, +{@link com.sun.javadoc.ExecutableMemberDoc} is a +superinterface of {@link com.sun.javadoc.MethodDoc} and +{@link com.sun.javadoc.ConstructorDoc}, +and {@link com.sun.javadoc.ParamTag} holds information +from "@param" tags. +

+This doclet when invoked with a command line like: +

+    javadoc -doclet ListParams -sourcepath <source-location> java.util
+
+producing output like: +
+    ...
+    java.util.ArrayList.add
+       index - index at which the specified element is to be inserted.
+       element - element to be inserted.
+    java.util.ArrayList.remove
+       index - the index of the element to removed.
+    ...
+
+
+@see com.sun.javadoc.Doclet +@see com.sun.javadoc.RootDoc + +