Package com.evolveum.midpoint.prism
Interface LocalItemDefinitionStore
- All Known Subinterfaces:
AttributeDefinitionStore
,ComplexTypeDefinition
,ComplexTypeDefinitionDelegator
,CompositeObjectDefinition
,CompositeObjectDefinitionDelegator
,ContainerDefinitionDelegator<C>
,ObjectDefinitionDelegator<O>
,PrismContainerDefinition<C>
,PrismContainerWrapper<C>
,PrismObjectDefinition<O>
,PrismObjectWrapper<O>
,ResourceObjectClassDefinition
,ResourceObjectClassDefinitionDelegator
,ResourceObjectDefinition
,ResourceObjectDefinitionDelegator
,ResourceObjectTypeDefinition
,ResourceObjectTypeDefinitionDelegator
,ShadowAssociationDefinition
,ShadowAssociationsComplexTypeDefinition
,ShadowAssociationsContainerDefinition
,ShadowAttributesComplexTypeDefinition
,ShadowAttributesContainerDefinition
,ShadowAttributesContainerDefinitionDelegator
,ShadowItemsComplexTypeDefinition
,ShadowWrapper
- All Known Implementing Classes:
AbstractResourceObjectDefinitionImpl
,AssignmentHolderWrapper
,AssociationAttributeMappingWrapper
,AssociationInboundExpressionWrapper
,AssociationMappingExpressionWrapper
,AssociationOutboundExpressionWrapper
,AuthenticationBehaviorWrapper
,CaseWorkItemTypeWrapper
,CompositeObjectDefinitionImpl
,ObjectTypeAttributeMappingWrapper
,com.evolveum.midpoint.prism.impl.PrismContainerDefinitionImpl
,PrismContainerWrapperImpl
,PrismObjectWrapperImpl
,PrismSchemaWrapper
,ProfilingClassLoggerContainerWrapperImpl
,ResourceObjectClassDefinitionImpl
,ResourceObjectTypeDefinitionImpl
,ResourceWrapper
,ShadowAssociationDefinitionImpl
,ShadowAssociationsContainerDefinitionImpl
,ShadowAssociationValueWrapper
,ShadowAssociationWrapperImpl
,ShadowAttributesContainerDefinitionImpl
,ShadowWrapperImpl
,ValueMetadataWrapperImpl
public interface LocalItemDefinitionStore
Used to retrieve item definition from 'local definition store' - i.e. store that contains definition(s)
related to one parent item.
Such stores are prism containers and complex types (and their subtypes like attribute containers or object class definitions).
Methods `findLocalItemDefinition(...)` never try to resolve item names globally in the schema registry.
On the other hand, path-based methods do that if they come across `xsd:any`-type container during the resolution.
Note: Although these methods can return null, they are not marked as `@Nullable`. It is because we want avoid false warnings
about possible NPEs when used e.g. to find definitions that certainly exist (like `c:user` etc).
TODO What to do with "ID extends ItemDefinition"? It looks pretty bad.
-
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
containsItemDefinition
(@NotNull QName itemName) Returns true if the store contains a definition of an item with given name.default <C extends Containerable>
PrismContainerDefinition<C>findContainerDefinition
(@NotNull ItemPath path) ReturnsPrismContainerDefinition
corresponding to given path (rooted at this store).default <ID extends ItemDefinition<?>>
IDfindItemDefinition
(@NotNull ItemPath path) ReturnsItemDefinition
corresponding to given path (rooted at this store).<ID extends ItemDefinition<?>>
IDfindItemDefinition
(@NotNull ItemPath path, @NotNull Class<ID> clazz) Returns a definition of given type corresponding to given path (rooted at this store).default <ID extends ItemDefinition<?>>
IDfindLocalItemDefinition
(@NotNull QName name) Returns the localItemDefinition
corresponding to given item name (in case-sensitive manner).default <ID extends ItemDefinition<?>>
IDfindLocalItemDefinition
(@NotNull QName name, @NotNull Class<ID> clazz, boolean caseInsensitive) Returns the local item definition corresponding to given item name (optionally case-insensitive) and definition class.default <T> PrismPropertyDefinition<T>
findPropertyDefinition
(@NotNull ItemPath path) ReturnsPrismPropertyDefinition
corresponding to given path (rooted at this store).default PrismReferenceDefinition
findReferenceDefinition
(@NotNull ItemPath path) ReturnsPrismReferenceDefinition
corresponding to given path (rooted at this store).@NotNull Collection<? extends ItemDefinition<?>>
Returns all item definitions in this store.
-
Method Details
-
getDefinitions
Returns all item definitions in this store. -
findLocalItemDefinition
default <ID extends ItemDefinition<?>> ID findLocalItemDefinition(@NotNull @NotNull QName name, @NotNull @NotNull Class<ID> clazz, boolean caseInsensitive) Returns the local item definition corresponding to given item name (optionally case-insensitive) and definition class. Does not try to resolve items globally (in the case of "any" content). BEWARE: In the case of ambiguities, returns any suitable definition. (This may change.) -
findLocalItemDefinition
Returns the localItemDefinition
corresponding to given item name (in case-sensitive manner). Does not try to resolve items globally (in the case of "any" content). Note: some implementors provide optimized implementations of this method. -
findItemDefinition
ReturnsItemDefinition
corresponding to given path (rooted at this store). Tries the global resolution in the case of "any" content. -
findPropertyDefinition
ReturnsPrismPropertyDefinition
corresponding to given path (rooted at this store). Tries the global resolution in the case of "any" content. -
findReferenceDefinition
ReturnsPrismReferenceDefinition
corresponding to given path (rooted at this store). Tries the global resolution in the case of "any" content. -
findContainerDefinition
default <C extends Containerable> PrismContainerDefinition<C> findContainerDefinition(@NotNull @NotNull ItemPath path) ReturnsPrismContainerDefinition
corresponding to given path (rooted at this store). Tries the global resolution in the case of "any" content. -
findItemDefinition
<ID extends ItemDefinition<?>> ID findItemDefinition(@NotNull @NotNull ItemPath path, @NotNull @NotNull Class<ID> clazz) Returns a definition of given type corresponding to given path (rooted at this store). Tries the global resolution in the case of "any" content. -
containsItemDefinition
Returns true if the store contains a definition of an item with given name. TODO what about global names? Current implementation resolves them, but is this expected by clients?
-