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

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

From: Bill Burke <bburke_at_redhat.com>
Date: Mon, 25 Mar 2013 10:24:23 -0400

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();


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