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.<Person>builder()
.setLeft(this)
.setRight(obj)
.setStyle(ToStringStyle.SHORT_PREFIX_STYLE))
.build()
.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:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
Constructs a new instance. -
Constructor Summary
ConstructorDescriptionDiffBuilder
(T left, T right, ToStringStyle style) Deprecated.DiffBuilder
(T left, T right, ToStringStyle style, boolean testObjectsEquals) Deprecated.UseDiffBuilder.Builder
. -
Method Summary
Modifier and TypeMethodDescriptionTests if twoboolean[]
s are equal.Tests if twoboolean
s are equal.Tests if twobyte[]
s are equal.Tests if twobyte
s are equal.Tests if twochar[]
s are equal.Tests if twochar
s are equal.Tests if twodouble[]
s are equal.Tests if twodouble
s are equal.Tests if twofloat[]
s are equal.Test if twofloat
s are equal.Tests if twoint[]
s are equal.Tests if twoint
s are equal.Tests if twolong[]
s are equal.Tests if twolong
s are equal.Tests if twoshort[]
s are equal.Tests if twoshort
s are equal.Tests if twoObject[]
s are equal.Tests if twoObjects
s are equal.append
(String fieldName, DiffResult<?> diffResult) Appends diffs from anotherDiffResult
.build()
Builds aDiffResult
based on the differences appended to this builder.static <T> DiffBuilder.Builder<T>
builder()
Constructs a newDiffBuilder.Builder
.
-
Constructor Details
-
DiffBuilder
Deprecated.UseDiffBuilder.Builder
.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:
left
-this
objectright
- the object to diff againststyle
- the style to use when outputting the objects,null
uses the default- Throws:
NullPointerException
- iflhs
orrhs
isnull
-
DiffBuilder
Deprecated.UseDiffBuilder.Builder
.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:
left
-this
objectright
- the object to diff againststyle
- the style to use when outputting the objects,null
uses the defaulttestObjectsEquals
- 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
-
builder
Constructs a newDiffBuilder.Builder
.- Type Parameters:
T
- type of the left and right object.- Returns:
- a new
DiffBuilder.Builder
. - Since:
- 3.15.0
-
append
Tests if twoboolean
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideboolean
rhs
- the right-hand sideboolean
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoboolean[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideboolean[]
rhs
- the right-hand sideboolean[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twobyte
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidebyte
rhs
- the right-hand sidebyte
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twobyte[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidebyte[]
rhs
- the right-hand sidebyte[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twochar
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidechar
rhs
- the right-hand sidechar
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twochar[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidechar[]
rhs
- the right-hand sidechar[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Appends diffs from anotherDiffResult
.Useful this method 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
instance.- Throws:
NullPointerException
- if field name isnull
or diffResult isnull
- Since:
- 3.5
-
append
Tests if twodouble
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidedouble
rhs
- the right-hand sidedouble
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twodouble[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidedouble[]
rhs
- the right-hand sidedouble[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Test if twofloat
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidefloat
rhs
- the right-hand sidefloat
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twofloat[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidefloat[]
rhs
- the right-hand sidefloat[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoint
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideint
rhs
- the right-hand sideint
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoint[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideint[]
rhs
- the right-hand sideint[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twolong
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidelong
rhs
- the right-hand sidelong
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twolong[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sidelong[]
rhs
- the right-hand sidelong[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoObjects
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideObject
rhs
- the right-hand sideObject
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoObject[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideObject[]
rhs
- the right-hand sideObject[]
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoshort
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideshort
rhs
- the right-hand sideshort
- Returns:
this
instance.- Throws:
NullPointerException
- if field name isnull
-
append
Tests if twoshort[]
s are equal.- Parameters:
fieldName
- the field namelhs
- the left-hand sideshort[]
rhs
- the right-hand sideshort[]
- Returns:
this
instance.- 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.
-
DiffBuilder.Builder
.