Class PropertyListConfiguration
- java.lang.Object
-
- org.apache.commons.configuration2.event.BaseEventSource
-
- org.apache.commons.configuration2.AbstractConfiguration
-
- org.apache.commons.configuration2.AbstractHierarchicalConfiguration<ImmutableNode>
-
- org.apache.commons.configuration2.BaseHierarchicalConfiguration
-
- org.apache.commons.configuration2.plist.PropertyListConfiguration
-
- All Implemented Interfaces:
java.lang.Cloneable
,Configuration
,EventSource
,FileBasedConfiguration
,HierarchicalConfiguration<ImmutableNode>
,ImmutableConfiguration
,ImmutableHierarchicalConfiguration
,FileBased
,SynchronizerSupport
,InMemoryNodeModelSupport
,NodeKeyResolver<ImmutableNode>
,NodeModelSupport<ImmutableNode>
public class PropertyListConfiguration extends BaseHierarchicalConfiguration implements FileBasedConfiguration
NeXT / OpenStep style configuration. This configuration can read and write ASCII plist files. It supports the GNUStep extension to specify date objects.References:
Example:
{ foo = "bar"; array = ( value1, value2, value3 ); data = <4f3e0145ab>; date = <*D2007-05-05 20:05:00 +0100>; nested = { key1 = value1; key2 = value; nested = { foo = bar } } }
- Since:
- 1.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PropertyListConfiguration.DateComponentParser
A helper class for parsing and formatting date literals.private static class
PropertyListConfiguration.DateFieldParser
A specialized date component parser implementation that deals with numeric calendar fields.private static class
PropertyListConfiguration.DateSeparatorParser
A specialized date component parser implementation that deals with separator characters.private static class
PropertyListConfiguration.DateTimeZoneParser
A specialized date component parser implementation that deals with the time zone part of a date component.-
Nested classes/interfaces inherited from class org.apache.commons.configuration2.BaseHierarchicalConfiguration
BaseHierarchicalConfiguration.BuilderVisitor
-
-
Field Summary
Fields Modifier and Type Field Description private static PropertyListConfiguration.DateComponentParser
BLANK_SEPARATOR_PARSER
Constant for the separator parser for blanks between the parts.private static PropertyListConfiguration.DateComponentParser[]
DATE_PARSERS
An array with the component parsers for dealing with dates.private static PropertyListConfiguration.DateComponentParser
DATE_SEPARATOR_PARSER
Constant for the separator parser for the date part.private static int
INDENT_SIZE
Size of the indentation for the generated file.private static int
MILLIS_PER_MINUTE
Constant for the milliseconds of a minute.private static int
MINUTES_PER_HOUR
Constant for the minutes per hour.private static char
PAD_CHAR
Constant for the padding character in the date format.private static PropertyListConfiguration.DateComponentParser
TIME_SEPARATOR_PARSER
Constant for the separator parser for the time part.private static int
TIME_ZONE_LENGTH
Constant for the length of a time zone.private static java.lang.String
TIME_ZONE_PREFIX
Constant for the ID prefix for GMT time zones.
-
Constructor Summary
Constructors Constructor Description PropertyListConfiguration()
Creates an empty PropertyListConfiguration object which can be used to synthesize a new plist file by adding values and then saving().PropertyListConfiguration(HierarchicalConfiguration<ImmutableNode> c)
Creates a new instance ofPropertyListConfiguration
and copies the content of the specified configuration into this object.PropertyListConfiguration(ImmutableNode root)
Creates a new instance ofPropertyListConfiguration
with the given root node.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addPropertyInternal(java.lang.String key, java.lang.Object value)
Adds the property with the specified key.(package private) static java.lang.String
formatDate(java.util.Calendar cal)
Returns a string representation for the date specified by the given calendar.(package private) static java.lang.String
formatDate(java.util.Date date)
Returns a string representation for the specified date.(package private) static java.util.Date
parseDate(java.lang.String s)
Parses a date in a format like<*D2002-03-22 11:30:00 +0100>
.private void
printNode(java.io.PrintWriter out, int indentLevel, ImmutableNode node, NodeHandler<ImmutableNode> handler)
Append a node to the writer, indented according to a specific level.private void
printValue(java.io.PrintWriter out, int indentLevel, java.lang.Object value)
Append a value to the writer, indented according to a specific level.(package private) java.lang.String
quoteString(java.lang.String s)
Quote the specified string if necessary, that's if the string contains: a space character (' ', '\t', '\r', '\n') a quote '"' special characters in plist files ('(', ')', '{', '}', '=', ';', ',') Quotes within the string are escaped.void
read(java.io.Reader in)
Reads the content of this object from the given reader.protected void
setPropertyInternal(java.lang.String key, java.lang.Object value)
Sets the value of the specified property.private static java.util.Map<java.lang.String,java.lang.Object>
transformMap(java.util.Map<?,?> src)
Transform a map of arbitrary types into a map with string keys and object values.void
write(java.io.Writer out)
Writes the content of this object to the given writer.-
Methods inherited from class org.apache.commons.configuration2.BaseHierarchicalConfiguration
childConfigurationsAt, childConfigurationsAt, cloneNodeModel, configurationAt, configurationAt, configurationsAt, configurationsAt, createSubConfigurationForTrackedNode, getNodeModel, getSubConfigurationNodeSelector, getSubConfigurationParentModel, immutableChildConfigurationsAt, immutableConfigurationAt, immutableConfigurationAt, immutableConfigurationsAt, initSubConfigurationForThisParent, interpolatedConfiguration, subnodeConfigurationChanged, subset
-
Methods inherited from class org.apache.commons.configuration2.AbstractHierarchicalConfiguration
addNodes, addNodesInternal, addPropertyDirect, clearInternal, clearPropertyDirect, clearTree, clearTreeInternal, clone, containsKeyInternal, containsValueInternal, fetchNodeList, getExpressionEngine, getKeysInternal, getKeysInternal, getMaxIndex, getMaxIndexInternal, getModel, getPropertyInternal, getRootElementName, getRootElementNameInternal, isEmptyInternal, nodeDefined, nodeKey, resolveAddKey, resolveKey, resolveNodeKey, resolveUpdateKey, setExpressionEngine, sizeInternal, toString
-
Methods inherited from class org.apache.commons.configuration2.AbstractConfiguration
addErrorLogListener, addProperty, append, beginRead, beginWrite, clear, clearProperty, cloneInterpolator, contains, containsKey, containsValue, copy, endRead, endWrite, get, get, getArray, getArray, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getCollection, getCollection, getConfigurationDecoder, getConversionHandler, getDouble, getDouble, getDouble, getDuration, getDuration, getEncodedString, getEncodedString, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, getKeys, getKeys, getKeys, getKeysInternal, getList, getList, getList, getList, getListDelimiterHandler, getLogger, getLong, getLong, getLong, getProperties, getProperties, getProperty, getShort, getShort, getShort, getString, getString, getStringArray, getSynchronizer, immutableSubset, initLogger, installInterpolator, interpolate, interpolate, isEmpty, isScalarValue, isThrowExceptionOnMissing, lock, setConfigurationDecoder, setConversionHandler, setDefaultLookups, setInterpolator, setListDelimiterHandler, setLogger, setParentInterpolator, setPrefixLookups, setProperty, setSynchronizer, setThrowExceptionOnMissing, size, unlock
-
Methods inherited from class org.apache.commons.configuration2.event.BaseEventSource
addEventListener, clearErrorListeners, clearEventListeners, copyEventListeners, createErrorEvent, createEvent, fireError, fireEvent, getEventListenerRegistrations, getEventListeners, isDetailEvents, removeEventListener, setDetailEvents
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.commons.configuration2.Configuration
addProperty, clear, clearProperty, getInterpolator, installInterpolator, setInterpolator, setProperty, subset
-
Methods inherited from interface org.apache.commons.configuration2.ImmutableConfiguration
containsKey, containsValue, get, get, getArray, getArray, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getCollection, getCollection, getDouble, getDouble, getDouble, getDuration, getDuration, getEncodedString, getEncodedString, getEnum, getEnum, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getKeys, getKeys, getKeys, getList, getList, getList, getList, getLong, getLong, getLong, getProperties, getProperty, getShort, getShort, getShort, getString, getString, getStringArray, immutableSubset, isEmpty, size
-
Methods inherited from interface org.apache.commons.configuration2.sync.SynchronizerSupport
getSynchronizer, lock, setSynchronizer, unlock
-
-
-
-
Field Detail
-
DATE_SEPARATOR_PARSER
private static final PropertyListConfiguration.DateComponentParser DATE_SEPARATOR_PARSER
Constant for the separator parser for the date part.
-
TIME_SEPARATOR_PARSER
private static final PropertyListConfiguration.DateComponentParser TIME_SEPARATOR_PARSER
Constant for the separator parser for the time part.
-
BLANK_SEPARATOR_PARSER
private static final PropertyListConfiguration.DateComponentParser BLANK_SEPARATOR_PARSER
Constant for the separator parser for blanks between the parts.
-
DATE_PARSERS
private static final PropertyListConfiguration.DateComponentParser[] DATE_PARSERS
An array with the component parsers for dealing with dates.
-
TIME_ZONE_PREFIX
private static final java.lang.String TIME_ZONE_PREFIX
Constant for the ID prefix for GMT time zones.- See Also:
- Constant Field Values
-
MILLIS_PER_MINUTE
private static final int MILLIS_PER_MINUTE
Constant for the milliseconds of a minute.- See Also:
- Constant Field Values
-
MINUTES_PER_HOUR
private static final int MINUTES_PER_HOUR
Constant for the minutes per hour.- See Also:
- Constant Field Values
-
INDENT_SIZE
private static final int INDENT_SIZE
Size of the indentation for the generated file.- See Also:
- Constant Field Values
-
TIME_ZONE_LENGTH
private static final int TIME_ZONE_LENGTH
Constant for the length of a time zone.- See Also:
- Constant Field Values
-
PAD_CHAR
private static final char PAD_CHAR
Constant for the padding character in the date format.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PropertyListConfiguration
public PropertyListConfiguration()
Creates an empty PropertyListConfiguration object which can be used to synthesize a new plist file by adding values and then saving().
-
PropertyListConfiguration
public PropertyListConfiguration(HierarchicalConfiguration<ImmutableNode> c)
Creates a new instance ofPropertyListConfiguration
and copies the content of the specified configuration into this object.- Parameters:
c
- the configuration to copy- Since:
- 1.4
-
PropertyListConfiguration
PropertyListConfiguration(ImmutableNode root)
Creates a new instance ofPropertyListConfiguration
with the given root node.- Parameters:
root
- the root node
-
-
Method Detail
-
formatDate
static java.lang.String formatDate(java.util.Calendar cal)
Returns a string representation for the date specified by the given calendar.- Parameters:
cal
- the calendar with the initialized date- Returns:
- a string for this date
-
formatDate
static java.lang.String formatDate(java.util.Date date)
Returns a string representation for the specified date.- Parameters:
date
- the date- Returns:
- a string for this date
-
parseDate
static java.util.Date parseDate(java.lang.String s) throws ParseException
Parses a date in a format like<*D2002-03-22 11:30:00 +0100>
.- Parameters:
s
- the string with the date to be parsed- Returns:
- the parsed date
- Throws:
ParseException
- if an error occurred while parsing the string
-
transformMap
private static java.util.Map<java.lang.String,java.lang.Object> transformMap(java.util.Map<?,?> src)
Transform a map of arbitrary types into a map with string keys and object values. All keys of the source map which are not of type String are dropped.- Parameters:
src
- the map to be converted- Returns:
- the resulting map
-
addPropertyInternal
protected void addPropertyInternal(java.lang.String key, java.lang.Object value)
Description copied from class:AbstractHierarchicalConfiguration
Adds the property with the specified key. This task will be delegated to the associatedExpressionEngine
, so the passed in key must match the requirements of this implementation.- Overrides:
addPropertyInternal
in classAbstractHierarchicalConfiguration<ImmutableNode>
- Parameters:
key
- the key of the new propertyvalue
- the value of the new property
-
printNode
private void printNode(java.io.PrintWriter out, int indentLevel, ImmutableNode node, NodeHandler<ImmutableNode> handler)
Append a node to the writer, indented according to a specific level.
-
printValue
private void printValue(java.io.PrintWriter out, int indentLevel, java.lang.Object value)
Append a value to the writer, indented according to a specific level.
-
quoteString
java.lang.String quoteString(java.lang.String s)
Quote the specified string if necessary, that's if the string contains:- a space character (' ', '\t', '\r', '\n')
- a quote '"'
- special characters in plist files ('(', ')', '{', '}', '=', ';', ',')
Examples:
- abcd -> abcd
- ab cd -> "ab cd"
- foo"bar -> "foo\"bar"
- foo;bar -> "foo;bar"
-
read
public void read(java.io.Reader in) throws ConfigurationException
Description copied from interface:FileBased
Reads the content of this object from the given reader. Client code should not call this method directly, but use aFileHandler
for reading data.- Specified by:
read
in interfaceFileBased
- Parameters:
in
- the reader- Throws:
ConfigurationException
- if a non-I/O related problem occurs, e.g. the data read does not have the expected format
-
setPropertyInternal
protected void setPropertyInternal(java.lang.String key, java.lang.Object value)
Description copied from class:AbstractHierarchicalConfiguration
Sets the value of the specified property.- Overrides:
setPropertyInternal
in classAbstractHierarchicalConfiguration<ImmutableNode>
- Parameters:
key
- the key of the property to setvalue
- the new value of this property
-
write
public void write(java.io.Writer out) throws ConfigurationException
Description copied from interface:FileBased
Writes the content of this object to the given writer. Client code should not call this method directly, but use aFileHandler
for writing data.- Specified by:
write
in interfaceFileBased
- Parameters:
out
- the writer- Throws:
ConfigurationException
- if a non-I/O related problem occurs, e.g. the data read does not have the expected format
-
-