jsr339-experts@jax-rs-spec.java.net

[jsr339-experts] Re: Injecting a sub-resource method path parameter into a resource field - legal or not?

From: Sergey Beryozkin <sberyozkin_at_talend.com>
Date: Thu, 23 Feb 2012 13:49:23 +0000

btw, I'm not sure it is even in the spec now, support for injecting
JAX-RS parameter values as properties (via fields or setters), I recall
it was in 0.8 or similar and at some stage I also remember seeing the
advice about the thread safety too; as it's impossible to inject a proxy
for 'int'

Sergey

On 23/02/12 13:46, Sergey Beryozkin wrote:
> On 23/02/12 13:37, Marek Potociar wrote:
>> To elaborate more, consider also the extended example:
>>
>> @Path("foo")
>> public class FooResource {
>> @PathParam("id") String id;
>>
>> @GET
>> public String getFoo() {
>> return id;
>> }
>>
>> @GET
>> @Path("bar/{id}")
>> public String getBar() {
>> return id;
>> }
>> }
>>
>> Should the above be legal? What should be returned for a GET "/foo"
>> request?
>
> 'null' - because no "id" template var has been captured in context of
> getFoo(), this is why this style is limited to the per-request root
> resources only, not thread-safe otherwise
>
> Cheers, Sergey
>
>>
>> Marek
>>
>> On 02/23/2012 12:01 PM, Marek Potociar wrote:
>>> Hello experts,
>>>
>>> we've received a bug report in Jersey about the following use case:
>>>
>>> @Path("foo")
>>> public class FooResource {
>>> @PathParam("id") String id;
>>>
>>> @GET
>>> @Path("bar/{id}")
>>> public String get() {
>>> return id;
>>> }
>>> }
>>>
>>> My question is, given the "id" path template is defined on a
>>> sub-resource method, should the value still be injectable
>>> into the resource field or not?
>>>
>>> IOW, with the example above, what should be a result of GET
>>> "/foo/bar/baz" request? Should it be "baz" or null ?
>>>
>>> Thanks,
>>> Marek
>
>