commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CONFIGURATION-613) MapConfiguration cannot handle property set to single \t or \n
Date Mon, 05 Oct 2015 19:33:27 GMT

    [ 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)

Mime
View raw message