Class INIConfiguration
- java.lang.Object
-
- org.apache.commons.configuration.event.EventSource
-
- org.apache.commons.configuration.AbstractConfiguration
-
- org.apache.commons.configuration.BaseConfiguration
-
- org.apache.commons.configuration.AbstractFileConfiguration
-
- org.apache.commons.configuration.INIConfiguration
-
- All Implemented Interfaces:
java.lang.Cloneable
,Configuration
,FileConfiguration
,FileSystemBased
@Deprecated public class INIConfiguration extends AbstractFileConfiguration
Deprecated.This class has been replaced by HierarchicalINIConfiguration, which provides a superset of the functionality offered by this class.An initialization or ini file is a configuration file typically found on Microsoft's Windows operating system and contains data for Windows based applications.
Although popularized by Windows, ini files can be used on any system or platform due to the fact that they are merely text files that can easily be parsed and modified by both humans and computers.
A typical ini file could look something like:
[section1] ; this is a comment! var1 = foo var2 = bar [section2] var1 = doo
The format of ini files is fairly straight forward and is composed of three components:
- Sections: Ini files are split into sections, each section starting with a section declaration. A section declaration starts with a '[' and ends with a ']'. Sections occur on one line only.
- Parameters: Items in a section are known as parameters.
Parameters have a typical
key = value
format. - Comments: Lines starting with a ';' are assumed to be comments.
There are various implementations of the ini file format by various vendors which has caused a number of differences to appear. As far as possible this configuration tries to be lenient and support most of the differences.
Some of the differences supported are as follows:
- Comments: The '#' character is also accepted as a comment signifier.
- Key value separtor: The ':' character is also accepted in place
of '=' to separate keys and values in parameters, for example
var1 : foo
. - Duplicate sections: Typically duplicate sections are not allowed , this configuration does however support it. In the event of a duplicate section, the two section's values are merged.
- Duplicate parameters: Typically duplicate parameters are only allowed if they are in two different sections, thus they are local to sections; this configuration simply merges duplicates; if a section has a duplicate parameter the values are then added to the key as a list.
Global parameters are also allowed; any parameters declared before a section is declared are added to a global section. It is important to note that this global section does not have a name.
In all instances, a parameter's key is prepended with its section name and a '.' (period). Thus a parameter named "var1" in "section1" will have the key
section1.var1
in this configuration. Thus, a section's parameters can easily be retrieved using thesubset
method using the section name as the prefix.Implementation Details:
Consider the following ini file:
default = ok [section1] var1 = foo var2 = doodle [section2] ; a comment var1 = baz var2 = shoodle bad = = worse [section3] # another comment var1 : foo var2 : bar var5 : test1 [section3] var3 = foo var4 = bar var5 = test2
This ini file will be parsed without error. Note:
- The parameter named "default" is added to the global section, it's value
is accessed simply using
getProperty("default")
. - Section 1's parameters can be accessed using
getProperty("section1.var1")
. - The parameter named "bad" simply adds the parameter with an empty value.
- The empty key with value "= worse" is added using an empty key. This key
is still added to section 2 and the value can be accessed using
getProperty("section2.")
, notice the period '.' following the section name. - Section three uses both '=' and ':' to separate keys and values.
- Section 3 has a duplicate key named "var5". The value for this key is [test1, test2], and is represented as a List.
The set of sections in this configuration can be retrieved using the
getSections
method.Note: Configuration objects of this type can be read concurrently by multiple threads. However if one of these threads modifies the object, synchronization has to be performed manually.
- Since:
- 1.4
- Version:
- $Id: INIConfiguration.java 1210003 2011-12-03 20:54:46Z oheger $
- Author:
- Trevor Miller
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
COMMENT_CHARS
Deprecated.The characters that signal the start of a comment line.protected static java.lang.String
SEPARATOR_CHARS
Deprecated.The characters used to separate keys from values.-
Fields inherited from class org.apache.commons.configuration.AbstractFileConfiguration
autoSave, basePath, EVENT_CONFIG_CHANGED, EVENT_RELOAD, fileName, reloadLock, strategy
-
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
Constructors Constructor Description INIConfiguration()
Deprecated.Create a new empty INI Configuration.INIConfiguration(java.io.File file)
Deprecated.Create and load the ini configuration from the given file.INIConfiguration(java.lang.String filename)
Deprecated.Create and load the ini configuration from the given file.INIConfiguration(java.net.URL url)
Deprecated.Create and load the ini configuration from the given url.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description java.util.Set<java.lang.String>
getSections()
Deprecated.Return a set containing the sections in this ini configuration.protected boolean
isCommentLine(java.lang.String line)
Deprecated.Determine if the given line is a comment line.protected boolean
isSectionLine(java.lang.String line)
Deprecated.Determine if the given line is a section.void
load(java.io.Reader reader)
Deprecated.Load the configuration from the given reader.void
save(java.io.Writer writer)
Deprecated.Save the configuration to the specified writer.-
Methods inherited from class org.apache.commons.configuration.AbstractFileConfiguration
addProperty, clearProperty, clone, closeSilent, configurationChanged, containsKey, enterNoReload, exitNoReload, fireEvent, getBasePath, getEncoding, getFile, getFileName, getFileSystem, getKeys, getPath, getProperty, getReloadingStrategy, getReloadLock, getURL, isAutoSave, isEmpty, load, load, load, load, load, load, possiblySave, refresh, reload, reload, resetFileSystem, save, save, save, save, save, save, setAutoSave, setBasePath, setEncoding, setFile, setFileName, setFileSystem, setPath, setProperty, setReloadingStrategy, setURL
-
Methods inherited from class org.apache.commons.configuration.BaseConfiguration
addPropertyDirect, clear, clearPropertyDirect
-
Methods inherited from class org.apache.commons.configuration.AbstractConfiguration
addErrorLogListener, append, copy, createInterpolator, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDefaultListDelimiter, getDelimiter, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, getKeys, getList, getList, getListDelimiter, getLogger, getLong, getLong, getLong, getProperties, getProperties, getShort, getShort, getShort, getString, getString, getStringArray, getSubstitutor, interpolate, interpolate, interpolatedConfiguration, interpolateHelper, isDelimiterParsingDisabled, isScalarValue, isThrowExceptionOnMissing, resolveContainerStore, setDefaultListDelimiter, setDelimiter, setDelimiterParsingDisabled, setListDelimiter, setLogger, setThrowExceptionOnMissing, subset
-
Methods inherited from class org.apache.commons.configuration.event.EventSource
addConfigurationListener, addErrorListener, clearConfigurationListeners, clearErrorListeners, createErrorEvent, createEvent, fireError, 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.Configuration
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
-
-
-
-
Field Detail
-
COMMENT_CHARS
protected static final java.lang.String COMMENT_CHARS
Deprecated.The characters that signal the start of a comment line.- See Also:
- Constant Field Values
-
SEPARATOR_CHARS
protected static final java.lang.String SEPARATOR_CHARS
Deprecated.The characters used to separate keys from values.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
INIConfiguration
public INIConfiguration()
Deprecated.Create a new empty INI Configuration.
-
INIConfiguration
public INIConfiguration(java.lang.String filename) throws ConfigurationException
Deprecated.Create and load the ini configuration from the given file.- Parameters:
filename
- The name pr path of the ini file to load.- Throws:
ConfigurationException
- If an error occurs while loading the file
-
INIConfiguration
public INIConfiguration(java.io.File file) throws ConfigurationException
Deprecated.Create and load the ini configuration from the given file.- Parameters:
file
- The ini file to load.- Throws:
ConfigurationException
- If an error occurs while loading the file
-
INIConfiguration
public INIConfiguration(java.net.URL url) throws ConfigurationException
Deprecated.Create and load the ini configuration from the given url.- Parameters:
url
- The url of the ini file to load.- Throws:
ConfigurationException
- If an error occurs while loading the file
-
-
Method Detail
-
save
public void save(java.io.Writer writer) throws ConfigurationException
Deprecated.Save the configuration to the specified writer.- Parameters:
writer
- - The writer to save the configuration to.- Throws:
ConfigurationException
- If an error occurs while writing the configuration
-
load
public void load(java.io.Reader reader) throws ConfigurationException
Deprecated.Load the configuration from the given reader. Note that theclear()
method is not called so the configuration read in will be merged with the current configuration.- Parameters:
reader
- The reader to read the configuration from.- Throws:
ConfigurationException
- If an error occurs while reading the configuration
-
isCommentLine
protected boolean isCommentLine(java.lang.String line)
Deprecated.Determine if the given line is a comment line.- Parameters:
line
- The line to check.- Returns:
- true if the line is empty or starts with one of the comment characters
-
isSectionLine
protected boolean isSectionLine(java.lang.String line)
Deprecated.Determine if the given line is a section.- Parameters:
line
- The line to check.- Returns:
- true if the line contains a secion
-
getSections
public java.util.Set<java.lang.String> getSections()
Deprecated.Return a set containing the sections in this ini configuration. Note that changes to this set do not affect the configuration.- Returns:
- a set containing the sections.
-
-