Class JFormatter

java.lang.Object
com.sun.codemodel.JFormatter

public final class JFormatter extends Object
This is a utility class for managing indentation and other basic formatting for PrintWriter.
  • Field Details

    • collectedReferences

      private HashMap<String,JFormatter.ReferenceList> collectedReferences
      map from short type name to ReferenceList (list of JClass and ids sharing that name)
    • importedClasses

      private HashSet<JClass> importedClasses
      set of imported types (including package java types, eventhough we won't generate imports for them)
    • mode

      private JFormatter.Mode mode
      The current running mode. Set to PRINTING so that a casual client can use a formatter just like before.
    • indentLevel

      private int indentLevel
      Current number of indentation strings to print
    • indentSpace

      private final String indentSpace
      String to be used for each indentation. Defaults to four spaces.
    • pw

      private final PrintWriter pw
      Stream associated with this JFormatter
    • lastChar

      private char lastChar
    • atBeginningOfLine

      private boolean atBeginningOfLine
    • javaLang

      private JPackage javaLang
    • CLOSE_TYPE_ARGS

      static final char CLOSE_TYPE_ARGS
      Special character token we use to differenciate '>' as an operator and '>' as the end of the type arguments. The former uses '>' and it requires a preceding whitespace. The latter uses this, and it does not have a preceding whitespace.
      See Also:
  • Constructor Details

    • JFormatter

      public JFormatter(PrintWriter s, String space)
      Creates a JFormatter.
      Parameters:
      s - PrintWriter to JFormatter to use.
      space - Incremental indentation string, similar to tab value.
    • JFormatter

      public JFormatter(PrintWriter s)
      Creates a formatter with default incremental indentations of four spaces.
    • JFormatter

      public JFormatter(Writer w)
      Creates a formatter with default incremental indentations of four spaces.
  • Method Details

    • close

      public void close()
      Closes this formatter.
    • isPrinting

      public boolean isPrinting()
      Returns true if we are in the printing mode, where we actually produce text. The other mode is the "collecting mode'
    • o

      public JFormatter o()
      Decrement the indentation level.
    • i

      public JFormatter i()
      Increment the indentation level.
    • needSpace

      private boolean needSpace(char c1, char c2)
    • spaceIfNeeded

      private void spaceIfNeeded(char c)
    • p

      public JFormatter p(char c)
      Print a char into the stream
      Parameters:
      c - the char
    • p

      public JFormatter p(String s)
      Print a String into the stream
      Parameters:
      s - the String
    • t

      public JFormatter t(JType type)
    • t

      public JFormatter t(JClass type)
      Print a type name.

      In the collecting mode we use this information to decide what types to import and what not to.

    • id

      public JFormatter id(String id)
      Print an identifier
    • nl

      public JFormatter nl()
      Print a new line into the stream
    • g

      public JFormatter g(JGenerable g)
      Cause the JGenerable object to generate source for iteself
      Parameters:
      g - the JGenerable object
    • g

      public JFormatter g(Collection<? extends JGenerable> list)
      Produces JGenerables separated by ','
    • d

      public JFormatter d(JDeclaration d)
      Cause the JDeclaration to generate source for itself
      Parameters:
      d - the JDeclaration object
    • s

      public JFormatter s(JStatement s)
      Cause the JStatement to generate source for itself
      Parameters:
      s - the JStatement object
    • b

      public JFormatter b(JVar v)
      Cause the JVar to generate source for itself
      Parameters:
      v - the JVar object
    • write

      void write(JDefinedClass c)
      Generates the whole source code out of the specified class.
    • supressImport

      private boolean supressImport(JClass clazz, JClass c)
      determine if an import statement should be supressed
      Parameters:
      clazz - JType that may or may not have an import
      c - JType that is the current class being processed
      Returns:
      true if an import statement should be suppressed, false otherwise