Vincent Massol wrote:
> Hi,
> 
> I've started working on our new model again (see 
> http://dev.xwiki.org/xwiki/bin/view/Design/XWikiModel20 
>   for a reminder of what this is about). Right now I'm leaning towards  
> having a typed API but that extends the JCR API.
> For example:
> 
> public interface Server extends Repository
> {
>      /**
>       * @return the list of all wiki names inside this Server
>       */
>      List<String> getWikiNames();
> 
>      Wiki getWiki(String wikiName);
> 
>      Wiki createWiki(String wikiName);
> 
>      void addWiki(Wiki wiki);
> 
>      void removeWiki(String wikiName);
> }
> 
> or
> 
> public interface Document extends Node
> {
>      /**
>       * @return the list of object definitions defined inside this  
> document
>       */
>      List<ObjectDefinition> getObjectDefinitions();
> 
>      List<Object> getObjects();
> 
>      List<Attachment> getAttachments();
> 
>      void setContent(String content);
> }
> 
> As you can see these 2 interfaces extend the JCR interfaces  
> (Repository and Node) which means you either use the typed APIs they  
> expose of the underlying JCR API.
> For example you could write:
> 
> $doc.setProperty("xwiki:content", "my new content"); <-- JCR API
> $doc.save() <-- JCR API
> 
> or
> 
> $doc.setContent("my new content"); <-- typed API
> $doc.save() <-- JCR API
> 
> This means we'll be tied to the JCR API but I don't see this as a bad  
> thing since this API is a generic document-oriented repository API and  
> doesn't impose any implementation.

I'll have to read more about JCR before I can comment on this.

> The alternative would be to use our own API and copy 90% of the  
> existing JCR API and then do the mapping in the implementing classes.
> 
> Let me know what you think. I'll be committing some interfaces soon at
> http://svn.xwiki.org/svnroot/xwiki/sandbox/components/xwiki-model/
> 
> If you don't agree let me know quickly so that we can discuss it and  
> come to an agreement.
> 
> On a different but related topic I'm also interested in getting your  
> feedback on the interface names I have created (ObjectDefinition  
> instead of Class, Server for a wiki farm, etc).

+1 for ObjectDefinition

Server is not perfect, since there are many deployment options that 
don't correspond to a single hardware server: cloud computing, 
clustering, virtualization... And Server is still pointing to hardware, 
at least that's how I feel. And I think we had this discussion in the past.

-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to