What I propose for the extensibility:

- anyone can extends the Wiki class.
- each module will have its own XWikiServerClassDocumentInitializer, that
add custom fields into the XWikiServerClass document.
- the minimal XWikiServerClassDocumentInitializer will only contain a few
fields.


2013/10/7 Thomas Mortagne <[email protected]>

> Before writing extensions the API need to be extensible and we don't
> see it in your current API ;) This needs to be there before validating
> this API.
>
> On Mon, Oct 7, 2013 at 5:17 PM, Guillaume "Louis-Marie" Delhumeau
> <[email protected]> wrote:
> > Thanks to your advices (Eddy and Thomas), I propose you a clean version:
> >
> https://github.com/gdelhumeau/xwiki-platform/tree/new-wiki-api/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-api/src/main/java/org/xwiki/wiki
> >
> > I have only changed the API, not the implementation.
> >
> > I think it starts to be clean.
> >
> >
> > 2013/10/7 Guillaume "Louis-Marie" Delhumeau <[email protected]>
> >
> >> Hi Eddy.
> >>
> >> First, thanks for your answer.
> >>
> >> 2013/10/7 Eduard Moraru <[email protected]>
> >>
> >>> Hi Guilllaume,
> >>>
> >>> 1) What is the point of the WikiDescriptorAlias class if it just holds
> and
> >>> returns a string?
> >>>
> >>
> >>> Also, the only method in the WikiDescriptorManager that works with
> aliases
> >>> accepts a String instead of the WikiDescriptorAlias class, so this
> means
> >>> that the class is useless:
> >>>
> >>> WikiDescriptor getByWikiAlias(String wikiAlias) throws
> >>> WikiManagerException;
> >>>
> >>
> >> I did not really think about it, I just take the work done by Vincent on
> >> wiki descriptors.
> >>
> >>
> >>> 2) WikiManager:
> >>>
> >>> The methods wikiIdExists and and isWikiIdAvailable do the same thing,
> they
> >>> just call it differently. Use only one, like wikiExists().
> >>>
> >>
> >> I should have added the javadoc about that. This is what I have in mind
> :
> >> - wikiExists(String wikiOd) as you said
> >> - wikiAvailable(String wikiId) that checks if the wiki id is valid and
> >> free (that means that there is no existing database with that name --
> not
> >> necessary related to XWiki).
> >>
> >> It is not implemented yet.
> >>
> >>
> >>>
> >>> Also, since it's a WikiManager, so the "wiki" part is in the name of
> the
> >>> class, we get it that it deals with wikis. You could remove the "wiki"
> >>> part
> >>> from method names, like:
> >>> - create instead of createWiki
> >>> - delete instead of deleteWiki
> >>> - exists instead of existsWiki
> >>> - so on...
> >>>
> >>
> >> I agree. I'll change it ;)
> >>
> >>
> >>>
> >>> Note on the naming of methods:
> >>> I`ve noticed a rather annoying thing in the way the methods are named.
> So
> >>> you have a class that is say... WikiDescriptor.
> >>>
> >>
> >> Indeed, but a Wiki class would not contain something else than a
> >> descriptor. I don't know what to do. Renaming WikiDescriptor to Wiki?
> >>
> >>
> >>>
> >>> 3) WikiManager:
> >>>
> >>> What is the point of these 2 methods?
> >>>
> >>>     void setDescriptor(WikiDescriptor descriptor);
> >>>
> >>>     void removeDescriptor(WikiDescriptor descriptor);
> >>>
> >>> Looking at the implementation, I see that you`re handling descriptors
> >>> (setting/deleting) whithout corelating it to the wikis. I mean, if you
> >>> remove a descriptor, then you must remove the wiki too, and that is the
> >>> task of the WikiManager.delete() method.
> >>>
> >>
> >> I have keeped them because it is used in the descriptors implementation
> of
> >> Vincent. But I agree that it is weird to have it in the API.
> >>
> >>
> >>>
> >>> 4) Don`t use implementation details. Improve the interface (API) if
> there
> >>> is information you`re missing:
> >>>
> >>>
> https://github.com/gdelhumeau/xwiki-platform/blob/new-wiki-api/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-default/src/main/java/org/xwiki/wiki/descriptor/internal/DefaultWikiManager.java#L209
> >>>
> >>
> >> I disagree.
> >> In this code, I need to have the document related to the descriptor. It
> >> depends on the current implementation, because we can imagine an
> >> implementation where the descriptors are not stored in the wiki. So I
> won't
> >> add a getDocument() in the API, but I need it in my implementation.
> >>
> >>
> >>>
> >>> 5) DefaultWikiManager.createDescritptor
> >>> Since you have a WikiDescriptorBuilder class, maybe that is where the
> >>> logic
> >>> of creating/building the descriptor's details (objects, document) and
> >>> where
> >>> the logic of extracting the document name from wiki name and viceversa
> >>> should be located.
> >>>
> >>>
> https://github.com/gdelhumeau/xwiki-platform/blob/new-wiki-api/xwiki-platform-core/xwiki-platform-wiki/xwiki-platform-wiki-default/src/main/java/org/xwiki/wiki/descriptor/internal/DefaultWikiManager.java#L126
> >>>
> >>
> >> I agree, I will move that code into WikiDescriptorBuilder.
> >>
> >>
> >>>
> >>> 6) DefaultWikiManager.getByWikiId
> >>> Again seeing the logic of wikiID-to-document. It should be located in a
> >>> single place and not spread in multiple places. Use a method of the
> >>> WikiManager class or of the DescriptorBuilder class.
> >>>
> >>
> >> OK.
> >>
> >>
> >>>
> >>> 7) WikiManagerScriptService:
> >>> - deleteWiki: Why do you need Admin right to delete a wiki when you did
> >>> not
> >>> need it in order to create it? That`s bad. We should probably have a
> >>> deleteWiki right as well.
> >>
> >>
> >> It is a temporary solution in my implementation.
> >> The problem is: who has the right to remove a wiki ?
> >> - his owner? But we don't have the notion of owner in this API. It
> belongs
> >> to the wiki-users module to handle this concept.
> >> - someone who has the CREATE_WIKI right? That means every person who has
> >> the CREATE_WIKI right can also delete any existing wiki?
> >> - someone who as the DELETE_WIKI right? Why not, but we need to make a
> >> vote for adding this new right.
> >>
> >> So, in my first implementation, I have used the admin right.
> >>
> >>
> >>> Also, consider the workspaces use case when user
> >>> create and delete wikis/workspaces when they want to and when they are
> >>> done
> >>> with them.
> >>>
> >>
> >> To me, it belongs to the future wiki-user module.
> >>
> >>
> >>> - context key for exceptions "lastexception2" is not the best of
> choices.
> >>> Try something like "wikiException" instead, or even just
> "lastexception"
> >>> like it was before (if we consider this as a best practice). What's the
> >>> reason for "lastexception2"?
> >>>
> >>>
> >> It's a bad commit. I have setted this name for debugging reason.
> >>
> >>
> >>>
> >>> As a general note, I fail to see the added value of this module at this
> >>> point. I mean, the whole point was to have both the functionality of
> >>> WikiManager and Workspaces. I get it that it's a work in progress and
> that
> >>> it's at the first stages, but you need to touch those points before it
> >>> becomes relevant. Not that it's bad, just that it's not much there to
> see
> >>> at this point.
> >>>
> >>
> >> The idea is to split in different simple modules, that enable us to
> easily
> >> add a new feature or to depends on a module without depending on the
> whole
> >> core. I try to reduce the dependencies while I design the modules.
> >>
> >>
> >>>
> >>> Hope this helps,
> >>> Eduard
> >>>
> >>>
> >> Thanks Eduard!
> >>
> >> Louis-Marie
> >>
> >>
> >>>
> >>> On Mon, Oct 7, 2013 at 11:49 AM, Guillaume "Louis-Marie" Delhumeau <
> >>> [email protected]> wrote:
> >>>
> >>> > Hi.
> >>> >
> >>> > In this thread, I want to propose you the tiniest API that we need to
> >>> > handle multiwiki. All other features (users, templates,
> workspaces...)
> >>> will
> >>> > be on other modules, because I think it is better for the
> extensibility.
> >>> >
> >>> > The new module will be based on the
> xwiki-platform-wiki-descriptor-api
> >>> > module, that I will rename to xwiki-platform-wiki-api. The
> >>> > WikiDescriptorManager becomes WikiManager and handle both descriptors
> >>> and
> >>> > databases.
> >>> >
> >>> > This API will permit:
> >>> > * to create a wiki
> >>> > * to remove a wiki
> >>> > * to list all wikis (returning a list of descriptors)
> >>> > * ...
> >>> >
> >>> > You can see the code of that proposal there:
> >>> >
> >>> >
> >>>
> https://github.com/gdelhumeau/xwiki-platform/tree/new-wiki-api/xwiki-platform-core/xwiki-platform-wiki
> >>> >
> >>> > The most important is to decide what the API must look like. The
> >>> > implementation can still be modified afterwards.
> >>> >
> >>> > I hope you like it,
> >>> >
> >>> > Louis-Marie
> >>> > _______________________________________________
> >>> > devs mailing list
> >>> > [email protected]
> >>> > http://lists.xwiki.org/mailman/listinfo/devs
> >>> >
> >>> _______________________________________________
> >>> devs mailing list
> >>> [email protected]
> >>> http://lists.xwiki.org/mailman/listinfo/devs
> >>>
> >>
> >>
> > _______________________________________________
> > 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
>
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to