On 3 December 2011 07:25, Stefan Bodewig <bode...@apache.org> wrote:
> Hi Oliver,
>
> On 2011-12-02, <ohe...@apache.org> wrote:
>
>> Another attempt to fix the GUMP build using an ugly cast.

>> -        Map<Object, Object> systemProperties = System.getProperties();
>> +        // This is ugly, but it is safe because the Properties object 
>> returned
>> +        // by System.getProperties() (which is actually a Map<Object, 
>> Object>)
>> +        // contains only String keys.
>> +        @SuppressWarnings("unchecked")
>> +        Map<String, Object> systemProperties =
>> +                (Map<String, Object>) (Object) System.getProperties();
>>          MultiVariableExpander expander = new MultiVariableExpander();
>>          expander.addSource("$", systemProperties);
>
> The assumption you make here may not always hold true.  We've had
> several bug reports against Ant when we assumed the system properties
> would only hold string keys (or even values) and this simply was not
> true in cases where Ant code was used embedded in a larger application
> that was doing strange things.  java.util.Properties will not prevent
> you from putting objects into it.  I assume a commons component is at a
> bigger risk of such scenarios than an application like Ant.

That's very interesting; I suspect there are some other cases in
Commons where we have made this assumption.
[And probably in many other projects when converting to generics ...]

However, if one uses java.util.Properties.load() or void
java.util.Properties.loadXML() it should be OK, because the load
method only creates Strings?

> Even if it takes a bit longer it may be cleaner to create a new Map that
> contained a filtered view of only those properties that actually have
> string keys.

Good point.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to