Package org.apache.commons.lang3.builder
Class ReflectionDiffBuilder<T>
- java.lang.Object
-
- org.apache.commons.lang3.builder.ReflectionDiffBuilder<T>
-
- Type Parameters:
T- type of the left and right object to diff.
- All Implemented Interfaces:
Builder<DiffResult<T>>
public class ReflectionDiffBuilder<T> extends java.lang.Object implements Builder<DiffResult<T>>
Assists in implementingDiffable.diff(Object)methods.All non-static, non-transient fields (including inherited fields) of the objects to diff are discovered using reflection and compared for differences.
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 ReflectionDiffBuilder(this, obj, ToStringStyle.SHORT_PREFIX_STYLE) .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
DiffBuilderfor a non-reflection based version of this class.- Since:
- 3.6
- See Also:
Diffable,Diff,DiffResult,ToStringStyle,DiffBuilder
-
-
Constructor Summary
Constructors Constructor Description ReflectionDiffBuilder(T lhs, T rhs, ToStringStyle style)Constructs a builder for the specified objects with the specified style.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DiffResult<T>build()Returns a reference to the object being constructed or result being calculated by the builder.java.lang.String[]getExcludeFieldNames()Gets the field names that should be excluded from the diff.ReflectionDiffBuilder<T>setExcludeFieldNames(java.lang.String... excludeFieldNamesParam)Sets the field names to exclude.
-
-
-
Constructor Detail
-
ReflectionDiffBuilder
public ReflectionDiffBuilder(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.- 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
-
build
public DiffResult<T> build()
Description copied from interface:BuilderReturns a reference to the object being constructed or result being calculated by the builder.
-
getExcludeFieldNames
public java.lang.String[] getExcludeFieldNames()
Gets the field names that should be excluded from the diff.- Returns:
- Returns the excludeFieldNames.
- Since:
- 3.13.0
-
setExcludeFieldNames
public ReflectionDiffBuilder<T> setExcludeFieldNames(java.lang.String... excludeFieldNamesParam)
Sets the field names to exclude.- Parameters:
excludeFieldNamesParam- The field names to exclude from the diff ornull.- Returns:
this- Since:
- 3.13.0
-
-