Class DiffBuilder
- java.lang.Object
-
- org.apache.commons.lang3.builder.DiffBuilder
-
- All Implemented Interfaces:
Builder<DiffResult>
public class DiffBuilder extends java.lang.Object implements Builder<DiffResult>
Assists in implementing
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
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).- Since:
- 3.3
- Version:
- $Id: DiffBuilder.java 1669782 2015-03-28 15:05:04Z britter $
- See Also:
Diffable,Diff,DiffResult,ToStringStyle
-
-
Constructor Summary
Constructors Constructor Description DiffBuilder(java.lang.Object lhs, java.lang.Object rhs, ToStringStyle style)Constructs a builder for the specified objects with the specified style.DiffBuilder(java.lang.Object lhs, java.lang.Object 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 DiffBuilderappend(java.lang.String fieldName, boolean[] lhs, boolean[] rhs)Test if twoboolean[]s are equal.DiffBuilderappend(java.lang.String fieldName, boolean lhs, boolean rhs)Test if twobooleans are equal.DiffBuilderappend(java.lang.String fieldName, byte[] lhs, byte[] rhs)Test if twobyte[]s are equal.DiffBuilderappend(java.lang.String fieldName, byte lhs, byte rhs)Test if twobytes are equal.DiffBuilderappend(java.lang.String fieldName, char[] lhs, char[] rhs)Test if twochar[]s are equal.DiffBuilderappend(java.lang.String fieldName, char lhs, char rhs)Test if twochars are equal.DiffBuilderappend(java.lang.String fieldName, double[] lhs, double[] rhs)Test if twodouble[]s are equal.DiffBuilderappend(java.lang.String fieldName, double lhs, double rhs)Test if twodoubles are equal.DiffBuilderappend(java.lang.String fieldName, float[] lhs, float[] rhs)Test if twofloat[]s are equal.DiffBuilderappend(java.lang.String fieldName, float lhs, float rhs)Test if twofloats are equal.DiffBuilderappend(java.lang.String fieldName, int[] lhs, int[] rhs)Test if twoint[]s are equal.DiffBuilderappend(java.lang.String fieldName, int lhs, int rhs)Test if twoints are equal.DiffBuilderappend(java.lang.String fieldName, long[] lhs, long[] rhs)Test if twolong[]s are equal.DiffBuilderappend(java.lang.String fieldName, long lhs, long rhs)Test if twolongs are equal.DiffBuilderappend(java.lang.String fieldName, short[] lhs, short[] rhs)Test if twoshort[]s are equal.DiffBuilderappend(java.lang.String fieldName, short lhs, short rhs)Test if twoshorts are equal.DiffBuilderappend(java.lang.String fieldName, java.lang.Object[] lhs, java.lang.Object[] rhs)Test if twoObject[]s are equal.DiffBuilderappend(java.lang.String fieldName, java.lang.Object lhs, java.lang.Object rhs)Test if twoObjectss are equal.DiffResultbuild()Builds aDiffResultbased on the differences appended to this builder.
-
-
-
Constructor Detail
-
DiffBuilder
public DiffBuilder(java.lang.Object lhs, java.lang.Object 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.IllegalArgumentException- iflhsorrhsisnull- Since:
- 3.4
-
DiffBuilder
public DiffBuilder(java.lang.Object lhs, java.lang.Object 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.IllegalArgumentException- iflhsorrhsisnull
-
-
Method Detail
-
append
public DiffBuilder append(java.lang.String fieldName, boolean lhs, boolean rhs)
Test if two
booleans are equal.- Parameters:
fieldName- the field namelhs- the left handbooleanrhs- the right handboolean- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, boolean[] lhs, boolean[] rhs)
Test if two
boolean[]s are equal.- Parameters:
fieldName- the field namelhs- the left handboolean[]rhs- the right handboolean[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, byte lhs, byte rhs)
Test if two
bytes are equal.- Parameters:
fieldName- the field namelhs- the left handbyterhs- the right handbyte- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, byte[] lhs, byte[] rhs)
Test if two
byte[]s are equal.- Parameters:
fieldName- the field namelhs- the left handbyte[]rhs- the right handbyte[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, char lhs, char rhs)
Test if two
chars are equal.- Parameters:
fieldName- the field namelhs- the left handcharrhs- the right handchar- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, char[] lhs, char[] rhs)
Test if two
char[]s are equal.- Parameters:
fieldName- the field namelhs- the left handchar[]rhs- the right handchar[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, double lhs, double rhs)
Test if two
doubles are equal.- Parameters:
fieldName- the field namelhs- the left handdoublerhs- the right handdouble- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, double[] lhs, double[] rhs)
Test if two
double[]s are equal.- Parameters:
fieldName- the field namelhs- the left handdouble[]rhs- the right handdouble[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, float lhs, float rhs)
Test if two
floats are equal.- Parameters:
fieldName- the field namelhs- the left handfloatrhs- the right handfloat- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, float[] lhs, float[] rhs)
Test if two
float[]s are equal.- Parameters:
fieldName- the field namelhs- the left handfloat[]rhs- the right handfloat[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, int lhs, int rhs)
Test if two
ints are equal.- Parameters:
fieldName- the field namelhs- the left handintrhs- the right handint- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, int[] lhs, int[] rhs)
Test if two
int[]s are equal.- Parameters:
fieldName- the field namelhs- the left handint[]rhs- the right handint[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, long lhs, long rhs)
Test if two
longs are equal.- Parameters:
fieldName- the field namelhs- the left handlongrhs- the right handlong- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, long[] lhs, long[] rhs)
Test if two
long[]s are equal.- Parameters:
fieldName- the field namelhs- the left handlong[]rhs- the right handlong[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, short lhs, short rhs)
Test if two
shorts are equal.- Parameters:
fieldName- the field namelhs- the left handshortrhs- the right handshort- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, short[] lhs, short[] rhs)
Test if two
short[]s are equal.- Parameters:
fieldName- the field namelhs- the left handshort[]rhs- the right handshort[]- Returns:
- this
- Throws:
java.lang.IllegalArgumentException- if field name isnull
-
append
public DiffBuilder append(java.lang.String fieldName, java.lang.Object lhs, java.lang.Object rhs)
Test if two
Objectss are equal.- Parameters:
fieldName- the field namelhs- the left handObjectrhs- the right handObject- Returns:
- this
-
append
public DiffBuilder append(java.lang.String fieldName, java.lang.Object[] lhs, java.lang.Object[] rhs)
Test if two
Object[]s are equal.- Parameters:
fieldName- the field namelhs- the left handObject[]rhs- the right handObject[]- Returns:
- this
-
build
public DiffResult build()
Builds a
DiffResultbased on the differences appended to this builder.- Specified by:
buildin interfaceBuilder<DiffResult>- Returns:
- a
DiffResultcontaining the differences between the two objects.
-
-