https://issues.apache.org/jira/browse/WICKET-5698

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Sep 10, 2014 at 3:08 PM, Martin Grigorov <[email protected]>
wrote:

> Hi Jesse,
>
> Do you work on this ?
> I can take care of it if you don't have time.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Thu, Sep 4, 2014 at 3:00 PM, Martin Grigorov <[email protected]>
> wrote:
>
>> Hi Jesse,
>>
>> To me 1) looks the simplest and the most flexible one.
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>>
>> On Thu, Sep 4, 2014 at 1:12 PM, Jesse Long <[email protected]> wrote:
>>
>>> Hi Wicket Devs,
>>>
>>> WebApplication.unmount() and/or CompoundRequestMapper.unmount() is
>>> broken, and I want to fix it.
>>>
>>> WebApplication.unmount() calls getRootRequestMapperAsCompound(), and
>>> calls unmount() on that.
>>>
>>> getRootRequestMapperAsCompound() checks if the root request mapper is a
>>> compound, if not, wraps it in a compound, sets the compound as root and
>>> returns the compound.
>>>
>>> CompoundRequestMapper.unmount() identifies which of the mappers added
>>> directly to the compound handle the url, and removes them.
>>>
>>> The problem:
>>> If the original root mapper was a single wrapper, or layer of wrappers,
>>> with the actual mounted mapper wrapped some levels down, then the whole
>>> wrapper is removed, not just the specific MountedMapper that is wrapped.
>>> This has the effect of removing every single mapper, leaving root mapper as
>>> an empty compound.
>>>
>>> I would like to attempt to provide a patch to fix this, but would like
>>> guidance on the approach. I have come up with three approaches:
>>>
>>> 1. Introduce interface IWrappedRequestMapper. This will be an interface
>>> which has one method: IRequestMapper getWrappedRequestMapper(). We can then
>>> have all wrapper mappers implement this and work down the tree to find the
>>> correct MountedMapper (wicket 6) to remove.
>>>
>>> 2. Have WebApplication hold a reference to a specific
>>> CompoundRequestMapper, and have all mount()/unmount() operations add and
>>> remove from this mapper. This compound would need to be added to the
>>> default list during init. This makes it complicated to work out how to do
>>> things like have CryptoMapper not apply to mounted pages.
>>>
>>> 3. Add method unmount() to IRequestMapper, so that wrappers can
>>> delegate. This obviously can only be done in wicket 7, but we're making
>>> mounting a problem of every single request mapper, when not even
>>> Application cares about mounting.
>>>
>>> Any thoughts?
>>>
>>> Thanks,
>>> Jesse
>>>
>>
>>
>

Reply via email to