On Mon, Mar 26, 2012 at 15:43, Thomas Mortagne <[email protected]>wrote:

> Hi devs,
>
> we have an important inconsistency that we ignored since a long time
> and that is producing http://jira.xwiki.org/browse/XWIKI-7628.
>
> The main issue is that the storage save document containing object
> linked explicitly to another wiki without complaining which mean that
> user continue using API wrongly without really knowing it's wrong. And
> now we have lots of code badly using object class related API and
> contently creating object with absolute class references.
>
> Until now it was OK even if a mess and it's still not visible. But
> that's mostly luck... until we start copying documents from one wiki
> to another starting with 4.0 branch. What changed is that the unique
> identifier of the object in the database is "properly" generated by
> using it's reference and since a class reference in a BaseObject
> contain a wiki it's now taken into account. The old id generator used
> to use the deprecated BaseCollection#getClassName which is forced
> absolute for retro-compatibility reason even if it was actually
> possible before to put absolutely anything as class reference.
>
> So right now we have two issues:
> * store save invalid document without complaining
> * many code is wrongly using BaseObject and XWikiDocument API
> regarding class references mostly because you don't really see it
> right away when you don't use it properly. Even ObjectAddAction is
> wrong, a lot of code that was using setClassName has been badly
> converted to fix deprecated method code by resolving what was passed
> to setClassName into an absolute reference which is very wrong and not
> the behavior of setClassName.
>
> Here is what we propose with Denis:
> * 4.x (or until class coming from another wiki is supported but I
> doubt this is going to happen anytime soon with this storage):
> ** throw an exception in the storage when saving a document containing
> objects coming from another wiki
> ** to temporary limit breakage while we fix wrong code and help us
> find this wrong code, modify BaseCollection#setXClassReference to
> force it to remove the wiki from the passed reference and log a
> warning about a bad usage
> * 5.0: remove the bandage from BaseCollection#setXClassReference
>
> WDYT ?
>

+1, astonishing no :)


>
> Here is my +1
>
> --
> Thomas Mortagne
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Denis Gervalle
SOFTEC sa - CEO
eGuilde sarl - CTO
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to