Issue Details (XML | Word | Printable)

Key: CONFIGURATION-328
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Oliver Heger
Reporter: vivek
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Commons Configuration

XMLConfiguration addNodes() not behaving correctly

Created: 17/May/08 09:49 PM   Updated: 22/Aug/09 07:36 PM
Return to search
Component/s: None
Affects Version/s: 1.5
Fix Version/s: 1.6

Time Tracking:
Not Specified

Environment: Linux, Apache Configuration 1.5

Resolution Date: 20/May/08 12:11 PM


 Description  « Hide
Things used to work fine in 1.3, but now when I'm trying 1.5 my JUnit test suite is breaking when adding new properties. Here is what I'm doing,

1) I already have a configuration as following,

<test>
  <property name="isOk">
    <value>true</value>
    <default>false</default>
  </property>
  <property name="intProperty">
    <value>900</value>
    <default>500</default>
  </property>
  <property extra="0" name="stringProperty">
    <default>Bye</default>
  </property>
</test>

2) Now I need to add two new properties under <test>,

<property  name="newFirst">
  <value>first</value>
</property>
<property name="newSecond">
  <value>second</value>
</property>

3) Here is the code I'm using,

a) First create a new HierarchicalConfiguration.Node

private HierarchicalConfiguration.Node createNode(String name, Object value)  {
    HierarchicalConfiguration.Node node = new HierarchicalConfiguration.Node(name);
    node.setValue(value);
    return node;
}

b) Add the node to the list

List<HierarchicalConfiguration.Node> attrNodes = new ArrayList<HierarchicalConfiguration.Node>();
Node attrNode = createNode(attrName, newPropertyName);
attrNode.setAttribute(true);
attrNodes.add(attrNode);

c) Call addNodes on XMLConfiguration,

conf.addNodes(attrPath, attrNodes);

I run this in a look for each new property I need to add. For first property, I get element count for the test.property as 3 (conf.getMaxIndex(key)) - so I insert at test.property(3), which is right, but for the second property I get element count as 5 --> This is wrong, it should have been 4 (because I just added 1).

I check the saved the configuration file after adding those two new properties and it looks wrong too. Here is what I get,

<test>
  <property name="isOk">
    <value>true</value>
    <default>false</default>
  </property>
  <property name="intProperty">
    <value>900</value>
    <default>500</default>
  </property>
  <property extra="0" name="stringProperty">
    <value>Hi</value>
    default>Bye</default>
  </property>
  <property>
    <name>newFirst</name>
  </property>
  <property>
    <value>first</value>
  </property>
  <property>
    <name>newSecond</name>
  </property>
  <property>
    <value>second</value>
  </property>
</test>

The total element count for test.property gives me 7 ==> I was expecting 5.

There seems to have some code change in 1.5 releated to addNodes (for ex., CONFIGURATION-287). I'm not sure if I need to change the way I was calling addNodes before. It works fine with 1.3, but 1.5 completely fails on adding new properties.

I do need 1.5 for other bug fixes ( CONFIGURATION-268 and some other), but I can't use it until the addNodes behave correctly.

Marking this as blocker as I'm blocked because of this issue. If there is a workaround then please let me know.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
No work has yet been logged on this issue.