Class DiffBuilder<T>
- Type Parameters:
T
- type of the left and right object.
- All Implemented Interfaces:
Builder<DiffResult<T>>
Diffable.diff(Object)
methods.
To use this class, write code as follows:
public class Person implements Diffable<Person> { String name; int age; boolean smoker; ... public DiffResult diff(Person obj) { // No need for null check, as NullPointerException correct if obj is null return new DiffBuilder(this, obj, ToStringStyle.SHORT_PREFIX_STYLE) .append("name", this.name, obj.name) .append("age", this.age, obj.age) .append("smoker", this.smoker, obj.smoker) .build(); } }
The ToStringStyle
passed to the constructor is embedded in the
returned DiffResult
and influences the style of the
DiffResult.toString()
method. This style choice can be overridden by
calling DiffResult.toString(ToStringStyle)
.
See ReflectionDiffBuilder
for a reflection based version of this class.
- Since:
- 3.3
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionDiffBuilder
(T lhs, T rhs, ToStringStyle style) Constructs a builder for the specified objects with the specified style.DiffBuilder
(T lhs, T rhs, ToStringStyle style, boolean testTriviallyEqual) Constructs a builder for the specified objects with the specified style. -
Method Summary
Modifier and TypeMethodDescriptionTest if twoboolean[]
s are equal.Test if twoboolean
s are equal.Test if twobyte[]
s are equal.Test if twobyte
s are equal.Test if twochar[]
s are equal.Test if twochar
s are equal.Test if twodouble[]
s are equal.Test if twodouble
s are equal.Test if twofloat[]
s are equal.Test if twofloat
s are equal.Test if twoint[]
s are equal.Test if twoint
s are equal.Test if twolong[]
s are equal.Test if twolong
s are equal.Test if twoshort[]
s are equal.Test if twoshort
s are equal.Test if twoObject[]
s are equal.Test if twoObjects
s are equal.append
(String fieldName, DiffResult<T> diffResult) Append diffs from anotherDiffResult
.build()
Builds aDiffResult
based on the differences appended to this builder.
-
Constructor Details
-
DiffBuilder
Constructs a builder for the specified objects with the specified style.If
lhs == rhs
orlhs.equals(rhs)
then the builder will not evaluate any calls toappend(...)
and will return an emptyDiffResult
whenbuild()
is executed.This delegates to
DiffBuilder(Object, Object, ToStringStyle, boolean)
with the testTriviallyEqual flag enabled.- Parameters:
lhs
-this
objectrhs
- the object to diff againststyle
- the style will use when outputting the objects,null
uses the default- Throws:
NullPointerException
- iflhs
orrhs
isnull
-
DiffBuilder
Constructs a builder for the specified objects with the specified style.If
lhs == rhs
orlhs.equals(rhs)
then the builder will not evaluate any calls toappend(...)
and will return an emptyDiffResult
whenbuild()
is executed.- Parameters:
lhs
-this
objectrhs
- the object to diff againststyle
- the style will use when outputting the objects,null
uses the defaulttestTriviallyEqual
- If true, this will test if lhs and rhs are the same or equal. All of the append(fieldName, lhs, rhs) methods will abort without creating a fieldDiff
if the trivially equal test is enabled and returns true. The result of this test is never changed throughout the life of thisDiffBuilder
.- Throws:
NullPointerException
- iflhs
orrhs
isnull
- Since:
- 3.4
-
-
Method Details
-
append
Test if twoboolean
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handboolean
rhs
- the right-handboolean
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoboolean[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handboolean[]
rhs
- the right-handboolean[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twobyte
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handbyte
rhs
- the right-handbyte
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twobyte[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handbyte[]
rhs
- the right-handbyte[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twochar
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handchar
rhs
- the right-handchar
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twochar[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handchar[]
rhs
- the right-handchar[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Append diffs from anotherDiffResult
.This method is useful if you want to compare properties which are themselves Diffable and would like to know which specific part of it is different.
public class Person implements Diffable<Person> { String name; Address address; // implements Diffable<Address> ... public DiffResult diff(Person obj) { return new DiffBuilder(this, obj, ToStringStyle.SHORT_PREFIX_STYLE) .append("name", this.name, obj.name) .append("address", this.address.diff(obj.address)) .build(); } }
- Parameters:
fieldName
- the field namediffResult
- theDiffResult
to append- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
or diffResult isnull
- Since:
- 3.5
-
append
Test if twodouble
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handdouble
rhs
- the right-handdouble
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twodouble[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handdouble[]
rhs
- the right-handdouble[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twofloat
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handfloat
rhs
- the right-handfloat
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twofloat[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handfloat[]
rhs
- the right-handfloat[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoint
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handint
rhs
- the right-handint
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoint[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handint[]
rhs
- the right-handint[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twolong
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handlong
rhs
- the right-handlong
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twolong[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handlong[]
rhs
- the right-handlong[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoObjects
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handObject
rhs
- the right-handObject
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoObject[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handObject[]
rhs
- the right-handObject[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoshort
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handshort
rhs
- the right-handshort
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
append
Test if twoshort[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-handshort[]
rhs
- the right-handshort[]
- Returns:
- this
- Throws:
NullPointerException
- if field name isnull
-
build
Builds aDiffResult
based on the differences appended to this builder.- Specified by:
build
in interfaceBuilder<T>
- Returns:
- a
DiffResult
containing the differences between the two objects.
-