Package cdc.util.xml
Class AbstractStAXParser<R>
- java.lang.Object
-
- cdc.util.xml.AbstractStAXParser<R>
-
- Type Parameters:
R
- The result type.
public abstract class AbstractStAXParser<R> extends Object
Class that can facilitate the writing of an XML parser over an XMLStreamReader.- Author:
- Damien Carbonne
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
AbstractStAXParser.ContextElementParser<C>
static interface
AbstractStAXParser.ElementParser
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.logging.log4j.Logger
logger
protected FailureReaction
reaction
protected XMLStreamReader
reader
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractStAXParser(XMLStreamReader reader, FailureReaction reaction)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description InvalidDataException
error(String message)
Throws an InvalidDataExeption.void
expect(String context, int eventType)
Checks that current event type is an expected one.void
expectEndDocument(String context)
Checks that current event type is END_DOCUMENT.void
expectEndElement(String context, String name)
Checks that current event type is END_ELEMNT.void
expectEndElement(String context, String... names)
void
expectStartDocument(String context)
Checks that current event type is START_DOCUMENT.void
expectStartElement(String context)
void
expectStartElement(String context, String name)
Checks that current event type is START_ELEMNT.void
expectStartElement(String context, String... names)
boolean
getAttributeAsBoolean(String name)
boolean
getAttributeAsBoolean(String name, boolean def)
boolean
getAttributeAsBoolean(String name, boolean def, FailureReaction missingReaction, FailureReaction errorReaction)
byte
getAttributeAsByte(String name)
byte
getAttributeAsByte(String name, byte def)
byte
getAttributeAsByte(String name, byte def, FailureReaction missingReaction, FailureReaction errorReaction)
double
getAttributeAsDouble(String name)
double
getAttributeAsDouble(String name, double def)
double
getAttributeAsDouble(String name, double def, FailureReaction missingReaction, FailureReaction errorReaction)
<E extends Enum<E>>
EgetAttributeAsEnum(String name, Class<E> enumClass)
<E extends Enum<E>>
EgetAttributeAsEnum(String name, Class<E> enumClass, E def)
<E extends Enum<E>>
EgetAttributeAsEnum(String name, Class<E> enumClass, E def, FailureReaction missingReaction, FailureReaction errorReaction)
float
getAttributeAsFloat(String name)
float
getAttributeAsFloat(String name, float def)
float
getAttributeAsFloat(String name, float def, FailureReaction missingReaction, FailureReaction errorReaction)
int
getAttributeAsInt(String name)
int
getAttributeAsInt(String name, int def)
int
getAttributeAsInt(String name, int def, FailureReaction missingReaction, FailureReaction errorReaction)
long
getAttributeAsLong(String name)
long
getAttributeAsLong(String name, long def)
long
getAttributeAsLong(String name, long def, FailureReaction missingReaction, FailureReaction errorReaction)
Boolean
getAttributeAsOptionalBoolean(String name, Boolean def)
Boolean
getAttributeAsOptionalBoolean(String name, Boolean def, FailureReaction errorReaction)
Byte
getAttributeAsOptionalByte(String name, Byte def)
Byte
getAttributeAsOptionalByte(String name, Byte def, FailureReaction errorReaction)
Double
getAttributeAsOptionalDouble(String name, Double def)
Double
getAttributeAsOptionalDouble(String name, Double def, FailureReaction errorReaction)
<E extends Enum<E>>
EgetAttributeAsOptionalEnum(String name, Class<E> enumClass, E def)
<E extends Enum<E>>
EgetAttributeAsOptionalEnum(String name, Class<E> enumClass, E def, FailureReaction errorReaction)
Float
getAttributeAsOptionalFloat(String name, Float def)
Float
getAttributeAsOptionalFloat(String name, Float def, FailureReaction errorReaction)
Integer
getAttributeAsOptionalInt(String name, Integer def)
Integer
getAttributeAsOptionalInt(String name, Integer def, FailureReaction errorReaction)
Long
getAttributeAsOptionalLong(String name, Long def)
Long
getAttributeAsOptionalLong(String name, Long def, FailureReaction errorReaction)
Enum<?>
getAttributeAsOptionalRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def)
Enum<?>
getAttributeAsOptionalRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def, FailureReaction errorReaction)
Short
getAttributeAsOptionalShort(String name, Short def)
Short
getAttributeAsOptionalShort(String name, Short def, FailureReaction errorReaction)
Enum<?>
getAttributeAsRawEnum(String name, Class<? extends Enum<?>> enumClass)
Enum<?>
getAttributeAsRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def)
Enum<?>
getAttributeAsRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def, FailureReaction missingReaction, FailureReaction errorReaction)
short
getAttributeAsShort(String name)
short
getAttributeAsShort(String name, short def)
short
getAttributeAsShort(String name, short def, FailureReaction missingReaction, FailureReaction errorReaction)
String
getAttributeValue(String name)
String
getAttributeValue(String name, String def)
String
getAttributeValue(String name, String def, FailureReaction missingReaction)
Returns an attribute value.org.apache.logging.log4j.Logger
getLogger()
FailureReaction
getReaction()
XMLStreamReader
getReader()
void
ignoreElement()
Must be called after a START_ELEMENT has been found.boolean
isStartElement(String name)
Returnstrue
if reader is on a START_ELEMENT that has a given name.int
next()
Gets the next parsing event.int
nextTag()
Skips any white space (isWhiteSpace() returns true), COMMENT, or PROCESSING_INSTRUCTION, until a START_ELEMENT or END_ELEMENT is reached.void
onError(String message)
Function that either keeps silent, warns or raises an exception, depending on error reaction.<T> T
onError(String message, T def)
Function that either silently returns a value, warns and returns a value or raises an exception, depending on error reaction.<T> T
onResult(T result, String message, T def)
Function that returns a computed value if it is notnull
, or silently returns a default value, warns and returns a default value or throws an exception.protected abstract R
parse()
Base method called to parse the stream.<C> void
parseChildren(C context, String name, AbstractStAXParser.ContextElementParser<C> childParser)
Utility used to parse an element and all its children.void
parseChildren(String name, AbstractStAXParser.ElementParser childParser)
void
trace()
void
trace(String message)
InvalidDataException
unexpectedEvent()
-
-
-
Field Detail
-
logger
protected final org.apache.logging.log4j.Logger logger
-
reader
protected final XMLStreamReader reader
-
reaction
protected final FailureReaction reaction
-
-
Constructor Detail
-
AbstractStAXParser
protected AbstractStAXParser(XMLStreamReader reader, FailureReaction reaction)
-
-
Method Detail
-
getReader
public XMLStreamReader getReader()
-
getReaction
public final FailureReaction getReaction()
- Returns:
- The reaction to adopt in case of error.
-
onError
public final void onError(String message)
Function that either keeps silent, warns or raises an exception, depending on error reaction.- Parameters:
message
- The error message.- Throws:
DataException
- When error reaction isFailureReaction.FAIL
.
-
onError
public final <T> T onError(String message, T def)
Function that either silently returns a value, warns and returns a value or raises an exception, depending on error reaction.- Type Parameters:
T
- The return type.- Parameters:
message
- The error message.def
- The default return value.- Returns:
def
if error reaction isFailureReaction.DEFAULT
orFailureReaction.WARN
.- Throws:
DataException
- When error reaction isFailureReaction.FAIL
.
-
onResult
public final <T> T onResult(T result, String message, T def)
Function that returns a computed value if it is notnull
, or silently returns a default value, warns and returns a default value or throws an exception.- Type Parameters:
T
- The return type.- Parameters:
result
- The computed result.message
- The error message.def
- The default return value.- Returns:
result
if it is notnull
, ordef
if error reaction isFailureReaction.DEFAULT
orFailureReaction.WARN
.- Throws:
DataException
- Whenresult
isnull
and error reaction isFailureReaction.FAIL
.
-
getLogger
public final org.apache.logging.log4j.Logger getLogger()
-
trace
public void trace(String message)
-
trace
public void trace()
-
parse
protected abstract R parse() throws XMLStreamException
Base method called to parse the stream.- Returns:
- The parsed result.
- Throws:
XMLStreamException
- When there is an error parsing the underlying XML source.
-
error
public final InvalidDataException error(String message)
Throws an InvalidDataExeption.- Parameters:
message
- The exception message.- Returns:
- A new instance of InvalidDataException.
-
unexpectedEvent
public final InvalidDataException unexpectedEvent()
- Returns:
- A new instance of InvalidDataException.
-
next
public int next() throws XMLStreamException
Gets the next parsing event.It is a simple wrapper of
XMLStreamReader.next()
.- Returns:
- The integer code corresponding to the current parse event.
- Throws:
XMLStreamException
- When there is an error parsing the underlying XML source.
-
nextTag
public int nextTag() throws XMLStreamException
Skips any white space (isWhiteSpace() returns true), COMMENT, or PROCESSING_INSTRUCTION, until a START_ELEMENT or END_ELEMENT is reached.It is a simple wrapper of
XMLStreamReader.nextTag()
.If other than white space characters, COMMENT, PROCESSING_INSTRUCTION, START_ELEMENT, END_ELEMENT are encountered, an exception is thrown. This method should be used when processing element-only content separeted by white space.
- Returns:
- The event type of the element read (START_ELEMENT or END_ELEMENT).
- Throws:
XMLStreamException
- When the current event is not white space, PROCESSING_INSTRUCTION, START_ELEMENT or END_ELEMENT.
-
ignoreElement
public void ignoreElement() throws XMLStreamException
Must be called after a START_ELEMENT has been found.Skips all events till the corresponding END_ELEMENT is reached.
- Throws:
XMLStreamException
- If there is a fatal error detecting the next states.
-
parseChildren
public <C> void parseChildren(C context, String name, AbstractStAXParser.ContextElementParser<C> childParser) throws XMLStreamException
Utility used to parse an element and all its children.- Type Parameters:
C
- The context type.- Parameters:
context
- The context to pass tochildParser
.name
- The element name.childParser
- The child parser.- Throws:
XMLStreamException
- When there is an error parsing the underlying XML source.
-
parseChildren
public void parseChildren(String name, AbstractStAXParser.ElementParser childParser) throws XMLStreamException
- Throws:
XMLStreamException
-
expect
public void expect(String context, int eventType)
Checks that current event type is an expected one.If
false
, raises an exception.- Parameters:
context
- The call context.eventType
- The expected event type.- Throws:
InvalidDataException
- When current event type is not the expected one.
-
expectStartElement
public void expectStartElement(String context)
-
expectStartElement
public void expectStartElement(String context, String name)
Checks that current event type is START_ELEMNT.If
false
, raises an exception.- Parameters:
context
- The call context.name
- The expected element name.- Throws:
InvalidDataException
- When current event type is not START_ELEMENT or name does not match.
-
expectEndElement
public void expectEndElement(String context, String name)
Checks that current event type is END_ELEMNT.If
false
, raises an exception.- Parameters:
context
- The call context.name
- The expected element name.- Throws:
InvalidDataException
- When current event type is not END_ELEMENT or name does not match.
-
expectStartDocument
public void expectStartDocument(String context)
Checks that current event type is START_DOCUMENT.If
false
, raises an exception.- Parameters:
context
- The call context.- Throws:
InvalidDataException
- When current event type is not START_DOCUMENT.
-
expectEndDocument
public void expectEndDocument(String context)
Checks that current event type is END_DOCUMENT.If
false
, raises an exception.- Parameters:
context
- The call context.- Throws:
InvalidDataException
- When current event type is not END_DOCUMENT.
-
isStartElement
public boolean isStartElement(String name)
Returnstrue
if reader is on a START_ELEMENT that has a given name.- Parameters:
name
- The element name.- Returns:
true
if reader is on a START_ELEMENT namedname
.
-
getAttributeValue
public String getAttributeValue(String name, String def, FailureReaction missingReaction)
Returns an attribute value.- Parameters:
name
- The attribute name.def
- The default value.missingReaction
- The reaction to adopt when no attribute namedname
is found.- Returns:
- The attribute value, or
def
. - Throws:
NotFoundException
- WhenmissingReaction
is FAIL and no attribute is found.
-
getAttributeAsBoolean
public boolean getAttributeAsBoolean(String name, boolean def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsBoolean
public boolean getAttributeAsBoolean(String name, boolean def)
-
getAttributeAsBoolean
public boolean getAttributeAsBoolean(String name)
-
getAttributeAsOptionalBoolean
public Boolean getAttributeAsOptionalBoolean(String name, Boolean def, FailureReaction errorReaction)
-
getAttributeAsOptionalBoolean
public Boolean getAttributeAsOptionalBoolean(String name, Boolean def)
-
getAttributeAsLong
public long getAttributeAsLong(String name, long def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsLong
public long getAttributeAsLong(String name, long def)
-
getAttributeAsLong
public long getAttributeAsLong(String name)
-
getAttributeAsOptionalLong
public Long getAttributeAsOptionalLong(String name, Long def, FailureReaction errorReaction)
-
getAttributeAsInt
public int getAttributeAsInt(String name, int def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsInt
public int getAttributeAsInt(String name, int def)
-
getAttributeAsInt
public int getAttributeAsInt(String name)
-
getAttributeAsOptionalInt
public Integer getAttributeAsOptionalInt(String name, Integer def, FailureReaction errorReaction)
-
getAttributeAsShort
public short getAttributeAsShort(String name, short def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsShort
public short getAttributeAsShort(String name, short def)
-
getAttributeAsShort
public short getAttributeAsShort(String name)
-
getAttributeAsOptionalShort
public Short getAttributeAsOptionalShort(String name, Short def, FailureReaction errorReaction)
-
getAttributeAsByte
public byte getAttributeAsByte(String name, byte def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsByte
public byte getAttributeAsByte(String name, byte def)
-
getAttributeAsByte
public byte getAttributeAsByte(String name)
-
getAttributeAsOptionalByte
public Byte getAttributeAsOptionalByte(String name, Byte def, FailureReaction errorReaction)
-
getAttributeAsDouble
public double getAttributeAsDouble(String name, double def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsDouble
public double getAttributeAsDouble(String name, double def)
-
getAttributeAsDouble
public double getAttributeAsDouble(String name)
-
getAttributeAsOptionalDouble
public Double getAttributeAsOptionalDouble(String name, Double def, FailureReaction errorReaction)
-
getAttributeAsFloat
public float getAttributeAsFloat(String name, float def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsFloat
public float getAttributeAsFloat(String name, float def)
-
getAttributeAsFloat
public float getAttributeAsFloat(String name)
-
getAttributeAsOptionalFloat
public Float getAttributeAsOptionalFloat(String name, Float def, FailureReaction errorReaction)
-
getAttributeAsRawEnum
public Enum<?> getAttributeAsRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsRawEnum
public Enum<?> getAttributeAsRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def)
-
getAttributeAsRawEnum
public Enum<?> getAttributeAsRawEnum(String name, Class<? extends Enum<?>> enumClass)
-
getAttributeAsOptionalRawEnum
public Enum<?> getAttributeAsOptionalRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def, FailureReaction errorReaction)
-
getAttributeAsOptionalRawEnum
public Enum<?> getAttributeAsOptionalRawEnum(String name, Class<? extends Enum<?>> enumClass, Enum<?> def)
-
getAttributeAsEnum
public <E extends Enum<E>> E getAttributeAsEnum(String name, Class<E> enumClass, E def, FailureReaction missingReaction, FailureReaction errorReaction)
-
getAttributeAsEnum
public <E extends Enum<E>> E getAttributeAsEnum(String name, Class<E> enumClass, E def)
-
getAttributeAsEnum
public <E extends Enum<E>> E getAttributeAsEnum(String name, Class<E> enumClass)
-
getAttributeAsOptionalEnum
public <E extends Enum<E>> E getAttributeAsOptionalEnum(String name, Class<E> enumClass, E def, FailureReaction errorReaction)
-
-