Class PrismContainerImpl<C extends Containerable>
- java.lang.Object
-
- com.evolveum.midpoint.prism.impl.ItemImpl<PrismContainerValue<C>,PrismContainerDefinition<C>>
-
- com.evolveum.midpoint.prism.impl.PrismContainerImpl<C>
-
- All Implemented Interfaces:
Item<PrismContainerValue<C>,PrismContainerDefinition<C>>,Itemable,ParentVisitable,PathVisitable,PrismContainer<C>,PrismContainerable<C>,Revivable,Visitable,DebugDumpable,Serializable
- Direct Known Subclasses:
PrismObjectImpl,ResourceAttributeContainerImpl
public class PrismContainerImpl<C extends Containerable> extends ItemImpl<PrismContainerValue<C>,PrismContainerDefinition<C>> implements PrismContainer<C>
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:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Class<C>compileTimeClass-
Fields inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
defaultEquivalenceStrategy, definition, elementName, immutable, incomplete, parent, prismContext, values
-
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING
-
-
Constructor Summary
Constructors Constructor Description PrismContainerImpl(QName name)PrismContainerImpl(QName name, PrismContainerDefinition<C> definition, PrismContext prismContext)PrismContainerImpl(QName name, PrismContext prismContext)PrismContainerImpl(QName name, Class<C> compileTimeClass)PrismContainerImpl(QName name, Class<C> compileTimeClass, PrismContext prismContext)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Visitor visitor, ItemPath path, boolean recursive)voidadd(Item<?,?> item)Convenience method.booleanadd(PrismContainerValue newValue, boolean checkUniqueness)Adds a given value, unless an equivalent one is already there (if checkUniqueness is true).voidapplyDefinition(PrismContainerDefinition<C> definition)voidassertDefinitions(boolean tolerateRaw, String sourceDescription)booleancanRepresent(Class<?> compileTimeClass)Returns true if values of this container can be represented as specified compile-time class.booleancanRepresent(QName type)Returns true if values of this container can be presented as specified type (from compile-time or runtime schema).voidcheckConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope)protected voidcheckDefinition(PrismContainerDefinition<C> def)PrismContainer<C>clone()Literal clone.PrismContainer<C>cloneComplex(CloneStrategy strategy)Complex clone with different cloning strategies.booleancontainsEquivalentValue(PrismContainerValue<C> value, Comparator<PrismContainerValue<C>> comparator)booleancontainsItem(ItemPath itemPath, boolean acceptEmptyItem)protected voidcopyValues(CloneStrategy strategy, PrismContainerImpl<C> clone)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>
voidcreateParentIfNeeded(V value, ItemDefinition definition)StringdebugDump(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)booleanequivalent(Object obj)This method ignores some part of the object during comparison (e.g.Objectfind(ItemPath path)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>findItem(ItemPath path)<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>>
IfindItem(ItemPath path, Class<I> type)<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>>
IfindItem(QName itemQName, Class<I> type)<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)PrismReferencefindOrCreateReference(ItemPath propertyPath)<IV extends PrismValue,ID extends ItemDefinition>
PartiallyResolvedItem<IV,ID>findPartial(ItemPath path)<T> PrismProperty<T>findProperty(ItemPath path)PrismReferencefindReference(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.protected StringgetDebugDumpClassName()Return a human readable name of this class suitable for logs.PrismContainerDefinition<C>getDefinition()Returns applicable property container definition.<T> TgetPropertyRealValue(ItemPath propertyPath, Class<T> type)CgetRealValue()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)booleanhasCompleteDefinition()Returns true if the object and all contained prisms have proper definition.booleanisEmpty()voidmergeValue(PrismContainerValue<C> otherValue)voidmergeValues(PrismContainer<C> other)voidmergeValues(Collection<PrismContainerValue<C>> otherValues)protected voidpropagateDeepCloneDefinition(boolean ultraDeep, PrismContainerDefinition<C> clonedDef, Consumer<ItemDefinition> postCloneAction)voidremove(Item<?,?> item)Convenience method.voidremoveContainer(ItemPath path)<IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>>
voidremoveItem(ItemPath path, Class<I> itemType)voidremoveProperty(ItemPath path)voidremoveReference(ItemPath path)<X extends Containerable>
voidsetContainerRealValue(QName itemName, X realValue)voidsetDefinition(PrismContainerDefinition<C> definition)Sets applicable property container definition.<T> voidsetPropertyRealValue(QName propertyName, T realValue)<T> voidsetPropertyRealValues(QName propertyName, T... realValues)voidsetValue(PrismContainerValue<C> value)StringtoString()voidtrim()Remove all empty valuesvoidtrimDefinitionTree(Collection<? extends ItemPath> alwaysKeep)Optimizes (trims) definition tree by removing any definitions not corresponding to items in this container.-
Methods inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
accept, acceptParentVisitor, add, add, add, addAll, addAll, appendDebugDumpSuffix, applyDefinition, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkImmutability, checkMutability, clear, contains, contains, contains, containsEquivalentValue, copyValues, diff, equals, equals, equals, filterValues, findValue, fixupDelta, getAllValues, getAnyValue, getClonedValues, getDisplayName, getElementName, getEqualsHashCodeStrategy, getHelp, getHighestId, getParent, getPath, getPathComponent, getPrismContext, getPrismContextLocal, getUserData, getUserData, getValues, hashCode, hashCode, hashCode, hasNoValues, hasRaw, isImmutable, isIncomplete, isOperational, isRaw, isSingleValue, merge, modifyUnfrozen, modifyUnfrozen, normalize, recomputeAllValues, remove, remove, remove, removeAll, replace, replaceAll, revive, setElementName, setImmutable, setIncomplete, setParent, setPrismContext, setUserData, size, valuesEqual
-
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.Item
acceptParentVisitor, add, add, addAll, addAll, applyDefinition, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkImmutability, clear, contains, contains, contains, containsEquivalentValue, diff, diff, equals, equals, equals, filterValues, findValue, getAllValues, getAnyValue, getClonedValues, getDisplayName, getElementName, getHelp, getHighestId, getParent, getPath, getPrismContext, getPrismContextLocal, getRealValuesOrRawTypes, getUserData, getUserData, getValues, hashCode, hashCode, hashCode, hasNoValues, hasRaw, isImmutable, isIncomplete, isOperational, isRaw, isSingleValue, merge, modifyUnfrozen, modifyUnfrozen, normalize, recomputeAllValues, remove, remove, removeAll, replace, replaceAll, revive, setElementName, setImmutable, setIncomplete, setParent, setPrismContext, setUserData, size, valuesEqual
-
Methods inherited from interface com.evolveum.midpoint.prism.PrismContainerable
getComplexTypeDefinition
-
-
-
-
Field Detail
-
compileTimeClass
protected Class<C extends Containerable> compileTimeClass
-
-
Constructor Detail
-
PrismContainerImpl
public PrismContainerImpl(QName name)
-
PrismContainerImpl
public PrismContainerImpl(QName name, PrismContext prismContext)
-
PrismContainerImpl
public PrismContainerImpl(QName name, Class<C> compileTimeClass, PrismContext prismContext)
-
PrismContainerImpl
public PrismContainerImpl(QName name, PrismContainerDefinition<C> definition, PrismContext prismContext)
-
-
Method Detail
-
getCompileTimeClass
public Class<C> getCompileTimeClass()
Description copied from interface:PrismContainerReturns 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:
getCompileTimeClassin interfacePrismContainer<C extends Containerable>- Specified by:
getCompileTimeClassin interfacePrismContainerable<C extends Containerable>
-
canRepresent
public boolean canRepresent(@NotNull Class<?> compileTimeClass)Description copied from interface:PrismContainerReturns 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:
canRepresentin interfacePrismContainer<C extends Containerable>
-
canRepresent
public boolean canRepresent(@NotNull QName type)Description copied from interface:PrismContainerReturns 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:
canRepresentin interfacePrismContainer<C extends Containerable>
-
getRealValues
@NotNull public Collection<C> getRealValues()
Description copied from interface:ItemReturns (potentially empty) collection of "real values".- Specified by:
getRealValuesin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
getRealValuesin interfacePrismContainer<C extends Containerable>
-
getRealValue
@NotNull public C getRealValue()
Description copied from interface:ItemReturns 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:
getRealValuein interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
getRealValuein interfacePrismContainer<C extends Containerable>- Overrides:
getRealValuein classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
getValue
@NotNull public PrismContainerValue<C> getValue()
Description copied from interface:ItemReturns 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:
getValuein interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
getValuein interfacePrismContainer<C extends Containerable>- Overrides:
getValuein classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
setValue
public void setValue(@NotNull PrismContainerValue<C> value) throws SchemaException- Specified by:
setValuein interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
add
public boolean add(@NotNull PrismContainerValue newValue, boolean checkUniqueness) throws SchemaExceptionDescription copied from interface:ItemAdds a given value, unless an equivalent one is already there (if checkUniqueness is true).- Specified by:
addin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Overrides:
addin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Returns:
- true if this item changed as a result of the call (i.e. if the value was really added) Note that even if checkUniqueness is false we check the cardinality of the item according to its definition, i.e. we do not allow single-valued item to contain more than one value.
- Throws:
SchemaException
-
getValue
public PrismContainerValue<C> getValue(Long id)
- Specified by:
getValuein interfacePrismContainer<C extends Containerable>
-
setPropertyRealValue
public <T> void setPropertyRealValue(QName propertyName, T realValue) throws SchemaException
- Specified by:
setPropertyRealValuein interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
setContainerRealValue
public <X extends Containerable> void setContainerRealValue(QName itemName, X realValue) throws SchemaException
- Specified by:
setContainerRealValuein interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
setPropertyRealValues
public <T> void setPropertyRealValues(QName propertyName, T... realValues) throws SchemaException
- Specified by:
setPropertyRealValuesin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
getPropertyRealValue
public <T> T getPropertyRealValue(ItemPath propertyPath, Class<T> type)
- Specified by:
getPropertyRealValuein interfacePrismContainer<C extends Containerable>
-
add
public void add(Item<?,?> item) throws SchemaException
Convenience method. Works only on single-valued containers.- Specified by:
addin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
createNewValue
public PrismContainerValue<C> createNewValue()
- Specified by:
createNewValuein interfacePrismContainer<C extends Containerable>
-
mergeValues
public void mergeValues(PrismContainer<C> other) throws SchemaException
- Specified by:
mergeValuesin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
mergeValues
public void mergeValues(Collection<PrismContainerValue<C>> otherValues) throws SchemaException
- Specified by:
mergeValuesin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
mergeValue
public void mergeValue(PrismContainerValue<C> otherValue) throws SchemaException
- Specified by:
mergeValuein interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
trim
public void trim()
Remove all empty values- Specified by:
trimin interfacePrismContainer<C extends Containerable>
-
getDefinition
public PrismContainerDefinition<C> getDefinition()
Returns applicable property container definition.May return null if no definition is applicable or the definition is not know.
- Specified by:
getDefinitionin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
getDefinitionin interfaceItemable- Specified by:
getDefinitionin interfacePrismContainer<C extends Containerable>- Specified by:
getDefinitionin interfacePrismContainerable<C extends Containerable>- Overrides:
getDefinitionin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Returns:
- applicable property container definition
-
setDefinition
public void setDefinition(PrismContainerDefinition<C> definition)
Sets applicable property container definition.- Specified by:
setDefinitionin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
setDefinitionin interfacePrismContainer<C extends Containerable>- Overrides:
setDefinitionin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Parameters:
definition- the definition to set
-
applyDefinition
public void applyDefinition(PrismContainerDefinition<C> definition) throws SchemaException
- Specified by:
applyDefinitionin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
applyDefinitionin interfacePrismContainer<C extends Containerable>- Overrides:
applyDefinitionin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Throws:
SchemaException
-
findItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findItem(QName itemQName, Class<I> type)
- Specified by:
findItemin interfacePrismContainer<C extends Containerable>
-
hasCompleteDefinition
public boolean hasCompleteDefinition()
Returns true if the object and all contained prisms have proper definition.- Specified by:
hasCompleteDefinitionin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Overrides:
hasCompleteDefinitionin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
find
public Object find(ItemPath path)
Description copied from interface:ItemReturns object (Item or PrismValue) pointed to by the given path.- Specified by:
findin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
findin interfacePrismContainer<C extends Containerable>
-
findPartial
public <IV extends PrismValue,ID extends ItemDefinition> PartiallyResolvedItem<IV,ID> findPartial(ItemPath path)
- Specified by:
findPartialin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
findPartialin interfacePrismContainer<C extends Containerable>
-
findCreateItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findCreateItem(QName itemQName, Class<I> type, boolean create) throws SchemaException
- Specified by:
findCreateItemin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findItem(ItemPath path, Class<I> type)
- Specified by:
findItemin interfacePrismContainer<C extends Containerable>
-
findItem
public <IV extends PrismValue,ID extends ItemDefinition> Item<IV,ID> findItem(ItemPath path)
- Specified by:
findItemin interfacePrismContainer<C extends Containerable>
-
containsItem
public boolean containsItem(ItemPath itemPath, boolean acceptEmptyItem) throws SchemaException
- Specified by:
containsItemin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findCreateItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findCreateItem(ItemPath itemPath, Class<I> type, ID itemDefinition, boolean create) throws SchemaException
- Specified by:
findCreateItemin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findValue
public PrismContainerValue<C> findValue(long id)
- Specified by:
findValuein interfacePrismContainer<C extends Containerable>
-
findContainer
public <T extends Containerable> PrismContainer<T> findContainer(ItemPath path)
- Specified by:
findContainerin interfacePrismContainer<C extends Containerable>
-
findContainer
public <T extends Containerable> PrismContainer<T> findContainer(QName containerName)
-
findProperty
public <T> PrismProperty<T> findProperty(ItemPath path)
- Specified by:
findPropertyin interfacePrismContainer<C extends Containerable>
-
findReference
public PrismReference findReference(ItemPath path)
- Specified by:
findReferencein interfacePrismContainer<C extends Containerable>
-
findOrCreateItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findOrCreateItem(ItemPath containerPath, Class<I> type) throws SchemaException
- Specified by:
findOrCreateItemin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findOrCreateItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> I findOrCreateItem(ItemPath containerPath, Class<I> type, ID definition) throws SchemaException
- Specified by:
findOrCreateItemin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findOrCreateContainer
public <T extends Containerable> PrismContainer<T> findOrCreateContainer(ItemPath containerPath) throws SchemaException
- Specified by:
findOrCreateContainerin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findOrCreateProperty
public <T> PrismProperty<T> findOrCreateProperty(ItemPath propertyPath) throws SchemaException
- Specified by:
findOrCreatePropertyin interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
findOrCreateReference
public PrismReference findOrCreateReference(ItemPath propertyPath) throws SchemaException
- Specified by:
findOrCreateReferencein interfacePrismContainer<C extends Containerable>- Throws:
SchemaException
-
remove
public void remove(Item<?,?> item)
Convenience method. Works only on single-valued containers.- Specified by:
removein interfacePrismContainer<C extends Containerable>
-
removeProperty
public void removeProperty(ItemPath path)
- Specified by:
removePropertyin interfacePrismContainer<C extends Containerable>
-
removeContainer
public void removeContainer(ItemPath path)
- Specified by:
removeContainerin interfacePrismContainer<C extends Containerable>
-
removeReference
public void removeReference(ItemPath path)
- Specified by:
removeReferencein interfacePrismContainer<C extends Containerable>
-
removeItem
public <IV extends PrismValue,ID extends ItemDefinition,I extends Item<IV,ID>> void removeItem(ItemPath path, Class<I> itemType)
- Specified by:
removeItemin interfacePrismContainer<C extends Containerable>
-
createDelta
public ContainerDelta<C> createDelta()
Description copied from interface:ItemCreates specific subclass of ItemDelta appropriate for type of item that this definition represents (e.g. PropertyDelta, ContainerDelta, ...)- Specified by:
createDeltain interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
createDeltain interfacePrismContainer<C extends Containerable>
-
createDelta
public ContainerDelta<C> createDelta(ItemPath path)
- Specified by:
createDeltain interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
createDeltain interfacePrismContainer<C extends Containerable>
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
isEmptyin interfacePrismContainer<C extends Containerable>- Overrides:
isEmptyin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
checkDefinition
protected void checkDefinition(PrismContainerDefinition<C> def)
- Specified by:
checkDefinitionin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
checkConsistenceInternal
public void checkConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope)
- Specified by:
checkConsistenceInternalin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
checkConsistenceInternalin interfacePrismContainer<C extends Containerable>- Overrides:
checkConsistenceInternalin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
assertDefinitions
public void assertDefinitions(boolean tolerateRaw, String sourceDescription) throws SchemaException- Specified by:
assertDefinitionsin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
assertDefinitionsin interfacePrismContainer<C extends Containerable>- Overrides:
assertDefinitionsin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Throws:
SchemaException
-
diff
public ContainerDelta<C> diff(PrismContainer<C> other)
- Specified by:
diffin interfacePrismContainer<C extends Containerable>
-
diff
public ContainerDelta<C> diff(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy)
- Specified by:
diffin interfacePrismContainer<C extends Containerable>
-
diffModifications
public List<? extends ItemDelta> diffModifications(PrismContainer<C> other)
- Specified by:
diffModificationsin interfacePrismContainer<C extends Containerable>
-
diffModifications
public List<? extends ItemDelta> diffModifications(PrismContainer<C> other, ParameterizedEquivalenceStrategy strategy)
- Specified by:
diffModificationsin interfacePrismContainer<C extends Containerable>
-
clone
public PrismContainer<C> clone()
Description copied from interface:ItemLiteral clone.- Specified by:
clonein interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
clonein interfacePrismContainer<C extends Containerable>- Specified by:
clonein classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
cloneComplex
public PrismContainer<C> cloneComplex(CloneStrategy strategy)
Description copied from interface:ItemComplex clone with different cloning strategies.- Specified by:
cloneComplexin interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Specified by:
cloneComplexin interfacePrismContainer<C extends Containerable>- See Also:
CloneStrategy
-
copyValues
protected void copyValues(CloneStrategy strategy, PrismContainerImpl<C> clone)
-
deepCloneDefinition
public PrismContainerDefinition<C> deepCloneDefinition(boolean ultraDeep, Consumer<ItemDefinition> postCloneAction)
- Specified by:
deepCloneDefinitionin interfacePrismContainer<C extends Containerable>
-
propagateDeepCloneDefinition
protected void propagateDeepCloneDefinition(boolean ultraDeep, PrismContainerDefinition<C> clonedDef, Consumer<ItemDefinition> postCloneAction)- Overrides:
propagateDeepCloneDefinitionin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
containsEquivalentValue
public boolean containsEquivalentValue(PrismContainerValue<C> value, @Nullable Comparator<PrismContainerValue<C>> comparator)
- Specified by:
containsEquivalentValuein interfaceItem<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Overrides:
containsEquivalentValuein classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>- Returns:
- true if the item contains an equivalent value Item value is considered to be equivalent to the given value if: 1) given value is ID-only container value and item value has the same ID, or 2) comparator is not null and it gives "equals" (0) result when comparing these values, or 3) comparator is null and values match under IGNORE_METADATA_CONSIDER_DIFFERENT_IDS strategy
-
accept
public void accept(Visitor visitor, ItemPath path, boolean recursive)
- Specified by:
acceptin interfacePathVisitable- Specified by:
acceptin interfacePrismContainer<C extends Containerable>- Overrides:
acceptin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
equivalent
public boolean equivalent(Object obj)
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:
equivalentin interfacePrismContainer<C extends Containerable>
-
toString
public String toString()
- Specified by:
toStringin interfacePrismContainer<C extends Containerable>- Overrides:
toStringin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
debugDump
public String debugDump(int indent)
- Specified by:
debugDumpin interfaceDebugDumpable- Specified by:
debugDumpin interfacePrismContainer<C extends Containerable>- Overrides:
debugDumpin classItemImpl<PrismContainerValue<C extends Containerable>,PrismContainerDefinition<C extends Containerable>>
-
getDebugDumpClassName
protected String getDebugDumpClassName()
Return a human readable name of this class suitable for logs.- Overrides:
getDebugDumpClassNamein 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
public void trimDefinitionTree(Collection<? extends ItemPath> alwaysKeep)
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:
trimDefinitionTreein interfacePrismContainer<C extends Containerable>
-
-