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 ?

>
>> 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
>



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to