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

[jsr339-experts] Re: Resetting parameters after LinkBuilder#uri

From: Marek Potociar <marek.potociar_at_oracle.com>
Date: Mon, 25 Mar 2013 19:58:10 +0100

On Mar 25, 2013, at 3:24 PM, Bill Burke <bburke_at_redhat.com> wrote:

>
>
> On 3/25/2013 9:50 AM, Sergey Beryozkin wrote:
>> On 25/03/13 16:46, Bill Burke wrote:
>>>
>>>
>>> On 3/25/2013 9:34 AM, Sergey Beryozkin wrote:
>>>> Hi
>>>>
>>>> Should be LinkBuilder#uri documented to clarify that the parameters have
>>>> to be reset ?
>>>>
>>>> CXF user reported a different issue but it highlighted that when a link
>>>> builder is reused, the new Link will have the parameters inherited from
>>>> the previous link, for example,
>>>>
>>>> linkBuilder.uri("/next").rel("next").param("a", "a1");
>>>> Link next = linkBuilder.build();
>>>>
>>>> linkBuilder.uri("/prev").rel("prev").param("b", "b1");
>>>> Link prev = linkBuilder.build();
>>>>
>>>> Here, the prev Link will have the "a" parameter used to build the next
>>>> Link inherited, unless the parameters are reset when LinkBuilder#uri
>>>> method is called.
>>>>
>>>> Do you agree ?
>>>>
>>>
>>> No, i don't.
>>>
>> Is that it, you simply don't agree without even justifying why ?
>>
>> Let me give another try:
>>
>> >> linkBuilder.uri("/next").rel("next").param("a", "a1");
>> >> Link next = linkBuilder.build();
>> >>
>> >> linkBuilder.uri("/prev");
>> >> Link prev = linkBuilder.build();
>>
>> Would it really be what user meant, having "/prev" link having a rel=next ?
>>
>
> You shouldn't be re-using LInkBuilder in this manner, your above example is better exemplified by:
>
> Link next = LinkBuilder.fromUri("/next").param("a", "a1").build();
> Link prev = LinkBuilder.fromUri("/prev").param("b", "b1").build();

FWIW, I agree with Bill.

Marek
>
>
> --
> Bill Burke
> JBoss, a division of Red Hat
> http://bill.burkecentral.com