public class MapConfiguration extends AbstractConfiguration implements Cloneable
A Map based Configuration.
 This implementation of the Configuration interface is
 initialized with a java.util.Map. The methods of the
 Configuration interface are implemented on top of the content of
 this map. The following storage scheme is used:
 
 Property keys are directly mapped to map keys, i.e. the
 getProperty() method directly performs a get() on
 the map. Analogously, setProperty() or
 addProperty() operations write new data into the map. If a value
 is added to an existing property, a java.util.List is created,
 which stores the values of this property.
 
 An important use case of this class is to treat a map as a
 Configuration allowing access to its data through the richer
 interface. This can be a bit problematic in some cases because the map may
 contain values that need not adhere to the default storage scheme used by
 typical configuration implementations, e.g. regarding lists. In such cases
 care must be taken when manipulating the data through the
 Configuration interface, e.g. by calling
 addProperty(); results may be different than expected.
 
 The handling of list delimiters is a bit different for this configuration
 implementation: When a property of type String is queried, it is passed to
 the current ListDelimiterHandler which may generate multiple values.
 Note that per default a list delimiter handler is set which does not do any
 list splitting, so this feature is disabled. It can be enabled by setting
 a properly configured ListDelimiterHandler implementation, e.g. a
 DefaultListDelimiterHandler object.
 
Notice that list splitting is only performed for single string values. If a property has multiple values, the single values are not split even if they contain the list delimiter character.
 As the underlying Map is directly used as store of the property
 values, the thread-safety of this Configuration implementation
 depends on the map passed to the constructor.
 
 Notes about type safety: For properties with multiple values this implementation
 creates lists of type Object and stores them. If a property is assigned
 another value, the value is added to the list. This can cause problems if the
 map passed to the constructor already contains lists of other types. This
 should be avoided, otherwise it cannot be guaranteed that the application
 might throw ClassCastException exceptions later.
 
| Modifier and Type | Field and Description | 
|---|---|
protected Map<String,Object> | 
map
The Map decorated by this configuration. 
 | 
| Constructor and Description | 
|---|
MapConfiguration(Map<String,?> map)
Create a Configuration decorator around the specified Map. 
 | 
MapConfiguration(Properties props)
Creates a new instance of  
MapConfiguration which uses the
 specified Properties object as its data store. | 
| Modifier and Type | Method and Description | 
|---|---|
protected void | 
addPropertyDirect(String key,
                 Object value)
Adds a key/value pair to the Configuration. 
 | 
protected void | 
clearPropertyDirect(String key)
Removes the specified property from this configuration. 
 | 
Object | 
clone()
Returns a copy of this object. 
 | 
protected boolean | 
containsKeyInternal(String key)
Actually checks whether the specified key is contained in this
 configuration. 
 | 
protected Iterator<String> | 
getKeysInternal()
Actually creates an iterator for iterating over the keys in this
 configuration. 
 | 
Map<String,Object> | 
getMap()
Return the Map decorated by this configuration. 
 | 
protected Object | 
getPropertyInternal(String key)
Actually obtains the value of the specified property. 
 | 
protected boolean | 
isEmptyInternal()
Actually checks whether this configuration contains data. 
 | 
boolean | 
isTrimmingDisabled()
Returns the flag whether trimming of property values is disabled. 
 | 
void | 
setTrimmingDisabled(boolean trimmingDisabled)
Sets a flag whether trimming of property values is disabled. 
 | 
protected int | 
sizeInternal()
Actually calculates the size of this configuration. 
 | 
String | 
toString()
Converts this object to a String suitable for debugging and logging. 
 | 
addErrorLogListener, addProperty, addPropertyInternal, append, beginRead, beginWrite, clear, clearInternal, clearProperty, cloneInterpolator, containsKey, copy, endRead, endWrite, get, get, getArray, getArray, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getCollection, getCollection, getConfigurationDecoder, getConversionHandler, getDouble, getDouble, getDouble, getEncodedString, getEncodedString, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, 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, interpolatedConfiguration, isEmpty, isScalarValue, isThrowExceptionOnMissing, lock, setConfigurationDecoder, setConversionHandler, setDefaultLookups, setInterpolator, setListDelimiterHandler, setLogger, setParentInterpolator, setPrefixLookups, setProperty, setPropertyInternal, setSynchronizer, setThrowExceptionOnMissing, size, subset, unlockaddEventListener, clearErrorListeners, clearEventListeners, copyEventListeners, createErrorEvent, createEvent, fireError, fireEvent, getEventListenerRegistrations, getEventListeners, isDetailEvents, removeEventListener, setDetailEventspublic MapConfiguration(Map<String,?> map)
map - the mappublic MapConfiguration(Properties props)
MapConfiguration which uses the
 specified Properties object as its data store. All changes of
 this configuration affect the given Properties object and
 vice versa. Note that while Properties actually
 implements Map<Object, Object>, we expect it to contain only
 string keys. Other key types will lead to ClassCastException
 exceptions on certain methods.props - the Properties object defining the content of this
        configurationpublic Map<String,Object> getMap()
public boolean isTrimmingDisabled()
public void setTrimmingDisabled(boolean trimmingDisabled)
trimmingDisabled - a flag whether trimming of property values should
        be disabledprotected Object getPropertyInternal(String key)
AbstractConfigurationgetProperty(). Concrete subclasses must define it to
 fetch the value of the desired property.getPropertyInternal in class AbstractConfigurationkey - the key of the property in questionprotected void addPropertyDirect(String key, Object value)
AbstractConfigurationaddPropertyDirect in class AbstractConfigurationkey - key to use for mappingvalue - object to storeprotected boolean isEmptyInternal()
AbstractConfigurationisEmpty(). It has to be defined by concrete subclasses.isEmptyInternal in class AbstractConfigurationprotected boolean containsKeyInternal(String key)
AbstractConfigurationcontainsKey(). It has to
 be defined by concrete subclasses.containsKeyInternal in class AbstractConfigurationkey - the key in questionprotected void clearPropertyDirect(String key)
AbstractConfigurationclearProperty() after it has done some
 preparations. It must be overridden in sub classes.clearPropertyDirect in class AbstractConfigurationkey - the key to be removedprotected Iterator<String> getKeysInternal()
AbstractConfigurationgetKeys(), it has to be
 defined by concrete subclasses.getKeysInternal in class AbstractConfigurationIterator with all property keys in this configurationprotected int sizeInternal()
AbstractConfigurationsize() with a read lock held. The base implementation provided
 here calculates the size based on the iterator returned by
 getKeys(). Sub classes which can determine the size in a more
 efficient way should override this method.sizeInternal in class AbstractConfigurationpublic Object clone()
clone in class BaseEventSourceCopyright © 2001–2020 The Apache Software Foundation. All rights reserved.