com.atlassian.jira.functest.config
Class Checksummer<T>

java.lang.Object
  extended by 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
static interface Checksummer.Helper<T>
          Helps with the conversion of T into and from its different forms needed for the operation of the checksummer.
 
Constructor Summary
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.
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
static Checksummer<File> fileChecksummer(String hash)
          Static factory method that will create a checksum that stores File objects by hashing their contents.
 String getDefaultSum()
          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 isModified()
          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 Detail

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 Detail

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.


Copyright © 2002-2012 Atlassian. All Rights Reserved.