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