Class PreprocessTask

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
com.igormaznitsa.jcp.ant.PreprocessTask
All Implemented Interfaces:
SpecialVariableProcessor, PreprocessorLogger, Cloneable

public class PreprocessTask extends org.apache.tools.ant.Task implements PreprocessorLogger, SpecialVariableProcessor
The class implements an ANT task to allow calls for preprocessing from ANT build scripts. Also it allows to out messages from preprocessor directives into the ANT log and read ANT properties as global variables (with the "ant." prefix)
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Inside class describes a "cfgfile" item, it has the only attribute "file", the attribute must be defined
    static class 
    Inside class describes a "global" item, it describes a global variable which will be added into the preprocessor context It has attributes "name" and "value", be careful in the value attribute usage because you have to use """ instead of \" symbol inside string values
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private boolean
     
    private Map<String,Value>
     
    private boolean
     
    private boolean
     
    private boolean
     
     
    private boolean
     
    private File
     
    private boolean
     
    private String
     
    private String
     
     
    private String
     
    private boolean
     
    private String
     
    private boolean
     
    private String
     
    private boolean
     
    private File
     
    private boolean
     
    private boolean
     

    Fields inherited from class org.apache.tools.ant.Task

    target, taskName, taskType, wrapper

    Fields inherited from class org.apache.tools.ant.ProjectComponent

    description, location, project
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
     
     
    void
    debug(String message)
    Log a debug message
    void
    error(String message)
    Log an error message
    void
     
    private void
     
    private void
     
    private void
     
    (package private) PreprocessorContext
     
    Get the value for the variable
    Get all variable names allowed by the processor as an array, all names must be in lower case
    void
    info(String message)
    Log an information message
    void
    setAllowWhitespace(boolean flag)
    Set the "allowWhitespace", it allows to manage the mode to allow whitespace between the // and the #.
    void
    setCareForLastNextLine(boolean flag)
    Set the "careforlastnextline" attribute, it allows to make precise processing of last next line char
    void
    setClear(boolean flag)
    Set the "clear" attribute, it is a boolean attribute allows to make the preprocessor to clear the destination directory before its work
    void
    setCompareDestiation(boolean flag)
    Set the "compareDestination" attribute, it allows to turn on the mode to compare destination file content and to not override the file by generated one if there is the same content.
    void
    setCopyFileAttributes(boolean flag)
    Set the "copyfileattributes", it turns on mode to copy file attributes if file generated or copied.
    void
    Set the "destination" attribute, it allows to define the destination directory where the preprocessed files will be placed in
    void
    setDisableOut(boolean flag)
    Set the "disableOut" attribute, it is a boolean attribute allows to disable any output operations into the destination directory
    void
    Set the "excluded" attribute, it defines the excluded file extensions which will be ignored by the preprocessor in its work (also those files will not be copied)
    void
    Set the "excludedfolders" attribute, sub-folders in source folders to be excluded from preprocessing, ANT patterns allowed, ${path.separator} should be used for multiple items
    void
    Set the "inCharset" attribute, it allows to define the text encoding for the reading text files
    void
    setKeepLines(boolean flag)
    Set the "keepLines" attribute, it is a boolean attribute to keep non-executing lines as commented ones in the output
    void
    Set the "outCharset" attribute, it allows to define the text encoding for the writing text files
    void
    setPreserveIndent(boolean flag)
    Set the "preserveident" attribute, to preserve spaces occupied by '//$' and '//$$' directives.
    void
    Set the "processing" attribute, it defines the file extensions to be processed
    void
    setRemoveComments(boolean flag)
    Set the "removeComments" attribute, it is a boolean attribute allows to make the preprocessor to remove all Java-like comments from the result files
    void
    Set the "source" attribute, it allows to define the source directory to be preprocessed
    void
    setUnknownVarAsFalse(boolean flag)
    Set the "unknownVarAsFalse" attribute, it allows to interpret unknown variables as FALSE.
    void
    setVariable(String varName, Value value, PreprocessorContext context)
    Set a value to the variable
    void
    setVerbose(boolean flag)
    Set the "verbose" attribute, it is a boolean attribute allows to set the verbose level of preprocessor messages
    void
    warning(String message)
    Log a warning message

    Methods inherited from class org.apache.tools.ant.Task

    bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType

    Methods inherited from class org.apache.tools.ant.ProjectComponent

    clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • sourceDirectory

      private File sourceDirectory
    • destinationDirectory

      private File destinationDirectory
    • inCharSet

      private String inCharSet
    • outCharSet

      private String outCharSet
    • excludedExtensions

      private String excludedExtensions
    • processing

      private String processing
    • excludedFolders

      private String excludedFolders
    • disableOut

      private boolean disableOut
    • verbose

      private boolean verbose
    • clearDstFlag

      private boolean clearDstFlag
    • removeComments

      private boolean removeComments
    • keepLines

      private boolean keepLines
    • careForLastNextLine

      private boolean careForLastNextLine
    • compareDestination

      private boolean compareDestination
    • allowWhitespace

      private boolean allowWhitespace
    • preserveIndent

      private boolean preserveIndent
    • copyFileAttributes

      private boolean copyFileAttributes
    • unknownVarAsFalse

      private boolean unknownVarAsFalse
    • antVariables

      private Map<String,Value> antVariables
    • globalVariables

      private final List<PreprocessTask.Global> globalVariables
    • configFiles

      private final List<PreprocessTask.CfgFile> configFiles
  • Constructor Details

    • PreprocessTask

      public PreprocessTask()
  • Method Details

    • setCopyFileAttributes

      public void setCopyFileAttributes(boolean flag)
      Set the "copyfileattributes", it turns on mode to copy file attributes if file generated or copied.
      Parameters:
      flag - true if to copy attributes, false otherwise
    • setAllowWhitespace

      public void setAllowWhitespace(boolean flag)
      Set the "allowWhitespace", it allows to manage the mode to allow whitespace between the // and the #.
      Parameters:
      flag - true if whitespace is allowed, false otherwise
    • setPreserveIndent

      public void setPreserveIndent(boolean flag)
      Set the "preserveident" attribute, to preserve spaces occupied by '//$' and '//$$' directives.
      Parameters:
      flag - true to preserve positions of tail chars in lines marked by '//$$' and '//$', false otherwise
    • setCompareDestiation

      public void setCompareDestiation(boolean flag)
      Set the "compareDestination" attribute, it allows to turn on the mode to compare destination file content and to not override the file by generated one if there is the same content.
      Parameters:
      flag - true if to compare destination file content, false otherwise
    • setSource

      public void setSource(File src)
      Set the "source" attribute, it allows to define the source directory to be preprocessed
      Parameters:
      src - a directory to be used as the source one, must not be null
    • setCareForLastNextLine

      public void setCareForLastNextLine(boolean flag)
      Set the "careforlastnextline" attribute, it allows to make precise processing of last next line char
      Parameters:
      flag - shows to turn on or turn off the mode
    • setDestination

      public void setDestination(File dst)
      Set the "destination" attribute, it allows to define the destination directory where the preprocessed files will be placed in
      Parameters:
      dst - a directory to be used as the destination one, must not be null
    • setInCharset

      public void setInCharset(String charSet)
      Set the "inCharset" attribute, it allows to define the text encoding for the reading text files
      Parameters:
      charSet - the character set to be used to decode read texts, must not be null
    • setOutCharset

      public void setOutCharset(String charSet)
      Set the "outCharset" attribute, it allows to define the text encoding for the writing text files
      Parameters:
      charSet - the character set to be used to encode written texts, must not be null
    • setUnknownVarAsFalse

      public void setUnknownVarAsFalse(boolean flag)
      Set the "unknownVarAsFalse" attribute, it allows to interpret unknown variables as FALSE.
      Parameters:
      flag - true to turn on the mode, false otherwise.
    • setExcluded

      public void setExcluded(String ext)
      Set the "excluded" attribute, it defines the excluded file extensions which will be ignored by the preprocessor in its work (also those files will not be copied)
      Parameters:
      ext - the list of ignored file extensions, must not be null
    • setProcessing

      public void setProcessing(String ext)
      Set the "processing" attribute, it defines the file extensions to be processed
      Parameters:
      ext - the list of file extensions which should be preprocessed, must not be null
    • setExcludedFolders

      public void setExcludedFolders(String value)
      Set the "excludedfolders" attribute, sub-folders in source folders to be excluded from preprocessing, ANT patterns allowed, ${path.separator} should be used for multiple items
      Parameters:
      value - folder names as string
    • setClear

      public void setClear(boolean flag)
      Set the "clear" attribute, it is a boolean attribute allows to make the preprocessor to clear the destination directory before its work
      Parameters:
      flag - true if the destination directory must be cleared before preprocessing, otherwise false
    • setRemoveComments

      public void setRemoveComments(boolean flag)
      Set the "removeComments" attribute, it is a boolean attribute allows to make the preprocessor to remove all Java-like comments from the result files
      Parameters:
      flag - true if the result file must be cleared from comments, otherwise false
    • setVerbose

      public void setVerbose(boolean flag)
      Set the "verbose" attribute, it is a boolean attribute allows to set the verbose level of preprocessor messages
      Parameters:
      flag - true if the verbose level must be set, otherwise false
    • setKeepLines

      public void setKeepLines(boolean flag)
      Set the "keepLines" attribute, it is a boolean attribute to keep non-executing lines as commented ones in the output
      Parameters:
      flag - true if preprocessor should keep the lines as commented ones, false otherwise
    • setDisableOut

      public void setDisableOut(boolean flag)
      Set the "disableOut" attribute, it is a boolean attribute allows to disable any output operations into the destination directory
      Parameters:
      flag - true if the output operations must be disabled, otherwise false
    • createGlobal

      @ImplementationNote("Do not change because for ANT!") public PreprocessTask.Global createGlobal()
    • createCfgFile

      @ImplementationNote("Do not change because for ANT!") public PreprocessTask.CfgFile createCfgFile()
    • fillCfgFiles

      private void fillCfgFiles(PreprocessorContext context)
    • fillGlobalVars

      private void fillGlobalVars(PreprocessorContext context)
    • generatePreprocessorContext

      PreprocessorContext generatePreprocessorContext()
    • execute

      public void execute() throws org.apache.tools.ant.BuildException
      Overrides:
      execute in class org.apache.tools.ant.Task
      Throws:
      org.apache.tools.ant.BuildException
    • error

      public void error(String message)
      Description copied from interface: PreprocessorLogger
      Log an error message
      Specified by:
      error in interface PreprocessorLogger
      Parameters:
      message - the text to be output into the error log
    • info

      public void info(String message)
      Description copied from interface: PreprocessorLogger
      Log an information message
      Specified by:
      info in interface PreprocessorLogger
      Parameters:
      message - the text to be output into the information log
    • debug

      public void debug(String message)
      Description copied from interface: PreprocessorLogger
      Log a debug message
      Specified by:
      debug in interface PreprocessorLogger
      Parameters:
      message - the text to be output into the information log
    • warning

      public void warning(String message)
      Description copied from interface: PreprocessorLogger
      Log a warning message
      Specified by:
      warning in interface PreprocessorLogger
      Parameters:
      message - the text to be output into the warning log
    • fillAntVariables

      private void fillAntVariables()
    • getVariableNames

      @MustNotContainNull public String[] getVariableNames()
      Description copied from interface: SpecialVariableProcessor
      Get all variable names allowed by the processor as an array, all names must be in lower case
      Specified by:
      getVariableNames in interface SpecialVariableProcessor
      Returns:
      allowed variable names as a String array
    • getVariable

      public Value getVariable(String varName, PreprocessorContext context)
      Description copied from interface: SpecialVariableProcessor
      Get the value for the variable
      Specified by:
      getVariable in interface SpecialVariableProcessor
      Parameters:
      varName - the variable name, must not be null
      context - the preprocessor context, it can be null
      Returns:
      the value, it must not return null because it will notified preprocessor that it supports the variable
    • setVariable

      public void setVariable(String varName, Value value, PreprocessorContext context)
      Description copied from interface: SpecialVariableProcessor
      Set a value to the variable
      Specified by:
      setVariable in interface SpecialVariableProcessor
      Parameters:
      varName - the variable name, must not be null
      value - the value to be set to the variable, must not be null
      context - the preprocessor context, it can be null