Class JDeparser

java.lang.Object
org.jboss.jdeparser.JDeparser

public final class JDeparser extends Object
Root of the code DOM.

Here's your typical JDeparser application.

 JDeparser cm = new JDeparser();

 // generate source code by populating the 'cm' tree.
 cm._class(...);
 ...

 // write them out
 cm.build(new File("."));
 

Every JDeparser node is always owned by one JDeparser object at any given time (which can be often accesesd by the owner() method.) As such, when you generate Java code, most of the operation works in a top-down fashion. For example, you create a class from JDeparser, which gives you a JDefinedClass. Then you invoke a method on it to generate a new method, which gives you JMethod, and so on. There are a few exceptions to this, most notably building JExpressions, but generally you work with JDeparser in a top-down fashion. Because of this design, most of the JDeparser classes aren't directly instantiable.

Where to go from here?

Most of the time you'd want to populate new type definitions in a JDeparser. See _class(String, ClassType).

  • Field Details

  • Constructor Details

    • JDeparser

      public JDeparser()
  • Method Details

    • getFileSystemCaseSensitivity

      private static boolean getFileSystemCaseSensitivity()
    • _package

      public JPackage _package(String name)
      Add a package to the list of packages to be generated
      Parameters:
      name - Name of the package. Use "" to indicate the root package.
      Returns:
      Newly generated package
    • rootPackage

      public final JPackage rootPackage()
    • packages

      public Iterator<JPackage> packages()
      Returns an iterator that walks the packages defined using this code writer.
    • _class

      public JDefinedClass _class(String fullyqualifiedName) throws JClassAlreadyExistsException
      Creates a new generated class.
      Throws:
      JClassAlreadyExistsException - When the specified class/interface was already created.
    • directClass

      public JClass directClass(String name)
      Creates a dummy, unknown JClass that represents a given name.

      This method is useful when the code generation needs to include the user-specified class that may or may not exist, and only thing known about it is a class name.

    • _class

      public JDefinedClass _class(int mods, String fullyqualifiedName, ClassType t) throws JClassAlreadyExistsException
      Creates a new generated class.
      Throws:
      JClassAlreadyExistsException - When the specified class/interface was already created.
    • _class

      public JDefinedClass _class(String fullyqualifiedName, ClassType t) throws JClassAlreadyExistsException
      Creates a new generated class.
      Throws:
      JClassAlreadyExistsException - When the specified class/interface was already created.
    • _getClass

      public JDefinedClass _getClass(String fullyQualifiedName)
      Gets a reference to the already created generated class.
      Returns:
      null If the class is not yet created.
      See Also:
    • newAnonymousClass

      public JDefinedClass newAnonymousClass(JClass baseType)
      Deprecated.
      The naming convention doesn't match the rest of the JDeparser. Use anonymousClass(JClass) instead.
      Creates a new anonymous class.
    • anonymousClass

      public JDefinedClass anonymousClass(JClass baseType)
      Creates a new anonymous class.
    • anonymousClass

      public JDefinedClass anonymousClass(Class<?> baseType)
    • multiBoundWildcard

      public JClass multiBoundWildcard(JClass... baseTypes)
      Create a wildcard type with multiple bounds. The first bound must be a concrete class or interface, and the subsequent bounds must be interfaces.
      Parameters:
      baseTypes - the base types
      Returns:
      the wildcard type
    • build

      public void build(File destDir, PrintStream status) throws IOException
      Generates Java source code. A convenience method for build(destDir,destDir,System.out).
      Parameters:
      destDir - source files are generated into this directory.
      status - if non-null, progress indication will be sent to this stream.
      Throws:
      IOException
    • build

      public void build(File srcDir, File resourceDir, PrintStream status) throws IOException
      Generates Java source code. A convenience method that calls build(CodeWriter,CodeWriter).
      Parameters:
      srcDir - Java source files are generated into this directory.
      resourceDir - Other resource files are generated into this directory.
      status - if non-null, progress indication will be sent to this stream.
      Throws:
      IOException
    • build

      public void build(File destDir) throws IOException
      A convenience method for build(destDir,System.out).
      Throws:
      IOException
    • build

      public void build(File srcDir, File resourceDir) throws IOException
      A convenience method for build(srcDir,resourceDir,System.out).
      Throws:
      IOException
    • build

      public void build(CodeWriter out) throws IOException
      A convenience method for build(out,out).
      Throws:
      IOException
    • build

      public void build(CodeWriter source, CodeWriter resource) throws IOException
      Generates Java source code.
      Throws:
      IOException
    • countArtifacts

      public int countArtifacts()
      Returns the number of files to be generated if build(java.io.File, java.io.PrintStream) is invoked now.
    • ref

      public JClass ref(Class<?> clazz)
      Obtains a reference to an existing class from its Class object.

      The parameter may not be primitive.

      See Also:
    • _ref

      public JType _ref(Class<?> c)
    • ref

      public JClass ref(String fullyQualifiedClassName)
      Obtains a reference to an existing class from its fully-qualified class name.

      First, this method attempts to load the class of the given name. If that fails, we assume that the class is derived straight from Object, and return a JClass.

    • wildcard

      public JClass wildcard()
      Gets a JClass representation for "?", which is equivalent to "? extends Object".
    • parseType

      public JType parseType(String name) throws ClassNotFoundException
      Obtains a type object from a type name.

      This method handles primitive types, arrays, and existing Classes.

      Throws:
      ClassNotFoundException - If the specified type is not found.