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<Person> diff(Person obj) {
// No need for null check, as NullPointerException correct if obj is null
return 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
Nested ClassesModifier and TypeClassDescriptionstatic final classConstructs a new instance. -
Constructor Summary
ConstructorsConstructorDescriptionDiffBuilder(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 twobooleans are equal.Tests if twobyte[]s are equal.Tests if twobytes are equal.Tests if twochar[]s are equal.Tests if twochars are equal.Tests if twodouble[]s are equal.Tests if twodoubles are equal.Tests if twofloat[]s are equal.Test if twofloats are equal.Tests if twoint[]s are equal.Tests if twoints are equal.Tests if twolong[]s are equal.Tests if twolongs are equal.Tests if twoshort[]s are equal.Tests if twoshorts are equal.Tests if twoObject[]s are equal.Tests if twoObjectss are equal.append(String fieldName, DiffResult<?> diffResult) Appends diffs from anotherDiffResult.build()Builds aDiffResultbased 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 == rhsorlhs.equals(rhs)then the builder will not evaluate any calls toappend(...)and will return an emptyDiffResultwhenbuild()is executed.This delegates to
DiffBuilder(Object, Object, ToStringStyle, boolean)with the testTriviallyEqual flag enabled.- Parameters:
left-thisobjectright- the object to diff againststyle- the style to use when outputting the objects,nulluses the default- Throws:
NullPointerException- iflhsorrhsisnull
-
DiffBuilder
Deprecated.UseDiffBuilder.Builder.Constructs a builder for the specified objects with the specified style.If
lhs == rhsorlhs.equals(rhs)then the builder will not evaluate any calls toappend(...)and will return an emptyDiffResultwhenbuild()is executed.- Parameters:
left-thisobjectright- the object to diff againststyle- the style to use when outputting the objects,nulluses 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 fieldDiffif the trivially equal test is enabled and returns true. The result of this test is never changed throughout the life of thisDiffBuilder.- Throws:
NullPointerException- iflhsorrhsisnull- 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 twobooleans are equal.- Parameters:
fieldName- the field namelhs- the left-hand sidebooleanrhs- the right-hand sideboolean- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Tests if twobytes are equal.- Parameters:
fieldName- the field namelhs- the left-hand sidebyterhs- the right-hand sidebyte- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Tests if twochars are equal.- Parameters:
fieldName- the field namelhs- the left-hand sidecharrhs- the right-hand sidechar- Returns:
thisinstance.- 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:
thisinstance.- 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- theDiffResultto append- Returns:
thisinstance.- Throws:
NullPointerException- if field name isnullor diffResult isnull- Since:
- 3.5
-
append
Tests if twodoubles are equal.- Parameters:
fieldName- the field namelhs- the left-hand sidedoublerhs- the right-hand sidedouble- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Test if twofloats are equal.- Parameters:
fieldName- the field namelhs- the left-hand sidefloatrhs- the right-hand sidefloat- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Tests if twoints are equal.- Parameters:
fieldName- the field namelhs- the left-hand sideintrhs- the right-hand sideint- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Tests if twolongs are equal.- Parameters:
fieldName- the field namelhs- the left-hand sidelongrhs- the right-hand sidelong- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Tests if twoObjectss are equal.- Parameters:
fieldName- the field namelhs- the left-hand sideObjectrhs- the right-hand sideObject- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
append
Tests if twoshorts are equal.- Parameters:
fieldName- the field namelhs- the left-hand sideshortrhs- the right-hand sideshort- Returns:
thisinstance.- 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:
thisinstance.- Throws:
NullPointerException- if field name isnull
-
build
Builds aDiffResultbased on the differences appended to this builder.- Specified by:
buildin interfaceBuilder<T>- Returns:
- a
DiffResultcontaining the differences between the two objects.
-
DiffBuilder.Builder.