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-336) Brackets in property key causes NumberFormatException
Date Thu, 30 Oct 2008 07:26:44 GMT

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

Oliver Heger commented on CONFIGURATION-336:
--------------------------------------------

The problem is basically caused by the conversion of a flat Configuration (e.g. a PropertiesConfiguration)
into a hierarchical one. Here all keys of the flat configuration are obtained and inserted
into the new hierarchical configuration. The hierarchical configuration is initialized with
a default expression engine that parses the property keys for brackets and tries to interpret
their contents as index values. This fails in this specific case.

I think, a good solution for this problem would be to support using a specific ExpressionEngine
when converting a flat configuration to a hierarchical one. If the property keys contain some
critical characters like brackets, an expression engine could be used that is initialized
with different index markers, e.g. square brackets.

To implement this solution at least two places have to be changed:
* ConfigurationUtils needs an overloaded variant of the convertToHierarchical() method, which
also expects an ExpressionEngine as parameter.
* CombinedConfiguration should use its own expression engine when converting flat configurations
to hierarchical ones. (This makes sense because this expression will also be used when querying
the resulting combined configuration.)

> Brackets in property key causes NumberFormatException
> -----------------------------------------------------
>
>                 Key: CONFIGURATION-336
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-336
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 1.5
>            Reporter: Pavel Savara
>
> 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.


Mime
View raw message