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
>
>

Reply via email to