Hi Fabio, Thanks a lot for your clarification. Following RootResource class, I created a class called PageHTMLResource, which extends XWikiResource. This class defines a new endpoint (/wikis/{wikiName}/spaces/{spaceName}/pagesHTML/{pageName}) and produces "text/html" content. This link shows the class implementation as well as curl request and server response. https://docs.google.com/document/d/18xfQBSBxXT31a_QY5uBQ7c5MTbt9UEvk6zXO9F32... I hope I understand the requirement this time. I was also trying to use the same end point as PageResource class. However, it does not work as the restlet complains "WARNING: There is already a root resource class with path /wikis/{wikiName}/spaces/{spaceName}/pages/{pageName}". Therefore, adding a new end point seems like the way to go. If this is case, how many resources are needed to provide HTML content? page, space, links, etc.? Another question would be how to design the new end points? For now, "HTML" is appended after "pages" for PageHTMLResource, which gives /wikis/{wikiName}/spaces/{spaceName}/pagesHTML/{pageName}. This is just a quick and dirty design. Do you have better ideas? Best regards Jun Han On 05/18/2011 08:23 AM, Fabio Mancinelli wrote:
Hi Jun
On Wed, May 18, 2011 at 5:49 AM, Jun Han<[email protected]> wrote:
Hi Fabio and Thomas,
Thanks a lot.
I took some time to look at how to produce XML output in Xwiki REST API.
The job of marshaling Java object to XML is done by restlet.ext.JAXBProvider via Restlet 1.1.10. |@Provider @Consumes("application/xml") @Produces("application/xml") class JAXBProvider extends AbstractProvider|
Similarly, our HTMLProvider can also be devised if we want to provide a HTML output. |@Provider @Produces("text/html") class HTMLProvider extends AbstractProvider|
As discussed earlier, another issue is about html page's format and content. An easy way would be to transform XML to html page via XSLT. I also checked the current version of Restlet (2.0.7 stable). They added Representation class in v2.0 and plan to add Representation transformation (i.e., XML -> HTML) in version v2.2 via XSLT. see http://wiki.restlet.org/developers/175-restlet.html Therefore, I think XSLT approach might work for plain html.
Take a simple page as an example,
|<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <page xmlns="http://www.xwiki.org"> <title>New title</title> <content>New content</content> </page>|
What would be the output of html page?
|<html> <H1>Page<H1> <p>namespace: http://www.xwiki.org</p> <p>title: New title</p> <p>content: New content</p> </html> | Best regards Jun Han
I think you misunderstood what is the purpose of this functionality... We don't want to render in HTML the XML produced by the standard REST response. We simply want to return the HTML that comes from the rendering of the page content.
Basically, in its simplest form, this boils down to write a resource that returns what is generated by Document.getRenderedContent()
As a side note keep in mind that we are using JAX-RS in top of Restlet, so when defining a resource you need to create a @Component Class that extends XWikiResource and also list it in the META-INF/components.txt
You can have a look at https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwik... and https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwik... to see what I am talking about.
Thanks, Fabio
On 5/17/2011 5:29 AM, Fabio Mancinelli wrote:
Hi Jun
On Tue, May 17, 2011 at 9:16 AM, Jun Han<[email protected]> wrote:
Dear all,
Regarding REST API for XWiki, Source codes are in xwiki-trunk/xwiki-platform/xwiki-platform-core/xwiki-platform-rest. Test codes are in xwiki-trunk/xwiki-enterprise/xwiki-enterprise-test/xwiki-enterprise-test-rest. I hope I am looking at the correct places.
Correct.
XWiki-5820 is related to adding an endpoint for providing a rendered version of the page. Does REST API need to invoke xwiki-rendering library in order to render the html content?
There are several getRenderedContent() methods in the Document class... It should be enough to call them.
The current implementation will return various resources, (e.g., pages, tags, attachments), and produce XML responses in most cases. In XWiki-5820, only page resources will be rendered, right?
A straight-forward way may be to add additional end point (getPage and getPageInHTML), and they will be invoked according to different Accept http headers.
It would be great that an example can be given to show the expected input and output.
Actually this is a good question...
The original purpose of this resource was to provide a rendered version of a page (typically in HTML). Now, provided that we render in HTML, how this HTML should be returned?
If we render with the complete skin we would end up with the same content already available from http://.../xwiki/bin/view/Space/Page So the idea was to return the "bare HTML" that could be emdedded in other contexts.
For the input we can consider Accept headers and media parameters (already handled by the backend)
Thanks, Fabio
Best regards Jun Han _______________________________________________ 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
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs