Fixed. The fix was much simpler ! See https://git-wip-us.apache.org/repos/asf?p=wicket.git;a=commit;h=f45ce896
Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Wed, Sep 10, 2014 at 3:11 PM, Martin Grigorov <[email protected]> wrote: > 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 >>>> >>> >>> >> >
