org.apache.commons.configuration
Class AbstractHierarchicalFileConfiguration

java.lang.Object
  extended by org.apache.commons.configuration.event.EventSource
      extended by org.apache.commons.configuration.AbstractConfiguration
          extended by org.apache.commons.configuration.HierarchicalConfiguration
              extended by org.apache.commons.configuration.AbstractHierarchicalFileConfiguration
All Implemented Interfaces:
Serializable, Cloneable, Configuration, ConfigurationListener, FileConfiguration
Direct Known Subclasses:
PropertyListConfiguration, XMLConfiguration, XMLPropertyListConfiguration

public abstract class AbstractHierarchicalFileConfiguration
extends HierarchicalConfiguration
implements FileConfiguration, ConfigurationListener

Base class for implementing file based hierarchical configurations.

This class serves an analogous purpose as the AbstractFileConfiguration class for non hierarchical configurations. It behaves in exactly the same way, so please refer to the documentation of AbstractFileConfiguration for further details.

Since:
1.2
Version:
$Revision: 492216 $, $Date: 2007-01-03 17:51:24 +0100 (Mi, 03 Jan 2007) $
Author:
Emmanuel Bourg
See Also:
Serialized Form

Nested Class Summary
protected  class AbstractHierarchicalFileConfiguration.FileConfigurationDelegate
          A special implementation of the FileConfiguration interface that is used internally to implement the FileConfiguration methods for hierarchical configurations.
 
Nested classes/interfaces inherited from class org.apache.commons.configuration.HierarchicalConfiguration
HierarchicalConfiguration.BuilderVisitor, HierarchicalConfiguration.CloneVisitor, HierarchicalConfiguration.DefinedKeysVisitor, HierarchicalConfiguration.DefinedVisitor, HierarchicalConfiguration.Node, HierarchicalConfiguration.NodeVisitor
 
Field Summary
 
Fields inherited from class org.apache.commons.configuration.HierarchicalConfiguration
EVENT_ADD_NODES, EVENT_CLEAR_TREE
 
Fields inherited from class org.apache.commons.configuration.AbstractConfiguration
END_TOKEN, EVENT_ADD_PROPERTY, EVENT_CLEAR, EVENT_CLEAR_PROPERTY, EVENT_READ_PROPERTY, EVENT_SET_PROPERTY, START_TOKEN
 
Constructor Summary
protected AbstractHierarchicalFileConfiguration()
          Creates a new instance of AbstractHierarchicalFileConfiguration.
  AbstractHierarchicalFileConfiguration(File file)
          Creates and loads the configuration from the specified file.
protected AbstractHierarchicalFileConfiguration(HierarchicalConfiguration c)
          Creates a new instance of AbstractHierarchicalFileConfiguration and copies the content of the specified configuration into this object.
  AbstractHierarchicalFileConfiguration(String fileName)
          Creates and loads the configuration from the specified file.
  AbstractHierarchicalFileConfiguration(URL url)
          Creates and loads the configuration from the specified URL.
 
Method Summary
protected  void addPropertyDirect(String key, Object obj)
          Adds the property with the specified key.
 void clearProperty(String key)
          Removes the property with the given key.
 void clearTree(String key)
          Removes all values of the property with the given name and of keys that start with this name.
 void configurationChanged(ConfigurationEvent event)
          Reacts on configuration change events triggered by the delegate.
 boolean containsKey(String key)
          Checks if the specified key is contained in this configuration.
protected  AbstractHierarchicalFileConfiguration.FileConfigurationDelegate createDelegate()
          Creates the file configuration delegate, i.e. the object that implements functionality required by the FileConfiguration interface.
protected  List fetchNodeList(String key)
          Fetches a list of nodes, which are selected by the specified key.
 String getBasePath()
          Returns the base path.
protected  AbstractHierarchicalFileConfiguration.FileConfigurationDelegate getDelegate()
          Returns the file configuration delegate.
 String getEncoding()
          Return the encoding used to store the configuration file.
 File getFile()
          Return the file where the configuration is stored.
 String getFileName()
          Return the name of the file.
 Iterator getKeys(String prefix)
          Returns an iterator with all keys defined in this configuration that start with the given prefix.
 Object getProperty(String key)
          Fetches the specified property.
 ReloadingStrategy getReloadingStrategy()
          Return the reloading strategy.
 URL getURL()
          Return the URL where the configuration is stored.
 boolean isAutoSave()
          Tells if properties are automatically saved to the disk.
 boolean isEmpty()
          Checks if this configuration is empty.
 void load()
          Load the configuration from the underlying URL.
 void load(File file)
          Load the configuration from the specified file.
 void load(InputStream in)
          Load the configuration from the specified stream, using the encoding returned by FileConfiguration.getEncoding().
 void load(InputStream in, String encoding)
          Load the configuration from the specified stream, using the specified encoding.
 void load(String fileName)
          Locate the specified file and load the configuration.
 void load(URL url)
          Load the configuration from the specified URL.
 void reload()
          Reload the configuration.
 void save()
          Save the configuration.
 void save(File file)
          Save the configuration to the specified file.
 void save(OutputStream out)
          Save the configuration to the specified stream, using the encoding returned by FileConfiguration.getEncoding().
 void save(OutputStream out, String encoding)
          Save the configuration to the specified stream, using the specified encoding.
 void save(String fileName)
          Save the configuration to the specified file.
 void save(URL url)
          Save the configuration to the specified URL if it's a file URL.
 void setAutoSave(boolean autoSave)
          Enable or disable the automatical saving of modified properties to the disk.
 void setBasePath(String basePath)
          Sets the base path.
protected  void setDelegate(AbstractHierarchicalFileConfiguration.FileConfigurationDelegate delegate)
          Allows to set the file configuration delegate.
 void setEncoding(String encoding)
          Set the encoding used to store the configuration file.
 void setFile(File file)
          Set the file where the configuration is stored.
 void setFileName(String fileName)
          Set the name of the file.
 void setProperty(String key, Object value)
          Sets the value of the specified property.
 void setReloadingStrategy(ReloadingStrategy strategy)
          Set the reloading strategy.
 void setURL(URL url)
          The URL where the configuration is stored.
 
Methods inherited from class org.apache.commons.configuration.HierarchicalConfiguration
addNodes, clearNode, clearNode, clearReferences, clone, configurationAt, configurationsAt, createAddPath, createNode, createSubnodeConfiguration, fetchAddNode, findLastPathNode, findPropertyNodes, getDefaultExpressionEngine, getExpressionEngine, getKeys, getMaxIndex, getRoot, getRootNode, nodeDefined, nodeDefined, removeNode, removeNode, setDefaultExpressionEngine, setExpressionEngine, setRoot, setRootNode, subset
 
Methods inherited from class org.apache.commons.configuration.AbstractConfiguration
addErrorLogListener, addProperty, clear, clearPropertyDirect, createInterpolator, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDefaultListDelimiter, getDelimiter, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, getList, getList, getListDelimiter, getLogger, getLong, getLong, getLong, getProperties, getProperties, getShort, getShort, getShort, getString, getString, getStringArray, getSubstitutor, interpolate, interpolate, interpolateHelper, isDelimiterParsingDisabled, isThrowExceptionOnMissing, resolveContainerStore, setDefaultListDelimiter, setDelimiter, setDelimiterParsingDisabled, setListDelimiter, setLogger, setThrowExceptionOnMissing
 
Methods inherited from class org.apache.commons.configuration.event.EventSource
addConfigurationListener, addErrorListener, clearConfigurationListeners, clearErrorListeners, createErrorEvent, createEvent, fireError, fireEvent, getConfigurationListeners, getErrorListeners, isDetailEvents, removeConfigurationListener, removeErrorListener, setDetailEvents
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.configuration.FileConfiguration
load, save
 
Methods inherited from interface org.apache.commons.configuration.Configuration
addProperty, clear, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getKeys, getList, getList, getLong, getLong, getLong, getProperties, getShort, getShort, getShort, getString, getString, getStringArray, subset
 

Constructor Detail

AbstractHierarchicalFileConfiguration

protected AbstractHierarchicalFileConfiguration()
Creates a new instance of AbstractHierarchicalFileConfiguration.


AbstractHierarchicalFileConfiguration

protected AbstractHierarchicalFileConfiguration(HierarchicalConfiguration c)
Creates a new instance of AbstractHierarchicalFileConfiguration and copies the content of the specified configuration into this object.

Parameters:
c - the configuration to copy
Since:
1.4

AbstractHierarchicalFileConfiguration

public AbstractHierarchicalFileConfiguration(String fileName)
                                      throws ConfigurationException
Creates and loads the configuration from the specified file.

Parameters:
fileName - The name of the plist file to load.
Throws:
ConfigurationException - Error while loading the file

AbstractHierarchicalFileConfiguration

public AbstractHierarchicalFileConfiguration(File file)
                                      throws ConfigurationException
Creates and loads the configuration from the specified file.

Parameters:
file - The configuration file to load.
Throws:
ConfigurationException - Error while loading the file

AbstractHierarchicalFileConfiguration

public AbstractHierarchicalFileConfiguration(URL url)
                                      throws ConfigurationException
Creates and loads the configuration from the specified URL.

Parameters:
url - The location of the configuration file to load.
Throws:
ConfigurationException - Error while loading the file
Method Detail

addPropertyDirect

protected void addPropertyDirect(String key,
                                 Object obj)
Description copied from class: HierarchicalConfiguration
Adds the property with the specified key. This task will be delegated to the associated ExpressionEngine, so the passed in key must match the requirements of this implementation.

Overrides:
addPropertyDirect in class HierarchicalConfiguration
Parameters:
key - the key of the new property
obj - the value of the new property

clearProperty

public void clearProperty(String key)
Description copied from class: HierarchicalConfiguration
Removes the property with the given key. Properties with names that start with the given key (i.e. properties below the specified key in the hierarchy) won't be affected.

Specified by:
clearProperty in interface Configuration
Overrides:
clearProperty in class HierarchicalConfiguration
Parameters:
key - the key of the property to be removed

clearTree

public void clearTree(String key)
Description copied from class: HierarchicalConfiguration
Removes all values of the property with the given name and of keys that start with this name. So if there is a property with the key "foo" and a property with the key "foo.bar", a call of clearTree("foo") would remove both properties.

Overrides:
clearTree in class HierarchicalConfiguration
Parameters:
key - the key of the property to be removed

setProperty

public void setProperty(String key,
                        Object value)
Description copied from class: HierarchicalConfiguration
Sets the value of the specified property.

Specified by:
setProperty in interface Configuration
Overrides:
setProperty in class HierarchicalConfiguration
Parameters:
key - the key of the property to set
value - the new value of this property

load

public void load()
          throws ConfigurationException
Description copied from interface: FileConfiguration
Load the configuration from the underlying URL. If the URL is not specified, it attempts to locate the specified file name.

Specified by:
load in interface FileConfiguration
Throws:
ConfigurationException - if an error occurs during the load operation

load

public void load(String fileName)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Locate the specified file and load the configuration.

Specified by:
load in interface FileConfiguration
Parameters:
fileName - the name of the file loaded
Throws:
ConfigurationException - if an error occurs during the load operation

load

public void load(File file)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Load the configuration from the specified file.

Specified by:
load in interface FileConfiguration
Parameters:
file - the loaded file
Throws:
ConfigurationException - if an error occurs during the load operation

load

public void load(URL url)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Load the configuration from the specified URL.

Specified by:
load in interface FileConfiguration
Parameters:
url - the URL of the file loaded
Throws:
ConfigurationException - if an error occurs during the load operation

load

public void load(InputStream in)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Load the configuration from the specified stream, using the encoding returned by FileConfiguration.getEncoding().

Specified by:
load in interface FileConfiguration
Parameters:
in - the input stream
Throws:
ConfigurationException - if an error occurs during the load operation

load

public void load(InputStream in,
                 String encoding)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Load the configuration from the specified stream, using the specified encoding. If the encoding is null the default encoding is used.

Specified by:
load in interface FileConfiguration
Parameters:
in - the input stream
encoding - the encoding used. null to use the default encoding
Throws:
ConfigurationException - if an error occurs during the load operation

save

public void save()
          throws ConfigurationException
Description copied from interface: FileConfiguration
Save the configuration.

Specified by:
save in interface FileConfiguration
Throws:
ConfigurationException - if an error occurs during the save operation

save

public void save(String fileName)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Save the configuration to the specified file.

Specified by:
save in interface FileConfiguration
Parameters:
fileName - the name of the file to be saved
Throws:
ConfigurationException - if an error occurs during the save operation

save

public void save(File file)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Save the configuration to the specified file.

Specified by:
save in interface FileConfiguration
Parameters:
file - specifies the file to be saved
Throws:
ConfigurationException - if an error occurs during the save operation

save

public void save(URL url)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Save the configuration to the specified URL if it's a file URL.

Specified by:
save in interface FileConfiguration
Parameters:
url - the URL
Throws:
ConfigurationException - if an error occurs during the save operation

save

public void save(OutputStream out)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Save the configuration to the specified stream, using the encoding returned by FileConfiguration.getEncoding().

Specified by:
save in interface FileConfiguration
Parameters:
out - the output stream
Throws:
ConfigurationException - if an error occurs during the save operation

save

public void save(OutputStream out,
                 String encoding)
          throws ConfigurationException
Description copied from interface: FileConfiguration
Save the configuration to the specified stream, using the specified encoding. If the encoding is null the default encoding is used.

Specified by:
save in interface FileConfiguration
Parameters:
out - the output stream
encoding - the encoding to be used
Throws:
ConfigurationException - if an error occurs during the save operation

getFileName

public String getFileName()
Description copied from interface: FileConfiguration
Return the name of the file.

Specified by:
getFileName in interface FileConfiguration
Returns:
the file name

setFileName

public void setFileName(String fileName)
Description copied from interface: FileConfiguration
Set the name of the file.

Specified by:
setFileName in interface FileConfiguration
Parameters:
fileName - the name of the file

getBasePath

public String getBasePath()
Description copied from interface: FileConfiguration
Returns the base path. One way to specify the location of a configuration source is by setting its base path and its file name. This method returns this base path. The concrete value returned by this method depends on the way the location of the configuration file was set. If methods like setFile() or setURL() were used, the base path typically points to the parent directory of the configuration file (e.g. for the URL file:/temp/test.properties the base path will be file:/temp/). If the base path was explictly set using setBasePath(), this method will return the exact value specified here without further modifications.

Specified by:
getBasePath in interface FileConfiguration
Returns:
the base path
See Also:
AbstractFileConfiguration.setBasePath(String)

setBasePath

public void setBasePath(String basePath)
Description copied from interface: FileConfiguration
Sets the base path. The methods setBasePath() and setFileName() can be used together to specify the location of the configuration file to be loaded. If relative file names are to be resolved (e.g. for the include files supported by PropertiesConfiguration), this base path will be used.

Specified by:
setBasePath in interface FileConfiguration
Parameters:
basePath - the base path.

getFile

public File getFile()
Description copied from interface: FileConfiguration
Return the file where the configuration is stored.

Specified by:
getFile in interface FileConfiguration
Returns:
the configuration file

setFile

public void setFile(File file)
Description copied from interface: FileConfiguration
Set the file where the configuration is stored.

Specified by:
setFile in interface FileConfiguration
Parameters:
file - the file

getURL

public URL getURL()
Description copied from interface: FileConfiguration
Return the URL where the configuration is stored.

Specified by:
getURL in interface FileConfiguration
Returns:
the URL of the configuration

setURL

public void setURL(URL url)
Description copied from interface: FileConfiguration
The URL where the configuration is stored.

Specified by:
setURL in interface FileConfiguration
Parameters:
url - the URL

setAutoSave

public void setAutoSave(boolean autoSave)
Description copied from interface: FileConfiguration
Enable or disable the automatical saving of modified properties to the disk.

Specified by:
setAutoSave in interface FileConfiguration
Parameters:
autoSave - true to enable, false to disable

isAutoSave

public boolean isAutoSave()
Description copied from interface: FileConfiguration
Tells if properties are automatically saved to the disk.

Specified by:
isAutoSave in interface FileConfiguration
Returns:
true if auto-saving is enabled, false otherwise

getReloadingStrategy

public ReloadingStrategy getReloadingStrategy()
Description copied from interface: FileConfiguration
Return the reloading strategy.

Specified by:
getReloadingStrategy in interface FileConfiguration
Returns:
the reloading strategy currently used

setReloadingStrategy

public void setReloadingStrategy(ReloadingStrategy strategy)
Description copied from interface: FileConfiguration
Set the reloading strategy.

Specified by:
setReloadingStrategy in interface FileConfiguration
Parameters:
strategy - the reloading strategy to use

reload

public void reload()
Description copied from interface: FileConfiguration
Reload the configuration.

Specified by:
reload in interface FileConfiguration

getEncoding

public String getEncoding()
Description copied from interface: FileConfiguration
Return the encoding used to store the configuration file. If the value is null the default encoding is used.

Specified by:
getEncoding in interface FileConfiguration
Returns:
the current encoding

setEncoding

public void setEncoding(String encoding)
Description copied from interface: FileConfiguration
Set the encoding used to store the configuration file. Set the encoding to null to use the default encoding.

Specified by:
setEncoding in interface FileConfiguration
Parameters:
encoding - the encoding to use

containsKey

public boolean containsKey(String key)
Description copied from class: HierarchicalConfiguration
Checks if the specified key is contained in this configuration. Note that for this configuration the term "contained" means that the key has an associated value. If there is a node for this key that has no value but children (either defined or undefined), this method will still return false .

Specified by:
containsKey in interface Configuration
Overrides:
containsKey in class HierarchicalConfiguration
Parameters:
key - the key to be chekced
Returns:
a flag if this key is contained in this configuration

getKeys

public Iterator getKeys(String prefix)
Description copied from class: HierarchicalConfiguration
Returns an iterator with all keys defined in this configuration that start with the given prefix. The returned keys will not contain any indices.

Specified by:
getKeys in interface Configuration
Overrides:
getKeys in class HierarchicalConfiguration
Parameters:
prefix - the prefix of the keys to start with
Returns:
an iterator with the found keys
See Also:
Configuration.getKeys()

getProperty

public Object getProperty(String key)
Description copied from class: HierarchicalConfiguration
Fetches the specified property. This task is delegated to the associated expression engine.

Specified by:
getProperty in interface Configuration
Overrides:
getProperty in class HierarchicalConfiguration
Parameters:
key - the key to be looked up
Returns:
the found value

isEmpty

public boolean isEmpty()
Description copied from class: HierarchicalConfiguration
Checks if this configuration is empty. Empty means that there are no keys with any values, though there can be some (empty) nodes.

Specified by:
isEmpty in interface Configuration
Overrides:
isEmpty in class HierarchicalConfiguration
Returns:
a flag if this configuration is empty

fetchNodeList

protected List fetchNodeList(String key)
Fetches a list of nodes, which are selected by the specified key. This implementation will perform a reload if necessary.

Overrides:
fetchNodeList in class HierarchicalConfiguration
Parameters:
key - the key
Returns:
a list with the selected nodes

createDelegate

protected AbstractHierarchicalFileConfiguration.FileConfigurationDelegate createDelegate()
Creates the file configuration delegate, i.e. the object that implements functionality required by the FileConfiguration interface. This base implementation will return an instance of the FileConfigurationDelegate class. Derived classes may override it to create a different delegate object.

Returns:
the file configuration delegate

configurationChanged

public void configurationChanged(ConfigurationEvent event)
Reacts on configuration change events triggered by the delegate. These events are passed to the registered configuration listeners.

Specified by:
configurationChanged in interface ConfigurationListener
Parameters:
event - the triggered event
Since:
1.3

getDelegate

protected AbstractHierarchicalFileConfiguration.FileConfigurationDelegate getDelegate()
Returns the file configuration delegate.

Returns:
the delegate

setDelegate

protected void setDelegate(AbstractHierarchicalFileConfiguration.FileConfigurationDelegate delegate)
Allows to set the file configuration delegate.

Parameters:
delegate - the new delegate


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