[ 
https://issues.apache.org/jira/browse/CONFIGURATION-846?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tim Donohue updated CONFIGURATION-846:
--------------------------------------
    Description: 
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]).
{quote}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.
{quote}
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.

  was:
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.


> 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.0, 2.10.1
>            Reporter: Tim Donohue
>            Priority: Minor
>
> 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]).
> {quote}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.
> {quote}
> 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