I updated the Javadoc for both classes. Gary
On Mon, Jul 10, 2023, 13:40 Gilles Sadowski <gillese...@gmail.com> wrote: > Le dim. 9 juil. 2023 à 19:32, Gary Gregory <garydgreg...@gmail.com> a > écrit : > > > > How about the reflection variant? You won't need to edit any of the > target > > code. > > Thanks, I missed it. [Maybe worth adding a "@see ReflectionDiffBuilder" > tag in "DiffBuilder" (and vice-versa) ?] > > However, the output is much too verbose when the "Container" is a > large object. For example, in my case, the number of reported > differences is > 11 > but the "toString()" outputs a line that is > 371397 > characters long... > Is there a way to only print the (primitive) fields for which the values > differ? [It seems (?) that if, deep down the composite "Container", > something is different then all the enclosing instances are considered > different (it's true) and printed in full.] > > Also, the "MULTI_LINE_STYLE" is somewhat inconsistent: It does > indeed print each field of the top-level object on a new line, but it > does not apply this layout to the "composing" objects: Referring to > the example quoted below, the array "contentArr" would be printed on > a single line (in my use case, that line is 183312 characters long).] > > For large objects, this makes it quite difficult to spot what differences > were actually detected... > > Regards, > Gilles > > > > > Gary > > > > > > On Sun, Jul 9, 2023, 09:51 Gilles Sadowski <gillese...@gmail.com> wrote: > > > > > Hi. > > > > > > In the Javadoc of the "DiffBuilder" class[1]: > > > ---CUT--- > > > [...] > > > To use this class, write code as follows: > > > > > > public class Person implements Diffable<Person> { > > > String name; > > > int age; > > > boolean smoker; > > > [...] > > > ---CUT--- > > > > > > However, a common use-case would be that we can't directly > > > modify the class whose instances we want to compare. > > > Assuming that interfaces are given and non-modifiable (i.e. > > > they cannot implement "Diffable"): > > > ---CUT--- > > > public interface Content { > > > double getValue(); > > > } > > > > > > public interface Container { > > > Content[] getContentArray(); > > > } > > > ---CUT--- > > > and the modifiable user code is similar to > > > ---CUT--- > > > public class MyContent implements Content { > > > private final double c; > > > > > > public MyContent(double input) { > > > c = input: > > > } > > > > > > @Override > > > public double getValue() { > > > return c; > > > } > > > } > > > > > > public class MyContainer implements Container { > > > private final Content[] contentArr; > > > > > > MyContainer(double ... inputs) { > > > final int len = inputs.length; > > > contentArr = new Content[len]; > > > for (int i = 0; i < len; i++) { > > > contentArr[i] = new MyContent(inputs[i]); > > > } > > > } > > > > > > @Override > > > public Content[] getContentArray() { > > > return contentArr; > > > } > > > } > > > ---CUT--- > > > how should I go about in order to get the "diff" between instances > > > of "MyContainer"? > > > > > > Thanks, > > > Gilles > > > > > > [1] > > > > https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/builder/DiffBuilder.html > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org > For additional commands, e-mail: user-h...@commons.apache.org > >