On Wed, May 6, 2009 at 2:45 PM, Vincent Massol <vinc...@massol.net> wrote:

>
> On May 6, 2009, at 2:31 PM, Pascal Voitot wrote:
>
> > Just a quick question, I have recompiled my server with your last
> > commits
> > and when I write this page:
> >
> > {{velocity}}
> > {{html wiki="true"}}
> > #warning("(% style='font-size: 130%;' %)blablabla")
> > {{/html}}
> > {{/velocity}}
> >
> > I get the following exception...
> >
> > Can you confirm it works on your test server? It would confirm I
> > have a
> > problem on my server...
>
> yes works fine here.
>

Thanks, I will clean and recompile from scratch...


>
> Thanks
> -Vincent
>
> >
> >
> > thanks
> > Pascal
> >
> > org.xwiki.rendering.macro.MacroExecutionException: Failed to parse
> > HTML content [<?xml version="1.0" encoding="UTF-8"?>
> >
> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
> > <html><div class="warningmessage"><span class="messagetype">Warning:
> > </span>(% style='font-size: 130%;' %)blablabla</div></html>
> >
> >
> > ]
> >       at
> > org
> > .xwiki
> > .rendering.internal.macro.html.HTMLMacro.parseXHTML(HTMLMacro.java:
> > 215)
> >       at
> > org
> > .xwiki
> > .rendering.internal.macro.html.HTMLMacro.execute(HTMLMacro.java:175)
> >       at
> > org
> > .xwiki
> > .rendering.internal.macro.html.HTMLMacro.execute(HTMLMacro.java:61)
> >
> >
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal
> > .transformation
> > .MacroTransformation.transformOnce(MacroTransformation.java:169)
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal
> > .transformation
> > .MacroTransformation.transform(MacroTransformation.java:113)
> >
> >
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal
> > .transformation
> > .DefaultTransformationManager
> > .performTransformations(DefaultTransformationManager.java:72)
> >       at
> > com
> > .xpn
> > .xwiki.doc.XWikiDocument.performSyntaxConversion(XWikiDocument.java:
> > 5123)
> >
> >
> >       at
> > com
> > .xpn
> > .xwiki.doc.XWikiDocument.performSyntaxConversion(XWikiDocument.java:
> > 5096)
> >       at
> > com
> > .xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:
> > 531)
> >       at com.xpn.xwiki.api.Document.getRenderedContent(Document.java:472)
> >
> >
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at
> > sun
> > .reflect
> > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >       at
> > sun
> > .reflect
> > .DelegatingMethodAccessorImpl
> > .invoke(DelegatingMethodAccessorImpl.java:25)
> >
> >
> >       at java.lang.reflect.Method.invoke(Method.java:585)
> >       at org.apache.velocity.util.introspection.UberspectImpl
> > $VelMethodImpl.invoke(UberspectImpl.java:295)
> >       at
> > org
> > .apache
> > .velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:245)
> >
> >
> >       at
> > org
> > .apache
> > .velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:
> > 203)
> >       at
> > org
> > .apache
> > .velocity.runtime.parser.node.ASTReference.render(ASTReference.java:
> > 294)
> >       at
> > org
> > .apache
> > .velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318)
> >
> >
> >       at
> > org
> > .xwiki
> > .velocity.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:
> > 178)
> >       at
> > org
> > .xwiki
> > .velocity.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:
> > 143)
> >       at
> > com
> > .xpn
> > .xwiki
> > .render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:108)
> >
> >
> >       at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1611)
> >       at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:124)
> >       at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:226)
> >       at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:115)
> >
> >
> >       at
> > org
> > .apache
> > .struts
> > .action.RequestProcessor.processActionPerform(RequestProcessor.java:
> > 431)
> >       at
> > org
> > .apache.struts.action.RequestProcessor.process(RequestProcessor.java:
> > 236)
> >       at
> > org.apache.struts.action.ActionServlet.process(ActionServlet.java:
> > 1196)
> >
> >
> >       at
> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
> > 432)
> >       at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> >       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> >       at
> > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
> >
> >
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1124)
> >       at
> > com
> > .xpn
> > .xwiki
> > .wysiwyg
> > .server.filter.ConversionFilter.doFilter(ConversionFilter.java:145)
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >
> >
> >       at
> > com
> > .xpn
> > .xwiki
> > .web
> > .SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:
> > 295)
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >       at
> > com
> > .xpn
> > .xwiki
> > .web
> > .SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:
> > 112)
> >
> >
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >       at
> > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> > 361)
> >       at
> > org
> > .mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> > 216)
> >
> >
> >       at
> > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> > 181)
> >       at
> > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> > 766)
> >       at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> > 417)
> >
> >
> >       at
> org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:334)
> >       at
> org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
> >       at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:103)
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >
> >
> >       at
> > com
> > .xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:
> > 68)
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >       at
> > com
> > .xpn
> > .xwiki
> > .web
> > .SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:
> > 295)
> >
> >
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >       at
> > com
> > .xpn
> > .xwiki
> > .web
> > .SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:
> > 112)
> >       at org.mortbay.jetty.servlet.ServletHandler
> > $CachedChain.doFilter(ServletHandler.java:1115)
> >
> >
> >       at
> > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> > 361)
> >       at
> > org
> > .mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> > 216)
> >       at
> > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> > 181)
> >
> >
> >       at
> > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> > 766)
> >       at
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> > 417)
> >       at
> > org
> > .mortbay
> > .jetty
> > .handler
> > .ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
> >
> >
> >       at
> > org
> > .mortbay
> > .jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> >       at
> > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> > 152)
> >       at org.mortbay.jetty.Server.handle(Server.java:324)
> >
> >
> >       at
> > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> > 535)
> >       at org.mortbay.jetty.HttpConnection
> > $RequestHandler.content(HttpConnection.java:880)
> >       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:746)
> >
> >
> >       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
> >       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> >       at
> > org
> > .mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
> > 409)
> >
> >
> >       at org.mortbay.thread.QueuedThreadPool
> > $PoolThread.run(QueuedThreadPool.java:522)
> > Caused by: java.lang.ClassCastException:
> > org.xwiki.rendering.renderer.printer.XHTMLWikiPrinter
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal.renderer.printer.WikiWriter.getWikiPrinter(WikiWriter.java:
> > 46)
> >
> >
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal.renderer.printer.WikiWriter.write(WikiWriter.java:93)
> >       at org.dom4j.io.XMLWriter.writeString(XMLWriter.java:1266)
> >       at org.dom4j.io.XMLWriter.write(XMLWriter.java:492)
> >       at
> > org
> > .xwiki
> > .rendering
> > .renderer.printer.XMLWikiPrinter.printXML(XMLWikiPrinter.java:80)
> >
> >
> >       at
> > org
> > .xwiki
> > .rendering
> > .renderer.printer.XHTMLWikiPrinter.printXML(XHTMLWikiPrinter.java:64)
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal
> > .renderer
> > .chaining.XHTMLChainingRenderer.onWord(XHTMLChainingRenderer.java:338)
> >       at
> > org
> > .xwiki
> > .rendering
> > .listener
> > .chaining
> > .AbstractChainingListener.onWord(AbstractChainingListener.java:682)
> >
> >
> >       at
> > org
> > .xwiki
> > .rendering
> > .listener
> > .chaining
> > .BlockStateChainingListener.onWord(BlockStateChainingListener.java:
> > 855)
> >       at
> > org
> > .xwiki
> > .rendering
> > .listener
> > .chaining
> > .AbstractChainingListener.onWord(AbstractChainingListener.java:682)
> >
> >
> >       at org.xwiki.rendering.block.WordBlock.traverse(WordBlock.java:53)
> >       at
> > org
> > .xwiki
> > .rendering
> > .block.AbstractFatherBlock.traverse(AbstractFatherBlock.java:68)
> >       at
> > org
> > .xwiki
> > .rendering
> > .internal
> > .macro
> > .html
> > .XMLBlockConverterHandler.characters(XMLBlockConverterHandler.java:
> > 146)
> >
> >
> >       at org.xml.sax.helpers.XMLFilterImpl.characters(XMLFilterImpl.java:
> > 564)
> >       at
> > org
> > .wikimodel
> > .wem
> > .xhtml
> > .filter
> > .XHTMLWhitespaceXMLFilter
> > .sendCharacters(XHTMLWhitespaceXMLFilter.java:406)
> >       at
> > org
> > .wikimodel
> > .wem
> > .xhtml
> > .filter
> > .XHTMLWhitespaceXMLFilter
> > .sendCharacters(XHTMLWhitespaceXMLFilter.java:400)
> >
> >
> >       at
> > org
> > .wikimodel
> > .wem
> > .xhtml
> > .filter
> > .XHTMLWhitespaceXMLFilter
> > .sendPreviousContent(XHTMLWhitespaceXMLFilter.java:245)
> >       at
> > org
> > .wikimodel
> > .wem
> > .xhtml
> > .filter
> > .XHTMLWhitespaceXMLFilter.flushContent(XHTMLWhitespaceXMLFilter.java:
> > 279)
> >
> >
> >       at
> > org
> > .wikimodel
> > .wem
> > .xhtml
> > .filter
> > .XHTMLWhitespaceXMLFilter.endElement(XHTMLWhitespaceXMLFilter.java:
> > 173)
> >       at org.xml.sax.helpers.XMLFilterImpl.endElement(XMLFilterImpl.java:
> > 546)
> >       at
> > org
> > .wikimodel
> > .wem
> > .xhtml
> > .filter.AccumulationXMLFilter.endElement(AccumulationXMLFilter.java:
> > 69)
> >
> >
> >       at org.xml.sax.helpers.XMLFilterImpl.endElement(XMLFilterImpl.java:
> > 546)
> >       at
> > org
> > .wikimodel
> > .wem.xhtml.filter.DTDXMLFilter.endElement(DTDXMLFilter.java:70)
> >       at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > Source)
> >
> >
> >       at
> > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
> > Source)
> >       at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
> > $FragmentContentDispatcher.dispatch(Unknown
> > Source)
> >       at
> > org
> > .apache
> > .xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
> > Source)
> >
> >
> >       at
> > org
> > .apache.xerces.parsers.XML11NonValidatingConfiguration.parse(Unknown
> > Source)
> >       at
> > org
> > .apache.xerces.parsers.XML11NonValidatingConfiguration.parse(Unknown
> > Source)
> >       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> >
> >
> >       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
> Source)
> >       at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
> >       at
> > org
> > .wikimodel
> > .wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:48)
> >
> >
> >       at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
> >       at
> > org
> > .wikimodel
> > .wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:48)
> >       at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
> >
> >
> >       at
> > org
> > .wikimodel
> > .wem.xhtml.filter.DefaultXMLFilter.parse(DefaultXMLFilter.java:48)
> >       at
> > org
> > .xwiki
> > .rendering.internal.macro.html.HTMLMacro.parseXHTML(HTMLMacro.java:
> > 212)
> >       ... 70 more
> >
> >
> >
> > On Tue, May 5, 2009 at 5:07 PM, Pascal Voitot
> > <pascal.voitot....@gmail.com>wrote:
> >
> >>
> >>
> >> On Tue, May 5, 2009 at 5:04 PM, Vincent Massol <vinc...@massol.net>
> >> wrote:
> >>
> >>>
> >>> On May 5, 2009, at 5:01 PM, Pascal Voitot wrote:
> >>>
> >>>> I will try to compile it and deploy it on my website...
> >>>>
> >>>> To be quicker, what module have you modified?
> >>>
> >>> xwiki-xml
> >>> xwiki-rendering-api
> >>> xwiki-rendering-macro-html
> >>>
> >>> You can also wait for a snapshot build at http://maven.xwiki.org
> >>>
> >>
> >> I love compiling, this is a hobby ;););)
> >>
> >>
> >>
> >>
> >>>
> >>> Thanks
> >>> -Vincent
> >>>
> >>>> regards
> >>>> Pascal
> >>>>
> >>>> On Tue, May 5, 2009 at 4:58 PM, Vincent Massol <vinc...@massol.net>
> >>>> wrote:
> >>>>
> >>>>>
> >>>>> On May 5, 2009, at 4:16 PM, Pascal Voitot wrote:
> >>>>>
> >>>>>> no better idea...
> >>>>>> a very special case to remind in the syntax help to my mind...
> >>>>>
> >>>>> Just committed the new behavior. Would be great if some users/devs
> >>>>> could verify it works on their use cases.
> >>>>>
> >>>>> Thanks
> >>>>> -Vincent
> >>>>>
> >>>>>> Pascal
> >>>>>>
> >>>>>> On Tue, May 5, 2009 at 9:40 AM, Vincent Massol <vinc...@massol.net
> >>>>>> >
> >>>>>> wrote:
> >>>>>>
> >>>>>>> After trying to implement it I've found the following caveats:
> >>>>>>>
> >>>>>>> * if the user wants an html comment he needs to escape the --
> >>>>>>> * if the user wants a NL he'll need to enter <br/>
> >>>>>>> * if the user wants a paragraph he'll need to enter <p>...</p>
> >>>>>>> * And the most problematic one IMO: the user needs to be very
> >>>>>>> careful
> >>>>>>> about new lines since:
> >>>>>>>
> >>>>>>> <table>
> >>>>>>> <tr>
> >>>>>>> <td>
> >>>>>>> * [[listitem]]
> >>>>>>> </td>
> >>>>>>> </tr>
> >>>>>>> </table>
> >>>>>>>
> >>>>>>> is very different from
> >>>>>>>
> >>>>>>> <table>
> >>>>>>> <tr>
> >>>>>>> <td>
> >>>>>>> * [[listitem]]
> >>>>>>>
> >>>>>>> </td>
> >>>>>>> </tr>
> >>>>>>> </table>
> >>>>>>>
> >>>>>>> In the first case the </td>, </tr> and </table> and
> >>>>>>> continuation of
> >>>>>>> the list item written in wiki syntax since the wiki parser
> >>>>>>> accepts
> >>>>>>> multiline content... hence you'll get in XHTML:
> >>>>>>>
> >>>>>>> <table><tbody><tr><td><ul><li><!--startwikilink:listitem--><span
> >>>>>>> class="wikicreatelink"><a href="/xwiki/bin/view/listitem?
> >>>>>>> parent=xwiki:Space.Page"><span
> >>>>>>> class="wikigeneratedlinkcontent">Page</
> >>>>>>> span></a></span><!--stopwikilink--></td></tr></tbody></table></
> >>>>>>> li></
> >>>>>>> ul>
> >>>>>>>
> >>>>>>> which is completely invalid.
> >>>>>>>
> >>>>>>> The same applies for:
> >>>>>>>
> >>>>>>> {{macro/}}
> >>>>>>> </td>
> >>>>>>>
> >>>>>>> vs
> >>>>>>>
> >>>>>>> {{macro/}}
> >>>>>>>
> >>>>>>> </td>
> >>>>>>>
> >>>>>>> in the first case the macro is inline and will generate inline
> >>>>>>> content
> >>>>>>> and in the second case it's standalone.
> >>>>>>>
> >>>>>>> Still trying to figure out a best solution but I don't see one
> >>>>>>> right
> >>>>>>> now...
> >>>>>>>
> >>>>>>> If you have any idea, shoot!
> >>>>>>>
> >>>>>>> Thanks
> >>>>>>> -Vincent
> >>>>>>>
> >>>>>>> On May 4, 2009, at 3:25 PM, Vincent Massol wrote:
> >>>>>>>
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> After discussing with Thomas we've reached the conclusion
> >>>>>>>> that we
> >>>>>>>> should change the way the HTML macro handle its content when
> >>>>>>>> wiki=true.
> >>>>>>>> For ex take the following input:
> >>>>>>>>
> >>>>>>>> {{velocity}}
> >>>>>>>> ...
> >>>>>>>> {{html wiki="true"}}
> >>>>>>>> <form>
> >>>>>>>> $xwiki.includeForm("XWiki.MyClassSheet")
> >>>>>>>> <br />
> >>>>>>>> <p>
> >>>>>>>> <input type="submit" name="submit" value="Create this new
> >>>>>>>> Workpackage" />
> >>>>>>>> </p>
> >>>>>>>> </form>
> >>>>>>>> {{/html}}
> >>>>>>>> ...
> >>>>>>>> {{/velocity}}
> >>>>>>>>
> >>>>>>>> And assume that MyClassSheet has some $doc.display() velocity
> >>>>>>>> code
> >>>>>>>> which thus generate {{html}} macros.
> >>>>>>>>
> >>>>>>>> Current Result
> >>>>>>>> ============
> >>>>>>>>
> >>>>>>>> Right now here's what happens:
> >>>>>>>> 1) velocity macro is executed and $xwiki.includeForm executes
> >>>>>>>> 2) MyClassSheet generate {{html}} macro content thus yielding:
> >>>>>>>>
> >>>>>>>> {{html wiki="true"}}
> >>>>>>>> <form>
> >>>>>>>> {{html}}...<someTag>...</someTag>{{/html}}
> >>>>>>>> </form>
> >>>>>>>> {{/html}}
> >>>>>>>>
> >>>>>>>> 3) After velocity has finished executing the velocity macro
> >>>>>>>> calls
> >>>>>>>> the wiki parser on the result and thus the top level HTML macro
> >>>>>>>> executes
> >>>>>>>> 4) since wiki=true the content is given to a SAX parser and
> >>>>>>>> each
> >>>>>>>> XML
> >>>>>>>> tag content is given to the wiki parser. Thus "{{html}}...",
> >>>>>>>> "..."
> >>>>>>>> and "{{/html}}"  will be parser by the wiki parser separately
> >>>>>>>> (because <someTag> is valid XML), thus generating non expected
> >>>>>>>> content as a result.
> >>>>>>>>
> >>>>>>>> Proposed change
> >>>>>>>> ==============
> >>>>>>>>
> >>>>>>>> Modify the HTML behavior so that the wiki parser executes first
> >>>>>>>> (instead of the SAX parser) and render the result using a
> >>>>>>>> special
> >>>>>>>> renderer that prints the special symbols and text as is.
> >>>>>>>>
> >>>>>>>> When run on our example this would give (same steps 1) and 2)):
> >>>>>>>>
> >>>>>>>> 3) wiki parser executes and generate XDOM. Render it using the
> >>>>>>>> special renderer
> >>>>>>>>
> >>>>>>>> Note that this means that if in HTML your write content that
> >>>>>>>> has a
> >>>>>>>> meaning in some wiki syntax you'll need to escape it. For
> >>>>>>>> example if
> >>>>>>>> you have:
> >>>>>>>>
> >>>>>>>> {{html wiki=true}}
> >>>>>>>> <!--hello-->
> >>>>>>>> {{/html}}
> >>>>>>>>
> >>>>>>>> you'll get some strikethrough. So you'll need to write instead:
> >>>>>>>>
> >>>>>>>> {{html wiki=true}}
> >>>>>>>> <!~-~-hello~-~->
> >>>>>>>> {{/html}}
> >>>>>>>>
> >>>>>>>> WDYT?
> >>>>>>>>
> >>>>>>>> Here's my +1
> >>>>>>>>
> >>>>>>>> Thanks
> >>>>>>>> -Vincent
> _______________________________________________
> devs mailing list
> devs@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to