You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Rob Walker (JIRA)" <ji...@apache.org> on 2010/01/15 06:18:54 UTC

[jira] Commented: (CONFIGURATION-404) Revisit - Brackets in property key causes NumberFormatException

    [ https://issues.apache.org/jira/browse/CONFIGURATION-404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12800546#action_12800546 ] 

Rob Walker commented on CONFIGURATION-404:
------------------------------------------

The bug reported above was raised under JIRA-336, and closed as having ways to workaround - which is correct.

On Vista and Win7 this  issue now crops up a lot because of the usage of ProgramFiles(x86) as a standard directory name.

The workaround proposal under the original issue requires every user to implement their own workaround, and it's non trivial because many of the member fields and methods of tree classes are private and so a simple subclass based solution can't be used.

An alternative approach is to simple catch the exception  and handle it, reporting the item as "not an index".. TBH I'd say an unhandled of this nature is less than ideal in library code anyway, so my view is that this also strengthens the codebase.

We have locally implemented this patch and it's working very well, so would like to see it in the codebase.



> Revisit - Brackets in property key causes NumberFormatException
> ---------------------------------------------------------------
>
>                 Key: CONFIGURATION-404
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-404
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 1.5
>            Reporter: Rob Walker
>            Assignee: Oliver Heger
>             Fix For: 1.6
>
>
> Hi,
> When using brackets in property key we get an exception every time.
> Escaping brackets with \ doesn't help.
> Example
> #property in property file
> test(ef)=false
> causes 
> java.lang.NumberFormatException: For input string: "ef" at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
>         at java.lang.Integer.parseInt(Integer.java:447)
>         at java.lang.Integer.parseInt(Integer.java:497)
>         at org.apache.commons.configuration.tree.DefaultConfigurationKey
> $KeyIterator.checkIndex(DefaultConfigurationKey.java:834)
>         at org.apache.commons.configuration.tree.DefaultConfigurationKey
> $KeyIterator.nextKey(DefaultConfigurationKey.java:511) at
> org.apache.commons.configuration.tree.DefaultExpressionEngine.findNodesForKey(DefaultExpressionEngine.java:462) at
> org.apache.commons.configuration.tree.DefaultExpressionEngine.query(DefaultExpressionEngine.java:286) at
> org.apache.commons.configuration.HierarchicalConfiguration.fetchNodeList(HierarchicalConfiguration.java:925 at
> org.apache.commons.configuration.HierarchicalConfiguration.setProperty(HierarchicalConfiguration.java:735) at
> org.apache.commons.configuration.ConfigurationUtils.copy(ConfigurationUtils.java:143) at
> org.apache.commons.configuration.ConfigurationUtils.convertToHierarchical(ConfigurationUtils.java:199)  at org.apache.commons.configuration.CombinedConfiguration
> $ConfigData.getTransformedRoot(CombinedConfiguration.java:794)  at
> org.apache.commons.configuration.CombinedConfiguration.constructCombinedNode(CombinedConfiguration.java:653) at
> org.apache.commons.configuration.CombinedConfiguration.getRootNode(CombinedConfiguration.java:504) at
> org.apache.commons.configuration.HierarchicalConfiguration.fetchNodeList(HierarchicalConfiguration.java:925) at
> org.apache.commons.configuration.HierarchicalConfiguration.getProperty(HierarchicalConfiguration.java:327) at
> org.apache.commons.configuration.CombinedConfiguration.getProperty(CombinedConfiguration.java:578) at
> org.apache.commons.configuration.AbstractConfiguration.resolveContainerStore(AbstractConfiguration.java:1155) at
> org.apache.commons.configuration.AbstractConfiguration.getString(AbstractConfiguration.java:1034)  at
> org.apache.commons.configuration.AbstractConfiguration.getString(AbstractConfiguration.java:1017) 
> Explanation i got in mailing list from Oliver Heger
> I guess you use DefaultConfigurationBuilder for loading a combined 
> configuration?
> The exception is due to the fact that brackets have a special meaning in 
> the query syntax for hierarchical configurations. 
> (DefaultConfigurationBuilder transforms all configuration sources into 
> hierarchical configurations, so also for properties, which are not 
> hierarchical by default, the same rules apply.)
> So far escaping brackets or other specific characters in property keys 
> is not supported. It seems to be rather unusual to use brackets in 
> property keys, so you may well be the first one who noticed this problem.
> Unfortunately I don't have a working solution for this problem right 
> now.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.