Oh and... +1 :)

Thanks,
Eduard

On Wed, May 30, 2012 at 5:01 PM, Eduard Moraru <[email protected]> wrote:

>
>
> On Wed, May 30, 2012 at 4:16 PM, Thomas Mortagne <
> [email protected]> wrote:
>
>> On Wed, May 30, 2012 at 2:55 PM, Eduard Moraru <[email protected]>
>> wrote:
>> > I mentioned Velocity because I saw a DiffScriptService component with
>> > @Named("diff") that has the same method signature as the Java API:
>> >
>> > public <E> DiffResult<E> diff(List<E> previous, List<E> next,
>> > DiffConfiguration<E> configuration)
>> >
>> > See the discussion [1] on the pull request for more details on the
>> Velocity
>> > question.
>> >
>> > Back to my original question (same question as Thomas basically), that's
>> > exactly what I am trying to understand, Vincent... if the
>> > List<String/Character> is the optimal use case and not just String.
>> >
>> > Without a scenario in favour of List<E>, I would go for exposing a
>> String
>> > based API (well, just an extra method in this case) as well.
>>
>> You can imagine all sort of use cases with any value so I don't see
>> the point in arbitrary limiting the API to just Strings where the
>> logic is the same whatever the type.
>
>
> Yes, I understand now how it works. If other are interested, please see my
> new comment [1] on the pull request.
>
> Short version: The API compares lists of objects by using Object#equals()
> and does not go into the structure of the compared elements, just reports
> differences of the list itself. You have to structure/break your input to
> the level of granularity that you need for the diff to be relevant to your
> use case.
>
>
>> If you really need a direct use
>> case for existing stuff then just think about producing a diff between
>> two static list properties values, it would be very bad to have to
>> create a String from it first especially since you could have \n in
>> one of the elements.
>>
>> My main concern is to expose a clear API and no String it everything
>> but clear, it's simple yes but it's not the same things. When you
>> provide String you don't have no idea what you are diffing exactly
>> (could be characters, \n, words,  etc.) so having only one method with
>> two strings is just very bad design.
>>
>> Also if you read my mail I did talked about String based APIs but as
>> helpers and I'm would be surely -1 for any attempt to restrict the
>> whole API to it. So the only question here is: is that really needed
>> to expose String based helpers or not.
>>
>
> No, I was never suggesting to drop the generic API, I was just saying that
> the helpers might be a good idea since I imagine that String diff would
> cover most of the usage of this API. Anyway, this is not important for now
> since it is something that can be added later if API clients start
> complaining :)
>
> Thanks,
> Eduard
>
> ----------
> [1] https://github.com/xwiki/xwiki-commons/pull/2/files#r900063
>
>
>> >
>> > Thanks,
>> > Eduard
>> >
>> > ----------
>> > [1] https://github.com/xwiki/xwiki-commons/pull/2/files#L27R58
>> >
>> > On Wed, May 30, 2012 at 3:32 PM, Vincent Massol <[email protected]>
>> wrote:
>> >
>> >>
>> >> On May 30, 2012, at 2:28 PM, Vincent Massol wrote:
>> >>
>> >> >
>> >> > On May 30, 2012, at 2:18 PM, Eduard Moraru wrote:
>> >> >
>> >> >> Hi Thomas,
>> >> >>
>> >> >> On Tue, May 29, 2012 at 5:07 PM, Thomas Mortagne
>> >> >> <[email protected]>wrote:
>> >> >>
>> >> >>> Hi devs,
>> >> >>>
>> >> >>> As I said in another mail I'm working on a diff/merge module to
>> use in
>> >> >>> XWiki, the first target being Extension Manager and document
>> history
>> >> >>> (since both are going to use the same code, see Marius mails).
>> >> >>>
>> >> >>> You can see the detail on
>> >> https://github.com/xwiki/xwiki-commons/pull/2.
>> >> >>>
>> >> >>> TODO/QUESTIONS:
>> >> >>> * improve the generic 3 ways merge to be at least as good as the
>> >> >>> List<String> 3 ways merge and get rid of JDiff
>> >> >>> * not sure where/if I should put String related helpers (things
>> that
>> >> >>> do a diff on two String instead of having to cut List<String> or
>> >> >>> List<Character> and call the diff API etc.)
>> >> >>>
>> >> >>
>> >> >> This looks a bit awkward to use, specially from (but not limited to)
>> >> >> Velocity. When I think of a diff service API, I imagine passing
>> Strings,
>> >> >> not lists of composing strings or list of characters.
>> >> >
>> >> > Thomas is proposing a Java API here AFAIK. For Velocity we never
>> expose
>> >> java API directly;  we use Script Services for that.
>> >>
>> >> Sorry, just realized you wrote "but not limited to" ;)
>> >>
>> >> I'll let Thomas reply since I don't know this diff api yet….
>> >>
>> >> Sorry for the noise
>> >> -Vincent
>> >>
>> >> >
>> >> > Thanks
>> >> > -Vincent
>> >> >
>> >> > PS: FTR I'm a big -1 to model our Java APIs to be easily usable from
>> >> Velocity since that means having suboptimal APIs for the wrong reason
>> ;)
>> >> >
>> >> >> Also, I don`t quite understand the List<String> approach. I can
>> imagine
>> >> the
>> >> >> List<Character> version by breaking a string into characters, but
>> what
>> >> >> would you do for List<String>? You would split a String using "\s"
>> as a
>> >> >> separator?
>> >> >>
>> >> >> Can you please mention a use case where a list oriented API is
>> better
>> >> than
>> >> >> a string based one?
>> >> >>
>> >> >> Thanks,
>> >> >> Eduard
>> >> >>
>> >> >>>
>> >> >>> I'm ready to merge it into master so I'm waiting your vote.
>> >> >>>
>> >> >>> Caleb is it OK to put new stuff in master already or should I wait
>> the
>> >> >>> complete release to be done ?
>> >> >>>
>> >> >>> Here is my +1.
>> >> >>>
>> >> >>> Thanks,
>> >> >>> --
>> >> >>> Thomas Mortagne
>> >>
>> >> _______________________________________________
>> >> devs mailing list
>> >> [email protected]
>> >> http://lists.xwiki.org/mailman/listinfo/devs
>> >>
>> > _______________________________________________
>> > devs mailing list
>> > [email protected]
>> > http://lists.xwiki.org/mailman/listinfo/devs
>>
>>
>>
>> --
>> Thomas Mortagne
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
>
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to