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.
INDENT_STRING
Modifier and Type | Method and Description |
---|---|
void |
accept(Visitor visitor,
ItemPath path,
boolean recursive) |
void |
add(Item<?,?> item)
Convenience method.
|
void |
applyDefinition(PrismContainerDefinition<C> definition) |
void |
assertDefinitions(boolean tolarateRaw,
String sourceDescription) |
boolean |
canRepresent(Class<?> compileTimeClass)
Returns true if values of this container can be represented as specified compile-time class.
|
boolean |
canRepresent(QName type)
Returns true if values of this container can be presented as specified type (from compile-time or runtime schema).
|
void |
checkConsistenceInternal(Itemable rootItem,
boolean requireDefinitions,
boolean prohibitRaw,
ConsistencyCheckScope scope) |
PrismContainer<C> |
clone()
Literal clone.
|
PrismContainer<C> |
cloneComplex(CloneStrategy strategy)
Complex clone with different cloning strategies.
|
boolean |
containsItem(ItemPath itemPath,
boolean acceptEmptyItem) |
ContainerDelta<C> |
createDelta()
Creates specific subclass of ItemDelta appropriate for type of item that this definition
represents (e.g.
|
ContainerDelta<C> |
createDelta(ItemPath path) |
PrismContainerValue<C> |
createNewValue() |
static <V extends PrismContainerValue> |
createParentIfNeeded(V value,
ItemDefinition definition) |
String |
debugDump(int indent) |
PrismContainerDefinition<C> |
deepCloneDefinition(boolean ultraDeep,
Consumer<ItemDefinition> postCloneAction) |
ContainerDelta<C> |
diff(PrismContainer<C> other) |
ContainerDelta<C> |
diff(PrismContainer<C> other,
ParameterizedEquivalenceStrategy strategy) |
List<? extends ItemDelta> |
diffModifications(PrismContainer<C> other) |
List<? extends ItemDelta> |
diffModifications(PrismContainer<C> other,
ParameterizedEquivalenceStrategy strategy) |
boolean |
equivalent(Object obj)
This method ignores some part of the object during comparison (e.g.
|
Object |
find(ItemPath path)
Returns object (Item or PrismValue) pointed to by the given path.
|
<T extends Containerable> |
findContainer(ItemPath path) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
findCreateItem(ItemPath itemPath,
Class<I> type,
ID itemDefinition,
boolean create) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
findCreateItem(QName itemQName,
Class<I> type,
boolean create) |
<IV extends PrismValue,ID extends ItemDefinition> |
findItem(ItemPath path) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
findItem(ItemPath path,
Class<I> type) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
findItem(QName itemQName,
Class<I> type) |
<T extends Containerable> |
findOrCreateContainer(ItemPath containerPath) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
findOrCreateItem(ItemPath containerPath,
Class<I> type) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
findOrCreateItem(ItemPath containerPath,
Class<I> type,
ID definition) |
<T> PrismProperty<T> |
findOrCreateProperty(ItemPath propertyPath) |
PrismReference |
findOrCreateReference(ItemPath propertyPath) |
<IV extends PrismValue,ID extends ItemDefinition> |
findPartial(ItemPath path) |
<T> PrismProperty<T> |
findProperty(ItemPath path) |
PrismReference |
findReference(ItemPath path) |
PrismContainerValue<C> |
findValue(long id) |
Class<C> |
getCompileTimeClass()
Returns the static type of data represented by values of this container,
if known and applicable.
|
PrismContainerDefinition<C> |
getDefinition()
Returns applicable property container definition.
|
<T> T |
getPropertyRealValue(ItemPath propertyPath,
Class<T> type) |
C |
getRealValue()
Returns the "real value" (content) of this item:
- value contained in PrismPropertyValue
- Referencable in PrismReferenceValue
- Containerable in PrismContainerValue
- Objectable in PrismObjectValue
Note that the real value can contain operational items.
|
Collection<C> |
getRealValues()
Returns (potentially empty) collection of "real values".
|
PrismContainerValue<C> |
getValue()
Returns the value, if there is only one.
|
PrismContainerValue<C> |
getValue(Long id) |
boolean |
isEmpty() |
void |
mergeValue(PrismContainerValue<C> otherValue) |
void |
mergeValues(Collection<PrismContainerValue<C>> otherValues) |
void |
mergeValues(PrismContainer<C> other) |
static <V extends Containerable> |
newInstance(PrismContext prismContext,
QName type) |
void |
remove(Item<?,?> item)
Convenience method.
|
void |
removeContainer(ItemPath path) |
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> |
removeItem(ItemPath path,
Class<I> itemType) |
void |
removeProperty(ItemPath path) |
void |
removeReference(ItemPath path) |
<C extends Containerable> |
setContainerRealValue(QName containerName,
C realValue) |
void |
setDefinition(PrismContainerDefinition<C> definition)
Sets applicable property container definition.
|
<T> void |
setPropertyRealValue(QName propertyName,
T realValue) |
<T> void |
setPropertyRealValues(QName propertyName,
T... realValues) |
void |
setValue(PrismContainerValue<C> value) |
String |
toString() |
void |
trim()
Remove all empty values
|
void |
trimDefinitionTree(Collection<? extends ItemPath> alwaysKeep)
Optimizes (trims) definition tree by removing any definitions not corresponding to items in this container.
|
acceptParentVisitor, add, add, add, addAll, addAll, applyDefinition, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkImmutability, clear, cloneCollection, contains, contains, contains, containsEquivalentValue, containsEquivalentValue, diff, diff, equals, equals, equals, filterValues, findValue, getAllValues, getAllValues, getAnyValue, getClonedValues, getDisplayName, getElementName, getHelp, getHighestId, getParent, getPath, getPrismContext, getPrismContextLocal, getUserData, getUserData, getValues, getValues, hasCompleteDefinition, hashCode, hashCode, hashCode, hasNoValues, hasNoValues, hasRaw, isImmutable, isIncomplete, isOperational, isRaw, isSingleValue, merge, modifyUnfrozen, modifyUnfrozen, normalize, recomputeAllValues, remove, remove, removeAll, replace, replaceAll, resetParentCollection, revive, setElementName, setImmutable, setIncomplete, setParent, setPrismContext, setUserData, size, valuesEqual
debugDump, debugDumpLazily, debugDumpLazily
getComplexTypeDefinition
@Nullable Class<C> getCompileTimeClass()
getCompileTimeClass
in interface PrismContainerable<C extends Containerable>
boolean canRepresent(@NotNull Class<?> compileTimeClass)
boolean canRepresent(QName type)
@NotNull Collection<C> getRealValues()
Item
getRealValues
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
Item.getRealValue().
@NotNull C getRealValue()
Item
getRealValue
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
void setValue(@NotNull PrismContainerValue<C> value) throws SchemaException
SchemaException
@NotNull PrismContainerValue<C> getValue()
Item
getValue
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
PrismContainerValue<C> getValue(Long id)
<T> void setPropertyRealValue(QName propertyName, T realValue) throws SchemaException
SchemaException
<C extends Containerable> void setContainerRealValue(QName containerName, C realValue) throws SchemaException
SchemaException
<T> void setPropertyRealValues(QName propertyName, T... realValues) throws SchemaException
SchemaException
void add(Item<?,?> item) throws SchemaException
SchemaException
PrismContainerValue<C> createNewValue()
void mergeValues(PrismContainer<C> other) throws SchemaException
SchemaException
void mergeValues(Collection<PrismContainerValue<C>> otherValues) throws SchemaException
SchemaException
void mergeValue(PrismContainerValue<C> otherValue) throws SchemaException
SchemaException
void trim()
PrismContainerDefinition<C> getDefinition()
May return null if no definition is applicable or the definition is not know.
getDefinition
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
getDefinition
in interface Itemable
getDefinition
in interface PrismContainerable<C extends Containerable>
void setDefinition(PrismContainerDefinition<C> definition)
setDefinition
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
definition
- the definition to setvoid applyDefinition(PrismContainerDefinition<C> definition) throws SchemaException
applyDefinition
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
SchemaException
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findItem(QName itemQName, Class<I> type)
Object find(ItemPath path)
Item
find
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
<IV extends PrismValue,ID extends ItemDefinition> PartiallyResolvedItem<IV,ID> findPartial(ItemPath path)
findPartial
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findCreateItem(QName itemQName, Class<I> type, boolean create) throws SchemaException
SchemaException
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findItem(ItemPath path, Class<I> type)
<IV extends PrismValue,ID extends ItemDefinition> Item<IV,ID> findItem(ItemPath path)
boolean containsItem(ItemPath itemPath, boolean acceptEmptyItem) throws SchemaException
SchemaException
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findCreateItem(ItemPath itemPath, Class<I> type, ID itemDefinition, boolean create) throws SchemaException
SchemaException
PrismContainerValue<C> findValue(long id)
<T extends Containerable> PrismContainer<T> findContainer(ItemPath path)
<T> PrismProperty<T> findProperty(ItemPath path)
PrismReference findReference(ItemPath path)
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findOrCreateItem(ItemPath containerPath, Class<I> type) throws SchemaException
SchemaException
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findOrCreateItem(ItemPath containerPath, Class<I> type, ID definition) throws SchemaException
SchemaException
<T extends Containerable> PrismContainer<T> findOrCreateContainer(ItemPath containerPath) throws SchemaException
SchemaException
<T> PrismProperty<T> findOrCreateProperty(ItemPath propertyPath) throws SchemaException
SchemaException
PrismReference findOrCreateReference(ItemPath propertyPath) throws SchemaException
SchemaException
void remove(Item<?,?> item)
void removeProperty(ItemPath path)
void removeContainer(ItemPath path)
void removeReference(ItemPath path)
<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> void removeItem(ItemPath path, Class<I> itemType)
ContainerDelta<C> createDelta()
Item
createDelta
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
ContainerDelta<C> createDelta(ItemPath path)
createDelta
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
boolean isEmpty()
isEmpty
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
void checkConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope)
checkConsistenceInternal
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
void assertDefinitions(boolean tolarateRaw, String sourceDescription) throws SchemaException
assertDefinitions
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
SchemaException
ContainerDelta<C> diff(PrismContainer<C> other)
ContainerDelta<C> diff(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy)
List<? extends ItemDelta> diffModifications(PrismContainer<C> other)
List<? extends ItemDelta> diffModifications(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy)
PrismContainer<C> clone()
Item
clone
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
PrismContainer<C> cloneComplex(CloneStrategy strategy)
Item
cloneComplex
in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
CloneStrategy
PrismContainerDefinition<C> deepCloneDefinition(boolean ultraDeep, Consumer<ItemDefinition> postCloneAction)
void accept(Visitor visitor, ItemPath path, boolean recursive)
accept
in interface PathVisitable
boolean equivalent(Object obj)
String debugDump(int indent)
debugDump
in interface DebugDumpable
static <V extends Containerable> PrismContainer<V> newInstance(PrismContext prismContext, QName type) throws SchemaException
SchemaException
static <V extends PrismContainerValue> void createParentIfNeeded(V value, ItemDefinition definition) throws SchemaException
SchemaException
void trimDefinitionTree(Collection<? extends ItemPath> alwaysKeep)
Copyright © 2020 Evolveum. All rights reserved.