XMLConfiguration.addNodes() problem using other configuration Nodes
-------------------------------------------------------------------

                 Key: CONFIGURATION-287
                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-287
             Project: Commons Configuration
          Issue Type: Bug
    Affects Versions: 1.4
            Reporter: Ruben Silva


Trying to use the method XMLConfiguration.addNodes() to add a tree of 
configuration properties to a node in other tree fails. 

Example:

public static void main(String ...args){            
try{
           configDestination = new XMLConfiguration("output.xml");
           configSource = new XMLConfiguration("input.xml");
       }
       catch(ConfigurationException cex){
           System.out.println("File not found");
       }
             Collection collection = new ArrayList();
       collection = configSource.getRoot().getChildren();
             configDestination.addNodes("newNodes", collection);                
  
try {
           configDestination.save();
            } catch (ConfigurationException e) {
           System.out.println("Error saving");
       }
}


The XML files:

input.xml

<rootNode>
   <newNodeChild>
       <newNodeChildChild>child value</newNodeChildChild>
       <newNodeChildChild>child value 2</newNodeChildChild>
       <newNodeChildChild>child value 3</newNodeChildChild>
   </newNodeChild>
</rootNode>

output.xml

<testRootNode>
   <test>TEST</test>
</testRootNode>

output.xml after running the code:

<testRootNode>
   <test>TEST</test>
   <newNodes/>
</testRootNode>

Expected output.xml:

<testRootNode>
   <test>TEST</test>
   <newNodes>
       <newNodeChild>
           <newNodeChildChild>child value</newNodeChildChild>
           <newNodeChildChild>child value 2</newNodeChildChild>
           <newNodeChildChild>child value 3</newNodeChildChild>
       </newNodeChild>
   <newNodes/>
</testRootNode> 

Apparently "the copied nodes still contain a reference to their old 
configuration (because you directly fetched them from the root node of the 
source configuration). Because of this reference they are not detected as new 
nodes when the destination configuration is saved, and hence not written to 
disk.

I think addNodes() should reset this reference, so that the added nodes can be 
detected as new nodes. (But then you have to be aware that you break the source 
configuration because a node can only be contained in exactly one 
configuration.) " 

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to