You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sebb <se...@gmail.com> on 2011/12/03 11:33:02 UTC

Properties not always [was: svn commit: r1209685 - /commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/ConfigurationFactory.java]

On 3 December 2011 07:25, Stefan Bodewig <bo...@apache.org> wrote:
> Hi Oliver,
>
> On 2011-12-02, <oh...@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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org