org.pojomatic.internal
Class PojomatorImpl<T>

java.lang.Object
  extended by org.pojomatic.internal.PojomatorImpl<T>
All Implemented Interfaces:
Pojomator<T>

public class PojomatorImpl<T>
extends java.lang.Object
implements Pojomator<T>


Constructor Summary
PojomatorImpl(java.lang.Class<T> clazz)
          Creates an instance for clazz.
 
Method Summary
 Differences doDiff(T instance, T other)
          Compute the differences between instance and other among the properties examined by Pojomator.doEquals(Object, Object).
 boolean doEquals(T instance, java.lang.Object other)
          Compute whether instance and other are equal to each other in the sense of Object's equals method.
 int doHashCode(T instance)
          Compute the hashCode for a given instance of T.
 java.lang.String doToString(T instance)
          Compute the toString representation for a given instance of T
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PojomatorImpl

public PojomatorImpl(java.lang.Class<T> clazz)
              throws java.lang.IllegalArgumentException
Creates an instance for clazz.

Parameters:
clazz - the class
Throws:
java.lang.IllegalArgumentException - if clazz has no properties annotated for use with Pojomatic
Method Detail

doEquals

public boolean doEquals(T instance,
                        java.lang.Object other)
Compute whether instance and other are equal to each other in the sense of Object's equals method.

For this to return true, the following must hold:

Specified by:
doEquals in interface Pojomator<T>
Parameters:
instance - the instance to test against - must not be null
other - the instance to test
Returns:
true if instance should be considered equal to other, and false otherwise.
Throws:
java.lang.NullPointerException - if instance is null
See Also:
Object.equals(Object)

doHashCode

public int doHashCode(T instance)
Compute the hashCode for a given instance of T.

This is done by computing the hashCode of each property which has a PojomaticPolicy of HASHCODE_EQUALS or ALL (using 0 when the property is null), and combining them in a fashion similar to that of List.hashCode().

Specified by:
doHashCode in interface Pojomator<T>
Parameters:
instance - the instance to compute the hashCode for - must not be null
Returns:
the hashCode of instance
Throws:
java.lang.NullPointerException - if instance is null
See Also:
Object.hashCode()

doToString

public java.lang.String doToString(T instance)
Compute the toString representation for a given instance of T

The format used depends on the PojoFormatter used for the POJO, and the PropertyFormatter of each property.

For example, suppose a class Person has properties firstName and lastName which are included in its String representation. No PojoFormatter or PropertyFormatter are specified, so the defaults are used. In particular, instances of DefaultPropertyFormatter will be created for firstName and lastName (referred to here as firstNameFormatter and lastNameFormatter, respectively). Let firstNameProperty and lastNameProperty refer to the instances of PropertyElement referring to the properties firstName and lastName respectively.

For a non-null Person instance, the String representation will be created by creating an instance of DefaultPojoFormatter for the Person class (referred to here as personFormatter), and then concatenating the results of following:

  1. personFormatter.getToStringPrefix(Person.class)
  2. personFormatter.getPropertyPrefix(firstNameProperty)
  3. firstNameFormatter.format(firstName)
  4. personFormatter.getPropertySuffix(firstNameProperty)
  5. personFormatter.getPropertyPrefix(lastNameProperty)
  6. lastNameFormatter.format(lastName)
  7. personFormatter.getPropertySuffix(lasttNameProperty)
  8. personFormatter.getToStringSuffix(Person.class)

Specified by:
doToString in interface Pojomator<T>
Parameters:
instance - the instance to compute the toString representation for - must not be null
Returns:
the toString representation of instance
Throws:
java.lang.NullPointerException - if instance is null
See Also:
Property.name()

doDiff

public Differences doDiff(T instance,
                          T other)
Description copied from interface: Pojomator
Compute the differences between instance and other among the properties examined by Pojomator.doEquals(Object, Object). It is guaranteed that invoking Differences.areEqual() on the returned object will return true iff instance.equals(other).

Specified by:
doDiff in interface Pojomator<T>
Parameters:
instance - the instance to diff against - must not be null
other - the instance to diff
Returns:
the differences between instance and other among the properties examined by Pojomator.doEquals(Object, Object).


Copyright © 2008-2009. All Rights Reserved.