Tim Donohue created CONFIGURATION-846:
-----------------------------------------

             Summary: Unable to load multivalued configurations into Spring 
using ConfigurationPropertySource
                 Key: CONFIGURATION-846
                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-846
             Project: Commons Configuration
          Issue Type: Bug
    Affects Versions: 2.10.1, 2.10.0
            Reporter: Tim Donohue


We've run into an odd bug when using Commons Configuration v2 + Spring Boot 
which I _believe_ is caused by changes in the PR 
[https://github.com/apache/commons-configuration/pull/309] to address 
https://issues.apache.org/jira/browse/CONFIGURATION-834.   

During a routine upgrade from Commons Configuration v2.9.0 to v2.10.1, we 
discovered that our multivalued configurations (i.e. an array or list of 
values) were only loading the *first value* into Spring.  In other words, it 
seems to no longer be possible to load multivalued configurations into Spring 
Beans via something like this:

{{@Value("${some.multivalued.prop}")}}
{{String[] myMultivaluedVariable;}}

I could be wrong, but I _believe_ it may be caused by the [change from  
`getProperty()` to `getString()` in PR 
309|https://github.com/apache/commons-configuration/pull/309/files#diff-2f481434a16d50ce9df3af48f9e72fc8872050b0e8d1614fcd7420a8779db283R52],
 because `getString()` is [documented to only return the *first value* in a 
list of 
values](https://commons.apache.org/proper/commons-configuration/userguide/howto_basicfeatures.html#List_handling).

> Of interest is also the last line of the example fragment. Here the 
> `getString()` method is called for a property that has multiple values. This 
> call will return the first value of the list.

I don't know of the proper solution to this issue. But I can confirm that 
v2.9.0 works properly for multivalued configurations, but both v2.10.0 and 
v2.10.1 do not (in both those versions we are seeing only the first value 
loaded into Spring for multivalued configurations).

For our purposes, we are looking to create a custom ConfigurationPropertySource 
to workaround this issue in our codebase.  However, ideally, it'd be better to 
ensure the default ConfigurationPropertySource is still able to handle 
multi-valued configurations.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to