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