Interface PrismContainer<C extends Containerable>

All Superinterfaces:
DebugDumpable, Freezable, Item<PrismContainerValue<C>,PrismContainerDefinition<C>>, Itemable, ParentVisitable, PathVisitable, PrismContainerable<C>, Revivable, Serializable, Visitable
All Known Subinterfaces:
PrismObject<O>, ShadowAssociationsContainer, ShadowAttributesContainer, ValueMetadata
All Known Implementing Classes:
com.evolveum.midpoint.prism.impl.PrismContainerImpl, ShadowAssociationsContainerImpl, ShadowAttributesContainerImpl, ShadowReferenceAttribute

public interface PrismContainer<C extends Containerable> extends Item<PrismContainerValue<C>,PrismContainerDefinition<C>>, PrismContainerable<C>

Prism container groups items into logical blocks. The reason for grouping may be as simple as better understandability of data structure. But the group usually means different meaning, source or structure of the data. For example, the a container is frequently used to hold properties that are dynamic, not fixed by a static schema. Such grouping also naturally translates to XML and helps to "quarantine" such properties to avoid Unique Particle Attribute problems.

Container contains a set of (potentially multi-valued) properties, references, or inner containers. The order of properties is not significant, regardless of the fact that it may be fixed in the XML representation. In the XML representation, each element inside the container must be either property, reference, or a container.

A container is mutable.

Author:
Radovan Semancik