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

Revisit - Brackets in property key causes NumberFormatException

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.5
    • 1.7
    • None
    • 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

              oheger Oliver Heger
              walkerr Rob Walker
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: