Jerome Velociter wrote:
> BTW, this reminds me this discussion http://tinyurl.com/587qqc we had on
> the Admin refactoring, on how to create the WebPreferences document for
> spaces that do not have it created.

It's not quite the same, as in a wiki you can create spaces all the time, and 
they don't have the 
WebPreferences created at the same time (unless you write custom code for 
this), but once you have 
the new XWS version, all new wikis will have the new structure, right?

> Jerome.
> 
>> Hello devs,
>>
>> I'm currently trying to find the best approach to automatically upgrade an
>> XWS instance workspaces when upgrading the XWS version. By that, I mean
>> adding new pages to existing workspaces for example.
>> I see at least two possible approaches :
>>
>> * On display of the workspace, we check that the considered pages are
>> present, and if not either we automatically create them, either we offer a
>> big button to "upgrade" the workspace. (the test could be done in a skin
>> template, so that any page would trigger the upgrade)

This is slow, as you have to make an upgrade check for each request. -0.5

>> * On plugin init, we search for all workspaces and upgrade the ones in
>> need. And we could have a marker once the upgrade is done, not to execute
>> the query at each init.

Better, since it is a one-time check. You could add an XWSVersion class + 
object in XWikiPreferences 
to see if it was already upgraded or not.

>> WDYT ? Are there other approaches I'm missing ?

Could be done using a storage migrator. It isn't exactly a storage thing from a 
semantic PoV, but i 
think it qualifies. The advantage is that it is an already established 
"framework" for upgrades, it 
already has the notion of a "previous version", can execute any data 
manipulation, so you will have 
to write few code. The only problem is that currently migrators are manually 
listed in 
XWikiHibernateMigrationManager, so you won't be able to add your migrator in 
there. But this is a 
good opportunity to improve that code, too (maybe use components?)
-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to