Class ResourceAttributeContainerImpl
- java.lang.Object
-
- com.evolveum.midpoint.prism.AbstractFreezable
-
- com.evolveum.midpoint.prism.impl.ItemImpl<PrismContainerValue<C>,PrismContainerDefinition<C>>
-
- com.evolveum.midpoint.prism.impl.PrismContainerImpl<ShadowAttributesType>
-
- com.evolveum.midpoint.schema.processor.ResourceAttributeContainerImpl
-
- All Implemented Interfaces:
Freezable
,Item<PrismContainerValue<ShadowAttributesType>,PrismContainerDefinition<ShadowAttributesType>>
,Itemable
,ParentVisitable
,PathVisitable
,PrismContainer<ShadowAttributesType>
,PrismContainerable<ShadowAttributesType>
,PrismContextSensitive
,Revivable
,Visitable
,ResourceAttributeContainer
,DebugDumpable
,Serializable
public final class ResourceAttributeContainerImpl extends PrismContainerImpl<ShadowAttributesType> implements ResourceAttributeContainer
Resource Object. Resource Object understands resource-specific annotations, such as identifiers, native object class, etc. Object class can be determined by using the definition (inherited from PropertyContainer)- Author:
- Radovan Semancik
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class com.evolveum.midpoint.prism.impl.PrismContainerImpl
compileTimeClass
-
Fields inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
definition, elementName, immutable, incomplete, parent, prismContext, values
-
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING
-
-
Constructor Summary
Constructors Constructor Description ResourceAttributeContainerImpl(QName name, ResourceAttributeContainerDefinition definition, PrismContext prismContext)
The constructors should be used only occasionally (if used at all).
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(ResourceAttribute<?> attribute)
void
checkConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope)
ResourceAttributeContainer
clone()
Literal clone.ResourceAttributeContainerImpl
cloneComplex(CloneStrategy strategy)
Complex clone with different cloning strategies.<T> boolean
contains(ResourceAttribute<T> attr)
protected void
copyValues(CloneStrategy strategy, ResourceAttributeContainerImpl clone)
@NotNull Collection<ResourceAttribute<?>>
extractAttributesByDefinitions(Collection<? extends ResourceAttributeDefinition> definitions)
<X> ResourceAttribute<X>
findAttribute(ResourceAttributeDefinition attributeDefinition)
Finds a specific attribute in the resource object by definition.<X> ResourceAttribute<X>
findAttribute(QName attributeQName)
Finds a specific attribute in the resource object by name.<X> ResourceAttribute<X>
findOrCreateAttribute(ResourceAttributeDefinition attributeDefinition)
<X> ResourceAttribute<X>
findOrCreateAttribute(QName attributeName)
Collection<ResourceAttribute<?>>
getAllIdentifiers()
Collection<ResourceAttribute<?>>
getAttributes()
Returns set of resource object attributes.protected String
getDebugDumpClassName()
Return a human readable name of this class suitable for logs.ResourceAttributeContainerDefinition
getDefinition()
Returns applicable property container definition.ResourceAttribute<String>
getDescriptionAttribute()
Returns description attribute of a resource object.ResourceAttribute
getDisplayNameAttribute()
Returns display name attribute of a resource object.ShadowKindType
getKind()
ResourceAttribute<String>
getNamingAttribute()
Specifies which resource attribute should be used as a "technical" name for the account.String
getNativeObjectClass()
Returns the native object class string for the resource object.PrismProperty<?>
getPrimaryIdentifier()
Returns a (single) primary identifier.Collection<ResourceAttribute<?>>
getPrimaryIdentifiers()
Returns primary identifiers.<T> PrismProperty<T>
getSecondaryIdentifier()
Returns a (single) secondary identifier.Collection<ResourceAttribute<?>>
getSecondaryIdentifiers()
Returns secondary identifiers.boolean
isDefaultInAKind()
Indicates whether definition is should be used as default account type.-
Methods inherited from class com.evolveum.midpoint.prism.impl.PrismContainerImpl
accept, add, addInternal, addInternalExecution, applyDefinition, assertDefinitions, canRepresent, canRepresent, checkDefinition, containsItem, copyValues, createDelta, createDelta, createImmutableClone, createNewValue, createParentIfNeeded, debugDump, deepCloneDefinition, diff, diff, diffModifications, equivalent, find, findContainer, findContainer, findCreateItem, findCreateItem, findItem, findItem, findItem, findOrCreateContainer, findOrCreateItem, findOrCreateItem, findOrCreateProperty, findOrCreateReference, findPartial, findProperty, findReference, findValue, getCompileTimeClass, getPropertyRealValue, getRealValue, getRealValues, getValue, getValue, hasCompleteDefinition, isEmpty, mergeValue, mergeValues, mergeValues, propagateDeepCloneDefinition, remove, removeContainer, removeItem, removeProperty, removeReference, setContainerRealValue, setDefinition, setPropertyRealValue, setPropertyRealValues, setRealValue, setValue, toString, trim, trimDefinitionTree
-
Methods inherited from class com.evolveum.midpoint.prism.impl.ItemImpl
accept, acceptParentVisitor, add, addAll, addForced, addIgnoringEquivalents, addRespectingMetadataAndCloning, appendDebugDumpSuffix, applyDefinition, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, clear, copyValues, diff, equals, equals, equals, fixupDelta, getAllValues, getElementName, getHighestId, getParent, getPath, getPathComponent, getPrismContext, getPrismContextLocal, getRealValue, getRealValuesArray, getUserData, getUserData, getValues, hashCode, hashCode, hashCode, isIncomplete, merge, normalize, performFreeze, recomputeAllValues, remove, remove, removeAll, removeRespectingMetadata, replace, replaceAll, revive, setElementName, setIncomplete, setParent, setPrismContext, setUserData
-
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, 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, assertDefinitions, assertDefinitions, assertDefinitions, checkConsistence, checkConsistence, checkConsistence, checkConsistence, checkConsistence, clear, contains, contains, copy, diff, diff, equals, equals, equals, filterValues, filterYields, find, findValue, findValue, getAllValues, getAnyValue, getAnyValue, getClonedValues, getDisplayName, getElementName, getHelp, getHighestId, getParent, getPath, getPrismContextLocal, getRealValue, getRealValuesArray, getRealValuesOrRawTypes, getUserData, getUserData, getValues, hasAnyValue, hasCompleteDefinition, hashCode, hashCode, hashCode, hasNoValues, hasRaw, isEmpty, isIncomplete, isOperational, isRaw, isSingleValue, isSingleValueByDefinition, merge, normalize, recomputeAllValues, remove, remove, removeAll, removeIf, removeRespectingMetadata, replace, replaceAll, setElementName, setIncomplete, setParent, setPrismContext, setUserData, size, valuesStream
-
Methods inherited from interface com.evolveum.midpoint.prism.PrismContainer
accept, add, applyDefinition, canRepresent, canRepresent, containsItem, createDelta, createDelta, createImmutableClone, createNewValue, deepCloneDefinition, diff, diff, diffModifications, equivalent, findContainer, findCreateItem, findCreateItem, findItem, findItem, findItem, findOrCreateContainer, findOrCreateItem, findOrCreateItem, findOrCreateProperty, findOrCreateReference, findPartial, findProperty, findReference, findValue, getCompileTimeClass, getPropertyRealValue, getRealValue, getRealValues, getValue, getValue, mergeValue, mergeValues, mergeValues, remove, removeContainer, removeItem, removeProperty, removeReference, setContainerRealValue, setDefinition, setPropertyRealValue, setPropertyRealValues, setRealValue, setValue, trim, trimDefinitionTree
-
Methods inherited from interface com.evolveum.midpoint.prism.PrismContainerable
getComplexTypeDefinition
-
Methods inherited from interface com.evolveum.midpoint.prism.PrismContextSensitive
getPrismContext
-
-
-
-
Constructor Detail
-
ResourceAttributeContainerImpl
public ResourceAttributeContainerImpl(QName name, ResourceAttributeContainerDefinition definition, PrismContext prismContext)
The constructors should be used only occasionally (if used at all). Use the factory methods in the ResourceObjectDefintion instead.
-
-
Method Detail
-
getDefinition
public ResourceAttributeContainerDefinition getDefinition()
Description copied from class:PrismContainerImpl
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<ShadowAttributesType>,PrismContainerDefinition<ShadowAttributesType>>
- Specified by:
getDefinition
in interfaceItemable
- Specified by:
getDefinition
in interfacePrismContainer<ShadowAttributesType>
- Specified by:
getDefinition
in interfacePrismContainerable<ShadowAttributesType>
- Specified by:
getDefinition
in interfaceResourceAttributeContainer
- Overrides:
getDefinition
in classPrismContainerImpl<ShadowAttributesType>
- Returns:
- applicable property container definition
-
getAttributes
public Collection<ResourceAttribute<?>> getAttributes()
Returns set of resource object attributes. The order of attributes is insignificant. The returned set is imutable! Any change to it will be ignored.- Specified by:
getAttributes
in interfaceResourceAttributeContainer
- Returns:
- set of resource object attributes.
-
add
public void add(ResourceAttribute<?> attribute) throws SchemaException
- Specified by:
add
in interfaceResourceAttributeContainer
- Throws:
SchemaException
-
getPrimaryIdentifier
public PrismProperty<?> getPrimaryIdentifier()
Returns a (single) primary identifier. This method returns a property that acts as an (primary) identifier for the resource object. Primary identifiers are used to access the resource objects, retrieve them from resource, identify objects for modifications, etc. Returns null if no identifier is defined. Resource objects may have multiple (composite) identifiers, but this method assumes that there is only a single identifier. The method will throw exception if that assumption is not satisfied.- Specified by:
getPrimaryIdentifier
in interfaceResourceAttributeContainer
- Returns:
- identifier property
- Throws:
IllegalStateException
- if resource object has multiple identifiers
-
getPrimaryIdentifiers
public Collection<ResourceAttribute<?>> getPrimaryIdentifiers()
Returns primary identifiers. This method returns properties that act as (primary) identifiers for the resource object. Primary identifiers are used to access the resource objects, retrieve them from resource, identify objects for modifications, etc. Returns empty set if no identifier is defined. Must not return null. Resource objects may have multiple (composite) identifiers, all of them are returned. The returned set it immutable! Any modifications will be lost.- Specified by:
getPrimaryIdentifiers
in interfaceResourceAttributeContainer
- Returns:
- set of identifier properties
-
getSecondaryIdentifier
public <T> PrismProperty<T> getSecondaryIdentifier()
Returns a (single) secondary identifier. This method returns a property that acts as an secondary identifier for the resource object. Secondary identifiers are used to confirm primary identification of resource object. Returns null if no secondary identifier is defined. Resource objects may have multiple (composite) identifiers, but this method assumes that there is only a single identifier. The method will throw exception if that assumption is not satisfied.- Specified by:
getSecondaryIdentifier
in interfaceResourceAttributeContainer
- Returns:
- secondary identifier property
- Throws:
IllegalStateException
- if resource object has multiple secondary identifiers
-
getSecondaryIdentifiers
public Collection<ResourceAttribute<?>> getSecondaryIdentifiers()
Returns secondary identifiers. This method returns properties that act as secondary identifiers for the resource object. Secondary identifiers are used to confirm primary identification of resource object. Returns empty set if no identifier is defined. Must not return null. Resource objects may have multiple (composite) identifiers, all of them are returned.- Specified by:
getSecondaryIdentifiers
in interfaceResourceAttributeContainer
- Returns:
- set of secondary identifier properties
-
getAllIdentifiers
public Collection<ResourceAttribute<?>> getAllIdentifiers()
- Specified by:
getAllIdentifiers
in interfaceResourceAttributeContainer
-
extractAttributesByDefinitions
@NotNull public @NotNull Collection<ResourceAttribute<?>> extractAttributesByDefinitions(Collection<? extends ResourceAttributeDefinition> definitions)
- Specified by:
extractAttributesByDefinitions
in interfaceResourceAttributeContainer
-
getDescriptionAttribute
public ResourceAttribute<String> getDescriptionAttribute()
Returns description attribute of a resource object. Returns null if there is no description attribute or the attribute is not known. The exception should be never thrown unless there is some bug in the code. The validation of model consistency should be done at the time of schema parsing.- Specified by:
getDescriptionAttribute
in interfaceResourceAttributeContainer
- Returns:
- description attribute of a resource object.
- Throws:
IllegalStateException
- if there is no definition for the referenced attributed
-
getNamingAttribute
public ResourceAttribute<String> getNamingAttribute()
Specifies which resource attribute should be used as a "technical" name for the account. This name will appear in log files and other troubleshooting tools. The name should be a form of unique identifier that can be used to locate the resource object for diagnostics. It should not contain white chars and special chars if that can be avoided and it should be reasonable short. It is different from a display name attribute. Display name is intended for a common user or non-technical administrator (such as role administrator). The naming attribute is intended for technical IDM administrators and developers.- Specified by:
getNamingAttribute
in interfaceResourceAttributeContainer
- Returns:
- attribute that should be used as a "technical" name for the account.
-
getDisplayNameAttribute
public ResourceAttribute getDisplayNameAttribute()
Returns display name attribute of a resource object. Returns null if there is no display name attribute or the attribute is not known. The exception should be never thrown unless there is some bug in the code. The validation of model consistency should be done at the time of schema parsing.- Specified by:
getDisplayNameAttribute
in interfaceResourceAttributeContainer
- Returns:
- display name attribute of a resource object.
- Throws:
IllegalStateException
- if there is no definition for the referenced attributed
-
getNativeObjectClass
public String getNativeObjectClass()
Returns the native object class string for the resource object. Native object class is the name of the Resource Object Definition (Object Class) as it is seen by the resource itself. The name of the Resource Object Definition may be constrained by XSD or other syntax and therefore may be "mangled" to conform to such syntax. The native object class value will contain unmangled name (if available). Returns null if there is no native object class or the native object class is not known. The exception should be never thrown unless there is some bug in the code. The validation of model consistency should be done at the time of schema parsing.- Specified by:
getNativeObjectClass
in interfaceResourceAttributeContainer
- Returns:
- native object class
- Throws:
IllegalStateException
- if there is more than one description attribute.
-
getKind
public ShadowKindType getKind()
- Specified by:
getKind
in interfaceResourceAttributeContainer
-
isDefaultInAKind
public boolean isDefaultInAKind()
Indicates whether definition is should be used as default account type. If true value is returned then the definition should be used as a default account type definition. This is a way how a resource connector may suggest applicable object classes (resource object definitions) for accounts. If no information about account type is present, false should be returned. This method must return true only if isAccountType() returns true. The exception should be never thrown unless there is some bug in the code. The validation of at-most-one value should be done at the time of schema parsing. The exception may not even be thrown at all if the implementation is not able to determine duplicity.- Specified by:
isDefaultInAKind
in interfaceResourceAttributeContainer
- Returns:
- true if the definition should be used as account type.
- Throws:
IllegalStateException
- if more than one default account is suggested in the schema.
-
findAttribute
public <X> ResourceAttribute<X> findAttribute(QName attributeQName)
Finds a specific attribute in the resource object by name. Returns null if nothing is found.- Specified by:
findAttribute
in interfaceResourceAttributeContainer
- Parameters:
attributeQName
- attribute name to find.- Returns:
- found attribute or null
-
findAttribute
public <X> ResourceAttribute<X> findAttribute(ResourceAttributeDefinition attributeDefinition)
Finds a specific attribute in the resource object by definition. Returns null if nothing is found.- Specified by:
findAttribute
in interfaceResourceAttributeContainer
- Parameters:
attributeDefinition
- attribute definition to find.- Returns:
- found attribute or null
-
findOrCreateAttribute
public <X> ResourceAttribute<X> findOrCreateAttribute(ResourceAttributeDefinition attributeDefinition) throws SchemaException
- Specified by:
findOrCreateAttribute
in interfaceResourceAttributeContainer
- Throws:
SchemaException
-
findOrCreateAttribute
public <X> ResourceAttribute<X> findOrCreateAttribute(QName attributeName) throws SchemaException
- Specified by:
findOrCreateAttribute
in interfaceResourceAttributeContainer
- Throws:
SchemaException
-
contains
public <T> boolean contains(ResourceAttribute<T> attr)
- Specified by:
contains
in interfaceResourceAttributeContainer
-
clone
public ResourceAttributeContainer clone()
Description copied from interface:Item
Literal clone.- Specified by:
clone
in interfaceItem<PrismContainerValue<ShadowAttributesType>,PrismContainerDefinition<ShadowAttributesType>>
- Specified by:
clone
in interfacePrismContainer<ShadowAttributesType>
- Specified by:
clone
in interfaceResourceAttributeContainer
- Overrides:
clone
in classPrismContainerImpl<ShadowAttributesType>
-
cloneComplex
public ResourceAttributeContainerImpl cloneComplex(CloneStrategy strategy)
Description copied from interface:Item
Complex clone with different cloning strategies.- Specified by:
cloneComplex
in interfaceItem<PrismContainerValue<ShadowAttributesType>,PrismContainerDefinition<ShadowAttributesType>>
- Specified by:
cloneComplex
in interfacePrismContainer<ShadowAttributesType>
- Overrides:
cloneComplex
in classPrismContainerImpl<ShadowAttributesType>
- See Also:
CloneStrategy
-
copyValues
protected void copyValues(CloneStrategy strategy, ResourceAttributeContainerImpl clone)
-
checkConsistenceInternal
public void checkConsistenceInternal(Itemable rootItem, boolean requireDefinitions, boolean prohibitRaw, ConsistencyCheckScope scope)
- Specified by:
checkConsistenceInternal
in interfaceItem<PrismContainerValue<ShadowAttributesType>,PrismContainerDefinition<ShadowAttributesType>>
- Overrides:
checkConsistenceInternal
in classPrismContainerImpl<ShadowAttributesType>
-
getDebugDumpClassName
protected String getDebugDumpClassName()
Return a human readable name of this class suitable for logs.- Overrides:
getDebugDumpClassName
in classPrismContainerImpl<ShadowAttributesType>
-
-