Hi all, I have a Wicket 6 application that integrates with Apache FOP in a way that, by overriding Page's getMarkupType(), I can have a component render its .fo markup (to generate a PDF) instead of the usual html, depending on whether it is added to a Page with the fo MarkupType or the standard html one.
This means my typical Panel has two markup files, an html one and a fo one: Panel.fo and Panel.html. Now, the default CashingResourceStreamLocator makes use of ResourceReference#Key for the cache. That Key completely ignores the extension of the file or, better, assumes it is part of the name, while for markup files this is apparently not the case. Basically, Panel.html and Panel.fo have the same Key, the name of which is simply "Panel". Therefore, when a Panel is first rendered in html, its html markup reference is cached and there is no way to make it render again in fo, because the cache will always return the html markup reference. The solution is not dramatic but makes me feel uncomfortable: I had to write a custom CashingResourceStreamLocator clone, using a custom Key that is basically a ResourceReference#Key with an added "extension" property. What am I missing here? Thanks very much for you help and keep up the excellent work, Fabio Fioretti