Interface PrismContext

All Superinterfaces:
ProtectorCreator

public interface PrismContext extends ProtectorCreator
Author:
semancik
  • Field Details

  • Method Details

    • initialize

      void initialize() throws SchemaException, SAXException, IOException
      Initializes the prism context, e.g. loads and parses all the schemas.
      Throws:
      SchemaException
      SAXException
      IOException
    • configurePolyStringNormalizer

      Throws:
      ClassNotFoundException
      InstantiationException
      IllegalAccessException
    • createConfiguredPolyStringNormalizer

      @NotNull @NotNull PolyStringNormalizer createConfiguredPolyStringNormalizer(PolyStringNormalizerConfigurationType configuration) throws InstantiationException, IllegalAccessException, ClassNotFoundException
      Creates a configured poly string normalizer for the use by the client. Does not set anything in PrismContext.
      Throws:
      InstantiationException
      IllegalAccessException
      ClassNotFoundException
    • getSchemaRegistry

      @NotNull @NotNull SchemaRegistry getSchemaRegistry()
      Returns the schema registry.
    • getDefaultPolyStringNormalizer

      @NotNull @NotNull PolyStringNormalizer getDefaultPolyStringNormalizer()
      Returns the default PolyString normalizer.
    • getDefaultProtector

      Protector getDefaultProtector()
      Returns the default protector.
    • getQueryConverter

      @NotNull @NotNull QueryConverter getQueryConverter()
    • parserFor

      @NotNull @NotNull PrismParser parserFor(@NotNull @NotNull File file)
      Creates a parser ready to process the given file.
      Parameters:
      file - File to be parsed.
      Returns:
      Parser that can be invoked to retrieve the (parsed) content of the file.
    • parserFor

      @NotNull @NotNull PrismParser parserFor(@NotNull @NotNull InputStream stream)
      Creates a parser ready to process data from the given input stream.
      Parameters:
      stream - Input stream to be parsed.
      Returns:
      Parser that can be invoked to retrieve the (parsed) content of the input stream.
    • parserFor

      @NotNull @NotNull PrismParserNoIO parserFor(@NotNull @NotNull String data)
      Creates a parser ready to process data from the given string. Format/language of the data will be auto-detected, so the typically following PrismParser.language(String) can be omitted.
      Parameters:
      data - String with the data to be parsed.
      Returns:
      Parser that can be invoked to retrieve the (parsed) content.
    • parserFor

      @NotNull @NotNull PrismParserNoIO parserFor(@NotNull @NotNull RootXNode xnode)
      Creates a parser ready to process data from the given XNode tree.
      Parameters:
      xnode - XNode tree with the data to be parsed.
      Returns:
      Parser that can be invoked to retrieve the (parsed) content.
    • parserFor

      @NotNull @NotNull PrismParserNoIO parserFor(@NotNull @NotNull Element element)
      Creates a parser ready to process data from the given DOM element.
      Parameters:
      element - Element with the data to be parsed.
      Returns:
      Parser that can be invoked to retrieve the (parsed) content.
    • detectLanguage

      @NotNull @NotNull String detectLanguage(@NotNull @NotNull File file) throws IOException
      Throws:
      IOException
    • parseObject

      default <T extends Objectable> PrismObject<T> parseObject(File file) throws SchemaException, IOException
      Throws:
      SchemaException
      IOException
    • parseObject

      default <T extends Objectable> PrismObject<T> parseObject(String dataString) throws SchemaException
      Throws:
      SchemaException
    • getParsingMigrator

      ParsingMigrator getParsingMigrator()
    • setParsingMigrator

      void setParsingMigrator(ParsingMigrator migrator)
    • adopt

      <C extends Containerable> void adopt(PrismContainer<C> object, Class<C> declaredType) throws SchemaException
      Throws:
      SchemaException
    • adopt

      <T extends Containerable> void adopt(PrismContainer<T> object) throws SchemaException
      Throws:
      SchemaException
    • adopt

      void adopt(Objectable objectable) throws SchemaException
      Throws:
      SchemaException
    • adopt

      void adopt(Containerable containerable) throws SchemaException
      Throws:
      SchemaException
    • adopt

      void adopt(PrismContainerValue<?> value) throws SchemaException
      Throws:
      SchemaException
    • adopt

      <T extends Objectable> void adopt(ObjectDelta<T> delta) throws SchemaException
      Throws:
      SchemaException
    • adopt

      <C extends Containerable, O extends Objectable> void adopt(C containerable, Class<O> type, ItemPath path) throws SchemaException
      Throws:
      SchemaException
    • adopt

      <C extends Containerable, O extends Objectable> void adopt(PrismContainerValue<C> prismContainerValue, Class<O> type, ItemPath path) throws SchemaException
      Throws:
      SchemaException
    • adopt

      <C extends Containerable> void adopt(PrismContainerValue<C> prismContainerValue, QName typeName, ItemPath path) throws SchemaException
      Throws:
      SchemaException
    • serializerFor

      @NotNull @NotNull PrismSerializer<String> serializerFor(@NotNull @NotNull String language)
      Creates a serializer for the given language.
      Parameters:
      language - Language (like xml, json, yaml).
      Returns:
      The serializer.
    • xmlSerializer

      @NotNull @NotNull PrismSerializer<String> xmlSerializer()
      Creates a serializer for XML language.
      Returns:
      The serializer.
    • jsonSerializer

      @NotNull @NotNull PrismSerializer<String> jsonSerializer()
      Creates a serializer for JSON language.
      Returns:
      The serializer.
    • yamlSerializer

      @NotNull @NotNull PrismSerializer<String> yamlSerializer()
      Creates a serializer for YAML language.
      Returns:
      The serializer.
    • domSerializer

      @NotNull @NotNull PrismSerializer<Element> domSerializer()
      Creates a serializer for DOM. The difference from XML serializer is that XML produces String output whereas this one produces a DOM Element.
      Returns:
      The serializer.
    • xnodeSerializer

      @NotNull @NotNull PrismSerializer<RootXNode> xnodeSerializer()
      Creates a serializer for XNode. The output of this serializer is intermediate XNode representation.
      Returns:
      The serializer.
    • createObject

      @NotNull <O extends Objectable> @NotNull PrismObject<O> createObject(@NotNull @NotNull Class<O> clazz) throws SchemaException
      Creates a new PrismObject of a given type.
      Parameters:
      clazz - Static type of the object to be created.
      Returns:
      New PrismObject.
      Throws:
      SchemaException - If a definition for the given class couldn't be found.
    • createObjectable

      @NotNull <O extends Objectable> O createObjectable(@NotNull @NotNull Class<O> clazz) throws SchemaException
      Creates a new Objectable of a given type.
      Parameters:
      clazz - Static type of the object to be created.
      Returns:
      New PrismObject's objectable content.
      Throws:
      SchemaException - If a definition for the given class couldn't be found.
    • createKnownObject

      @NotNull <O extends Objectable> @NotNull PrismObject<O> createKnownObject(@NotNull @NotNull Class<O> clazz)
      Creates a new PrismObject of a given static type. It is expected that the type exists, so any SchemaExceptions will be thrown as run-time exception.
      Parameters:
      clazz - Static type of the object to be created.
      Returns:
      New PrismObject.
    • createKnownObjectable

      @NotNull <O extends Objectable> O createKnownObjectable(@NotNull @NotNull Class<O> clazz)
      Creates a new Objectable of a given static type. It is expected that the type exists, so any SchemaExceptions will be thrown as run-time exception.
      Parameters:
      clazz - Static type of the object to be created.
      Returns:
      New PrismObject's objectable content.
    • getMonitor

      PrismMonitor getMonitor()
    • setMonitor

      void setMonitor(PrismMonitor monitor)
    • getDefaultRelation

      QName getDefaultRelation()
      If defined, it is considered to be the same as the relation of 'null'. Currently in midPoint, it is the value of org:default.
    • setDefaultRelation

      void setDefaultRelation(QName name)
    • getObjectsElementName

      QName getObjectsElementName()
      If defined, marks the 'multiple objects' element.
    • getDefaultReferenceTypeName

      @Experimental QName getDefaultReferenceTypeName()
      Type name for serialization of Referencable that's not of XML type (e.g. DefaultReferencableImpl). In midPoint it's c:ObjectReferenceType.

      VERY EXPERIMENTAL. Maybe we should simply use t:ObjectReferenceType in such cases.

    • isDefaultRelation

      boolean isDefaultRelation(QName relation)
    • getDefaultReferenceTargetType

      QName getDefaultReferenceTargetType()
      Define default reference target type for cases, when missing it in schema for reference item.
    • relationsEquivalent

      boolean relationsEquivalent(QName relation1, QName relation2)
    • relationMatches

      boolean relationMatches(QName relationQuery, QName relation)
    • relationMatches

      boolean relationMatches(@NotNull @NotNull List<QName> relationQuery, QName relation)
      Returns true of any of the relation in the relationQuery list matches specified relation.
    • getExtensionContainerTypeName

      @Experimental QName getExtensionContainerTypeName()
      Returns:
      Name of the generic type for object/container extension (e.g. c:ExtensionType).
    • setExtensionContainerTypeName

      void setExtensionContainerTypeName(QName typeName)
    • getDefaultParsingContext

      ParsingContext getDefaultParsingContext()
    • createParsingContextForAllowMissingRefTypes

      ParsingContext createParsingContextForAllowMissingRefTypes()
    • createParsingContextForCompatibilityMode

      ParsingContext createParsingContextForCompatibilityMode()
    • emptyPath

      UniformItemPath emptyPath()
    • path

      UniformItemPath path(Object... namesOrIdsOrSegments)
    • hacks

      Hacks hacks()
    • xnodeFactory

      XNodeFactory xnodeFactory()
    • xnodeMutator

      XNodeMutator xnodeMutator()
    • toUniformPath

      @NotNull @NotNull UniformItemPath toUniformPath(ItemPath path)
      Temporary
    • toUniformPathKeepNull

      @Nullable @Nullable UniformItemPath toUniformPathKeepNull(ItemPath path)
    • toUniformPath

      UniformItemPath toUniformPath(ItemPathType path)
    • toPath

      default ItemPath toPath(ItemPathType path)
    • createCanonicalItemPath

      CanonicalItemPath createCanonicalItemPath(ItemPath itemPath, QName objectType)
      Temporary
    • createCanonicalItemPath

      CanonicalItemPath createCanonicalItemPath(ItemPath itemPath)
      Temporary
    • deltaFor

      <C extends Containerable> S_ItemEntry deltaFor(Class<C> objectClass) throws SchemaException
      Starts a delta builder, with the default item definition resolution (i.e. from the system-wide schema).
      Throws:
      SchemaException
    • deltaFor

      <C extends Containerable> S_ItemEntry deltaFor(Class<C> objectClass, ItemDefinitionResolver itemDefinitionResolver) throws SchemaException
      Starts a delta builder, with a custom item definition resolver (e.g. for resource-specific deltas). Usually not called directly from a general client code.
      Throws:
      SchemaException
    • queryFor

      S_FilterEntryOrEmpty queryFor(Class<? extends Containerable> type)
      Starts a query builder with the goal of creating a query targeted at given object or container type. The resolution of items (properties, references, containers) used in the query formulation is done by the default process, i.e. from the system-wide schema.
      Parameters:
      type - The type of object or container values queried. This information is used to resolve the definitions of items used in query formulation. It is _not_ meant to restrict the objects returned when the query is eventually applied. If you want to restrict the type of objects returned right in the query (and not just when making e.g. the `searchObjects` call), please consider using S_FilterEntry.type(Class) or S_FilterEntry.type(QName).
    • queryFor

      S_FilterEntryOrEmpty queryFor(Class<? extends Containerable> type, ItemDefinitionResolver itemDefinitionResolver)
      Starts a query builder, with a custom item definition resolver (e.g. for resource-specific queries). Usually not called directly from a general client code.
      See Also:
    • queryForReferenceOwnedBy

      S_FilterEntryOrEmpty queryForReferenceOwnedBy(Class<? extends Containerable> ownerClass, ItemPath referencePath)
      Starts a query builder for reference search, with the default item definition resolution (i.e. from the system-wide schema). After this call the mandatory owned-by filter based on the provided parameters is initiated. The next step can be: * writing a filter (e.g. item+condition call) which will be interpreted as a nested owner filter; * starting a block, which will, again, specify the nested owner filter; * continuing with other filter using and/or (which finishes the owned-by filter) - unless a logical filter, the next filter should be a ref filter; * or calling S_QueryExit.build() to finish the query builder.
    • deltaFactory

      @NotNull @NotNull DeltaFactory deltaFactory()
      Access point to the "old" way of creating deltas. It is generally considered deprecated. DeltaBuilder (accessed via deltaFor method) should be used instead.

      However, because there is some functionality (like creation of empty deltas) that is not covered by the delta builder, we keep this method not marked as deprecated. Only particular parts of DeltaFactory are marked as deprecated.

    • queryFactory

      @NotNull @NotNull QueryFactory queryFactory()
      Access point to the "old" way of creating queries, filters and paging instructions. It is generally considered deprecated. QueryBuilder (accessed via queryFor method) should be used instead.

      However, because there is some functionality (like creation of standalone paging instructions) that is not covered by the query builder, we keep this method not marked as deprecated. Only particular parts of QueryFactory are marked as deprecated.

    • itemFactory

      @NotNull @NotNull ItemFactory itemFactory()
    • definitionFactory

      @NotNull @NotNull DefinitionFactory definitionFactory()
    • itemPathParser

      @NotNull @NotNull ItemPathParser itemPathParser()
    • itemPathSerializer

      @NotNull @NotNull ItemPathSerializer itemPathSerializer()
    • setExtraValidation

      @Experimental void setExtraValidation(boolean value)
    • schemaFactory

      @NotNull @NotNull SchemaFactory schemaFactory()
    • setValueMetadataFactory

      @Experimental void setValueMetadataFactory(ValueMetadataFactory factory)
    • getValueMetadataFactory

      @Experimental ValueMetadataFactory getValueMetadataFactory()
    • getProvenanceEquivalenceStrategy

      @Experimental EquivalenceStrategy getProvenanceEquivalenceStrategy()
    • createQueryParser

      default PrismQueryLanguageParser createQueryParser()
    • registerQueryExpressionFactory

      void registerQueryExpressionFactory(PrismQueryExpressionFactory factory)
    • registerValueBasedDefinitionLookup

      @Experimental void registerValueBasedDefinitionLookup(ValueBasedDefinitionLookupHelper lookup)
    • valueBasedDefinitionLookupsForType

      @Experimental Collection<ValueBasedDefinitionLookupHelper> valueBasedDefinitionLookupsForType(QName typeName)
    • createQueryParser

      PrismQueryLanguageParser createQueryParser(Map<String,String> prefixToNamespace)
    • querySerializer

      PrismQuerySerializer querySerializer()
    • get

      static PrismContext get()