Interface PrismObject<O extends Objectable>

All Superinterfaces:
DebugDumpable, Freezable, Item<PrismContainerValue<O>,PrismContainerDefinition<O>>, Itemable, ParentVisitable, PathVisitable, PrismContainer<O>, PrismContainerable<O>, Revivable, Serializable, Visitable

public interface PrismObject<O extends Objectable> extends PrismContainer<O>
Common supertype for all identity objects. Defines basic properties that each object must have to live in our system (identifier, name).

Objects consists of identifier and name (see definition below) and a set of properties represented as XML elements in the object's body. The attributes are represented as first-level XML elements (tags) of the object XML representation and may be also contained in other tags (e.g. extension, attributes). The QName (namespace and local name) of the element holding the property is considered to be a property name.

This class is named PrismObject instead of Object to avoid confusion with java.lang.Object.

Author:
Radovan Semancik

Class invariant: has at most one value (potentially empty). When making this object immutable and there's no value, we create one; in order to prevent exceptions on later getValue calls.