Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.5
-
None
-
Java 8, Configurations2 2.5
Description
If a key is repeated in a configuration and then used in an interpolation elsewhere, the behaviour is inconsistent. There are other tickets/discussions about whether it should just pick the first value or not, but I don't think it should do both.
/tmp/test.properties
abc = hello abc = world foo.one = ${abc} foo.two = prefix ${abc} suffix
Demo.java (main)
Parameters params = new Parameters(); FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class) .configure(params.fileBased() .setFileName("/tmp/test.properties") ); try { FileBasedConfiguration config = builder.getConfiguration(); System.out.println(config.getString("foo.one")); System.out.println(config.getString("foo.two")); } catch (ConfigurationException cex) { // pass }
The output from the above is
hello prefix [hello, world] suffix
In the first case, only the first value is being matched, in the second both values (and [, ]) are used.
I'd expect the output to either be
First value only
hello prefix hello suffix
or
Both values used
[hello, world] prefix [hello, world] suffix
I can work around whichever style is chosen but think it'd be much more intuitive if both cases were handled the same.