Class PrismParserImplIO

java.lang.Object
com.evolveum.midpoint.prism.impl.marshaller.PrismParserImplIO
All Implemented Interfaces:
PrismParser

public class PrismParserImplIO extends Object
  • Constructor Details

  • Method Details

    • parse

      @NotNull public <O extends Objectable> @NotNull PrismObject<O> parse() throws SchemaException, IOException
      Description copied from interface: PrismParser
      Parses the input as a prism object.
      Returns:
      The object.
      Throws:
      SchemaException
      IOException
    • parseItem

      public <IV extends PrismValue, ID extends ItemDefinition<?>> Item<IV,ID> parseItem() throws SchemaException, IOException
      Description copied from interface: PrismParser
      Parses the input as a prism item. (Object, container, reference, value.) May return raw property values as part of the prism structure, if definitions are not known.
      Returns:
      The item.
      Throws:
      SchemaException
      IOException
    • parseItemValue

      public <IV extends PrismValue> IV parseItemValue() throws SchemaException, IOException
      Description copied from interface: PrismParser
      Parses the input as a prism value. (Container value, reference value, property value.) May return raw property values as part of the prism structure, if definitions are not known.
      Returns:
      The item.
      Throws:
      SchemaException
      IOException
    • parseRealValue

      public <T> T parseRealValue(Class<T> clazz) throws IOException, SchemaException
      Description copied from interface: PrismParser
      Parses a real value - either property or container value.
      Parameters:
      clazz - Expected class of the data. May be null if unknown.
      Returns:
      Real value - POJO, Containerable, Objectable or Referencable.
      Throws:
      IOException
      SchemaException
    • parseRealValue

      public <T> T parseRealValue() throws IOException, SchemaException
      Description copied from interface: PrismParser
      Parses a real value. The class is not supplied by the caller, so it has to be determined from the data source.
      Returns:
      Real value - POJO, Containerable, Objectable or Referencable.
      Throws:
      IOException
      SchemaException
    • parseRealValueToJaxbElement

      public <T> jakarta.xml.bind.JAXBElement<T> parseRealValueToJaxbElement() throws IOException, SchemaException
      Description copied from interface: PrismParser
      Parses a real value and stores it into JAXBElement, using item name derived in the usual way.
      Throws:
      IOException
      SchemaException
    • parseToXNode

      public RootXNodeImpl parseToXNode() throws IOException, SchemaException
      Description copied from interface: PrismParser
      Parses the input into RootXNode. This is a bit unusual approach, skipping the unmarshalling phase altogether. But it is useful at some places.
      Returns:
      RootXNode corresponding to the input.
      Throws:
      IOException
      SchemaException
    • parseObjects

      @NotNull public @NotNull List<PrismObject<? extends Objectable>> parseObjects() throws SchemaException, IOException
      Description copied from interface: PrismParser
      Parses the input as a collection of prism objects. For XML the input must be formatted as a collection of objects (TODO change this). For other languages the input may contain one or more objects.
      Returns:
      A list of objects.
      Throws:
      SchemaException
      IOException
    • parseObjectsIteratively

      public void parseObjectsIteratively(@NotNull @NotNull PrismParser.ObjectHandler handler) throws SchemaException, IOException
      Description copied from interface: PrismParser
      Currently implemented for JSON/YAML only. For XML, use old Validator code.
      Throws:
      SchemaException
      IOException
    • parseItemOrRealValue

      public Object parseItemOrRealValue() throws IOException, SchemaException
      Description copied from interface: PrismParser
      Parses either an item, or a real value. It depends on the type declaration or item name in the source data. 1) If explicit type is present, it is taken into account. If it corresponds to a prism item, the input is parsed as a prism item. Otherwise, it is parsed as a real value (containerable or simple POJO), if possible. 2) If there is no type, the item name is consulted. If it corresponds to a prism item, the input is parsed as a prism item. Otherwise, an exception is thrown. Pre-set parameters (itemDefinition, typeName, itemName) must NOT be present. Use with utmost care. If at all possible, avoid it.
      Returns:
      either prism item (Item) or a real value (Object)
      Throws:
      IOException
      SchemaException
    • language

      @NotNull public @NotNull PrismParser language(@Nullable @Nullable String language)
      Description copied from interface: PrismParser
      For string inputs: sets the data language that the parser will try to parse; null means auto-detect. For other kinds of input (DOM and XNode) the language is fixed to XML or none, respectively.
      Specified by:
      language in interface PrismParser
      Parameters:
      language - The language
      Returns:
      Updated parser.
    • xml

      @NotNull public @NotNull PrismParser xml()
      Description copied from interface: PrismParser
      Sets the language of the parser to be XML.
      Specified by:
      xml in interface PrismParser
      Returns:
      Updated parser.
    • json

      @NotNull public @NotNull PrismParser json()
      Description copied from interface: PrismParser
      Sets the language of the parser to be JSON.
      Specified by:
      json in interface PrismParser
      Returns:
      Updated parser.
    • yaml

      @NotNull public @NotNull PrismParser yaml()
      Description copied from interface: PrismParser
      Sets the language of the parser to be YAML.
      Specified by:
      yaml in interface PrismParser
      Returns:
      Updated parser.
    • preserveNamespaceContext

      @NotNull public @NotNull PrismParser preserveNamespaceContext()
      Description copied from interface: PrismParser
      Preserves namespace context during parsing. This is useful when we want to use namespaces and prefixes later on during serialization.
      Specified by:
      preserveNamespaceContext in interface PrismParser
      Returns:
      Updated parser.
    • context

      @NotNull public @NotNull PrismParser context(@NotNull @NotNull ParsingContext context)
      Description copied from interface: PrismParser
      Provides a parsing context for the parser. The context contains e.g. selection of strict/compat mode of operation (set by client) or a list of warnings (maintained by the parser).
      Specified by:
      context in interface PrismParser
      Parameters:
      context - The parsing context.
      Returns:
      Updated parser.
    • strict

      @NotNull public @NotNull PrismParser strict()
      Description copied from interface: PrismParser
      Switches the parser into "strict" parsing mode.
      Specified by:
      strict in interface PrismParser
      Returns:
      Updated parser.
    • compat

      @NotNull public @NotNull PrismParser compat()
      Description copied from interface: PrismParser
      Switches the parser into "compatibility" (or relaxed) parsing mode. TODO description here
      Specified by:
      compat in interface PrismParser
      Returns:
      Updated parser.
    • fastAddOperations

      @NotNull public @NotNull PrismParser fastAddOperations()
      Description copied from interface: PrismParser
      Does not check for existing values during parsing. To be used in situations where the data can be trusted to not contain duplicates - for example, when reading from the repository.
      Specified by:
      fastAddOperations in interface PrismParser
    • convertMissingTypes

      public PrismParser convertMissingTypes()
      Specified by:
      convertMissingTypes in interface PrismParser
    • definition

      @NotNull public @NotNull PrismParser definition(ItemDefinition<?> itemDefinition)
      Description copied from interface: PrismParser
      Tells parser which definition to use when parsing item (or an item value). Optional.
      Specified by:
      definition in interface PrismParser
      Parameters:
      itemDefinition - The definition
      Returns:
      Updated parser.
    • name

      @NotNull public @NotNull PrismParser name(QName itemName)
      Description copied from interface: PrismParser
      Tells parser what name to use for parsed item. Optional.
      Specified by:
      name in interface PrismParser
      Parameters:
      itemName - Item name to use.
      Returns:
      Updated parser.
    • type

      @NotNull public @NotNull PrismParser type(QName typeName)
      Description copied from interface: PrismParser
      Tells parser what data type to expect. Optional.
      Specified by:
      type in interface PrismParser
      Parameters:
      typeName - Data type to expect.
      Returns:
      Updated parser.
    • type

      @NotNull public @NotNull PrismParser type(Class<?> typeClass)
      Description copied from interface: PrismParser
      Tells parser what data type to expect. Optional.
      Specified by:
      type in interface PrismParser
      Parameters:
      typeClass - Data type to expect.
      Returns:
      Updated parser.