Title | Reading of Variable not working for older versions |
Date | 17-Jun-2005 09:42:22 EEST |
Version | 2.2.19 |
Submitter | DirkFrederickx |
Bug criticality | MediumBug |
Browser version | IE |
Bug status | ClosedBug |
PageProvider used | VersioningFileProvider |
Servlet Container | Tomcat |
Operating System | Win2000 |
URL | |
Java version |
Retrieving a variable of an older version doesnt work anymore. This feature was still working in 2.1.103.
<wiki:HistoryIterator id="currentPage"> <wiki:Variable var='versionLabel' default=" "/> </wiki:HistoryIterator>
See also VersionLabel --DF
Here's a workaround which seems to solve the problem. Apparently the wiki metadata of a page only gets initialised by a call to textToHTML. Obviously, this is not done as you iterate over different versions of a page. Below you find the additional java in the jsp which does the trick. -- DF
<wiki:HistoryIterator id="currentPage"> <% //need to run textToHtml so that variables get initialised again !! //Ugh! WikiContext cc = (WikiContext) c.clone(); cc.setPage(currentPage); String pagedata = cc.getEngine().getPureText( currentPage ); cc.getEngine().textToHTML( cc, pagedata ); %> <wiki:Variable var='versionLabel' default=" "/> </wiki:HistoryIterator>
Okay, this is a really thorny problem. I've been trying to implement fixes for this, and the best I've so far come up with is a very complicated OutOfMemoryError. It stems from the fact that our metadata handling is done during page parsing, and we're actually relying of ReferenceManager side-effects to get the variables updated. This, of course, is utterly stupid.
I put in a workaround for 2.2.26, but it'll surely create more troubles than what it's worth.
I'll put this one on hold for a while and replace the entire metadata subsystem for the next major release. Foo.
We now have a next major release, and I assume it is now solved, if that's not the case, please feel free to re-open it.