Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.6
-
None
-
all
Description
The following code does not work as expected
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.