Package com.evolveum.midpoint.prism.impl
Class PrismObjectImpl<O extends Objectable>
java.lang.Object
com.evolveum.midpoint.prism.AbstractFreezable
com.evolveum.midpoint.prism.impl.ItemImpl<PrismContainerValue<C>,PrismContainerDefinition<C>>
com.evolveum.midpoint.prism.impl.PrismContainerImpl<O>
com.evolveum.midpoint.prism.impl.PrismObjectImpl<O>
- All Implemented Interfaces:
Freezable,Item<PrismContainerValue<O>,,PrismContainerDefinition<O>> Itemable,ItemDefinitionTransformer.TransformableItem,ParentVisitable,PathVisitable,PrismContainer<O>,PrismContainerable<O>,PrismObject<O>,PrismVisitable,Revivable,Visitable,DebugDumpable,Serializable,Cloneable
public class PrismObjectImpl<O extends Objectable>
extends PrismContainerImpl<O>
implements PrismObject<O>
Common supertype for all identity objects. Defines basic properties that each
object must have to live in our system (identifier, name).
Objects consists of identifier and name (see definition below) and a set of
properties represented as XML elements in the object's body. The attributes
are represented as first-level XML elements (tags) of the object XML
representation and may be also contained in other tags (e.g. extension,
attributes). The QName (namespace and local name) of the element holding the
property is considered to be a property name.
This class is named PrismObject instead of Object to avoid confusion with
java.lang.Object.
- Author:
- Radovan Semancik Class invariant: has at most one value (potentially empty). When making this object immutable and there's no value, we create one; in order to prevent exceptions on later getValue calls.
- See Also:
-
Field Summary
Fields inherited from class com.evolveum.midpoint.prism.impl.PrismContainerImpl
compileTimeClassFields inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
definition, elementName, incomplete, parent, valuesFields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRINGFields inherited from interface com.evolveum.midpoint.prism.Item
KEY_NAMESPACE_CONTEXT -
Constructor Summary
ConstructorsConstructorDescriptionPrismObjectImpl(QName name, @NotNull Class<O> compileTimeClass, @NotNull PrismObjectValue<O> value) PrismObjectImpl(QName name, PrismObjectDefinition<O> definition) PrismObjectImpl(QName name, Class<O> compileTimeClass) -
Method Summary
Modifier and TypeMethodDescription<I extends Item<?,?>>
voidaddExtensionItem(I item) protected ItemModifyResult<PrismContainerValue<O>>addInternal(@NotNull PrismContainerValue newValue, boolean checkEquivalents, EquivalenceStrategy strategy) voidaddReplaceExisting(Item<?, ?> item) protected voidstatic <T extends Objectable>
@NotNull List<T>asObjectableList(@NotNull List<PrismObjectImpl<T>> objects) voidcheckConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope) protected voidcheckDefinition(@NotNull PrismContainerDefinition<O> def) This is a separate method, as it is used at various places, e.g.clone()Literal clone.cloneComplex(CloneStrategy strategy) Complex clone with different cloning strategies.protected voidcopyValues(CloneStrategy strategy, PrismObjectImpl<O> clone) createDelta(ChangeType changeType) deepCloneDefinition(@NotNull DeepCloneOperation operation) @NotNull ObjectDelta<O>diff(PrismObject<O> other) @NotNull ObjectDelta<O>diff(PrismObject<O> other, ParameterizedEquivalenceStrategy strategy) <I extends Item<?,?>>
IfindExtensionItem(@NotNull QName elementName) <I extends Item<?,?>>
IfindExtensionItem(String elementLocalName) Return display name intended for business users of midPointprotected StringReturn a human readable name of this class suitable for logs.Returns applicable property container definition.getName()getOid()Returns Object ID (OID).Returns the parent of this item (if exists).@NotNull ItemPathgetPath()Returns the path of this item (sequence of names from the "root" container or similar object to this item).protected Object@NotNull PrismObjectValue<O>getValue()Returns the value, if there is only one.Collection<? extends ItemDelta<?,?>> narrowModifications(Collection<? extends ItemDelta<?, ?>> modifications, @NotNull ParameterizedEquivalenceStrategy plusStrategy, @NotNull ParameterizedEquivalenceStrategy minusStrategy, boolean assumeMissingItems) See description ofItemDelta.narrow(PrismObject, Comparator, Comparator, boolean)method.void<IV extends PrismValue,ID extends ItemDefinition<?>, I extends Item<IV, ID>>
voidremoveItem(ItemPath path, Class<I> itemType) voidvoidsetParent(PrismContainerValue<?> parentValue) Sets the parent of this item.voidsetValue(@NotNull PrismContainerValue<O> value) voidsetVersion(String version) Returns short string representing identity of this object.Returns short string identification of object type.toString()Methods inherited from class com.evolveum.midpoint.prism.impl.PrismContainerImpl
accept, add, addInternalExecution, applyDefinition, assertDefinitions, canRepresent, canRepresent, containsItem, copyValues, createDelta, createDelta, createNewValueInternal, createParentIfNeeded, debugDump, diff, diff, diffModifications, equivalent, find, findContainer, findContainer, findCreateItem, findCreateItem, findItem, findItem, findItem, findOrCreateContainer, findOrCreateItem, findOrCreateItem, findOrCreateProperty, findOrCreateReference, findPartial, findProperty, findReference, findValue, getAllItems, getAllValues, getCompileTimeClass, getPropertyRealValue, getRealValue, getRealValues, getValue, hasCompleteDefinition, isEmpty, mergeValue, mergeValues, mergeValues, propagateDeepCloneDefinition, remove, removeContainer, removeProperty, removeReference, setContainerRealValue, setDefinition, setDefinitionHack, setPropertyRealValue, setPropertyRealValues, setRealValue, startStrictModifications, stopStrictModifications, trim, trimDefinitionTree, useIdentifierIndexMethods inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
accept, acceptParentVisitor, add, addAll, addForced, addIgnoringEquivalents, addRespectingMetadataAndCloning, addWithResult, applyDefinitionToValues, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, clear, copyValues, diff, equals, equals, equals, fixupDelta, getElementName, getHighestId, getRealValue, getRealValuesArray, getUserData, getUserData, getValues, hashCode, hashCode, hashCode, isIncomplete, merge, normalize, recomputeAllValues, remove, remove, removeAll, removeRespectingMetadata, removeWithResult, replace, replaceAll, revive, setElementName, setIncomplete, setUserData, transformDefinition, valueRemovedMethods inherited from class com.evolveum.midpoint.prism.AbstractFreezable
freeze, freeze, freezeAll, freezeNullableList, isImmutable, isMutableMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.evolveum.midpoint.util.DebugDumpable
debugDump, debugDump, debugDumpLazily, debugDumpLazilyMethods inherited from interface com.evolveum.midpoint.prism.Freezable
checkImmutable, checkMutable, freeze, isImmutableMethods inherited from interface com.evolveum.midpoint.prism.Item
acceptParentVisitor, acceptVisitor, add, add, addAll, addAll, addIgnoringEquivalents, addRespectingMetadataAndCloning, applyDefinition, applyDefinition, applyDefinitionIfMissing, assertDefinitions, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, clear, contains, contains, copy, diff, diff, equals, equals, equals, filterValues, filterYields, find, findValue, findValue, getAllItems, getAllValues, getAnyValue, getAnyValue, getClonedValues, getDisplayName, getElementName, getHelp, getHighestId, getNamespaceContext, getRealValue, getRealValues, getRealValuesArray, getRealValuesOrRawTypes, getUserData, getUserData, hasAnyValue, hasCompleteDefinition, hashCode, hashCode, hashCode, hasNoValues, hasRaw, isEmpty, isIncomplete, isOperational, isRaw, isSingleValue, isSingleValueByDefinition, merge, normalize, recomputeAllValues, remove, remove, removeAll, removeIf, removeRespectingMetadata, replace, replaceAll, setDefinition, setElementName, setIncomplete, setUserData, size, valuesStreamMethods inherited from interface com.evolveum.midpoint.prism.PrismContainer
accept, add, canRepresent, canRepresent, containsItem, createDelta, createDelta, diff, diff, diffModifications, findContainer, findCreateItem, findCreateItem, findItem, findItem, findItem, findOrCreateContainer, findOrCreateItem, findOrCreateItem, findOrCreateProperty, findOrCreateReference, findPartial, findProperty, findReference, findValue, getCompileTimeClass, getPropertyRealValue, getRealValue, getRealValues, getValue, getValues, mergeValue, mergeValues, mergeValues, remove, removeContainer, removeProperty, removeReference, setContainerRealValue, setPropertyRealValue, setPropertyRealValues, setRealValue, trim, trimDefinitionTreeMethods inherited from interface com.evolveum.midpoint.prism.PrismContainerable
getComplexTypeDefinitionMethods inherited from interface com.evolveum.midpoint.prism.PrismObject
equivalent, isOfType
-
Constructor Details
-
PrismObjectImpl
-
PrismObjectImpl
-
PrismObjectImpl
public PrismObjectImpl(QName name, @NotNull @NotNull Class<O> compileTimeClass, @NotNull @NotNull PrismObjectValue<O> value)
-
-
Method Details
-
createNewValue
- Specified by:
createNewValuein interfacePrismContainer<O extends Objectable>- Specified by:
createNewValuein interfacePrismObject<O extends Objectable>- Overrides:
createNewValuein classPrismContainerImpl<O extends Objectable>
-
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<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
getValuein interfacePrismContainer<O extends Objectable>- Specified by:
getValuein interfacePrismObject<O extends Objectable>- Overrides:
getValuein classPrismContainerImpl<O extends Objectable>
-
setValue
- Specified by:
setValuein interfacePrismContainer<O extends Objectable>- Specified by:
setValuein interfacePrismObject<O extends Objectable>- Overrides:
setValuein classPrismContainerImpl<O extends Objectable>- Throws:
SchemaException
-
addInternal
protected ItemModifyResult<PrismContainerValue<O>> addInternal(@NotNull @NotNull PrismContainerValue newValue, boolean checkEquivalents, EquivalenceStrategy strategy) throws SchemaException - Overrides:
addInternalin classPrismContainerImpl<O extends Objectable>- Throws:
SchemaException
-
getOid
Returns Object ID (OID). May return null if the object does not have an OID.- Specified by:
getOidin interfacePrismObject<O extends Objectable>- Returns:
- Object ID (OID)
-
setOid
- Specified by:
setOidin interfacePrismObject<O extends Objectable>
-
getVersion
- Specified by:
getVersionin interfacePrismObject<O extends Objectable>
-
setVersion
- Specified by:
setVersionin interfacePrismObject<O extends Objectable>
-
getDefinition
Description copied from class:PrismContainerImplReturns applicable property container definition.May return null if no definition is applicable or the definition is not know.
- Specified by:
getDefinitionin interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
getDefinitionin interfaceItemable- Specified by:
getDefinitionin interfacePrismContainer<O extends Objectable>- Specified by:
getDefinitionin interfacePrismContainerable<O extends Objectable>- Specified by:
getDefinitionin interfacePrismObject<O extends Objectable>- Overrides:
getDefinitionin classPrismContainerImpl<O extends Objectable>- Returns:
- applicable property container definition
-
asObjectable
- Specified by:
asObjectablein interfacePrismObject<O extends Objectable>
-
getName
- Specified by:
getNamein interfacePrismObject<O extends Objectable>
-
getExtension
- Specified by:
getExtensionin interfacePrismObject<O extends Objectable>
-
getOrCreateExtension
- Specified by:
getOrCreateExtensionin interfacePrismObject<O extends Objectable>- Throws:
SchemaException
-
getExtensionContainerValue
- Specified by:
getExtensionContainerValuein interfacePrismObject<O extends Objectable>
-
findExtensionItem
- Specified by:
findExtensionItemin interfacePrismObject<O extends Objectable>
-
findExtensionItem
- Specified by:
findExtensionItemin interfacePrismObject<O extends Objectable>
-
addExtensionItem
- Specified by:
addExtensionItemin interfacePrismObject<O extends Objectable>- Throws:
SchemaException
-
createExtension
- Specified by:
createExtensionin interfacePrismObject<O extends Objectable>- Throws:
SchemaException
-
checkDefinition
Description copied from class:ItemImplThis is a separate method, as it is used at various places, e.g. - inItemImpl.applyDefinition(ItemDefinition, boolean)- inItemImpl.setDefinition(ItemDefinition)- when checking the consistence- Overrides:
checkDefinitionin classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>>
-
removeItem
public <IV extends PrismValue,ID extends ItemDefinition<?>, void removeItemI extends Item<IV, ID>> (ItemPath path, Class<I> itemType) - Specified by:
removeItemin interfacePrismContainer<O extends Objectable>- Specified by:
removeItemin interfacePrismObject<O extends Objectable>- Overrides:
removeItemin classPrismContainerImpl<O extends Objectable>
-
addReplaceExisting
- Specified by:
addReplaceExistingin interfacePrismObject<O extends Objectable>- Throws:
SchemaException
-
clone
Description copied from interface:ItemLiteral clone.- Specified by:
clonein interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
clonein interfacePrismContainer<O extends Objectable>- Specified by:
clonein interfacePrismObject<O extends Objectable>- Overrides:
clonein classPrismContainerImpl<O extends Objectable>
-
createImmutableClone
- Specified by:
createImmutableClonein interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
createImmutableClonein interfacePrismContainer<O extends Objectable>- Specified by:
createImmutableClonein interfacePrismObject<O extends Objectable>- Overrides:
createImmutableClonein classPrismContainerImpl<O extends Objectable>
-
cloneComplex
Description copied from interface:ItemComplex clone with different cloning strategies.- Specified by:
cloneComplexin interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
cloneComplexin interfacePrismContainer<O extends Objectable>- Specified by:
cloneComplexin interfacePrismObject<O extends Objectable>- Overrides:
cloneComplexin classPrismContainerImpl<O extends Objectable>- See Also:
-
copyValues
-
deepCloneDefinition
- Specified by:
deepCloneDefinitionin interfacePrismContainer<O extends Objectable>- Specified by:
deepCloneDefinitionin interfacePrismObject<O extends Objectable>- Overrides:
deepCloneDefinitionin classPrismContainerImpl<O extends Objectable>
-
diff
- Specified by:
diffin interfacePrismObject<O extends Objectable>
-
diff
@NotNull public @NotNull ObjectDelta<O> diff(PrismObject<O> other, ParameterizedEquivalenceStrategy strategy) - Specified by:
diffin interfacePrismObject<O extends Objectable>
-
narrowModifications
public Collection<? extends ItemDelta<?,?>> narrowModifications(Collection<? extends ItemDelta<?, ?>> modifications, @NotNull @NotNull ParameterizedEquivalenceStrategy plusStrategy, @NotNull @NotNull ParameterizedEquivalenceStrategy minusStrategy, boolean assumeMissingItems) Description copied from interface:PrismObjectSee description ofItemDelta.narrow(PrismObject, Comparator, Comparator, boolean)method.- Specified by:
narrowModificationsin interfacePrismObject<O extends Objectable>
-
createDelta
- Specified by:
createDeltain interfacePrismObject<O extends Objectable>
-
createAddDelta
- Specified by:
createAddDeltain interfacePrismObject<O extends Objectable>
-
createModifyDelta
- Specified by:
createModifyDeltain interfacePrismObject<O extends Objectable>
-
createDeleteDelta
- Specified by:
createDeleteDeltain interfacePrismObject<O extends Objectable>
-
setParent
Description copied from interface:ItemSets the parent of this item.- Specified by:
setParentin interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
setParentin interfacePrismObject<O extends Objectable>- Overrides:
setParentin classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Parameters:
parentValue- The new parent
-
getParent
Description copied from interface:ItemReturns the parent of this item (if exists). Currently this has to be a PrismContainerValue.- Specified by:
getParentin interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
getParentin interfacePrismObject<O extends Objectable>- Overrides:
getParentin classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Returns:
- The parent if exists
-
getPath
Description copied from interface:ItemReturns the path of this item (sequence of names from the "root" container or similar object to this item). Note that if the containing object is a delta (usually a container delta), then the path- Specified by:
getPathin interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Specified by:
getPathin interfaceItemable- Overrides:
getPathin classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Returns:
- the path
-
getPathComponent
- Overrides:
getPathComponentin classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>>
-
toString
- Overrides:
toStringin classPrismContainerImpl<O extends Objectable>
-
toDebugName
Returns short string representing identity of this object. It should container object type, OID and name. It should be presented in a form suitable for log and diagnostic messages (understandable for system administrator).- Specified by:
toDebugNamein interfacePrismObject<O extends Objectable>
-
toDebugType
Returns short string identification of object type. It should be in a form suitable for log messages. There is no requirement for the type name to be unique, but it rather has to be compact. E.g. short element names are preferred to long QNames or URIs.- Specified by:
toDebugTypein interfacePrismObject<O extends Objectable>
-
getDebugDumpClassName
Return a human readable name of this class suitable for logs.- Overrides:
getDebugDumpClassNamein classPrismContainerImpl<O extends Objectable>
-
appendDebugDumpSuffix
- Overrides:
appendDebugDumpSuffixin classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>>
-
getBusinessDisplayName
Return display name intended for business users of midPoint- Specified by:
getBusinessDisplayNamein interfacePrismObject<O extends Objectable>
-
checkConsistenceInternal
public void checkConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope) - Specified by:
checkConsistenceInternalin interfaceItem<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>> - Overrides:
checkConsistenceInternalin classPrismContainerImpl<O extends Objectable>
-
performFreeze
public void performFreeze()- Overrides:
performFreezein classItemImpl<PrismContainerValue<O extends Objectable>,PrismContainerDefinition<O extends Objectable>>
-
cloneIfImmutable
- Specified by:
cloneIfImmutablein interfacePrismObject<O extends Objectable>
-
asObjectableList
@NotNull public static <T extends Objectable> @NotNull List<T> asObjectableList(@NotNull @NotNull List<PrismObjectImpl<T>> objects)
-