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

HierarchicalConfiguration with XPathExpressionEngine does not work when setting a new property

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.6
    • Fix Version/s: 1.7
    • Component/s: Expression engine
    • Labels:
      None
    • Environment:

      all

      Description

      The following code does not work as expected

      Bug.java
      public class Bug {
      
      	public static void main(String[] args) {
      		try {
      			XMLConfiguration config = new XMLConfiguration();
      			// works
      			config.setProperty("test.property[@attribute]", "value");
      			config.setExpressionEngine(new XPathExpressionEngine());
      			config.save(System.out);
      			// works
      			config.setProperty("test/property/@attribute", "value");
                              // does not work
      			config.setProperty("test/property/@attribute2", "value");
      		} catch (ConfigurationException e) {
      			// @FIXME Traitement d'exception par defaut
      			throw new RuntimeException(e);
      		}
      
      	}
      }
      

      hangs with the following exception:

      Exception in thread "main" java.lang.IllegalArgumentException: prepareAdd: Passed in key must contain a whitespace!
      at org.apache.commons.configuration.tree.xpath.XPathExpressionEngine.prepareAdd(XPathExpressionEngine.java:223)
      at org.apache.commons.configuration.HierarchicalConfiguration.addPropertyDirect(HierarchicalConfiguration.java:371)
      at org.apache.commons.configuration.AbstractHierarchicalFileConfiguration.addPropertyDirect(AbstractHierarchicalFileConfiguration.java:140)
      at org.apache.commons.configuration.HierarchicalConfiguration.setProperty(HierarchicalConfiguration.java:749)
      at org.apache.commons.configuration.AbstractHierarchicalFileConfiguration.setProperty(AbstractHierarchicalFileConfiguration.java:158)
      at Bug.main(Bug.java:29)

      the setProperty() method does not work if the property have to be added. This behavior is not really wanted, because in some generic cases, we don't know if the property is set or not before trying to set it.

        Attachments

          Activity

            People

            • Assignee:
              oheger Oliver Heger
              Reporter:
              fabien_nisol Fabien Nisol
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: