Class PrismContainerImpl<C extends Containerable>
- All Implemented Interfaces:
Freezable
,Item<PrismContainerValue<C>,
,PrismContainerDefinition<C>> Itemable
,ItemDefinitionTransformer.TransformableItem
,ParentVisitable
,PathVisitable
,PrismContainer<C>
,PrismContainerable<C>
,Revivable
,Visitable
,DebugDumpable
,Serializable
- Direct Known Subclasses:
PrismObjectImpl
,ShadowAssociation
,ShadowAssociationsContainerImpl
,ShadowAttributesContainerImpl
Property container groups properties 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 property 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.
Property Container contains a set of (potentially multi-valued) properties or inner property 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 Property Container must be either Property or a Property Container.
Property Container is mutable.
- Author:
- Radovan Semancik
- See Also:
-
Field Summary
Fields inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
definition, elementName, incomplete, parent, values
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING
Fields inherited from interface com.evolveum.midpoint.prism.Item
KEY_NAMESPACE_CONTEXT
-
Constructor Summary
ConstructorDescriptionPrismContainerImpl
(QName name) PrismContainerImpl
(QName name, @NotNull Class<C> compileTimeClass, @Nullable PrismContainerDefinition<C> definition) The `definition` parameter is here to preserve the definition if already present for a value (when instantiating from it).PrismContainerImpl
(QName name, PrismContainerDefinition<C> definition) -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
Convenience method.protected ItemModifyResult<PrismContainerValue<C>>
addInternal
(@NotNull PrismContainerValue newValue, boolean checkEquivalents, EquivalenceStrategy strategy) protected boolean
addInternalExecution
(@NotNull PrismContainerValue<C> newValue) void
applyDefinition
(@NotNull PrismContainerDefinition<C> definition, boolean force) Applies the definition to this item (and all its values, down to the lowest level).void
assertDefinitions
(boolean tolerateRawValues, Supplier<String> sourceDescriptionSupplier) boolean
canRepresent
(@NotNull Class<?> compileTimeClass) Returns true if values of this container can be represented as specified compile-time class.boolean
canRepresent
(@NotNull 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) clone()
Literal clone.cloneComplex
(CloneStrategy strategy) Complex clone with different cloning strategies.boolean
containsItem
(ItemPath itemPath, boolean acceptEmptyItem) protected void
copyValues
(CloneStrategy strategy, PrismContainerImpl<C> clone) Creates specific subclass of ItemDelta appropriate for type of item that this definition represents (e.g.createDelta
(ItemPath path) protected @NotNull PrismContainerValueImpl<C>
Can be overridden in subclasses.static <V extends PrismContainerValue>
voidcreateParentIfNeeded
(V value, ItemDefinition definition) debugDump
(int indent) deepCloneDefinition
(@NotNull DeepCloneOperation operation) diff
(PrismContainer<C> other) diff
(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy) diffModifications
(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy) boolean
equivalent
(Object obj) This method ignores some part of the object during comparison (e.g.Returns object (Item or PrismValue) pointed to by the given path.<T extends Containerable>
PrismContainer<T>findContainer
(ItemPath path) <T extends Containerable>
PrismContainer<T>findContainer
(QName containerName) <IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
IfindCreateItem
(ItemPath itemPath, Class<I> type, ID itemDefinition, boolean create) <IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
IfindCreateItem
(QName itemQName, Class<I> type, boolean create) <IV extends PrismValue,
ID extends ItemDefinition<?>>
Item<IV,ID> <IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
I<IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
I<T extends Containerable>
PrismContainer<T>findOrCreateContainer
(ItemPath containerPath) <IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
IfindOrCreateItem
(ItemPath containerPath, Class<I> type) <IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
IfindOrCreateItem
(ItemPath containerPath, Class<I> type, ID definition) <T> PrismProperty<T>
findOrCreateProperty
(ItemPath propertyPath) findOrCreateReference
(ItemPath propertyPath) <IV extends PrismValue,
ID extends ItemDefinition<?>>
PartiallyResolvedItem<IV,ID> findPartial
(ItemPath path) <T> PrismProperty<T>
findProperty
(ItemPath path) findReference
(ItemPath path) findValue
(long id) @NotNull Collection<Item<?,
?>> getAllItems
(@NotNull ItemPath path) Returns all items corresponding to the provided path.@NotNull Collection<PrismValue>
getAllValues
(ItemPath path) Returns all values corresponding to the provided path.Returns the static type of data represented by values of this container, if known and applicable.protected String
Return a human readable name of this class suitable for logs.Returns applicable property container definition.<T> T
getPropertyRealValue
(ItemPath propertyPath, Class<T> type) 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.@NotNull Collection<C>
Returns (potentially empty) collection of "real values".@NotNull PrismContainerValue<C>
getValue()
Returns the value, if there is only one.boolean
Returns true if the object and all contained prisms have definitions.boolean
isEmpty()
Normally the same asItem.hasNoValues()
.void
mergeValue
(PrismContainerValue<C> otherValue) void
mergeValues
(PrismContainer<C> other) void
mergeValues
(Collection<PrismContainerValue<C>> otherValues) protected void
propagateDeepCloneDefinition
(@NotNull DeepCloneOperation operation, PrismContainerDefinition<C> clonedDef) TODO descriptionvoid
Convenience method.void
removeContainer
(ItemPath path) <IV extends PrismValue,
ID extends ItemDefinition<?>, I extends Item<IV, ID>>
voidremoveItem
(ItemPath path, Class<I> itemType) void
removeProperty
(ItemPath path) void
removeReference
(ItemPath path) <X extends Containerable>
voidsetContainerRealValue
(QName itemName, X realValue) void
setDefinition
(@NotNull PrismContainerDefinition<C> definition) Sets applicable property container definition.void
setDefinitionHack
(@NotNull PrismContainerDefinition<C> definition) <T> void
setPropertyRealValue
(QName propertyName, T realValue) <T> void
setPropertyRealValues
(QName propertyName, T... realValues) void
setRealValue
(C value) void
setValue
(@NotNull PrismContainerValue<C> value) void
void
toString()
void
trim()
Remove all empty valuesvoid
trimDefinitionTree
(Collection<? extends ItemPath> alwaysKeep) Optimizes (trims) definition tree by removing any definitions not corresponding to items in this container.boolean
Methods inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
accept, acceptParentVisitor, add, addAll, addForced, addIgnoringEquivalents, addRespectingMetadataAndCloning, addWithResult, appendDebugDumpSuffix, applyDefinitionToValues, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkDefinition, clear, copyValues, diff, equals, equals, equals, fixupDelta, getElementName, getHighestId, getParent, getPath, getPathComponent, getRealValue, getRealValuesArray, getUserData, getUserData, getValues, hashCode, hashCode, hashCode, isIncomplete, merge, normalize, performFreeze, recomputeAllValues, remove, remove, removeAll, removeRespectingMetadata, removeWithResult, replace, replaceAll, revive, setElementName, setIncomplete, setParent, setUserData, transformDefinition, valueRemoved
Methods inherited from class com.evolveum.midpoint.prism.AbstractFreezable
freeze, freeze, freezeAll, freezeNullableList, isImmutable, isMutable
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.evolveum.midpoint.util.DebugDumpable
debugDump, debugDumpLazily, debugDumpLazily
Methods inherited from interface com.evolveum.midpoint.prism.Freezable
checkImmutable, checkMutable, freeze, isImmutable
Methods inherited from interface com.evolveum.midpoint.prism.Item
acceptParentVisitor, add, add, addAll, addAll, addIgnoringEquivalents, addRespectingMetadataAndCloning, applyDefinition, applyDefinitionIfMissing, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, clear, contains, contains, copy, diff, diff, equals, equals, equals, filterValues, filterYields, findValue, findValue, getAnyValue, getAnyValue, getClonedValues, getDisplayName, getElementName, getHelp, getHighestId, getNamespaceContext, getParent, getPath, getRealValue, getRealValues, getRealValuesArray, getRealValuesOrRawTypes, getUserData, getUserData, hasAnyValue, hashCode, hashCode, hashCode, hasNoValues, hasRaw, isIncomplete, isOperational, isRaw, isSingleValue, isSingleValueByDefinition, merge, normalize, recomputeAllValues, remove, remove, removeAll, removeIf, removeRespectingMetadata, replace, replaceAll, setElementName, setIncomplete, setParent, setUserData, size, valuesStream
Methods inherited from interface com.evolveum.midpoint.prism.PrismContainer
getValues
Methods inherited from interface com.evolveum.midpoint.prism.PrismContainerable
getComplexTypeDefinition
-
Field Details
-
compileTimeClass
-
-
Constructor Details
-
PrismContainerImpl
-
PrismContainerImpl
public PrismContainerImpl(QName name, @NotNull @NotNull Class<C> compileTimeClass, @Nullable @Nullable PrismContainerDefinition<C> definition) The `definition` parameter is here to preserve the definition if already present for a value (when instantiating from it). Useful for dynamic definitions of midPoint shadows, for example. -
PrismContainerImpl
-
-
Method Details
-
getCompileTimeClass
Description copied from interface:PrismContainer
Returns the static type of data represented by values of this container, if known and applicable. (There are containers that are purely dynamic, i.e. without any compile time class.)- Specified by:
getCompileTimeClass
in interfacePrismContainer<C extends Containerable>
- Specified by:
getCompileTimeClass
in interfacePrismContainerable<C extends Containerable>
-
canRepresent
Description copied from interface:PrismContainer
Returns true if values of this container can be represented as specified compile-time class. For example, PrismContainer of AbstractRoleType has: - canRepresent(AbstractRoleType.class) = true - canRepresent(FocusType.class) = true - canRepresent(ObjectType.class) = true - canRepresent(TaskType.class) = false - canRepresent(RoleType.class) = false- Specified by:
canRepresent
in interfacePrismContainer<C extends Containerable>
-
canRepresent
Description copied from interface:PrismContainer
Returns true if values of this container can be presented as specified type (from compile-time or runtime schema). In particular, returns true if type of this container or any of its supertypes match given type.- Specified by:
canRepresent
in interfacePrismContainer<C extends Containerable>
-
getRealValues
Description copied from interface:Item
Returns (potentially empty) collection of "real values". The list itself is detached, freely modifiable. (Note that the values can still embed a parent, e.g., for containers and references.)- Specified by:
getRealValues
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
getRealValues
in interfacePrismContainer<C extends Containerable>
- Returns:
- List of current values. The list itself is freely modifiable - it is independent on the list of values in this container. However, values themselves are directly linked to the PCVs.
- See Also:
-
getRealValue
Description copied from interface:Item
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. It can also contain container IDs (although they are not considered to be part of the real value). It does not contain information about item element name nor other metadata like origin, definition, etc. (Although e.g. Containerable can be converted back into PrismContainerValue that can be used to retrieve this information.)- Specified by:
getRealValue
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
getRealValue
in interfacePrismContainer<C extends Containerable>
- Overrides:
getRealValue
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
setRealValue
- Specified by:
setRealValue
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
getValue
Description copied from interface:Item
Returns the value, if there is only one. Throws exception if there are more values. If there is no value, this method either: - returns null (for properties) - throws an exception (for items that can hold multiple values) - creates an empty value (for containers and references). TODO think again whether getOrCreateValue would not be better- Specified by:
getValue
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
getValue
in interfacePrismContainer<C extends Containerable>
- Overrides:
getValue
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
setValue
- Specified by:
setValue
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
addInternal
protected ItemModifyResult<PrismContainerValue<C>> addInternal(@NotNull @NotNull PrismContainerValue newValue, boolean checkEquivalents, EquivalenceStrategy strategy) throws SchemaException - Overrides:
addInternal
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Throws:
SchemaException
-
addInternalExecution
- Overrides:
addInternalExecution
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
getValue
- Specified by:
getValue
in interfacePrismContainer<C extends Containerable>
-
setPropertyRealValue
- Specified by:
setPropertyRealValue
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
setContainerRealValue
public <X extends Containerable> void setContainerRealValue(QName itemName, X realValue) throws SchemaException - Specified by:
setContainerRealValue
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
setPropertyRealValues
- Specified by:
setPropertyRealValues
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
getPropertyRealValue
- Specified by:
getPropertyRealValue
in interfacePrismContainer<C extends Containerable>
-
add
Convenience method. Works only on single-valued containers.- Specified by:
add
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
createNewValue
- Specified by:
createNewValue
in interfacePrismContainer<C extends Containerable>
-
createNewValueInternal
Can be overridden in subclasses. -
mergeValues
- Specified by:
mergeValues
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
mergeValues
- Specified by:
mergeValues
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
mergeValue
- Specified by:
mergeValue
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
trim
public void trim()Remove all empty values- Specified by:
trim
in interfacePrismContainer<C extends Containerable>
-
getDefinition
Returns applicable property container definition.May return null if no definition is applicable or the definition is not know.
- Specified by:
getDefinition
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
getDefinition
in interfaceItemable
- Specified by:
getDefinition
in interfacePrismContainer<C extends Containerable>
- Specified by:
getDefinition
in interfacePrismContainerable<C extends Containerable>
- Overrides:
getDefinition
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Returns:
- applicable property container definition
-
setDefinition
Sets applicable property container definition.- Specified by:
setDefinition
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Overrides:
setDefinition
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Parameters:
definition
- the definition to set
-
setDefinitionHack
-
applyDefinition
public void applyDefinition(@NotNull @NotNull PrismContainerDefinition<C> definition, boolean force) throws SchemaException Description copied from interface:Item
Applies the definition to this item (and all its values, down to the lowest level). It may even convert the values, e.g. from their raw (unparsed) form to the parsed one, or - for resource attributes - betweenString
andPolyString
values (due to the normalization).- Specified by:
applyDefinition
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Overrides:
applyDefinition
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Throws:
SchemaException
-
findItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, I findItemI extends Item<IV, ID>> (QName itemQName, Class<I> type) - Specified by:
findItem
in interfacePrismContainer<C extends Containerable>
-
hasCompleteDefinition
public boolean hasCompleteDefinition()Returns true if the object and all contained prisms have definitions.- Specified by:
hasCompleteDefinition
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
find
Description copied from interface:Item
Returns object (Item or PrismValue) pointed to by the given path.- Specified by:
find
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
findPartial
public <IV extends PrismValue,ID extends ItemDefinition<?>> PartiallyResolvedItem<IV,ID> findPartial(ItemPath path) - Specified by:
findPartial
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
findPartial
in interfacePrismContainer<C extends Containerable>
-
findCreateItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, I findCreateItemI extends Item<IV, ID>> (QName itemQName, Class<I> type, boolean create) throws SchemaException - Specified by:
findCreateItem
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, I findItemI extends Item<IV, ID>> (ItemPath path, Class<I> type) - Specified by:
findItem
in interfacePrismContainer<C extends Containerable>
-
findItem
- Specified by:
findItem
in interfacePrismContainer<C extends Containerable>
-
containsItem
- Specified by:
containsItem
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findCreateItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, I findCreateItemI extends Item<IV, ID>> (ItemPath itemPath, Class<I> type, ID itemDefinition, boolean create) throws SchemaException - Specified by:
findCreateItem
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findValue
- Specified by:
findValue
in interfacePrismContainer<C extends Containerable>
-
findContainer
- Specified by:
findContainer
in interfacePrismContainer<C extends Containerable>
-
findContainer
-
findProperty
- Specified by:
findProperty
in interfacePrismContainer<C extends Containerable>
-
findReference
- Specified by:
findReference
in interfacePrismContainer<C extends Containerable>
-
findOrCreateItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, I findOrCreateItemI extends Item<IV, ID>> (ItemPath containerPath, Class<I> type) throws SchemaException - Specified by:
findOrCreateItem
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findOrCreateItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, I findOrCreateItemI extends Item<IV, ID>> (ItemPath containerPath, Class<I> type, ID definition) throws SchemaException - Specified by:
findOrCreateItem
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findOrCreateContainer
public <T extends Containerable> PrismContainer<T> findOrCreateContainer(ItemPath containerPath) throws SchemaException - Specified by:
findOrCreateContainer
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findOrCreateProperty
- Specified by:
findOrCreateProperty
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
findOrCreateReference
- Specified by:
findOrCreateReference
in interfacePrismContainer<C extends Containerable>
- Throws:
SchemaException
-
remove
Convenience method. Works only on single-valued containers.- Specified by:
remove
in interfacePrismContainer<C extends Containerable>
-
removeProperty
- Specified by:
removeProperty
in interfacePrismContainer<C extends Containerable>
-
removeContainer
- Specified by:
removeContainer
in interfacePrismContainer<C extends Containerable>
-
removeReference
- Specified by:
removeReference
in interfacePrismContainer<C extends Containerable>
-
removeItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, void removeItemI extends Item<IV, ID>> (ItemPath path, Class<I> itemType) - Specified by:
removeItem
in interfacePrismContainer<C extends Containerable>
-
createDelta
Description copied from interface:Item
Creates specific subclass of ItemDelta appropriate for type of item that this definition represents (e.g. PropertyDelta, ContainerDelta, ...)- Specified by:
createDelta
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
createDelta
in interfacePrismContainer<C extends Containerable>
-
createDelta
- Specified by:
createDelta
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
createDelta
in interfacePrismContainer<C extends Containerable>
-
isEmpty
public boolean isEmpty()Description copied from interface:Item
Normally the same asItem.hasNoValues()
. But a container is considered empty also if all its values (PCVs) are empty. This is a bit strange and should be revisited.- Specified by:
isEmpty
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
checkConsistenceInternal
public void checkConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope) - Specified by:
checkConsistenceInternal
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Overrides:
checkConsistenceInternal
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
assertDefinitions
public void assertDefinitions(boolean tolerateRawValues, Supplier<String> sourceDescriptionSupplier) throws SchemaException - Specified by:
assertDefinitions
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Overrides:
assertDefinitions
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Throws:
SchemaException
-
diff
- Specified by:
diff
in interfacePrismContainer<C extends Containerable>
-
diff
- Specified by:
diff
in interfacePrismContainer<C extends Containerable>
-
diffModifications
public List<? extends ItemDelta> diffModifications(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy) - Specified by:
diffModifications
in interfacePrismContainer<C extends Containerable>
-
clone
Description copied from interface:Item
Literal clone.- Specified by:
clone
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
clone
in interfacePrismContainer<C extends Containerable>
- Specified by:
clone
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
createImmutableClone
- Specified by:
createImmutableClone
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
createImmutableClone
in interfacePrismContainer<C extends Containerable>
- Overrides:
createImmutableClone
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
cloneComplex
Description copied from interface:Item
Complex clone with different cloning strategies.- Specified by:
cloneComplex
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Specified by:
cloneComplex
in interfacePrismContainer<C extends Containerable>
- See Also:
-
copyValues
-
deepCloneDefinition
public PrismContainerDefinition<C> deepCloneDefinition(@NotNull @NotNull DeepCloneOperation operation) - Specified by:
deepCloneDefinition
in interfacePrismContainer<C extends Containerable>
-
propagateDeepCloneDefinition
protected void propagateDeepCloneDefinition(@NotNull @NotNull DeepCloneOperation operation, PrismContainerDefinition<C> clonedDef) Description copied from class:ItemImpl
TODO description- Overrides:
propagateDeepCloneDefinition
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
accept
- Specified by:
accept
in interfacePathVisitable
- Specified by:
accept
in interfacePrismContainer<C extends Containerable>
- Overrides:
accept
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
equivalent
This method ignores some part of the object during comparison (e.g. source demarcation in values) These methods compare the "meaningful" parts of the objects.- Specified by:
equivalent
in interfacePrismContainer<C extends Containerable>
-
toString
- Overrides:
toString
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
debugDump
- Specified by:
debugDump
in interfaceDebugDumpable
- Overrides:
debugDump
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
getDebugDumpClassName
Return a human readable name of this class suitable for logs.- Overrides:
getDebugDumpClassName
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
createParentIfNeeded
public static <V extends PrismContainerValue> void createParentIfNeeded(V value, ItemDefinition definition) throws SchemaException - Throws:
SchemaException
-
trimDefinitionTree
Optimizes (trims) definition tree by removing any definitions not corresponding to items in this container. Works recursively by sub-containers of this one. USE WITH CARE. Make sure the definitions are not shared by other objects!- Specified by:
trimDefinitionTree
in interfacePrismContainer<C extends Containerable>
-
getAllValues
Description copied from interface:Item
Returns all values corresponding to the provided path. The path may contain ambiguous segments (e.g. `assignment/targetRef` when there are more assignments). Limitations: . The path can contain only name segments and the "identifier" (`#`) segment - at least for now. No ID segments. . There are no guarantees about duplicate values. They may or may not be present in the returned collections. . The caller should not modify the returned collection in any way. Note to implementors: Please take care about the performance of this method.- Specified by:
getAllValues
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Overrides:
getAllValues
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
getAllItems
Description copied from interface:Item
Returns all items corresponding to the provided path. This is an analogue toItem.getAllValues(ItemPath)
. The only difference here is that `#` segment is not allowed, as it does not correspond to an item. (Shouldn't these methods be rather called findAllValues/findAllItems?)- Specified by:
getAllItems
in interfaceItem<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>> - Overrides:
getAllItems
in classItemImpl<PrismContainerValue<C extends Containerable>,
PrismContainerDefinition<C extends Containerable>>
-
startStrictModifications
public void startStrictModifications() -
useIdentifierIndex
public boolean useIdentifierIndex() -
stopStrictModifications
public void stopStrictModifications()
-