On Fri, Oct 1, 2021 at 5:36 AM Ben Weidig <b...@netzgut.net> wrote:

> Hi,
>

Hi!


> Because the String->JSONArray CoercionTuple added in tapestry-json is the
> root of the problem in TAP5-2688.
> Without including tapestry-json, everything's fine.
> That's why the coercion tests in tapestry-core didn't reveal the problem,
> and the tapestry-json tests didn't include the special-case.
>

So couldn't we have the test in tapestry-json but the coercion in commons?


> Well, I think that's how it's doing it right now, but it ignores "exact"
> matches if a "good enough" is found earlier.
>

Great catch! We should definitely favor exact matches when they're
available.

My patch prefers targetType matches over just "isAssignable", and is trying
> to find one regardless of the intermediate steps.
> Maybe going deeper for lookups isn't necessary.
> But checking all the available tuples at the current level to find a
> targetType match and not just the first "isAssignableFrom".
>

Agreed.


> That, of course, leads to the problem of detecting the number of steps in
> compound coercions.
> Right now, I don't see a way to see how many intermediate coercions are
> involved.
> But it could be added to Coercion, with the default being "1", and
> CompoundCoercion to actually calculate it.
>

Good idea.


> Or a coercion tuple could be marked as "exact target types only".
> So JSONArray won't match for Collection.
>

I'd implement this only if preferring exact matches doesn't work.


> Looks like I have to investigate further and write more tests, but I think
> I'm on the right track to improve coercions.
>

I agree. Keep up the good work!


>
>
> >
> > >
> > > What do you think?
> > >
> > > Cheers,
> > > Ben
> > >
> >
> >
> > --
> > Thiago
> >
>
>
> Cheers,
> Ben
>


-- 
Thiago

Reply via email to