Request for comments: Bug 6306820

Alan Bateman Alan.Bateman at Sun.COM
Wed May 23 01:26:56 PDT 2007


Richard Kennard wrote:
> :
> An alternative approach would be to expose a COPY of the internal Map, 
> let the user modify it, and then introduce a setParameterMap method to 
> re-set it. However, the problem there is that, internally, it is 
> important the Map is a LinkedHashMap - so that it maintains the 
> ordering of parameters. At the moment, however, getParameterMap simply 
> returns a Map (eg. it doesn't worry the user with what sort of Map).
>
> However, setParameterMap would not have this luxury: it would have to 
> be setParameterMap( LinkedHashMap ).
>
> So I guess it comes down to what seems less messy? Exposing the 
> internal Map, or exposing the fact that it is a LinkedHashMap?
>
Yes, a copy is important as you don't want to hand out a reference to 
the LinkedHashMap used in the representation (this would create too many 
problems and probably prevent you from changing the internal 
representation in the future). In the spec you can say that the 
iteration order of the returned map corresponds to the parameter 
ordering.  For ease-of-use the returned map can be modifiable.  To allow 
construction of a UrlQueryString then you can include a create method 
that takes a Map as a parameter. The parameter need not be a 
LinkedHashMap. In the spec for this method you can make it clear that 
the ordering of parameters depends on the map iteration order. If 
someone invokes toMap (or whatever you call it) and then creates a new 
UrlQueryString then it do what you expect as the iteration order of the 
exported map is predictable.

-Alan.



More information about the net-dev mailing list