Class DiffBuilder<T>
- java.lang.Object
-
- org.apache.commons.lang3.builder.DiffBuilder<T>
-
- Type Parameters:
T- type of the left and right object.
- All Implemented Interfaces:
Builder<DiffResult<T>>
public class DiffBuilder<T> extends java.lang.Object implements Builder<DiffResult<T>>
Assists in implementingDiffable.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
ToStringStylepassed to the constructor is embedded in the returnedDiffResultand influences the style of theDiffResult.toString()method. This style choice can be overridden by callingDiffResult.toString(ToStringStyle).See
ReflectionDiffBuilderfor a reflection based version of this class.- Since:
- 3.3
- See Also:
Diffable,Diff,DiffResult,ToStringStyle,ReflectionDiffBuilder
-
-
Constructor Summary
Constructors Constructor Description DiffBuilder(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DiffBuilder<T>append(java.lang.String fieldName, boolean[] lhs, boolean[] rhs)Test if twoboolean[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, boolean lhs, boolean rhs)Test if twobooleans are equal.DiffBuilder<T>append(java.lang.String fieldName, byte[] lhs, byte[] rhs)Test if twobyte[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, byte lhs, byte rhs)Test if twobytes are equal.DiffBuilder<T>append(java.lang.String fieldName, char[] lhs, char[] rhs)Test if twochar[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, char lhs, char rhs)Test if twochars are equal.DiffBuilder<T>append(java.lang.String fieldName, double[] lhs, double[] rhs)Test if twodouble[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, double lhs, double rhs)Test if twodoubles are equal.DiffBuilder<T>append(java.lang.String fieldName, float[] lhs, float[] rhs)Test if twofloat[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, float lhs, float rhs)Test if twofloats are equal.DiffBuilder<T>append(java.lang.String fieldName, int[] lhs, int[] rhs)Test if twoint[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, int lhs, int rhs)Test if twoints are equal.DiffBuilder<T>append(java.lang.String fieldName, long[] lhs, long[] rhs)Test if twolong[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, long lhs, long rhs)Test if twolongs are equal.DiffBuilder<T>append(java.lang.String fieldName, short[] lhs, short[] rhs)Test if twoshort[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, short lhs, short rhs)Test if twoshorts are equal.DiffBuilder<T>append(java.lang.String fieldName, java.lang.Object[] lhs, java.lang.Object[] rhs)Test if twoObject[]s are equal.DiffBuilder<T>append(java.lang.String fieldName, java.lang.Object lhs, java.lang.Object rhs)Test if twoObjectss are equal.DiffBuilder<T>append(java.lang.String fieldName, DiffResult<T> diffResult)Append diffs from anotherDiffResult.DiffResult<T>build()Builds aDiffResultbased on the differences appended to this builder.
-
-
-
Constructor Detail
-
DiffBuilder
public DiffBuilder(T lhs, T rhs, ToStringStyle style)
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:
lhs-thisobjectrhs- the object to diff againststyle- the style will use when outputting the objects,nulluses the default- Throws:
java.lang.NullPointerException- iflhsorrhsisnull
-
DiffBuilder
public DiffBuilder(T lhs, T rhs, ToStringStyle style, boolean testTriviallyEqual)
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:
lhs-thisobjectrhs- the object to diff againststyle- the style will use when outputting the objects,nulluses 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 fieldDiffif the trivially equal test is enabled and returns true. The result of this test is never changed throughout the life of thisDiffBuilder.- Throws:
java.lang.NullPointerException- iflhsorrhsisnull- Since:
- 3.4
-
-
Method Detail
-
append
public DiffBuilder<T> append(java.lang.String fieldName, boolean lhs, boolean rhs)
Test if twobooleans are equal.- Parameters:
fieldName- the field namelhs- the left-handbooleanrhs- the right-handboolean- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, boolean[] lhs, boolean[] rhs)
Test if twoboolean[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handboolean[]rhs- the right-handboolean[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, byte lhs, byte rhs)
Test if twobytes are equal.- Parameters:
fieldName- the field namelhs- the left-handbyterhs- the right-handbyte- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, byte[] lhs, byte[] rhs)
Test if twobyte[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handbyte[]rhs- the right-handbyte[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, char lhs, char rhs)
Test if twochars are equal.- Parameters:
fieldName- the field namelhs- the left-handcharrhs- the right-handchar- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, char[] lhs, char[] rhs)
Test if twochar[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handchar[]rhs- the right-handchar[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, DiffResult<T> diffResult)
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- theDiffResultto append- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnullor diffResult isnull- Since:
- 3.5
-
append
public DiffBuilder<T> append(java.lang.String fieldName, double lhs, double rhs)
Test if twodoubles are equal.- Parameters:
fieldName- the field namelhs- the left-handdoublerhs- the right-handdouble- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, double[] lhs, double[] rhs)
Test if twodouble[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handdouble[]rhs- the right-handdouble[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, float lhs, float rhs)
Test if twofloats are equal.- Parameters:
fieldName- the field namelhs- the left-handfloatrhs- the right-handfloat- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, float[] lhs, float[] rhs)
Test if twofloat[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handfloat[]rhs- the right-handfloat[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, int lhs, int rhs)
Test if twoints are equal.- Parameters:
fieldName- the field namelhs- the left-handintrhs- the right-handint- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, int[] lhs, int[] rhs)
Test if twoint[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handint[]rhs- the right-handint[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, long lhs, long rhs)
Test if twolongs are equal.- Parameters:
fieldName- the field namelhs- the left-handlongrhs- the right-handlong- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, long[] lhs, long[] rhs)
Test if twolong[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handlong[]rhs- the right-handlong[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, java.lang.Object lhs, java.lang.Object rhs)
Test if twoObjectss are equal.- Parameters:
fieldName- the field namelhs- the left-handObjectrhs- the right-handObject- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, java.lang.Object[] lhs, java.lang.Object[] rhs)
Test if twoObject[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handObject[]rhs- the right-handObject[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, short lhs, short rhs)
Test if twoshorts are equal.- Parameters:
fieldName- the field namelhs- the left-handshortrhs- the right-handshort- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
append
public DiffBuilder<T> append(java.lang.String fieldName, short[] lhs, short[] rhs)
Test if twoshort[]s are equal.- Parameters:
fieldName- the field namelhs- the left-handshort[]rhs- the right-handshort[]- Returns:
- this
- Throws:
java.lang.NullPointerException- if field name isnull
-
build
public DiffResult<T> build()
Builds aDiffResultbased on the differences appended to this builder.- Specified by:
buildin interfaceBuilder<T>- Returns:
- a
DiffResultcontaining the differences between the two objects.
-
-