## org.apache.commons.configuration
Class HierarchicalConfigurationConverter

    java.lang.Object
      org.apache.commons.configuration.HierarchicalConfigurationConverter

Direct Known Subclasses:
  BaseConfigurationXMLReader.SAXConverter

    abstract class HierarchicalConfigurationConverter

extends Object

A base class for converters that transform a normal configuration object into a hierarchical configuration.

This class provides a default mechanism for iterating over the keys in a configuration and to throw corresponding element start and end events. By handling these events a hierarchy can be constructed that is equivalent to the keys in the original configuration.

Concrete sub classes will implement event handlers that generate SAX events for XML processing or construct a `HierarchicalConfiguration` root node. All in all with this class it is possible to treat a default configuration as if it was a hierarchical configuration, which can be sometimes useful.

Version:
  $Id: HierarchicalConfigurationConverter.java 439648 2006-09-02 20:42:10Z oheger $
Author:
  Oliver Heger
See Also:
  `HierarchicalConfiguration`

Constructor Summary
`HierarchicalConfigurationConverter()`

Method Summary
`protected void` `closeElements(ConfigurationKey keyLast, ConfigurationKey keyAct)` Fires all necessary element end events for the specified keys.
`protected abstract void` `elementEnd(String name)` An event handler method that is called when an element ends.
`protected abstract void` `elementStart(String name, Object value)` An event handler method that is called when an element starts.
`protected void` `fireValue(String name, Object value)` Fires all necessary element start events with the actual element values.
`protected String` `openElements(ConfigurationKey keyLast, ConfigurationKey keyAct, Configuration config, Set keySet)` Fires all necessary element start events for the specified key.
`void` `process(Configuration config)` Processes the specified configuration object.
`protected Iterator` `reverseIterator(ConfigurationKey key)` Helper method for determining a reverse iterator for the specified key.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### HierarchicalConfigurationConverter

    HierarchicalConfigurationConverter()

Method Detail

### process

    public void process(Configuration config)

  Processes the specified configuration object. This method implements the iteration over the configuration's keys. All defined keys are translated into a set of element start and end events represented by calls to the `elementStart()` and `elementEnd()` methods.

  Parameters:
    `config` - the configuration to be processed

### elementStart

    protected abstract void elementStart(String name,
                                         Object value)

  An event handler method that is called when an element starts. Concrete sub classes must implement it to perform a proper event handling.

  Parameters:
    `name` - the name of the new element
    `value` - the element's value; can be null if the element does not have any value

### elementEnd

    protected abstract void elementEnd(String name)

  An event handler method that is called when an element ends. For each call of `elementStart()` there will be a corresponding call of this method. Concrete sub classes must implement it to perform a proper event handling.

  Parameters:
    `name` - the name of the ending element

### closeElements

    protected void closeElements(ConfigurationKey keyLast,
                                 ConfigurationKey keyAct)

  Fires all necessary element end events for the specified keys. This method is called for each key obtained from the configuration to be converted. It calculates the common part of the actual and the last processed key and thus determines how many elements must be closed.

  Parameters:
    `keyLast` - the last processed key
    `keyAct` - the actual key

### reverseIterator

    protected Iterator reverseIterator(ConfigurationKey key)

  Helper method for determining a reverse iterator for the specified key. This implementation returns an iterator that returns the parts of the given key in reverse order, ignoring indices.

  Parameters:
    `key` - the key
  Returns:
    a reverse iterator for the parts of this key

### openElements

    protected String openElements(ConfigurationKey keyLast,
                                  ConfigurationKey keyAct,
                                  Configuration config,
                                  Set keySet)

  Fires all necessary element start events for the specified key. This method is called for each key obtained from the configuration to be converted. It ensures that all elements "between" the last key and the actual key are opened and their values are set.

  Parameters:
    `keyLast` - the last processed key
    `keyAct` - the actual key
    `config` - the configuration to process
    `keySet` - the set with the processed keys
  Returns:
    the name of the last element on the path

### fireValue

    protected void fireValue(String name,
                             Object value)

  Fires all necessary element start events with the actual element values. This method is called for each key obtained from the configuration to be processed with the last part of the key as argument. The value can be either a single value or a collection.

  Parameters:
    `name` - the name of the actual element
    `value` - the element's value

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