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.

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?". 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

Reply via email to