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)