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, getRealValuesOrRawTypes, 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, valuesEqualdebugDump, debugDumpLazily, debugDumpLazilygetComplexTypeDefinition@Nullable Class<C> getCompileTimeClass()
getCompileTimeClass in interface PrismContainerable<C extends Containerable>boolean canRepresent(@NotNull
Class<?> compileTimeClass)
boolean canRepresent(QName type)
@NotNull Collection<C> getRealValues()
ItemgetRealValues in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>Item.getRealValue().@NotNull C getRealValue()
ItemgetRealValue in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>void setValue(@NotNull
PrismContainerValue<C> value)
throws SchemaException
SchemaException@NotNull PrismContainerValue<C> getValue()
ItemgetValue 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
SchemaExceptionvoid add(Item<?,?> item) throws SchemaException
SchemaExceptionPrismContainerValue<C> createNewValue()
void mergeValues(PrismContainer<C> other) throws SchemaException
SchemaExceptionvoid mergeValues(Collection<PrismContainerValue<C>> otherValues) throws SchemaException
SchemaExceptionvoid mergeValue(PrismContainerValue<C> otherValue) throws SchemaException
SchemaExceptionvoid 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 ItemablegetDefinition 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)
Itemfind 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
SchemaExceptionPrismContainerValue<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
SchemaExceptionPrismReference findOrCreateReference(ItemPath propertyPath) throws SchemaException
SchemaExceptionvoid 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()
ItemcreateDelta 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>>SchemaExceptionContainerDelta<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()
Itemclone in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>PrismContainer<C> cloneComplex(CloneStrategy strategy)
ItemcloneComplex in interface Item<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>CloneStrategyPrismContainerDefinition<C> deepCloneDefinition(boolean ultraDeep, Consumer<ItemDefinition> postCloneAction)
void accept(Visitor visitor, ItemPath path, boolean recursive)
accept in interface PathVisitableboolean equivalent(Object obj)
String debugDump(int indent)
debugDump in interface DebugDumpablestatic <V extends Containerable> PrismContainer<V> newInstance(PrismContext prismContext, QName type) throws SchemaException
SchemaExceptionstatic <V extends PrismContainerValue> void createParentIfNeeded(V value, ItemDefinition definition) throws SchemaException
SchemaExceptionvoid trimDefinitionTree(Collection<? extends ItemPath> alwaysKeep)
Copyright © 2021 Evolveum. All rights reserved.