[lang] Proposal: Allow extending DiffResult

2016-03-03 Thread rgm
Ironically, it seems impossible to override DiffResult.toString(), which
one may wish to do in order to provide alternate formats for the
differences that are more compact than "lhs differs from rhs."

In my case, I wanted to support differences between Set so that
one could get output like:
Object[groups:  added: {1, 2}, removed: {7},name:cat->dog]

Rather than:
Object[groups:[3,4,7],name=cat] differs from Object[groups:
[1,2,3,4],name=dog]

To support this I ended up wrapping the DiffResult class because I could
not extend it due to its private constructor.

re:
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/DiffResult.html


Re: [lang] Proposal: Allow extending DiffResult

2016-03-03 Thread rgm
No, because ToStringStyle affects the rendering of only one of the object's
toString methods and cannot change the "left differs from right" output,
although it could change the rendering of either "left" or "right."  The
inclusion of two objects and the hard-coded string "differs from" are not
affected by ToStringStyle.

On Thu, Mar 3, 2016 at 11:05 AM, Bhowmik, Bindul 
wrote:

> On Thu, Mar 3, 2016 at 9:31 AM, rgm  wrote:
> > Ironically, it seems impossible to override DiffResult.toString(), which
> > one may wish to do in order to provide alternate formats for the
> > differences that are more compact than "lhs differs from rhs."
> >
> > In my case, I wanted to support differences between Set so that
> > one could get output like:
> > Object[groups:  added: {1, 2}, removed: {7},name:cat->dog]
> >
> > Rather than:
> > Object[groups:[3,4,7],name=cat] differs from Object[groups:
> > [1,2,3,4],name=dog]
>
> Isn't this a use case for building your own ToStringStyle [1] and
> using the DiffResult#toString(ToStringStyle) method?
>
> >
> > To support this I ended up wrapping the DiffResult class because I could
> > not extend it due to its private constructor.
> >
> > re:
> >
> https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/DiffResult.html
>
> - Bindul
>
> [1]
> https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/ToStringStyle.html
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


Re: [lang] Proposal: Allow extending DiffResult

2016-03-05 Thread rgm
Thanks for the advice and your consideration, I have a better understanding
now. Cheers.
On Mar 5, 2016 2:06 AM, "Duncan Jones"  wrote:

> On 3 March 2016 at 18:49, rgm  wrote:
> > No, because ToStringStyle affects the rendering of only one of the
> object's
> > toString methods and cannot change the "left differs from right" output,
> > although it could change the rendering of either "left" or "right."  The
> > inclusion of two objects and the hard-coded string "differs from" are not
> > affected by ToStringStyle.
>
> I think your current approach sounds just fine. `toString()` isn't
> really intended for complex formatting tasks - the only reason I added
> a `ToStringStyle` override was to match the style of other classes in
> the builder package.
>
> Composition is also generally preferred to inheritance, so I would
> prefer not to make `DiffResult` extendable, but rather encourage you
> to make methods in your own classes that know how to format a
> `DiffResult` in the way you prefer.
>
> Duncan
>
> > On Thu, Mar 3, 2016 at 11:05 AM, Bhowmik, Bindul <
> bindulbhow...@gmail.com>
> > wrote:
> >
> >> On Thu, Mar 3, 2016 at 9:31 AM, rgm  wrote:
> >> > Ironically, it seems impossible to override DiffResult.toString(),
> which
> >> > one may wish to do in order to provide alternate formats for the
> >> > differences that are more compact than "lhs differs from rhs."
> >> >
> >> > In my case, I wanted to support differences between Set so
> that
> >> > one could get output like:
> >> > Object[groups:  added: {1, 2}, removed: {7},name:cat->dog]
> >> >
> >> > Rather than:
> >> > Object[groups:[3,4,7],name=cat] differs from Object[groups:
> >> > [1,2,3,4],name=dog]
> >>
> >> Isn't this a use case for building your own ToStringStyle [1] and
> >> using the DiffResult#toString(ToStringStyle) method?
> >>
> >> >
> >> > To support this I ended up wrapping the DiffResult class because I
> could
> >> > not extend it due to its private constructor.
> >> >
> >> > re:
> >> >
> >>
> https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/DiffResult.html
> >>
> >> - Bindul
> >>
> >> [1]
> >>
> https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/builder/ToStringStyle.html
> >>
> >> -
> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >> For additional commands, e-mail: dev-h...@commons.apache.org
> >>
> >>
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>