Class PrismParserImplIO
- java.lang.Object
-
- com.evolveum.midpoint.prism.impl.marshaller.PrismParserImplIO
-
- All Implemented Interfaces:
PrismParser
public class PrismParserImplIO extends Object
- Author:
- mederly
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.evolveum.midpoint.prism.PrismParser
PrismParser.ObjectHandler
-
-
Constructor Summary
Constructors Constructor Description PrismParserImplIO(ParserSource source, String language, ParsingContext context, PrismContextImpl prismContext, ItemDefinition<?> itemDefinition, QName itemName, QName typeName, Class<?> typeClass)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PrismParser
compat()
Switches the parser into "compatibility" (or relaxed) parsing mode.PrismParser
context(ParsingContext context)
Provides a parsing context for the parser.PrismParser
definition(ItemDefinition<?> itemDefinition)
Tells parser which definition to use when parsing item (or an item value).PrismParser
json()
Sets the language of the parser to be JSON.PrismParser
language(String language)
For string inputs: sets the data language that the parser will try to parse; null means auto-detect.PrismParser
name(QName itemName)
Tells parser what name to use for parsed item.<O extends Objectable>
PrismObject<O>parse()
Parses the input as a prism object.<IV extends PrismValue,ID extends ItemDefinition>
Item<IV,ID>parseItem()
Parses the input as a prism item.Object
parseItemOrRealValue()
Parses either an item, or a real value.<IV extends PrismValue>
IVparseItemValue()
Parses the input as a prism value.List<PrismObject<? extends Objectable>>
parseObjects()
Parses the input as a collection of prism objects.void
parseObjectsIteratively(PrismParser.ObjectHandler handler)
Currently implemented for JSON/YAML only.<T> T
parseRealValue()
Parses a real value.<T> T
parseRealValue(Class<T> clazz)
Parses a real value - either property or container value.<T> javax.xml.bind.JAXBElement<T>
parseRealValueToJaxbElement()
Parses a real value and stores it into JAXBElement, using item name derived in the usual way.RootXNodeImpl
parseToXNode()
Parses the input into RootXNode.PrismParser
strict()
Switches the parser into "strict" parsing mode.PrismParser
type(Class<?> typeClass)
Tells parser what data type to expect.PrismParser
type(QName typeName)
Tells parser what data type to expect.PrismParser
xml()
Sets the language of the parser to be XML.PrismParser
yaml()
Sets the language of the parser to be YAML.
-
-
-
Constructor Detail
-
PrismParserImplIO
public PrismParserImplIO(ParserSource source, String language, ParsingContext context, PrismContextImpl prismContext, ItemDefinition<?> itemDefinition, QName itemName, QName typeName, Class<?> typeClass)
-
-
Method Detail
-
parse
@NotNull public <O extends Objectable> 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> javax.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 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 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 PrismParser language(@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 interfacePrismParser
- Parameters:
language
- The language- Returns:
- Updated parser.
-
xml
@NotNull public PrismParser xml()
Description copied from interface:PrismParser
Sets the language of the parser to be XML.- Specified by:
xml
in interfacePrismParser
- Returns:
- Updated parser.
-
json
@NotNull public PrismParser json()
Description copied from interface:PrismParser
Sets the language of the parser to be JSON.- Specified by:
json
in interfacePrismParser
- Returns:
- Updated parser.
-
yaml
@NotNull public PrismParser yaml()
Description copied from interface:PrismParser
Sets the language of the parser to be YAML.- Specified by:
yaml
in interfacePrismParser
- Returns:
- Updated parser.
-
context
@NotNull public PrismParser context(@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 interfacePrismParser
- Parameters:
context
- The parsing context.- Returns:
- Updated parser.
-
strict
@NotNull public PrismParser strict()
Description copied from interface:PrismParser
Switches the parser into "strict" parsing mode.- Specified by:
strict
in interfacePrismParser
- Returns:
- Updated parser.
-
compat
@NotNull public PrismParser compat()
Description copied from interface:PrismParser
Switches the parser into "compatibility" (or relaxed) parsing mode. TODO description here- Specified by:
compat
in interfacePrismParser
- Returns:
- Updated parser.
-
definition
@NotNull public 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 interfacePrismParser
- Parameters:
itemDefinition
- The definition- Returns:
- Updated parser.
-
name
@NotNull public PrismParser name(QName itemName)
Description copied from interface:PrismParser
Tells parser what name to use for parsed item. Optional.- Specified by:
name
in interfacePrismParser
- Parameters:
itemName
- Item name to use.- Returns:
- Updated parser.
-
type
@NotNull public PrismParser type(QName typeName)
Description copied from interface:PrismParser
Tells parser what data type to expect. Optional.- Specified by:
type
in interfacePrismParser
- Parameters:
typeName
- Data type to expect.- Returns:
- Updated parser.
-
type
@NotNull public PrismParser type(Class<?> typeClass)
Description copied from interface:PrismParser
Tells parser what data type to expect. Optional.- Specified by:
type
in interfacePrismParser
- Parameters:
typeClass
- Data type to expect.- Returns:
- Updated parser.
-
-