Vincent Massol wrote: > On Sep 11, 2008, at 9:23 AM, Ludovic Dubost wrote: > > >> The big issue I see is that we want to maintain compatibility of the >> current core apis: >> >> Document.getComments() >> CommentAddAction >> >> These are the only two places where we have calls to comments in the >> core, and except for comment delete, the standard comment features >> only >> use these two APIs (my prototype works the way I did it currently). >> It would be great if somebody could look at the XWiki core patch >> >> http://svn.xwiki.org/svnroot/xwiki/sandbox/plugins/comments/src/main/java/com/xpn/xwiki/plugin/comments/xwiki-core.patch >> >> Here is a piece of code for example using the plugin mecanism >> >> + public Vector<BaseObject> getComments(boolean asc, XWikiContext >> context) throws CommentsException >> + { >> + CommentsPlugin commentsPlugin = (CommentsPlugin) >> context.getWiki().getPlugin("comments", context); >> + if (commentsPlugin!=null) { >> + List<Comment> commentList = >> commentsPlugin.getComments(this, asc, context); >> + if (commentList==null) >> + return null; >> + Vector<BaseObject> commentVector = new >> Vector<BaseObject>(); >> + for (int i=0;i<commentList.size();i++) { >> + Comment comment = (Comment) commentList.get(0); >> + BaseObject object = new BaseObject(); >> + object.setNumber(i); >> + object.setClassName("XWiki.XWikiComments"); >> + object.setStringValue("author", comment.getAuthor()); >> + object.setLargeStringValue("content", >> comment.getContent()); >> + object.setName(getFullName()); >> + object.setDateValue("date", comment.getDate()); >> + commentVector.add(object); >> + } >> + return commentVector; >> >> But I have the feeling it should be directly a component and not the >> plugin. >> But either way I cannot call the getComments from the plugin or the >> component if I don't have an interface to it in the core. >> > > You have an interface to it available since the comment module jar > would be in the classpath and thus the xwiki-core jar will be able to > "see" the interface and use it. > > Basically instead of getPlugin, you'd use > Utils.getComponent(CommentManager.ROLE) where CommentManager is an > interface located in the comment jar. > This means the core will depend on the comment component right ?
> That's unless you want to do it in 2 steps and have the comments > module in the core for now and move it to an application module later > on when we have this notion of Interface Extensions and super-XAR. It > might be easier and better for now since the component modules we have > now are all "clean" 'i.e. no direct dependencies on xwiki-core except > through the xwiki-bridge module. So if you go the route of using xwiki- > bridge then it's fine, otherwise you could put it in core in a > separate comment package for now. > > Well my component will need many things from the core XWikiDocument etc... Maybe it's right to stay in the comments package in the core. So if I do that: 1/ I use Utils.getComponent() to get my package 2/ How do I expose to velocity ? I suppose if I want this in a 1.5 core I will need a plugin right ? Ludovic > Thanks > -Vincent > > >> Vincent Massol wrote: >> >>> Hi Ludovic, >>> >>> On Sep 10, 2008, at 11:45 AM, Ludovic Dubost wrote: >>> >>> >>> >>>> Hi devs, >>>> >>>> I'm working currently on the new comments and ratings plugins. The >>>> objective is to allow to separate the comment code from the core to >>>> allow different implementation which can be: >>>> >>>> - comments as objects to the page (the current implementation) >>>> - comments as separate pages >>>> - ratings separated from comments >>>> - comments and ratings merged >>>> >>>> We have code in the sandbox >>>> http://svn.xwiki.org/svnroot/xwiki/sandbox/plugins/comments/src/main/java/com/xpn/xwiki/plugin/comments/ >>>> >>>> There is a patch for the core to call the comments code in the >>>> sandbox also. >>>> >>>> Now we have currently used a plugin oriented entry point which calls >>>> a CommentsManager which is a separate module. It does not seem very >>>> practical to call the plugin from the core. I've been thinking that >>>> it would be better to make the CommentsManager a component, with the >>>> interface in the core, and separate the implementations in a >>>> comments component in the xwiki-core-comments. The approach would be >>>> similar to Artem's approach on the query plugin. >>>> >>>> >>> I haven't reviewed yet but if the interface is located in the core >>> then there's a problem I think. >>> >>> >>> >>>> Then we would use a velocity bridge to expose the comments to the >>>> velocity scripting. >>>> >>>> Is that the right approach ? >>>> >>>> >>> Here's the vision: >>> * This feature should be in a separate "application", i.e. a separate >>> build module >>> * It should use interface extension to plugin into the UI >>> * In the further future, it would be a single XAR containing both >>> xwiki pages and jars. Right now it probably means splitting this >>> "application" module into 2 modules: one for the UI and one for >>> business logic >>> * The business logic should be implemented using components >>> * The component interfaces must be located in the the business logic >>> module (and not in the core core). >>> * The component should use the xwiki-bridge module to bridge between >>> the old architecture and the new one. >>> * The Velocity bridge mechanism we have discussed and agree on in >>> some >>> other thread should be used (http://tinyurl.com/5c4wa2). Note that >>> it's not available yet. Sergiu was working on making this possible by >>> making components of the velocity module uberspectors but he's had to >>> spend some time on some research project with StephaneL so this has >>> been delayed a bit. It should be there in the coming 2-3 weeks. Right >>> now if you really need it in Velocity you can put the component in >>> the >>> Velocity context directly in the DefaultVelocityManager.java class >>> >>> >>> >>>> Is there documentation to help me achieve this ? >>>> >>>> >>> For components: >>> * >>> http://dev.xwiki.org/xwiki/bin/view/Community/DevelopmentPractices#HComponentDevelopment >>> * and existing code >>> >>> >>> >>>> Can some of our core devs looks at the comments code and provide >>>> some feedback to improve this. I think we can improve it >>>> significantly. >>>> We need comments and ratings as separate pages pretty quickly so we >>>> need feedback very soon to be able to take it into account. >>>> >>>> >>> Can someone do that. I don't have time right now. I'm on a very very >>> tight schedule for the new rendering. >>> >>> Thanks >>> -Vincent >>> > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > > -- Ludovic Dubost Blog: http://blog.ludovic.org/ XWiki: http://www.xwiki.com Skype: ldubost GTalk: ldubost _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

