Package org.jboss.util.property
Class PropertyMap
- java.lang.Object
-
- java.util.Dictionary<K,V>
-
- java.util.Hashtable<java.lang.Object,java.lang.Object>
-
- java.util.Properties
-
- org.jboss.util.property.PropertyMap
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.util.Map<java.lang.Object,java.lang.Object>
- Direct Known Subclasses:
PropertyContainer
,PropertyGroup
public class PropertyMap extends java.util.Properties
A replacement for the standardjava.util.Properties
class which adds, among others, property event capabilities.- Version:
- $Revision$
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map
boundListeners
Bound property name -> listener list mapstatic java.lang.String[]
EMPTY_ARRAY_PROPERTY
Empty array propertyprivate java.util.Map
jndiMap
This map avoids heavy contention for the properties that JNDI looks up everytime a new InitialContext instance is created.private static java.lang.Object
NULL_VALUE
static java.lang.String
PROPERTY_NAME_SEPARATOR
Property name separatorprivate static long
serialVersionUID
Serial version uidprotected java.util.List
unboundListeners
Property listener list
-
Constructor Summary
Constructors Constructor Description PropertyMap()
Construct a PropertyMap.PropertyMap(java.util.Properties defaults)
Construct a PropertyMap with default properties.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addPropertyListener(BoundPropertyListener listener)
Add a bound property listener.void
addPropertyListener(PropertyListener listener)
Add a property listener.void
addPropertyListeners(PropertyListener[] listeners)
Add an array of property listeners.boolean
containsProperty(java.lang.String name)
Check if this map contains a given property.java.util.Set
entrySet(boolean includeDefaults)
Returns a set of entrys for all entries in this group and optionally all of the entrys in the defaults map.private void
firePropertyAdded(java.util.List list, PropertyEvent event)
Fire a property added event to the given list of listeners.protected void
firePropertyAdded(PropertyEvent event)
Fire a property added event to all registered listeners.private void
firePropertyChanged(java.util.List list, PropertyEvent event)
Fire a property changed event to the given list of listeners.protected void
firePropertyChanged(PropertyEvent event)
Fire a property changed event to all listeners.private void
firePropertyRemoved(java.util.List list, PropertyEvent event)
Fire a property removed event to the given list of listeners.protected void
firePropertyRemoved(PropertyEvent event)
Fire a property removed event to all registered listeners.java.lang.String[]
getArrayProperty(java.lang.String name)
Get an array style property.java.lang.String[]
getArrayProperty(java.lang.String base, java.lang.String[] defaultValues)
Get an array style property.java.lang.String
getProperty(java.lang.String name)
PropertyGroup
getPropertyGroup(java.lang.String basename)
Get a property group for the given property base.PropertyGroup
getPropertyGroup(java.lang.String basename, int index)
Get a property group for the given property base at the given index.private void
init()
Initialized listener lists and the JNDI properties cache mapjava.util.Set
keySet(boolean includeDefaults)
Returns a set of keys for all entries in this group and optionally all of the keys in the defaults map.void
load(java.lang.String className)
Load properties from a PropertyReader specifed by the given class name.void
load(java.lang.String prefix, java.util.Map map)
Load properties from a map.void
load(java.util.Map map)
Load properties from a map.void
load(PropertyReader reader)
Load properties from a PropertyReader.protected java.lang.String
makeIndexPropertyName(java.lang.String base, int index)
Make an indexed property name.protected java.lang.String
makePrefixedPropertyName(java.lang.String base, java.lang.String prefix)
Make a optionaly prefixed property name.java.util.Iterator
names()
Return an iterator over all contained property names.java.lang.Object
put(java.lang.Object name, java.lang.Object value)
Set a property.private void
readObject(java.io.ObjectInputStream stream)
java.lang.Object
remove(java.lang.Object name)
Remove a property.java.lang.String
removeProperty(java.lang.String name)
Remove a property.protected boolean
removePropertyListener(BoundPropertyListener listener)
Remove a bound property listener.boolean
removePropertyListener(PropertyListener listener)
Remove a property listener.java.lang.Object
setProperty(java.lang.String name, java.lang.String value)
Set a property.private void
updateJndiCache(java.lang.String name, java.lang.String value)
Called by setProperty to update the jndiMap cache values.private void
writeObject(java.io.ObjectOutputStream stream)
-
Methods inherited from class java.util.Properties
clear, clone, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, getProperty, hashCode, isEmpty, keys, keySet, list, list, load, load, loadFromXML, merge, propertyNames, putAll, putIfAbsent, rehash, remove, replace, replace, replaceAll, save, size, store, store, storeToXML, storeToXML, storeToXML, stringPropertyNames, toString, values
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
Serial version uid- See Also:
- Constant Field Values
-
PROPERTY_NAME_SEPARATOR
public static final java.lang.String PROPERTY_NAME_SEPARATOR
Property name separator- See Also:
- Constant Field Values
-
EMPTY_ARRAY_PROPERTY
public static final java.lang.String[] EMPTY_ARRAY_PROPERTY
Empty array property
-
unboundListeners
protected transient java.util.List unboundListeners
Property listener list
-
boundListeners
protected transient java.util.Map boundListeners
Bound property name -> listener list map
-
jndiMap
private transient java.util.Map jndiMap
This map avoids heavy contention for the properties that JNDI looks up everytime a new InitialContext instance is created. Once the container is up and running getProperty calls other than for the JNDI property are very rare, so the double lookup is not much of a performance problem. If at all possible, this class should be read-only and use no locks at all.
-
NULL_VALUE
private static final java.lang.Object NULL_VALUE
-
-
Method Detail
-
init
private void init()
Initialized listener lists and the JNDI properties cache map
-
updateJndiCache
private void updateJndiCache(java.lang.String name, java.lang.String value)
Called by setProperty to update the jndiMap cache values.- Parameters:
name
- the property namevalue
- the property value
-
put
public java.lang.Object put(java.lang.Object name, java.lang.Object value)
Set a property.- Specified by:
put
in interfacejava.util.Map<java.lang.Object,java.lang.Object>
- Overrides:
put
in classjava.util.Properties
- Parameters:
name
- Property name.value
- Property value.- Returns:
- Previous property value or null.
-
remove
public java.lang.Object remove(java.lang.Object name)
Remove a property.- Specified by:
remove
in interfacejava.util.Map<java.lang.Object,java.lang.Object>
- Overrides:
remove
in classjava.util.Properties
- Parameters:
name
- Property name.- Returns:
- Removed property value.
-
keySet
public java.util.Set keySet(boolean includeDefaults)
Returns a set of keys for all entries in this group and optionally all of the keys in the defaults map.- Parameters:
includeDefaults
-- Returns:
- the key set
-
entrySet
public java.util.Set entrySet(boolean includeDefaults)
Returns a set of entrys for all entries in this group and optionally all of the entrys in the defaults map.- Parameters:
includeDefaults
-- Returns:
- the entry set
-
addPropertyListener
public void addPropertyListener(PropertyListener listener)
Add a property listener.- Parameters:
listener
- Property listener to add.
-
addPropertyListener
protected void addPropertyListener(BoundPropertyListener listener)
Add a bound property listener.- Parameters:
listener
- Bound property listener to add.
-
addPropertyListeners
public void addPropertyListeners(PropertyListener[] listeners)
Add an array of property listeners.- Parameters:
listeners
- Array of property listeners to add.
-
removePropertyListener
public boolean removePropertyListener(PropertyListener listener)
Remove a property listener.- Parameters:
listener
- Property listener to remove.- Returns:
- True if listener was removed.
-
removePropertyListener
protected boolean removePropertyListener(BoundPropertyListener listener)
Remove a bound property listener.- Parameters:
listener
- Bound property listener to remove.- Returns:
- True if listener was removed.
-
firePropertyAdded
private void firePropertyAdded(java.util.List list, PropertyEvent event)
Fire a property added event to the given list of listeners.- Parameters:
list
- Listener list.event
- Property event.
-
firePropertyAdded
protected void firePropertyAdded(PropertyEvent event)
Fire a property added event to all registered listeners.- Parameters:
event
- Property event.
-
firePropertyRemoved
private void firePropertyRemoved(java.util.List list, PropertyEvent event)
Fire a property removed event to the given list of listeners.- Parameters:
list
- Listener list.event
- Property event.
-
firePropertyRemoved
protected void firePropertyRemoved(PropertyEvent event)
Fire a property removed event to all registered listeners.- Parameters:
event
- Property event.
-
firePropertyChanged
private void firePropertyChanged(java.util.List list, PropertyEvent event)
Fire a property changed event to the given list of listeners.- Parameters:
list
- Listener list.event
- Property event.
-
firePropertyChanged
protected void firePropertyChanged(PropertyEvent event)
Fire a property changed event to all listeners.- Parameters:
event
- Property event.
-
makePrefixedPropertyName
protected java.lang.String makePrefixedPropertyName(java.lang.String base, java.lang.String prefix)
Make a optionaly prefixed property name.- Parameters:
base
- Base property name.prefix
- Optional prefix (can be null).- Returns:
- Property name.
-
load
public void load(java.lang.String prefix, java.util.Map map) throws PropertyException
Load properties from a map.- Parameters:
prefix
- Prefix to append to all map keys (or null).map
- Map containing properties to load.- Throws:
PropertyException
-
load
public void load(java.util.Map map) throws PropertyException
Load properties from a map.- Parameters:
map
- Map containing properties to load.- Throws:
PropertyException
-
load
public void load(PropertyReader reader) throws PropertyException, java.io.IOException
Load properties from a PropertyReader.- Parameters:
reader
- PropertyReader to read properties from.- Throws:
PropertyException
java.io.IOException
-
load
public void load(java.lang.String className) throws PropertyException, java.io.IOException
Load properties from a PropertyReader specifed by the given class name.- Parameters:
className
- Class name of a PropertyReader to read from.- Throws:
PropertyException
java.io.IOException
-
setProperty
public java.lang.Object setProperty(java.lang.String name, java.lang.String value)
Set a property.Returns Object instead of String due to limitations with
java.util.Properties
.- Overrides:
setProperty
in classjava.util.Properties
- Parameters:
name
- Property name.value
- Property value.- Returns:
- Previous property value or null.
-
getProperty
public java.lang.String getProperty(java.lang.String name)
- Overrides:
getProperty
in classjava.util.Properties
-
removeProperty
public java.lang.String removeProperty(java.lang.String name)
Remove a property.- Parameters:
name
- Property name.- Returns:
- Removed property value or null.
-
makeIndexPropertyName
protected java.lang.String makeIndexPropertyName(java.lang.String base, int index)
Make an indexed property name.- Parameters:
base
- Base property name.index
- Property index.- Returns:
- Indexed property name.
-
getArrayProperty
public java.lang.String[] getArrayProperty(java.lang.String base, java.lang.String[] defaultValues)
Get an array style property.Array properties are specified as:
base_property_name.INDEX.
Indexes begin with zero and must be contiguous. A break in continuity signals the end of the array.
- Parameters:
base
- Base property name.defaultValues
- Default property values.- Returns:
- Array of property values or default.
-
getArrayProperty
public java.lang.String[] getArrayProperty(java.lang.String name)
Get an array style property.- Parameters:
name
- Property name.- Returns:
- Array of property values or empty array.
-
names
public java.util.Iterator names()
Return an iterator over all contained property names.- Returns:
- Property name iterator.
-
containsProperty
public boolean containsProperty(java.lang.String name)
Check if this map contains a given property.- Parameters:
name
- Property name.- Returns:
- True if contains property.
-
getPropertyGroup
public PropertyGroup getPropertyGroup(java.lang.String basename)
Get a property group for the given property base.- Parameters:
basename
- Base property name.- Returns:
- Property group.
-
getPropertyGroup
public PropertyGroup getPropertyGroup(java.lang.String basename, int index)
Get a property group for the given property base at the given index.- Parameters:
basename
- Base property name.index
- Array property index.- Returns:
- Property group.
-
readObject
private void readObject(java.io.ObjectInputStream stream) throws java.io.IOException, java.lang.ClassNotFoundException
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
writeObject
private void writeObject(java.io.ObjectOutputStream stream) throws java.io.IOException
- Throws:
java.io.IOException
-
-