Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.5
-
None
-
None
-
Linux, Apache Configuration 1.5
Description
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.