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.

[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

Reply via email to