Checksum (Apache Ant API)
Description: declaration: package: org.apache.tools.ant.taskdefs, class: Checksum

# Class Checksum

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.tools.ant.taskdefs.MatchingTask
org.apache.tools.ant.taskdefs.Checksum

All Implemented Interfaces:
  `Cloneable, Condition, SelectorContainer`

public class Checksum extends MatchingTask implements Condition
Used to create or verify file checksums.

Since:
  Ant 1.5

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `Checksum.FormatElement`
  Helper class for the format attribute.

- ## Field Summary

  ### Fields inherited from class MatchingTask

  `fileset`
  Modifier and Type
  Field
  Description
  `protected FileSet`
  `fileset`

  ### Fields inherited from class Task

  `target, taskName, taskType, wrapper`
  Modifier and Type
  Field
  Description
  `protected Target`
  `target`
  Deprecated.
  since 1.6.x.
  `protected String`
  `taskName`
  Deprecated.
  since 1.6.x.
  `protected String`
  `taskType`
  Deprecated.
  since 1.6.x.
  `protected RuntimeConfigurable`
  `wrapper`
  Deprecated.
  since 1.6.x.

  ### Fields inherited from class ProjectComponent

  `description, location, project`
  Modifier and Type
  Field
  Description
  `protected String`
  `description`
  Deprecated.
  since 1.6.x.
  `protected Location`
  `location`
  Deprecated.
  since 1.6.x.
  `protected Project`
  `project`
  Deprecated.
  since 1.6.x.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Checksum()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(ResourceCollection rc)`
  Add a resource collection.
  `void`
  `addFileset(FileSet set)`
  Files to generate checksums for.
  `static byte[]`
  `decodeHex(char[] data)`
  Converts an array of characters representing hexadecimal values into an array of bytes of those same values.
  `boolean`
  `eval()`
  Calculate the checksum(s)
  `void`
  `execute()`
  Calculate the checksum(s).
  `void`
  `setAlgorithm(String algorithm)`
  Specifies the algorithm to be used to compute the checksum.
  `void`
  `setFile(File file)`
  Sets the file for which the checksum is to be calculated.
  `void`
  `setFileext(String fileext)`
  Sets the file extension that is be to used to create or identify destination file.
  `void`
  `setForceOverwrite(boolean forceOverwrite)`
  Whether or not to overwrite existing file irrespective of whether it is newer than the source file.
  `void`
  `setFormat(Checksum.FormatElement e)`
  Select the in/output pattern via a well know format name.
  `void`
  `setPattern(String pattern)`
  Specify the pattern to use as a MessageFormat pattern.
  `void`
  `setProperty(String property)`
  Sets the property to hold the generated checksum.
  `void`
  `setProvider(String provider)`
  Sets the MessageDigest algorithm provider to be used to calculate the checksum.
  `void`
  `setReadBufferSize(int size)`
  The size of the read buffer to use.
  `void`
  `setTodir(File todir)`
  Sets the root directory where checksum files will be written/read
  `void`
  `setTotalproperty(String totalproperty)`
  Sets the property to hold the generated total checksum for all files.
  `void`
  `setVerifyproperty(String verifyProperty)`
  Sets the verify property.

  ### Methods inherited from class MatchingTask

  `add, addAnd, addContains, addContainsRegexp, addCustom, addDate, addDepend, addDepth, addDifferent, addFilename, addMajority, addModified, addNone, addNot, addOr, addPresent, addSelector, addSize, addType, appendSelector, createExclude, createExcludesFile, createInclude, createIncludesFile, createPatternSet, getDirectoryScanner, getImplicitFileSet, getSelectors, hasSelectors, selectorCount, selectorElements, setCaseSensitive, setDefaultexcludes, setExcludes, setExcludesfile, setFollowSymlinks, setIncludes, setIncludesfile, setProject, XsetIgnore, XsetItems`
  Modifier and Type
  Method
  Description
  `void`
  `add(FileSelector selector)`
  add an arbitrary selector
  `void`
  `addAnd(AndSelector selector)`
  add an "And" selector entry on the selector list
  `void`
  `addContains(ContainsSelector selector)`
  add a contains selector entry on the selector list
  `void`
  `addContainsRegexp(ContainsRegexpSelector selector)`
  add a regular expression selector entry on the selector list
  `void`
  `addCustom(ExtendSelector selector)`
  add an extended selector entry on the selector list
  `void`
  `addDate(DateSelector selector)`
  add a selector date entry on the selector list
  `void`
  `addDepend(DependSelector selector)`
  add a depends selector entry on the selector list
  `void`
  `addDepth(DepthSelector selector)`
  add a depth selector entry on the selector list
  `void`
  `addDifferent(DifferentSelector selector)`
  add a type selector entry on the type list
  `void`
  `addFilename(FilenameSelector selector)`
  add a selector filename entry on the selector list
  `void`
  `addMajority(MajoritySelector selector)`
  add a majority selector entry on the selector list
  `void`
  `addModified(ModifiedSelector selector)`
  add the modified selector
  `void`
  `addNone(NoneSelector selector)`
  add a "None" selector entry on the selector list
  `void`
  `addNot(NotSelector selector)`
  add a "Not" selector entry on the selector list
  `void`
  `addOr(OrSelector selector)`
  add an "Or" selector entry on the selector list
  `void`
  `addPresent(PresentSelector selector)`
  add a present selector entry on the selector list
  `void`
  `addSelector(SelectSelector selector)`
  add a "Select" selector entry on the selector list
  `void`
  `addSize(SizeSelector selector)`
  add a selector size entry on the selector list
  `void`
  `addType(TypeSelector selector)`
  add a type selector entry on the type list
  `void`
  `appendSelector(FileSelector selector)`
  Add a new selector into this container.
  `PatternSet.NameEntry`
  `createExclude()`
  add a name entry on the exclude list
  `PatternSet.NameEntry`
  `createExcludesFile()`
  add a name entry on the include files list
  `PatternSet.NameEntry`
  `createInclude()`
  add a name entry on the include list
  `PatternSet.NameEntry`
  `createIncludesFile()`
  add a name entry on the include files list
  `PatternSet`
  `createPatternSet()`
  add a set of patterns
  `protected DirectoryScanner`
  `getDirectoryScanner(File baseDir)`
  Returns the directory scanner needed to access the files to process.
  `protected final FileSet`
  `getImplicitFileSet()`
  Accessor for the implicit fileset.
  `FileSelector[]`
  `getSelectors(Project p)`
  Returns the set of selectors as an array.
  `boolean`
  `hasSelectors()`
  Indicates whether there are any selectors here.
  `int`
  `selectorCount()`
  Gives the count of the number of selectors in this container
  `Enumeration<FileSelector>`
  `selectorElements()`
  Returns an enumerator for accessing the set of selectors.
  `void`
  `setCaseSensitive(boolean isCaseSensitive)`
  Sets case sensitivity of the file system
  `void`
  `setDefaultexcludes(boolean useDefaultExcludes)`
  Sets whether default exclusions should be used or not.
  `void`
  `setExcludes(String excludes)`
  Sets the set of exclude patterns.
  `void`
  `setExcludesfile(File excludesfile)`
  Sets the name of the file containing the includes patterns.
  `void`
  `setFollowSymlinks(boolean followSymlinks)`
  Sets whether or not symbolic links or Windows junctions should be followed.
  `void`
  `setIncludes(String includes)`
  Sets the set of include patterns.
  `void`
  `setIncludesfile(File includesfile)`
  Sets the name of the file containing the includes patterns.
  `void`
  `setProject(Project project)`
  Sets the project object of this component.
  `void`
  `XsetIgnore(String ignoreString)`
  List of filenames and directory names to not include.
  `void`
  `XsetItems(String itemString)`
  Set this to be the items in the base directory that you want to be included.

  ### Methods inherited from class 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`
  Modifier and Type
  Method
  Description
  `final void`
  `bindToOwner(Task owner)`
  Bind a task to another; use this when configuring a newly created task to do work on behalf of another.
  `Target`
  `getOwningTarget()`
  Returns the container target of this task.
  `RuntimeConfigurable`
  `getRuntimeConfigurableWrapper()`
  Returns the wrapper used for runtime configuration.
  `String`
  `getTaskName()`
  Returns the name to use in logging messages.
  `String`
  `getTaskType()`
  Return the type of task.
  `protected RuntimeConfigurable`
  `getWrapper()`
  Return the runtime configurable structure for this task.
  `protected void`
  `handleErrorFlush(String output)`
  Handles an error line by logging it with the WARN priority.
  `protected void`
  `handleErrorOutput(String output)`
  Handles an error output by logging it with the WARN priority.
  `protected void`
  `handleFlush(String output)`
  Handles output by logging it with the INFO priority.
  `protected int`
  `handleInput(byte[] buffer, int offset, int length)`
  Handle an input request by this task.
  `protected void`
  `handleOutput(String output)`
  Handles output by logging it with the INFO priority.
  `void`
  `init()`
  Called by the project to let the task initialize properly.
  `protected final boolean`
  `isInvalid()`
  Has this task been marked invalid?
  `void`
  `log(String msg)`
  Logs a message with the default (INFO) priority.
  `void`
  `log(String msg, int msgLevel)`
  Logs a message with the given priority.
  `void`
  `log(String msg, Throwable t, int msgLevel)`
  Logs a message with the given priority.
  `void`
  `log(Throwable t, int msgLevel)`
  Logs a message with the given priority.
  `void`
  `maybeConfigure()`
  Configures this task - if it hasn't been done already.
  `final void`
  `perform()`
  Performs this task if it's still valid, or gets a replacement version and performs that otherwise.
  `void`
  `reconfigure()`
  Force the task to be reconfigured from its RuntimeConfigurable.
  `void`
  `setOwningTarget(Target target)`
  Sets the target container of this task.
  `void`
  `setRuntimeConfigurableWrapper(RuntimeConfigurable wrapper)`
  Sets the wrapper to be used for runtime configuration.
  `void`
  `setTaskName(String name)`
  Sets the name to use in logging messages.
  `void`
  `setTaskType(String type)`
  Sets the name with which the task has been invoked.

  ### Methods inherited from class ProjectComponent

  `clone, getDescription, getLocation, getProject, setDescription, setLocation`
  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  `String`
  `getDescription()`
  Returns the description of the current action.
  `Location`
  `getLocation()`
  Returns the file/location where this task was defined.
  `Project`
  `getProject()`
  Returns the project to which this component belongs.
  `void`
  `setDescription(String desc)`
  Sets a description of the current action.
  `void`
  `setLocation(Location location)`
  Sets the file/location where this task was defined.

  ### Methods inherited from class Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Checksum

    public Checksum()

- ## Method Details

  - ### setFile

    public void setFile(File file)
    Sets the file for which the checksum is to be calculated.
    Parameters:
      `file` - a `File` value

  - ### setTodir

    public void setTodir(File todir)
    Sets the root directory where checksum files will be written/read
    Parameters:
      `todir` - the directory to write to
    Since:
      Ant 1.6

  - ### setAlgorithm

    public void setAlgorithm(String algorithm)
    Specifies the algorithm to be used to compute the checksum. Defaults to "MD5". Other popular algorithms like "SHA" may be used as well.
    Parameters:
      `algorithm` - a `String` value

  - ### setProvider

    public void setProvider(String provider)
    Sets the MessageDigest algorithm provider to be used to calculate the checksum.
    Parameters:
      `provider` - a `String` value

  - ### setFileext

    public void setFileext(String fileext)
    Sets the file extension that is be to used to create or identify destination file.
    Parameters:
      `fileext` - a `String` value

  - ### setProperty

    public void setProperty(String property)
    Sets the property to hold the generated checksum.
    Parameters:
      `property` - a `String` value

  - ### setTotalproperty

    public void setTotalproperty(String totalproperty)
    Sets the property to hold the generated total checksum for all files.
    Parameters:
      `totalproperty` - a `String` value
    Since:
      Ant 1.6

  - ### setVerifyproperty

    public void setVerifyproperty(String verifyProperty)
    Sets the verify property. This project property holds the result of a checksum verification - "true" or "false"
    Parameters:
      `verifyProperty` - a `String` value

  - ### setForceOverwrite

    public void setForceOverwrite(boolean forceOverwrite)
    Whether or not to overwrite existing file irrespective of whether it is newer than the source file. Defaults to false.
    Parameters:
      `forceOverwrite` - a `boolean` value

  - ### setReadBufferSize

    public void setReadBufferSize(int size)
    The size of the read buffer to use.
    Parameters:
      `size` - an `int` value

  - ### setFormat

    public void setFormat(Checksum.FormatElement e)
    Select the in/output pattern via a well know format name.
    Parameters:
      `e` - an `enumerated` value
    Since:
      1.7.0

  - ### setPattern

    public void setPattern(String pattern)
    Specify the pattern to use as a MessageFormat pattern.

    {0} gets replaced by the checksum, {1} by the filename.

    Parameters:
      `pattern` - a `String` value
    Since:
      1.7.0

  - ### addFileset

    public void addFileset(FileSet set)
    Files to generate checksums for.
    Parameters:
      `set` - a fileset of files to generate checksums for.

  - ### add

    public void add(ResourceCollection rc)
    Add a resource collection.
    Parameters:
      `rc` - the ResourceCollection to add.

  - ### execute

    public void execute() throws BuildException
    Calculate the checksum(s).
    Overrides:
      `execute` in class `Task`
    Throws:
      `BuildException` - on error

  - ### eval

    public boolean eval() throws BuildException
    Calculate the checksum(s)
    Specified by:
      `eval` in interface `Condition`
    Returns:
      Returns true if the checksum verification test passed, false otherwise.
    Throws:
      `BuildException` - on error

  - ### decodeHex

    public static byte[] decodeHex(char[] data) throws BuildException
    Converts an array of characters representing hexadecimal values into an array of bytes of those same values. The returned array will be half the length of the passed array, as it takes two characters to represent any given byte. An exception is thrown if the passed char array has an odd number of elements. NOTE: This code is copied from jakarta-commons codec.
    Parameters:
      `data` - an array of characters representing hexadecimal values
    Returns:
      the converted array of bytes
    Throws:
      `BuildException` - on error