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 >> > >
