[
https://issues.apache.org/jira/browse/CONFIGURATION-613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14943894#comment-14943894
]
Oliver Heger commented on CONFIGURATION-613:
--------------------------------------------
Hm, I have made the experience that most of the issues reported against Commons
Configuration are related to list splitting and trimming. There are so many
corner cases and different use cases that there is probably no single right
solution.
That said, your arguments sound plausible. Now as version 2.0 is ante portas,
there is the chance to do some changes which would otherwise not be possible
(in an 1.x release, I would say, don't change it - it might break existing
code).
So would it make sense to set the _trimmingDisabled_ flag to *true* in the
constructor that expects a Properties object or what exactly do you propose?
> MapConfiguration cannot handle property set to single \t or \n
> --------------------------------------------------------------
>
> Key: CONFIGURATION-613
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-613
> Project: Commons Configuration
> Issue Type: Bug
> Reporter: Maarten Boekhold
>
> See the following test, written in groovy (2.4.4). Open a groovyConsole,
> copy/paste in this code and hit ctrl-Enter to run. You need a working
> internet connection.
> {code}
> @Grab(group='commons-configuration', module='commons-configuration',
> version='1.9')
> import org.apache.commons.configuration.MapConfiguration
> import org.apache.commons.configuration.PropertiesConfiguration
> // groovy dollar-slashy-string syntax, ignores backslash
> // as an escape character so \t remains a literal string
> // backslash + t
> def propsString = $/
> prefix.field1=\t
> prefix.field2=a\tb
> /$
> // Java properties work
> Properties props = new Properties()
> props.load(new StringReader(propsString))
> // OK
> assert props.getProperty('prefix.field1') == '\t'
> // OK
> assert props.getProperty('prefix.field2') == 'a\tb'
> // PropertiesConfiguration works
> PropertiesConfiguration propscfg = new PropertiesConfiguration()
> propscfg.load(new StringReader(propsString))
> // OK
> assert propscfg.getString('prefix.field1') == '\t'
> // OK
> assert propscfg.getProperty('prefix.field2') == 'a\tb'
> // MapConfiguration does not work
> MapConfiguration mapcfg = new MapConfiguration(props)
> // OK
> assert mapcfg.getProperty('prefix.field2') == 'a\tb'
> // FAIL
> // MapConfiguration loses the single tab character
> assert mapcfg.getString('prefix.field1') == '\t'
> {code}
> Output is:
> {noformat}
> Exception thrown
> Assertion failed:
> assert mapcfg.getString('prefix.field1') == '\t'
> | | |
> | "" false
> org.apache.commons.configuration.MapConfiguration@1cd4064c
> at ConsoleScript13.run(ConsoleScript13:35)
> {noformat}
> As you can see, once we've 'converted' the java.util.Properties instance to a
> MapConfiguration, the single \t character is lost. *Embedded* tab characters
> however are retained!
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)