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

vivek commented on CONFIGURATION-328:
-------------------------------------

Looks like the attribute is getting added as new tag,

<property>
<name>newFirst</name>
</property>
<property>
<value>first</value>
</property>

is supposed to be,

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

In my code,

1) I first add the <property> tag under the <test> element - by calling 
conf.addNodes
2) Then I add the name attribute to the newly added property - again by calling 
conf.addNodes
3) Then I add the value tag under property - again by calling conf.addNodes

I do create a new HierarchicalConfiguration.Node every time to add it.  

It all used to work fine in 1.3, but it's failing in 1.5.

Note, my reloading strategy is false - not sure if that has anything to do with 
this.

> XMLConfiguration addNodes() not behaving correctly (in 1.5)
> -----------------------------------------------------------
>
>                 Key: CONFIGURATION-328
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-328
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 1.5
>         Environment: Linux, Apache Configuration 1.5
>            Reporter: vivek
>            Priority: Blocker
>
> 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">
>                                 <value>Hi</value>
>                                 <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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to