On Nov 26, 2009, at 12:10 PM, Thomas Mortagne wrote:

> On Thu, Nov 26, 2009 at 12:02, Vincent Massol <[email protected]>  
> wrote:
>>
>> On Nov 26, 2009, at 11:52 AM, Thomas Mortagne wrote:
>>
>>> On Thu, Nov 26, 2009 at 08:55, Vincent Massol <[email protected]>
>>> wrote:
>>>> Addition:
>>>>
>>>> * I'll also create a xwiki-component-multi module to hold the  
>>>> multiCM
>>>> implementations since otherwise if we have them in
>>>> xwiki-component-default, it means xwiki-bridge will be required by
>>>> all
>>>> modules, including the rendering API module which is supposed to  
>>>> work
>>>> without the bridge in standalone mode for example.
>>>>
>>>> If you have a better name for that new module please suggest.
>>>
>>> Well "xwiki-component-multi" looks like "the module adding the multi
>>> CM concept" which is not true.
>>
>> Why is it not true? It's what it does (yes I know that technically
>> they are implemented as components implementing the ComponentManager
>> role and thus don't bring any new tech concept, but in practice they
>> do bring multi CM support to xwiki).
>
> Isn't ComponentManagerFactory part of the api ?

Nope. I have moved it to "-multi" for that reason (in order to cleanly  
separate the multi concept).

Thanks
-Vincent

>>> What about xwiki-component-context
>>> (provide context based CMs)
>>
>> I don't think we can understand what it means by looking at it.
>>
>>> or xwiki-component-tools (a bunch of CM
>>> tools that are one abstraction level above CM module) ?
>>
>> I find tools too generic. This module is about multi CM. Tools make  
>> it
>> sound optional when it's not optional. For example the Wiki Macro
>> Bridge won't work without these.
>>
>> I still think "-multi" is the best suggested so far with "-context"
>> being my second choice. I also hesitated with "-isolation" and "-
>> realm" initially.
>>
>> Thanks
>> -Vincent
>>
>>>> Thanks
>>>> -Vincent
>>>>
>>>> On Wed, Nov 25, 2009 at 3:56 PM, Vincent Massol
>>>> <[email protected]> wrote:
>>>>> On Wed, Nov 25, 2009 at 3:06 PM, Vincent Massol
>>>>> <[email protected]> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I'm starting to work on this again. Compared to what was  
>>>>>> mentioned
>>>>>> below here are the changes I'm bringing:
>>>>>>
>>>>>> * No need to modify the ComponentDescriptor to add a get/
>>>>>> setAdditionalData
>>>>>> * Addition of a new
>>>>>> ComponentManagerFactory.createComponentManager()
>>>>>> interface + EmbeddableComponentManagerFactory implementation
>>>>>> * The Wiki/User/All CM are now independent of the underlying
>>>>>> implementation (abstracted away by ComponentManagerFactory)
>>>>>
>>>>> Change of plan: I'm now no longer planning to modify what's below
>>>>> and
>>>>> thus it will stay as it is now:
>>>>>
>>>>>> * Move EmbeddableComponentManager class to the internal package  
>>>>>> (ie
>>>>>> make it non public)
>>>>>> * Expose ComponentAnnotationLoader in the documentation
>>>>>>
>>>>>> The old way to initialize XWiki components:
>>>>>>
>>>>>> EmbeddableComponentManager ecm = new  
>>>>>> EmbeddableComponentManager();
>>>>>> ecm.initialize(classLoader);
>>>>>>
>>>>>> The new way:
>>>>>>
>>>>>> ComponentManagerFactory factory = new
>>>>>> EmbeddableComponentManagerFactory();
>>>>>> ComponentAnnotationLoader() cal = new  
>>>>>> ComponentAnnotationLoader();
>>>>>> cal.initialize(factory.createComponentManager(), classLoader);
>>>>>>
>>>>>> This is cleaner since it spearates the creation of the CM from  
>>>>>> the
>>>>>> loading of components. For ex it's possible to not load  
>>>>>> components
>>>>>> from annotations and instead use CM.registerComponent(...).
>>>>>
>>>>> Thanks
>>>>> -Vincent
>>>>>
>>>>>> Please shout quickly if there's something you don't like since  
>>>>>> I'm
>>>>>> working on implementing this as you read it... :)
>>>>>>
>>>>>> Thanks
>>>>>> -Vincent
>>>>>>
>>>>>> On Tue, Sep 8, 2009 at 8:28 AM, Vincent Massol
>>>>>> <[email protected]> wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> We have the need to isolate groups of components. For ex a wiki
>>>>>>> macro
>>>>>>> created in a subwiki should only be visible in that subwiki by
>>>>>>> default.
>>>>>>>
>>>>>>> Here's an implementation proposal that I'm planning to  
>>>>>>> implement:
>>>>>>>
>>>>>>> * There's a Root Component Manager (the current CM)
>>>>>>> * There are 3 components which implement the ComponentManager
>>>>>>> role and with
>>>>>>> 3 hints: "wiki", "user" and "all". There's a
>>>>>>> CompositeComponentManager class
>>>>>>> that allows chaining CM and the "all" CM chains the
>>>>>>> "default" (root CM),
>>>>>>> "wiki" CM and "user" CM. This works the same as with the
>>>>>>> configuration
>>>>>>> module.
>>>>>>> * Other components can have CMs injected as they want (if not
>>>>>>> specified then
>>>>>>> it's the default, etc). For ex:
>>>>>>>
>>>>>>> @Requirement("all")
>>>>>>> private ComponentManager cm
>>>>>>>
>>>>>>> * Creation process. As for now the user creates the root CM and
>>>>>>> then the
>>>>>>> annotation loader will create the descriptors for the other CMs
>>>>>>> and register
>>>>>>> them against the root CM. They'll get instantiated once
>>>>>>> (singleton) the
>>>>>>> first time they're looked up.
>>>>>>> * In order to register a component for, say, a given
>>>>>>> "enterprise" wiki, we
>>>>>>> need to add a new property to the ComponentDescriptor:
>>>>>>> get/setAdditionalData(Object data). For example:
>>>>>>> wikiCM.registerComponent(CD
>>>>>>> mycd) where cd.setAdditionalData("enterprise").
>>>>>>> * Last, Guice uses Modules to isolate component definitions so
>>>>>>> it should be
>>>>>>> possible and relatively easy to port the implementation to Guice
>>>>>>> (even
>>>>>>> though Guice uses static Modules we can make them dynamic).
>>>>>>>
>>>>>>> WDYT?
>>>>>>>
>>>>>>> Thanks
>>>>>>> -Vincent
>> ______________________
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to