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

Oliver Heger commented on CONFIGURATION-452:
--------------------------------------------

Thanks for reporting this.

This is probably not trivial to fix because the XPATH expression passed to 
setProperty() has to be interpreted to find the parent of the selected node. Is 
there a way in XPATH to retrieve the parent of an expression?

Will have to think about it and have a look at the XPATH spec. Ideas or even 
patches are welcome.

> HierarchicalConfiguration with XPathExpressionEngine does not work when 
> setting a new property
> ----------------------------------------------------------------------------------------------
>
>                 Key: CONFIGURATION-452
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-452
>             Project: Commons Configuration
>          Issue Type: Bug
>          Components: Expression engine
>    Affects Versions: 1.6
>         Environment: all
>            Reporter: Fabien Nisol
>
> The following code does not work as expected
> {code:title=Bug.java|borderStyle=solid}
> 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);
>               }
>       }
> }
> {code}
> 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.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to