You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Oliver Heger (JIRA)" <ji...@apache.org> on 2011/07/29 21:30:10 UTC

[jira] [Commented] (CONFIGURATION-452) HierarchicalConfiguration with XPathExpressionEngine does not work when setting a new property

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

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

A fix was committed in revision 1152343. XPathExpressionEngine can now deal with keys for adding or setting properties which do not have to contain a whitespace. It tries to guess the location where to insert the new nodes.

I am not sure whether this fixes all problems or works with all possible keys. It would be good if you could give it a try. Simple scenarios as in your example should be supported now; I have added a new unit test class to verify this.

I still have to update the Javadocs and the documentation accordingly.

> 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
>            Assignee: Oliver Heger
>
> 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