On Mon, Jul 6, 2015 at 3:51 PM, Guillaume "Louis-Marie" Delhumeau <gdelhum...@xwiki.com> wrote: > For the record, what we use in our REST api is JAX-RS, a Java API to handle > REST urls. We do not use Restlet directly.
s/We do not/We are not supposed to/ ;) > > There are several implementations of this API: Jersey (by Oracle), Apaxe > CXF, etc... From what I've understood, Reslet is not a jax-rs > implementation, but it provides one. This is why I had some issues while > browsing the Restlet documentation, assuming it was only about JAX-RS. > > So actually the question is not "can Restlet handle this?" but "can JAX-RS > handle it?". Yep. > If the answer is no, changing or upgrading our framework will > not solve anything, unless we decide to stop using JAX-RS too. > > > > 2015-07-06 14:11 GMT+02:00 Jean SIMARD <jean.sim...@xwiki.com>: > >> Indeed, we may check. However, in the documentation of restlet, there >> is still sentences like "Note that this implementation is not final >> yet." (which seems here forever) and "This extension is the result of a >> (german) master thesis." which doesn't mean the work is bad but which >> usually mean no maintenance after the thesis [1]. It looks like restlet >> is a bit risky. >> >> The implementation seems not very alive on the Github account [2]. >> >> [1] >> >> http://restlet.com/technical-resources/restlet-framework/guide/2.3/extensions/jaxrs >> [2] https://github.com/restlet/restlet-framework-java >> >> PS: Thanks to Fabio for some information about that >> >> On 06/07/2015 13:58, Thomas Mortagne wrote: >> > On Mon, Jul 6, 2015 at 1:57 PM, Thomas Mortagne >> > <thomas.morta...@xwiki.com> wrote: >> >> Did you check in more recent versions of Restlet ? Ours is tarting to >> >> be pretty old. >> > >> > (2.0.14 vs 2.3.3) >> > >> >> On Mon, Jul 6, 2015 at 1:26 PM, Guillaume "Louis-Marie" Delhumeau >> >> <gdelhum...@xwiki.com> wrote: >> >>> I've made some experiments with Restlet. It seems there is no solution >> >>> out-of-the-box to handle multiple level of nesting in the URL path. >> But we >> >>> can actually cheat. >> >>> >> >>> We can define a path with this syntax: >> >>> @Path("/wikis/{wikiName}/spaces/{spaceName: .+}/pages/{pageName}") >> >>> >> >>> Here, {spaceName: .+} means that any character could be present, >> including >> >>> a slash. >> >>> >> >>> So we can actually retrieve the spaces list as a string, like "A/B/C", >> that >> >>> we can manually converts to "A.B.C" in our REST components. >> >>> >> >>> A working proof of concept of this (committed on a branch): >> >>> >> https://github.com/xwiki/xwiki-platform/compare/d5f4997ddf40d70c8eef9a9ee0e9e98d767eb586...26b63f99654c90ba39c0601ee0d7c9397e1c629c >> >>> >> >>> So we can use /xwiki/rest/wikis/xwiki/spaces/A/B/C as a valid URL. >> >>> >> >>> With the same trick, we can implement the multiple "spaces" proposal: >> >>> https://github.com/xwiki/xwiki-platform/commit/3e83b6cf44e8 >> >>> it actually delegates to the component the parsing of the spaces >> segments. >> >>> >> >>> It might not be as clean as a proper custom router, but at least is >> >>> feasible without rewriting everything. >> >>> >> >>> What do you think? >> >>> >> >>> >> >>> >> >>> >> >>> 2015-07-06 12:02 GMT+02:00 Guillaume "Louis-Marie" Delhumeau < >> >>> gdelhum...@xwiki.com>: >> >>> >> >>>> I am currently trying to implement the multiple spaces proposal to >> see if >> >>>> it is doable. >> >>>> >> >>>> 2015-07-03 11:52 GMT+02:00 vinc...@massol.net <vinc...@massol.net>: >> >>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> On 3 Jul 2015 at 11:48:24, vinc...@massol.net (vinc...@massol.net >> (mailto: >> >>>>> vinc...@massol.net)) wrote: >> >>>>> >> >>>>>> Just for the record, I’m -1 for the dotted solution just for spaces >> as >> >>>>> I mentioned in the JIRA issue ( >> >>>>> >> http://jira.xwiki.org/browse/XWIKI-12206?focusedCommentId=87137&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-87137 >> >>>>> ) >> >>>>>> >> >>>>>> If we want to use “dots” then I much prefer that we use the >> serialized >> >>>>> reference as in: >> >>>>>> >> >>>>>> /rest/v2/type//ref/ >> >>>>>> >> >>>>>> Examples: >> >>>>>> >> >>>>>> /rest/v2/property/wiki:space1.space2.page^object.property >> >>>>>> /rest/v2/object/wiki:space1.space2.page^object >> >>>>>> /rest/v2/attachment/wiki:space1.space2.page@filename >> >>>>>> /rest/v2/page/wiki:space1.space2.page >> >>>>>> /rest/v2/space/wiki:space1.space2 >> >>>>>> /rest/v2/wiki/wiki >> >>>>> >> >>>>> I meant the following (to be self-describing): >> >>>>> >> >>>>> /rest/v2/type/property/ref/wiki:space1.space2.page^object.property >> >>>>> /rest/v2/type/object/ref/wiki:space1.space2.page^object >> >>>>> /rest/v2/type/attachment/ref/wiki:space1.space2.page@filename >> >>>>> /rest/v2/type/page/ref/wiki:space1.space2.page >> >>>>> /rest/v2/type/space/ref/wiki:space1.space2 >> >>>>> /rest/v2/type/wiki/ref/wiki >> >>>>> >> >>>>> Thanks >> >>>>> -Vincent >> >>>>> >> >>>>>> Note that this leads to shorter and simpler URLs. >> >>>>>> >> >>>>>> Thanks >> >>>>>> -Vincent >> >>>>>> >> >>>>>> On 3 Jul 2015 at 11:20:14, Fabio Mancinelli ( >> fabio.mancine...@xwiki.com >> >>>>> (mailto:fabio.mancine...@xwiki.com)) wrote: >> >>>>>> >> >>>>>>> Hi, >> >>>>>>> >> >>>>>>> We should check how to declare a URI Template of the form >> >>>>>>> /rest/wikis/xwiki/(spaces/SPACE)+/pages/PAGE in JAX-RS... The Spec >> >>>>>>> allows regexs in the URI Template defintion in @Path annotations >> but >> >>>>>>> this is something to be checked. I am not sure that it's that >> simple. >> >>>>>>> >> >>>>>>> Given the previous remark, maybe the dotted solution might be >> easier >> >>>>> to handle. >> >>>>>>> >> >>>>>>> Of course API versioning is a very good thing to have. >> >>>>>>> >> >>>>>>> Thanks, >> >>>>>>> Fabio >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> On Fri, Jul 3, 2015 at 12:55 AM, Eduard Moraru wrote: >> >>>>>>>> Hi, >> >>>>>>>> >> >>>>>>>> Initially, I wanted to go with the dots, however the backwards >> >>>>>>>> compatibility problem would force us to either use a different key >> >>>>> than >> >>>>>>>> "spaces" and deprecate "spaces" or to introduce versioning (i.e. >> >>>>> path >> >>>>>>>> prefix like /rest/v1/wikis...), as Vincent said. >> >>>>>>>> >> >>>>>>>> However, the multiple "spaces" (I think this is what you meant, >> >>>>> Vincent) >> >>>>>>>> alternative has more (I`d say only) advantages than disadvantages. >> >>>>> So the >> >>>>>>>> URL would be: >> >>>>>>>> >> >>>>>>>> >> >>>>> >> /xwiki/rest/wikis/xwiki/spaces/Europe/spaces/France/spaces/Paris/pages/WebHome >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> + is 100% backwards compatible >> >>>>>>>> ++ old apps will only be able to access the first level, as they >> >>>>> were >> >>>>>>>> designed >> >>>>>>>> ++ No mixup between space name (unescaped) vs space reference >> >>>>> (escaped) >> >>>>>>>> ++ As a result, no need to introduce any versioningjust yet >> >>>>>>>> >> >>>>>>>> + indeed is much more restful, since at each step (e.g. France) >> you >> >>>>> can >> >>>>>>>> have either subspaces (e.g. Paris) or pages (e.g. WebHome or any >> >>>>> other >> >>>>>>>> terminal page) >> >>>>>>>> ++ in other words, the resource hierarchy is better exposed >> >>>>>>>> >> >>>>>>>> + Bonus, we stick to the good old "/" separator >> >>>>>>>> >> >>>>>>>> + Reflects perfectly the expansion of the model that we are doing >> >>>>> through NS >> >>>>>>>> >> >>>>>>>> +1 for dots, i.e. >> >>>>>>>> /xwiki/rest/wikis/xwiki/spaces/Europe.France.Paris/pages/WebHome >> >>>>>>>> >> >>>>>>>> - longer URLs for long paths >> >>>>>>>> >> >>>>>>>> So I`m +1 for the "multiple spaces" option. >> >>>>>>>> >> >>>>>>>> Thanks, >> >>>>>>>> Eduard >> >>>>>>>> >> >>>>>>>> On Thu, Jul 2, 2015 at 6:14 PM, vinc...@massol.net >> >>>>>>>> wrote: >> >>>>>>>> >> >>>>>>>>> I think we should decide what we want independently of the REST >> >>>>> framework >> >>>>>>>>> impl, to be the most restful possible. >> >>>>>>>>> >> >>>>>>>>> Then we check how to do it in the REST fwk we currently use >> >>>>> (restlet) and >> >>>>>>>>> if not possible then we should check if it’s possible with some >> >>>>> other REST >> >>>>>>>>> fwk (jersey for example). >> >>>>>>>>> >> >>>>>>>>> At worse, if we don’t want to wait we will need at least to >> >>>>> introduce API >> >>>>>>>>> versioning so that we can change it later on easily. >> >>>>>>>>> >> >>>>>>>>> There’s also the suggestion I proposed with several “pages” >> >>>>> elements which >> >>>>>>>>> seems potentially more restful than dots to me (but leads to >> >>>>> longer urls). >> >>>>>>>>> >> >>>>>>>>> So IMO you should research more about what is the RESTful >> approach >> >>>>> to this >> >>>>>>>>> before we can decide anything. >> >>>>>>>>> >> >>>>>>>>> Thanks >> >>>>>>>>> -Vincent >> >>>>>>>>> >> >>>>>>>>> On 2 Jul 2015 at 15:57:53, Guillaume Louis-Marie Delhumeau ( >> >>>>>>>>> gdelhum...@xwiki.com(mailto:gdelhum...@xwiki.com)) wrote: >> >>>>>>>>> >> >>>>>>>>>> Hi. >> >>>>>>>>>> >> >>>>>>>>>> This proposal is already explained in >> >>>>>>>>>> http://jira.xwiki.org/browse/XWIKI-12206. I think it is an >> >>>>> important >> >>>>>>>>> issue >> >>>>>>>>>> to fix because it blocks >> >>>>> http://jira.xwiki.org/browse/XWIKI-12198 >> >>>>>>>>> (Ensure >> >>>>>>>>>> annotations work on nested spaces). >> >>>>>>>>>> >> >>>>>>>>>> The current REST URL for a space is: >> >>>>>>>>>> /xwiki/rest/wikis/xwiki/spaces/Europe >> >>>>>>>>>> >> >>>>>>>>>> and for a page: >> >>>>>>>>>> /xwiki/rest/wikis/xwiki/spaces/Europe/pages/WebHome >> >>>>>>>>>> >> >>>>>>>>>> The idea is to use dots as space separator in the REST URLs in >> >>>>> the case >> >>>>>>>>> of >> >>>>>>>>>> nested spaces. Example: >> >>>>>>>>>> /xwiki/rest/wikis/xwiki/spaces/Europe.France.Paris >> >>>>>>>>>> >> >>>>>>>>>> For spaces containing dots in their name, we simply escape them >> >>>>> with \ >> >>>>>>>>>> (%5C). >> >>>>>>>>>> >> >>>>>>>>>> It has the drawback to not have a similar URL than the standard >> >>>>> action, >> >>>>>>>>> ie: >> >>>>>>>>>> /xwiki/bin/view/Europe/France/Paris/WebHome - for view action >> >>>>>>>>>> /xwiki/rest/wikis/xwiki/spaces/Europe.France.Paris/pages/WebHome >> >>>>> - for >> >>>>>>>>> REST >> >>>>>>>>>> action >> >>>>>>>>>> >> >>>>>>>>>> But it does not seem possible to handle "/" in path parameters >> >>>>> with >> >>>>>>>>> Restlet. >> >>>>>>>>>> ie: >> >>>>>>>>>> /xwiki/rest/wikis/xwiki/spaces/Europe/France/Paris/pages/WebHome >> >>>>>>>>>> is not supported by Restlet. >> >>>>>>>>>> >> >>>>>>>>>> After a talk with some Restlet committers, they confirm me that >> >>>>> we have >> >>>>>>>>> to >> >>>>>>>>>> write our own URL router to handle this. I don't know if it >> >>>>> worth the >> >>>>>>>>> pain >> >>>>>>>>>> although I don't have evaluated it. >> >>>>>>>>>> >> >>>>>>>>>> So I guess this proposal using dots is the best option, but I'm >> >>>>> free to >> >>>>>>>>>> talk about this. >> >>>>>>>>>> >> >>>>>>>>>> Thanks, >> >>>>>>>>>> Guillaume >> >>>>>>>>>> >> >>>>> >> >>>>> _______________________________________________ >> >>>>> devs mailing list >> >>>>> devs@xwiki.org >> >>>>> http://lists.xwiki.org/mailman/listinfo/devs >> >>>>> >> >>>> >> >>>> >> >>>> >> >>>> -- >> >>>> Guillaume Delhumeau (gdelhum...@xwiki.com) >> >>>> Research & Development Engineer at XWiki SAS >> >>>> Committer on the XWiki.org project >> >>>> >> >>> >> >>> >> >>> >> >>> -- >> >>> Guillaume Delhumeau (gdelhum...@xwiki.com) >> >>> Research & Development Engineer at XWiki SAS >> >>> Committer on the XWiki.org project >> >>> _______________________________________________ >> >>> devs mailing list >> >>> devs@xwiki.org >> >>> http://lists.xwiki.org/mailman/listinfo/devs >> >> >> >> >> >> >> >> -- >> >> Thomas Mortagne >> > >> > >> > >> >> -- >> Jean Simard >> jean.sim...@xwiki.com >> Research engineer at XWiki SAS >> http://www.xwiki.com >> Committer on the XWiki.org project >> http://www.xwiki.org >> _______________________________________________ >> devs mailing list >> devs@xwiki.org >> http://lists.xwiki.org/mailman/listinfo/devs >> > > > > -- > Guillaume Delhumeau (gdelhum...@xwiki.com) > Research & Development Engineer at XWiki SAS > Committer on the XWiki.org project > _______________________________________________ > devs mailing list > devs@xwiki.org > http://lists.xwiki.org/mailman/listinfo/devs -- Thomas Mortagne _______________________________________________ devs mailing list devs@xwiki.org http://lists.xwiki.org/mailman/listinfo/devs