com.thoughtworks.qdox
Class JavaDocBuilder

java.lang.Object
  extended by com.thoughtworks.qdox.JavaDocBuilder
All Implemented Interfaces:
java.io.Serializable

public class JavaDocBuilder
extends java.lang.Object
implements java.io.Serializable

Simple facade to QDox allowing a source tree to be parsed and the resulting object model navigated.

Example


 // -- Create JavaDocBuilder

 JavaDocBuilder builder = new JavaDocBuilder();

 // -- Add some files

 // Reading a single source file.
 builder.addSource(new FileReader("MyFile.java"));

 // Reading from another kind of input stream.
 builder.addSource(new StringReader("package test; public class Hello {}"));

 // Adding all .java files in a source tree (recursively).
 builder.addSourceTree(new File("mysrcdir"));

 // -- Retrieve source files

 JavaSource[] source = builder.getSources();

 

Author:
Joe Walnes, Aslak Hellesøy, Robert Scholte
See Also:
Serialized Form

Nested Class Summary
static interface JavaDocBuilder.ErrorHandler
           
 
Field Summary
private  java.util.Map allPackages
           
private  JavaClassContext context
           
private  boolean debugLexer
           
private  boolean debugParser
           
private  DocletTagFactory docletTagFactory
           
private  java.lang.String encoding
           
private  JavaDocBuilder.ErrorHandler errorHandler
           
private  java.util.Set packages
           
private  java.util.List sources
           
 
Constructor Summary
JavaDocBuilder()
           
JavaDocBuilder(ClassLibrary classLibrary)
           
JavaDocBuilder(DocletTagFactory docletTagFactory)
           
JavaDocBuilder(DocletTagFactory docletTagFactory, ClassLibrary classLibrary)
           
 
Method Summary
private  void addClass(JavaClass cls)
           
private  void addClasses(JavaSource source)
           
private  void addClassesRecursive(JavaClass javaClass, java.util.Set set)
           
private  void addClassesRecursive(JavaSource javaSource, java.util.Set resultSet)
           
private  void addField(java.lang.reflect.Field field, ModelBuilder binaryBuilder)
           
private  void addMethodOrConstructor(java.lang.reflect.Member member, ModelBuilder binaryBuilder)
           
private  void addModifiers(java.util.Set set, int modifier)
           
 JavaSource addSource(java.io.File file)
           
 JavaSource addSource(java.io.Reader reader)
           
 JavaSource addSource(java.io.Reader reader, java.lang.String sourceInfo)
           
 JavaSource addSource(java.net.URL url)
           
 void addSourceTree(java.io.File file)
          Add all files in a directory (and subdirs, recursively).
 void addSourceTree(java.io.File file, FileVisitor errorHandler)
          Add all files in a directory (and subdirs, recursively).
protected  JavaClass createBinaryClass(java.lang.String name)
           
protected  JavaClass createUnknownClass(java.lang.String name)
           
 JavaClass getClassByName(java.lang.String name)
           
 JavaClass[] getClasses()
          Returns all the classes found in all the sources, including inner classes and "extra" classes (multiple outer classes defined in the same source file).
 ClassLibrary getClassLibrary()
           
private  java.lang.String getClassName(java.lang.String fullClassName)
           
private static int getDimension(java.lang.Class c)
           
private  java.lang.String getPackageName(java.lang.String fullClassName)
           
 JavaPackage[] getPackages()
          Returns all the packages found in all the sources.
 JavaSource[] getSources()
           
private static TypeDef getTypeDef(java.lang.Class c)
           
private static java.lang.String getTypeName(java.lang.Class c)
           
static JavaDocBuilder load(java.io.File file)
          Note that after loading JavaDocBuilder classloaders need to be re-added.
 void save(java.io.File file)
           
 java.util.List search(Searcher searcher)
           
 void setDebugLexer(boolean debugLexer)
          Forces QDox to dump tokens returned from lexer to System.err.
 void setDebugParser(boolean debugParser)
          Forces QDox to dump parser states to System.out.
 void setEncoding(java.lang.String encoding)
           
 void setErrorHandler(JavaDocBuilder.ErrorHandler errorHandler)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

context

private final JavaClassContext context

packages

private java.util.Set packages

sources

private java.util.List sources

docletTagFactory

private DocletTagFactory docletTagFactory

encoding

private java.lang.String encoding

debugLexer

private boolean debugLexer

debugParser

private boolean debugParser

errorHandler

private JavaDocBuilder.ErrorHandler errorHandler

allPackages

private java.util.Map allPackages
Constructor Detail

JavaDocBuilder

public JavaDocBuilder()

JavaDocBuilder

public JavaDocBuilder(DocletTagFactory docletTagFactory)

JavaDocBuilder

public JavaDocBuilder(ClassLibrary classLibrary)

JavaDocBuilder

public JavaDocBuilder(DocletTagFactory docletTagFactory,
                      ClassLibrary classLibrary)
Method Detail

addClasses

private void addClasses(JavaSource source)

addClass

private void addClass(JavaClass cls)

getClassByName

public JavaClass getClassByName(java.lang.String name)

createUnknownClass

protected JavaClass createUnknownClass(java.lang.String name)

createBinaryClass

protected JavaClass createBinaryClass(java.lang.String name)

addModifiers

private void addModifiers(java.util.Set set,
                          int modifier)

addField

private void addField(java.lang.reflect.Field field,
                      ModelBuilder binaryBuilder)

addMethodOrConstructor

private void addMethodOrConstructor(java.lang.reflect.Member member,
                                    ModelBuilder binaryBuilder)

getDimension

private static final int getDimension(java.lang.Class c)

getTypeName

private static java.lang.String getTypeName(java.lang.Class c)

getTypeDef

private static TypeDef getTypeDef(java.lang.Class c)

getPackageName

private java.lang.String getPackageName(java.lang.String fullClassName)

getClassName

private java.lang.String getClassName(java.lang.String fullClassName)

addSource

public JavaSource addSource(java.io.Reader reader)

addSource

public JavaSource addSource(java.io.Reader reader,
                            java.lang.String sourceInfo)

addSource

public JavaSource addSource(java.io.File file)
                     throws java.io.IOException,
                            java.io.FileNotFoundException
Throws:
java.io.IOException
java.io.FileNotFoundException

addSource

public JavaSource addSource(java.net.URL url)
                     throws java.io.IOException,
                            java.io.FileNotFoundException
Throws:
java.io.IOException
java.io.FileNotFoundException

setErrorHandler

public void setErrorHandler(JavaDocBuilder.ErrorHandler errorHandler)

getSources

public JavaSource[] getSources()

getClasses

public JavaClass[] getClasses()
Returns all the classes found in all the sources, including inner classes and "extra" classes (multiple outer classes defined in the same source file).

Returns:
all the classes found in all the sources.
Since:
1.3

getPackages

public JavaPackage[] getPackages()
Returns all the packages found in all the sources.

Returns:
all the packages found in all the sources.
Since:
1.9

addClassesRecursive

private void addClassesRecursive(JavaSource javaSource,
                                 java.util.Set resultSet)

addClassesRecursive

private void addClassesRecursive(JavaClass javaClass,
                                 java.util.Set set)

addSourceTree

public void addSourceTree(java.io.File file)
Add all files in a directory (and subdirs, recursively). If a file cannot be read, a RuntimeException shall be thrown.


addSourceTree

public void addSourceTree(java.io.File file,
                          FileVisitor errorHandler)
Add all files in a directory (and subdirs, recursively). If a file cannot be read, errorHandler will be notified.


search

public java.util.List search(Searcher searcher)

getClassLibrary

public ClassLibrary getClassLibrary()

save

public void save(java.io.File file)
          throws java.io.IOException
Throws:
java.io.IOException

load

public static JavaDocBuilder load(java.io.File file)
                           throws java.io.IOException
Note that after loading JavaDocBuilder classloaders need to be re-added.

Throws:
java.io.IOException

setEncoding

public void setEncoding(java.lang.String encoding)

setDebugLexer

public void setDebugLexer(boolean debugLexer)
Forces QDox to dump tokens returned from lexer to System.err.


setDebugParser

public void setDebugParser(boolean debugParser)
Forces QDox to dump parser states to System.out.