On Mon, Sep 19, 2011 at 6:19 PM, Denis Gervalle <[email protected]> wrote:
> My answer for release 3.2 is interspersed.
>
> On Mon, Sep 19, 2011 at 16:34, Marius Dumitru Florea <
> [email protected]> wrote:
>
>> Hi devs,
>>
>> Here's the sheet resolution algorithm I have implemented in
>>
>> https://github.com/xwiki/xwiki-platform/blob/cbad868094b9cc9d811621670e320596ddb2f495/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/internal/sheet/DefaultSheetManager.java
>> .
>>
>> getSheets(document, action) : List<DocumentReference>
>>
>> (1) If there is a "sheet" request parameter that points to a sheet
>> that supports the passed action, return a reference to that sheet.
>>
>
> +1, and I understand that this single sheet will manage all objects in the
> document ?
>
>
>> (2) For each object of type XWiki.DocumentSheetBinding attached to the
>> passed document check if the "sheet" property points to a sheet that
>> supports the passed action. Return the computed list, if not empty.
>>
>
> +1, and each sheet would be managing some of the objects at their sole
> discretion ?
>
>
>> (3) For each type of object attached to the passed document:
>>
>

> For 3.2, I agree with this, but in general I wonder if it is right to put
> the binding in the class document ?
> Should not the class stay more clean from display related stuffs in favor of
> the sheet ?

Putting the binding in the sheet is indeed the right choice if you
deal _only_ with class sheets (i.e. sheets that displays objects of a
specific class/type). This was in fact my first option when I started
designing the new system. But then I realized that we can have other
types of sheets. For instance XWiki.ClassSheet is not a class sheet :)
because it doesn't display objects of a particular class but meta data
of a class (e.g. list of class properties). I can't bind
XWiki.ClassSheet to a specific class because any class can use it.
Let's take another example. Suppose I want to display statistics about
my documents. I can add a new "stats" action and design a
DocumentStatsSheet that shows statistics about the displayed document
(/bin/stats/Space/Page). Again, I can't bind DocumentStatsSheet to a
particular document because any document can use it.

So I had two options:

i) document sheet, document sheet binding, class sheet
ii) generic sheet, document sheet binding, class sheet binding

I implemented the second option.

Thanks,
Marius

> The pros is of course that it concentrate the right management on the class
> (if you follow my -1 below)
>
>
>>    (3.1) For each object of type XWiki.ClassSheetBinding attached to
>> the document defining the class check if the "sheet" property points
>> to a sheet that supports the passed action
>
>
> +1, and so each sheet would be managing part of the object ?
>
>
>>    (3.2) If the class doesn't have any XWiki.ClassSheetBinding object
>> then check if <ClassName><ActionName>Sheet exists
>>
>
> -1, this would introduce document name convention, which is not good IMHO
> The convention of document name are for WebHome, WebPreferences and
> XWikiPreferences, and this is already too much.
> The one mentioned by Thomas regarding XWikiServer document is even worse.
>
>
>>    (3.3) If not, then check if <ClassName>Sheet exists and supports
>> the passed action
>>
>
> -1, idem
>
>
>>    (3.4) If not, then check if "sheet.defaultClassSheetBinding"
>> configuration property specifies a sheet for the class we're looking
>> at
>>
>
> -0, introduce a new space for this config is not nice IMHO. Put this in let
> say XWiki.defaultSheetBindingConfig
> Does not this also solve the oldcore issue we have discussed, if you accept
> the idea of providing this default binding with the XE xar ?(Should the old
> core contains a minimal default one during empty data state ?)
>
>
>>
>> Return the computed list if not empty.
>>
>
> Without duplicates ?
>
>
>>
>> (4) If the passed document is a class (holds a class definition) then
>> return a reference to the default class sheet (XWiki.ClassSheet) if it
>> supports the passed action.
>>
>
> +0, why not getting this from the default binding above ?
>
> Otherwise return an empty list.
>>
>> I'd like you to vote on each of the steps of the algorithm. Are there
>> steps you think I should drop?
>>
>
> Yes definitely, but removing the need to link data with the sheet using
> includes is really a big improvement.
> Great job,
>
>
>> I'm obviously +1 for each of the steps.
>>
>> Thanks,
>> Marius
>> _______________________________________________
>> 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
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to