Thomas actually convinced me that 2) is better. Why: how to access a space called "pages"?
It would be: /xwiki/rest/wikis/xwiki/spaces/Europe/France/Paris/pages/ But this url has an other meaning: list all pages of the space Europe.France.Paris I have proposed to escape the space name for this kind of use-case, like this: /xwiki/rest/wikis/xwiki/spaces/Europe/France/Paris/~pages/ But this escaping using "~" is not very RESTful (it would be a custom, xwiki-specific, standard). Meanwhile the solution 2 does not have this drawback: /xwiki/rest/wikis/xwiki/spaces/Europe/spaces/France/spaces/Paris/pages/ is very clear. We have nothing to escape. Thanks, 2015-07-06 17:43 GMT+02:00 Guillaume "Louis-Marie" Delhumeau < [email protected]>: > Note: I am personally for 1). > > 2015-07-06 17:38 GMT+02:00 Thomas Mortagne <[email protected]>: > >> On Mon, Jul 6, 2015 at 5:11 PM, Guillaume "Louis-Marie" Delhumeau >> <[email protected]> wrote: >> > Let me resume everything. >> > >> > It seems that jax-rs does not have a solution for handling list >> parameters >> > [1] (except by using a query string, or matrix parameters, which we >> don't >> > want). But, thanks to some hacks (example there: >> > >> https://github.com/xwiki/xwiki-platform/compare/d5f4997ddf40d70c8eef9a9ee0e9e98d767eb586...26b63f99654c90ba39c0601ee0d7c9397e1c629c >> ) >> > we can manage to do it. We might find better solution afterwards. >> > >> > So we have several choices: >> > 1 - /xwiki/rest/wikis/xwiki/spaces/Europe/France/Paris/pages/WebHome - >> "/" >> > as separator for nested spaces >> > 2 - Edouard's proposition: >> > >> /xwiki/rest/wikis/xwiki/spaces/Europe/spaces/France/spaces/Paris/pages/WebHome >> > - with multiple "spaces/" prefix >> > 3 - Vincent's proposition - >> > /xwiki/rest/v2/type/page/ref/wiki:Europe.France.Paris.WebHome - the >> > reference version >> > >> > If we want to have this in M1, options 1 and 2 are more realistic. >> >> I don't think doing 3 is a good idea right now and this new concept >> needs to be discussed more. >> >> 1 looks easier to implements and write but 2 is probably more >> consistent with what we have today (plus it adds the feature of >> listing the nested spaces of some space) so I'm more for 2. >> >> > >> > [1] >> > >> http://cxf.547215.n5.nabble.com/Passing-array-as-a-parameter-in-JAX-RS-td563656.html >> > >> > Thanks, >> > Guillaume >> > >> > 2015-07-06 16:02 GMT+02:00 Thomas Mortagne <[email protected]>: >> > >> >> On Mon, Jul 6, 2015 at 3:51 PM, Guillaume "Louis-Marie" Delhumeau >> >> <[email protected]> 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 <[email protected]>: >> >> > >> >> >> 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 >> >> >> > <[email protected]> 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 >> >> >> >> <[email protected]> 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 < >> >> >> >>> [email protected]>: >> >> >> >>> >> >> >> >>>> I am currently trying to implement the multiple spaces >> proposal to >> >> >> see if >> >> >> >>>> it is doable. >> >> >> >>>> >> >> >> >>>> 2015-07-03 11:52 GMT+02:00 [email protected] < >> [email protected] >> >> >: >> >> >> >>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >> >>>>> On 3 Jul 2015 at 11:48:24, [email protected] ( >> [email protected] >> >> >> (mailto: >> >> >> >>>>> [email protected])) 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 ( >> >> >> [email protected] >> >> >> >>>>> (mailto:[email protected])) 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, [email protected] >> >> >> >>>>>>>> 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 ( >> >> >> >>>>>>>>> [email protected](mailto:[email protected])) 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 >> >> >> >>>>> [email protected] >> >> >> >>>>> http://lists.xwiki.org/mailman/listinfo/devs >> >> >> >>>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> -- >> >> >> >>>> Guillaume Delhumeau ([email protected]) >> >> >> >>>> Research & Development Engineer at XWiki SAS >> >> >> >>>> Committer on the XWiki.org project >> >> >> >>>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> -- >> >> >> >>> Guillaume Delhumeau ([email protected]) >> >> >> >>> Research & Development Engineer at XWiki SAS >> >> >> >>> Committer on the XWiki.org project >> >> >> >>> _______________________________________________ >> >> >> >>> devs mailing list >> >> >> >>> [email protected] >> >> >> >>> http://lists.xwiki.org/mailman/listinfo/devs >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> >> Thomas Mortagne >> >> >> > >> >> >> > >> >> >> > >> >> >> >> >> >> -- >> >> >> Jean Simard >> >> >> [email protected] >> >> >> Research engineer at XWiki SAS >> >> >> http://www.xwiki.com >> >> >> Committer on the XWiki.org project >> >> >> http://www.xwiki.org >> >> >> _______________________________________________ >> >> >> devs mailing list >> >> >> [email protected] >> >> >> http://lists.xwiki.org/mailman/listinfo/devs >> >> >> >> >> > >> >> > >> >> > >> >> > -- >> >> > Guillaume Delhumeau ([email protected]) >> >> > Research & Development Engineer at XWiki SAS >> >> > Committer on the XWiki.org project >> >> > _______________________________________________ >> >> > devs mailing list >> >> > [email protected] >> >> > http://lists.xwiki.org/mailman/listinfo/devs >> >> >> >> >> >> >> >> -- >> >> Thomas Mortagne >> >> _______________________________________________ >> >> devs mailing list >> >> [email protected] >> >> http://lists.xwiki.org/mailman/listinfo/devs >> >> >> > >> > >> > >> > -- >> > Guillaume Delhumeau ([email protected]) >> > Research & Development Engineer at XWiki SAS >> > Committer on the XWiki.org project >> > _______________________________________________ >> > devs mailing list >> > [email protected] >> > http://lists.xwiki.org/mailman/listinfo/devs >> >> >> >> -- >> Thomas Mortagne >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs >> > > > > -- > Guillaume Delhumeau ([email protected]) > Research & Development Engineer at XWiki SAS > Committer on the XWiki.org project > -- Guillaume Delhumeau ([email protected]) Research & Development Engineer at XWiki SAS Committer on the XWiki.org project _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

