click-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Grigorov <mgrigo...@apache.org>
Subject Re: Possible bug with PageLink class?
Date Wed, 12 Mar 2014 09:20:54 GMT
Hi,


On Wed, Mar 12, 2014 at 11:16 AM, Tamas Balazs <tamasbalazs@outlook.com>wrote:

> I have come across with a rather erratic behavior of PageLink class
> setParameters(Map) method - possible bug, or I do something wrong.
>
> Anyway, having created an ArrayList of PageLink I started to populate the
> list with a for-loop. Upon creating a PageLink objects I set their
> parameters with the setParameters(Map) method (argument is a
> TreeMap<String, String>). This is all fine, but if I want to add another
> parameter for the very same PageLink object (in my case it is the
> for-counter int) then it always puts the last counter int value!
>
> Example:
>
> for (int i=0; i<6; i++)
> {
> list.add(new PageLink("somenames", MyClass.home);
> list.get(i).setParameters(paramMap);
>

It seems you are sharing a data structure.
If Click uses the same data structure then the bug is clear.
If Click copies the entries to a new structure then it is something else.



> list.get(i).setParameter("counter", string.valueOf(i));
>
> }
>
> You would expect the link "counter" parameter to be 0, 1, 2, 3, 4,and for
> the fifth link is 5. In my case it is all 5. The other parameters being
> passed to the new links from the TreeMap<String, String> are all fine.
>
> If I don't add the parameter Map to the new PageLink objects then the
> "counter" parameters are fine, they are coming up ok, the first link with 0
> and so on.
>
> Funnily enough if the new PageLinks are initialized as:
>
> list.add(new PageLink(string.valueOf(i), MyClass.home);
>
> ...then the link name will be the counter int, but if I add the paramMap
> and then the "counter" parameter, then the counter parameter stays 5 at
> each link - despite their anchor will be 0, 1, 2 etc...
>
> Last but not least, if I add the "counter" parameter to the paramMap
> within the loop before adding it to the new PageLink objects the "counter"
> value will be all 5!
>
> Well this is it...
>
> Tamas
>
>

Mime
View raw message