Uploaded image for project: 'Commons Configuration'
  1. Commons Configuration
  2. CONFIGURATION-404

Revisit - Brackets in property key causes NumberFormatException

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.5
    • Fix Version/s: 1.7
    • Component/s: None
    • Labels:
      None

      Description

      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.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                oliver.heger@t-online.de Oliver Heger
                Reporter:
                walkerr Rob Walker
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: