org.apache.commons.configuration.tree
Class MergeCombiner

java.lang.Object
  extended by org.apache.commons.configuration.tree.NodeCombiner
      extended by org.apache.commons.configuration.tree.MergeCombiner

public class MergeCombiner
extends NodeCombiner

A specialized implementation of the NodeCombiner interface that performs a merge from two passed in node hierarchies.

This combiner performs the merge using a few rules:

  1. Nodes can be merged when attributes that appear in both have the same value.
  2. Only a single node in the second file is considered a match to the node in the first file.
  3. Attributes in nodes that match are merged.
  4. Nodes in both files that do not match are added to the result.

Since:
1.7
Version:
$Id: MergeCombiner.java 1206480 2011-11-26 16:28:58Z oheger $
Author:
Commons Configuration team

Field Summary
 
Fields inherited from class org.apache.commons.configuration.tree.NodeCombiner
listNodes
 
Constructor Summary
MergeCombiner()
           
 
Method Summary
protected  void addAttributes(ViewNode result, ConfigurationNode node1, ConfigurationNode node2)
          Handles the attributes during a combination process.
protected  ConfigurationNode canCombine(ConfigurationNode node1, ConfigurationNode node2, ConfigurationNode child, List<ConfigurationNode> children2)
          Tests if the first node can be combined with the second node.
 ConfigurationNode combine(ConfigurationNode node1, ConfigurationNode node2)
          Combines the given nodes to a new union node.
 
Methods inherited from class org.apache.commons.configuration.tree.NodeCombiner
addListNode, createViewNode, getListNodes, isListNode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MergeCombiner

public MergeCombiner()
Method Detail

combine

public ConfigurationNode combine(ConfigurationNode node1,
                                 ConfigurationNode node2)
Combines the given nodes to a new union node.

Specified by:
combine in class NodeCombiner
Parameters:
node1 - the first source node
node2 - the second source node
Returns:
the union node

addAttributes

protected void addAttributes(ViewNode result,
                             ConfigurationNode node1,
                             ConfigurationNode node2)
Handles the attributes during a combination process. First all attributes of the first node will be added to the result. Then all attributes of the second node, which are not contained in the first node, will also be added.

Parameters:
result - the resulting node
node1 - the first node
node2 - the second node

canCombine

protected ConfigurationNode canCombine(ConfigurationNode node1,
                                       ConfigurationNode node2,
                                       ConfigurationNode child,
                                       List<ConfigurationNode> children2)
Tests if the first node can be combined with the second node. A node can only be combined if its attributes are all present in the second node and they all have the same value.

Parameters:
node1 - the first node
node2 - the second node
child - the child node (of the first node)
Returns:
a child of the second node, with which a combination is possible


Copyright © 2001-2012 The Apache Software Foundation. All Rights Reserved.