Did you check in more recent versions of Restlet ? Ours is tarting to
be pretty old.

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
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to