The abstract base class for all {@link Configuration} value property types. A property is associated with a specific{@link #getName()} and can contain one or more values. Since a {@link Configuration} represents a hierarchical set ofdata, properties can have a parent. For example, if a property is a member of a {@link PropertyList}, it will have a {@link #getParentList() parent list}.
There are three different types (i.e. subclasses) of properties:
- {@link PropertySimple simple}
- {@link PropertyList list}
- {@link PropertyMap map}
These subclasses are mapped into a single table so referential integrity is easy to maintain.
Maps may only have one value for a given key, while lists may have many and follow Bag rules.
Note that each property can have an optional error message associated with it. This is used typically when the property is stored in a configuration that is inside a {@link AbstractResourceConfigurationUpdate} object. If aproperty failed to get set, this property's error message can be used to indicate why it failed (e.g. the property's value was out of range or some other validation rule was not followed).
@author Jason Dobies
@author Greg Hinkle
@author John Mazzitelli