commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergio Criales <>
Subject Re: [configuration] Adding Nodes in certain position
Date Thu, 05 May 2011 14:49:56 GMT
I did that you explain, and I wasn't able to insert thet new node:

      List keyss = config1.getList("presentacion/movil/key");
      System.out.println("Lista de keys: " + keyss);
      keyss.add(2, "2.5");
      config1.setProperty("presentacion/movil/key", keyss);

the message was java.lang.IllegalArgumentException: prepareAdd: Passed
in key must contain a whitespace!

and the xml is

<?xml version="1.0" encoding="UTF-8"?>
<repositorio ss="">

Well, then I found this solution please check if it is right:

I used the document directly to insert the new node doing this:

    Document document = config.getDocument();

    Element nuevoKey = document.createElement("key");
    nuevoKey.setAttribute("name", leaf.getName());

and then add this element whith

        element.insertBefore(nuevoKey, key);

key is the node where I want to insert the new node before

then to leave the config consistent I did this

      String xmlSource = XmlUtils.getStringFromDom(document);
      config.load(new StringReader(xmlSource));

thanks in advance,

Sergio Criales

2011/4/21 Oliver Heger <>:
> Am 20.04.2011 22:14, schrieb Paul Benedict:
>> If the ordering matters, I would introduce a new OrderedConfiguration
>> interface for greater positioning control.
> Yes, this is a completely new feature. However, I fear that its
> implementation won't be straightforward.
> Currently, the hierarchical configuration implementation uses the
> ConfigurationNode interface to update its internal node structure. The
> cleanest solution is probably to extend this interface by an insert()
> method. But this would break binary compatibility and thus require a major
> release.
> @Sergio: If you only have simple structures like a list with nodes and
> values (and no child nodes or even complex sub trees), the following
> approach should work:
> - Call getList() with the correct key to obtain the current values of the
> nodes affected.
> - Insert the new node value at the desired position in the list.
> - Call setProperty() with the same key and the modified list. This will
> update the nodes structure correspondingly.
> But as I said, this only works for simple scenarios.
> Oliver
>> On Wed, Apr 20, 2011 at 3:02 PM, Oliver Heger
>> <>wrote:
>>> Hi Sergio,
>>> Am 20.04.2011 16:03, schrieb Sergio Criales:
>>>  Hi There,
>>>> I want to add a node before another node, but in the API I wasn' t
>>>> able to find how to do it, please any ideas to do this???
>>>> Sergio Criales
>>>>  this is indeed a good question! With the standard API defined by the
>>> Configuration interface there does not seem to be an obvious solution for
>>> this problem. All methods for adding properties append the new node(s) to
>>> existing ones.
>>> Also the ConfigurationNode API (which represents the nodes stored in a
>>> hierarchical configuration) does not support inserting a child node at a
>>> specified position.
>>> Obviously, nobody had this requirement before. Does anybody else have an
>>> idea?
>>> Oliver
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
>>> For additional commands, e-mail:
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message