Class Checksummer<T>

java.lang.Object
com.atlassian.jira.functest.config.Checksummer<T>
Type Parameters:
T - The type of object to be hashed.

@NotThreadSafe public class Checksummer<T> extends Object
Keeps the checksums of a group of objects of type T.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
    Helps with the conversion of T into and from its different forms needed for the operation of the checksummer.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a checksummer that uses the passed helper to covert T to and from a form that allows it to be serialized.
    Checksummer(Checksummer.Helper<T> helper, String defaultSum)
    Create a checksummer that uses the passed helper to convert T to and from a form that allows it to be serialized.
  • Method Summary

    Modifier and Type
    Method
    Description
    Static factory method that will create a checksum that stores File objects by hashing their contents.
    Return the hash algorithm used when adding new objects to the checkum.
    boolean
    hasChanged(T object)
    Tells the caller if the passed object has a hash the same as the one already stored in the checksum.
    boolean
    Return true if the checksummer was modified since write(org.dom4j.Element) was called, false otherwise.
    void
    read(org.dom4j.Element element)
    Read the checksummer state as was previously saved using write(org.dom4j.Element).
    boolean
    remove(T object)
    Remove the passed object and its hash from checksummer.
    void
    setDefaultSum(String defaultSum)
    Set the default hash algorithm used when adding new objects.
    boolean
    update(T object)
    Update the current state of the passed object with its current hash.
    void
    write(org.dom4j.Element checkElement)
    Write the current state of the checksummer to the passed element.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Checksummer

      public Checksummer(Checksummer.Helper<T> helper)
      Create a checksummer that uses the passed helper to covert T to and from a form that allows it to be serialized.
      Parameters:
      helper - the helper this checksum will use to process instances of T.
    • Checksummer

      public Checksummer(Checksummer.Helper<T> helper, String defaultSum)
      Create a checksummer that uses the passed helper to convert T to and from a form that allows it to be serialized. The checksum will use the passed hashing algorithm for any new objects added to the checksum.
      Parameters:
      helper - the helper this checksum will use to process instance of T.
      defaultSum - the checksum used to add any new objects.
  • Method Details

    • fileChecksummer

      public static Checksummer<File> fileChecksummer(String hash)
      Static factory method that will create a checksum that stores File objects by hashing their contents. This can be used to find out quickly from a set of files which have changed.
      Parameters:
      hash - the checksum oused to add any new objects.
      Returns:
      a checkum of the contents of File objects.
    • getDefaultSum

      public String getDefaultSum()
      Return the hash algorithm used when adding new objects to the checkum.
      Returns:
      the hash algorithm used when added new objects to the checksum.
    • setDefaultSum

      public void setDefaultSum(String defaultSum)
      Set the default hash algorithm used when adding new objects.
      Parameters:
      defaultSum - the default hash algorithm used when adding new objects.
    • hasChanged

      public boolean hasChanged(T object)
      Tells the caller if the passed object has a hash the same as the one already stored in the checksum. This gives a good indication whether the passed object has changed since it was added to the checksum.

      The method will return true if the passed object has not already been added to the checksum.

      Parameters:
      object - the object to test.
      Returns:
      if the object has the same hash as when it was added to the checksum.
    • isModified

      public boolean isModified()
      Return true if the checksummer was modified since write(org.dom4j.Element) was called, false otherwise.
      Returns:
      true if the checksummer was modified since write(org.dom4j.Element) was called, false otherwise.
    • update

      public boolean update(T object)
      Update the current state of the passed object with its current hash. This will add the passed object to the checksum if it has not already been added.
      Parameters:
      object - the object to update or add.
      Returns:
      true if the object's hash was changed, false otherwise. Note that true will always be returned when adding new objects.
    • remove

      public boolean remove(T object)
      Remove the passed object and its hash from checksummer.
      Parameters:
      object - the object to remove from the checksummer.
      Returns:
      true if the object is removed, false otherwise
    • read

      public void read(org.dom4j.Element element)
      Read the checksummer state as was previously saved using write(org.dom4j.Element).
      Parameters:
      element - the element where the configuration is stored.
    • write

      public void write(org.dom4j.Element checkElement)
      Write the current state of the checksummer to the passed element. The checksummer can later be reconstructed by calling read(org.dom4j.Element).
      Parameters:
      checkElement - the element to write the state to.