That is my fallback plan and isn't that much extra work.  Was just wanting
to see if JAX-RS had a way to help with it.

On Tue, Jun 23, 2015 at 6:22 PM, Craig McClanahan <[email protected]>
wrote:

> I tend to prefer solutions to things like this that will be obviously
> understood when I pass responsibility for the code on to someone else in
> the future, especially if that person is (like me) not particularly fluent
> at regexp syntax :-).  How about just going for two resource methods with
> individual paths (/{tenant}/resource{id} and /resource/{id}) and having
> them both call a common service method that takes tenant and id parameters,
> and the second one passes null for the tenant?
>
> Craig
>
>
> On Tue, Jun 23, 2015 at 5:42 PM, Kevin Schmidt <[email protected]>
> wrote:
>
> > I have a situation where I'd like a @PathParam to be optional.  For
> example
> > I'd like for the path /{tenant}/resource/{id} to be matched for both
> > .../myTenant/resource/12345 and .../resource/12345, the second case
> passing
> > in null for the tenant @PathParam.
> >
> > I did some research and it seemed like using a regex in my @Path would do
> > the trick, but I've been unable to get it to work.  And in one case, I'm
> > getting behavior that seems to be a bug?
> >
> > Here is what I've done:
> >
> >     @GET
> >     @Path("/{tenant : [^/]*}/resource/{id}")
> >     @Produces({MediaType.APPLICATION_JSON})
> >     public Response getResource(@PathParam("tenant") String tenant,
> > @PathParam("id") String id) {
> > ...
> >     }
> >
> > When I use the above with a URI .../t1/resource/12345 I get tenant=t1 and
> > id=12345 as expected, so all is well.
> >
> > If I use .../resource/12345 I get a "No operation matching request path"
> in
> > my log.
> >
> > If I use ...//resource/12345 I oddly get tenant=12345 and id=null.
> >
> > It is this last case that seems odd, even if my regex in @Path isn't
> fully
> > correct, I'd still expect tenant=null and id=12345 in this case.  So is
> > this a bug?  Or is there an explanation for it?
> >
> > But more importantly, is there a regex I can use to have tenant=null
> when I
> > use .../resource/12345 and tenant=t1 when I use .../t1/resource/12345?
> >
> > FWIW, if I try this @Path:
> >
> > @Path("/{tenant : ([^/]*)?}/resource/{id}")
> >
> > I get tenant=t1 and id=t1 which also doesn't seem right.  Another bug?
> >
> > I'm using CXF as part of Camel 2.15.1 running in Karaf 3.0.x.
> >
> > Thanks,
> >
> > Kevin
> >
>

Reply via email to