Oh and... +1 :)
Thanks,
Eduard
On Wed, May 30, 2012 at 5:01 PM, Eduard Moraru <enygma2002(a)gmail.com> wrote:
On Wed, May 30, 2012 at 4:16 PM, Thomas Mortagne <
thomas.mortagne(a)xwiki.com> wrote:
On Wed, May 30, 2012 at 2:55 PM, Eduard Moraru
<enygma2002(a)gmail.com>
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 <vincent(a)massol.net>
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
> >> <thomas.mortagne(a)xwiki.com>wrote;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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs