incubator-jspwiki-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janne Jalkanen <>
Subject Re: Shed light on how PageManager saves pages?
Date Tue, 24 Jun 2008 06:08:50 GMT
> My question is, is there anything special about the WikiContext  
> that we retrieve, which is passed to textToHTML() and  
> doPostSaveFiltering()? Could we create a synthetic one instead? In  
> other words, I am proposing that in PreSaveTask we stash the  
> WikiPage name as a string, then pick it up in SaveTask and use it  
> to manufacture a new, fake WikiContext with the correct WikiPage.

Yup, we've got a problem.  Most things in the WikiContext are such  
that they do not survive serialization - WikiEngine,  
HttpServletRequest, even WikiPage (due to interactions with the  

It's a good question whether they even do survive leaving the  
WikiSession and being executed in somebody else's context (the  
HttpServletRequest comes to mind).  Now, since SavePageTask.execute()  
invokes the parser, that means that user plugins are also invoked,  
and if you've got someone relying on HttpServletRequest parameters at  
the time of save parsing - well, boom for them. (Not that I would see  
that anyone would do that.)

> Conversely, if the WikiContext used by textToHTML() and  
> doPostSaveFiltering() *has to be* the same WikiContext (and not  
> created synthetically), then we've got to keep stashing it as a  
> workflow attribute, and thus (here's the punchline)... we will  
> never to be able to persist workflows.


The reason we call textToHTML() is to make sure the access rules and  
metadata are correct after save.  This is needed because of the  
CachingProvider, and is one of the reasons why our metadata system is  
so crappy and kludgy and I can't wait to start fixing it in 3.0...

Looking at the issues involved, I think it probably makes more sense  
to stuff this to 3.0 and see if we can clarify the role of the  
WikiContext a bit more.  If WikiContext is going to be a Stripes  
ActionBeanContext in the future, we've got to make sure that is  
serializable too, of which I am not too sure about.


View raw message