apache commons configuration loads property until "," character
Asked Answered
N

5

19

I want to load configuration (apache commons configuration) from a properties file. My program is:

PropertiesConfiguration pc = new PropertiesConfiguration("my.properties");
System.out.println(pc.getString("myValue"));

In my.properties I have

 myValue=value,

with comma

When I run program the output is value, not value, with comma. Looks like value is loaded until , character.

Any ideas?

Novgorod answered 10/6, 2011 at 13:54 Comment(1)
Note that this is no longer the default behavior in commons-configuration 2.Milli
L
10

Check Javadoc. You have to setDelimiterParsingDisabled(true) to disable parsing list of properties.

Loiret answered 10/6, 2011 at 14:1 Comment(0)
A
16

That behavior is clearly documented, i.e., that PropertiesConfiguration treats a value with a comma as multiple values allowing things like:

fruit=apples,banana,oranges

to be interpreted sensibly. The fix (from the doc) is to add a backslash to escape the comma, e.g.,

myKey=value\, with an escaped comma
Assistant answered 10/6, 2011 at 13:59 Comment(2)
Note that if you are using profiles with different config files you need to escape twice these ',' commas with '\\,' because the strings are parsed twice.Congruent
@Congruent Double escaped worked for us. Thanks!Asaasabi
L
10

Check Javadoc. You have to setDelimiterParsingDisabled(true) to disable parsing list of properties.

Loiret answered 10/6, 2011 at 14:1 Comment(0)
O
7

Actually propConfig.setDelimiterParsingDisabled(true) is working, but you must load the config file after this setting, for example:

propConfig = new PropertiesConfiguration();
propConfig.setDelimiterParsingDisabled(true);
propConfig.load(propertiesFile);

Settings won't work if your code like is:

propConfig = new PropertiesConfiguration(propertiesFile);
propConfig.setDelimiterParsingDisabled(true);
Outlive answered 12/12, 2017 at 9:22 Comment(0)
G
1

PropertiesConfiguration interprets ',' as a value separator.

Grethel answered 10/6, 2011 at 14:0 Comment(0)
V
0

If you put \ before the ,, you escape it, and you can read the value

Example:

myValue=value\, with comma

You read = value, with comma without problems

Verb answered 28/6, 2015 at 9:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.