com.fasterxml.jackson.dataformat.xml.deser
Class FromXmlParser

java.lang.Object
  extended by com.fasterxml.jackson.core.JsonParser
      extended by com.fasterxml.jackson.core.base.ParserMinimalBase
          extended by com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser
All Implemented Interfaces:
com.fasterxml.jackson.core.Versioned, Closeable

public class FromXmlParser
extends com.fasterxml.jackson.core.base.ParserMinimalBase

JsonParser implementation that exposes XML structure as set of JSON events that can be used for data binding.


Nested Class Summary
static class FromXmlParser.Feature
          Enumeration that defines all togglable features for XML parsers
 
Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonParser
com.fasterxml.jackson.core.JsonParser.NumberType
 
Field Summary
protected  byte[] _binaryValue
          We will hold on to decoded binary data, for duration of current event, so that multiple calls to getBinaryValue(com.fasterxml.jackson.core.Base64Variant) will not need to decode data more than once.
protected  com.fasterxml.jackson.core.util.ByteArrayBuilder _byteArrayBuilder
          ByteArrayBuilder is needed if 'getBinaryValue' is called.
protected  String _cfgNameForTextElement
          In cases where a start element has both attributes and non-empty textual value, we have to create a bogus property; we will use this as the property name.
protected  boolean _closed
          Flag that indicates whether parser is closed or not.
protected  String _currText
           
protected  com.fasterxml.jackson.core.io.IOContext _ioContext
           
protected  boolean _mayBeLeaf
          We need special handling to keep track of whether a value may be exposed as simple leaf value.
protected  Set<String> _namesToWrap
           
protected  com.fasterxml.jackson.core.JsonToken _nextToken
           
protected  com.fasterxml.jackson.core.ObjectCodec _objectCodec
           
protected  XmlReadContext _parsingContext
          Information about parser context, context in which the next token is to be parsed (root, array, object).
protected  int _xmlFeatures
          Bit flag composed of bits that indicate which FromXmlParser.Features are enabled.
protected  XmlTokenStream _xmlTokens
           
static String DEFAULT_UNNAMED_TEXT_PROPERTY
          The default name placeholder for XML text segments is empty String ("").
 
Fields inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase
_currToken, _lastClearedToken, INT_APOSTROPHE, INT_ASTERISK, INT_b, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_f, INT_LBRACKET, INT_LCURLY, INT_LF, INT_n, INT_QUOTE, INT_r, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_t, INT_TAB, INT_u
 
Fields inherited from class com.fasterxml.jackson.core.JsonParser
_features
 
Constructor Summary
FromXmlParser(com.fasterxml.jackson.core.io.IOContext ctxt, int genericParserFeatures, int xmlFeatures, com.fasterxml.jackson.core.ObjectCodec codec, XMLStreamReader xmlReader)
           
 
Method Summary
protected  byte[] _decodeBase64(com.fasterxml.jackson.core.Base64Variant b64variant)
           
protected  com.fasterxml.jackson.core.util.ByteArrayBuilder _getByteArrayBuilder()
           
protected  void _handleEOF()
          Method called when an EOF is encountered between tokens.
protected  boolean _isEmpty(String str)
           
protected  void _releaseBuffers()
          Method called to release internal buffers owned by the base parser.
protected  void _reportBase64EOF()
           
protected  void _reportInvalidBase64(com.fasterxml.jackson.core.Base64Variant b64variant, char ch, int bindex, String msg)
           
 void addVirtualWrapping(Set<String> namesToWrap)
          Method that may be called to indicate that specified names (only local parts retained currently: this may be changed in future) should be considered "auto-wrapping", meaning that they will be doubled to contain two opening elements, two matching closing elements.
 void close()
           
 FromXmlParser configure(FromXmlParser.Feature f, boolean state)
           
 FromXmlParser disable(FromXmlParser.Feature f)
           
 FromXmlParser enable(FromXmlParser.Feature f)
           
 BigInteger getBigIntegerValue()
           
 byte[] getBinaryValue(com.fasterxml.jackson.core.Base64Variant b64variant)
           
 com.fasterxml.jackson.core.ObjectCodec getCodec()
           
 com.fasterxml.jackson.core.JsonLocation getCurrentLocation()
          Method that returns location of the last processed character; usually for error reporting purposes
 String getCurrentName()
          Method that can be called to get the name associated with the current event.
 BigDecimal getDecimalValue()
           
 double getDoubleValue()
           
 Object getEmbeddedObject()
           
 float getFloatValue()
           
 int getIntValue()
           
 long getLongValue()
           
 com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()
           
 Number getNumberValue()
           
 XmlReadContext getParsingContext()
           
 XMLStreamReader getStaxReader()
          Method that allows application direct access to underlying Stax XMLStreamWriter.
 String getText()
           
 char[] getTextCharacters()
           
 int getTextLength()
           
 int getTextOffset()
           
 com.fasterxml.jackson.core.JsonLocation getTokenLocation()
          Method that return the starting location of the current token; that is, position of the first character from input that starts the current token.
 String getValueAsString()
           
 String getValueAsString(String defValue)
           
 boolean hasTextCharacters()
          XML input actually would offer access to character arrays; but since we must coalesce things it cannot really be exposed.
 boolean isClosed()
           
 boolean isEnabled(FromXmlParser.Feature f)
           
 boolean isExpectedStartArrayToken()
          Since xml representation can not really distinguish between array and object starts (both are represented with elements), this method is overridden and taken to mean that expecation is that the current start element is to mean 'start array', instead of default of 'start object'.
 com.fasterxml.jackson.core.JsonToken nextToken()
           
 void overrideCurrentName(String name)
           
 boolean requiresCustomCodec()
          XML format does require support from custom ObjectCodec (that is, XmlMapper), so need to return true here.
 void setCodec(com.fasterxml.jackson.core.ObjectCodec c)
           
 void setXMLTextElementName(String name)
           
 
Methods inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase
_constructError, _decodeBase64, _getCharDesc, _handleUnrecognizedCharacterEscape, _reportError, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportUnexpectedChar, _throwInternal, _throwInvalidSpace, _throwUnquotedSpace, _wrapError, clearCurrentToken, getCurrentToken, getLastClearedToken, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, hasCurrentToken, nextValue, skipChildren, version
 
Methods inherited from class com.fasterxml.jackson.core.JsonParser
_constructError, _reportUnsupportedOperation, canUseSchema, configure, disable, enable, getBinaryValue, getBooleanValue, getByteValue, getInputSource, getSchema, getShortValue, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, isEnabled, nextBooleanValue, nextFieldName, nextIntValue, nextLongValue, nextTextValue, readBinaryValue, readBinaryValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, releaseBuffered, setSchema
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_UNNAMED_TEXT_PROPERTY

public static final String DEFAULT_UNNAMED_TEXT_PROPERTY
The default name placeholder for XML text segments is empty String ("").

See Also:
Constant Field Values

_cfgNameForTextElement

protected String _cfgNameForTextElement
In cases where a start element has both attributes and non-empty textual value, we have to create a bogus property; we will use this as the property name.

Name used for pseudo-property used for returning XML Text value (which does not have actual element name to use). Defaults to empty String, but may be changed for interoperability reasons: JAXB, for example, uses "value" as name.

Since:
2.1

_xmlFeatures

protected int _xmlFeatures
Bit flag composed of bits that indicate which FromXmlParser.Features are enabled.


_objectCodec

protected com.fasterxml.jackson.core.ObjectCodec _objectCodec

_closed

protected boolean _closed
Flag that indicates whether parser is closed or not. Gets set when parser is either closed by explicit call (close()) or when end-of-input is reached.


_ioContext

protected final com.fasterxml.jackson.core.io.IOContext _ioContext

_parsingContext

protected XmlReadContext _parsingContext
Information about parser context, context in which the next token is to be parsed (root, array, object).


_xmlTokens

protected final XmlTokenStream _xmlTokens

_mayBeLeaf

protected boolean _mayBeLeaf
We need special handling to keep track of whether a value may be exposed as simple leaf value.


_nextToken

protected com.fasterxml.jackson.core.JsonToken _nextToken

_currText

protected String _currText

_namesToWrap

protected Set<String> _namesToWrap

_byteArrayBuilder

protected com.fasterxml.jackson.core.util.ByteArrayBuilder _byteArrayBuilder
ByteArrayBuilder is needed if 'getBinaryValue' is called. If so, we better reuse it for remainder of content.


_binaryValue

protected byte[] _binaryValue
We will hold on to decoded binary data, for duration of current event, so that multiple calls to getBinaryValue(com.fasterxml.jackson.core.Base64Variant) will not need to decode data more than once.

Constructor Detail

FromXmlParser

public FromXmlParser(com.fasterxml.jackson.core.io.IOContext ctxt,
                     int genericParserFeatures,
                     int xmlFeatures,
                     com.fasterxml.jackson.core.ObjectCodec codec,
                     XMLStreamReader xmlReader)
Method Detail

getCodec

public com.fasterxml.jackson.core.ObjectCodec getCodec()
Specified by:
getCodec in class com.fasterxml.jackson.core.JsonParser

setCodec

public void setCodec(com.fasterxml.jackson.core.ObjectCodec c)
Specified by:
setCodec in class com.fasterxml.jackson.core.JsonParser

setXMLTextElementName

public void setXMLTextElementName(String name)
Since:
2.1

requiresCustomCodec

public boolean requiresCustomCodec()
XML format does require support from custom ObjectCodec (that is, XmlMapper), so need to return true here.

Overrides:
requiresCustomCodec in class com.fasterxml.jackson.core.JsonParser
Returns:
True since XML format does require support from codec

enable

public FromXmlParser enable(FromXmlParser.Feature f)

disable

public FromXmlParser disable(FromXmlParser.Feature f)

isEnabled

public final boolean isEnabled(FromXmlParser.Feature f)

configure

public FromXmlParser configure(FromXmlParser.Feature f,
                               boolean state)

getStaxReader

public XMLStreamReader getStaxReader()
Method that allows application direct access to underlying Stax XMLStreamWriter. Note that use of writer is discouraged, and may interfere with processing of this writer; however, occasionally it may be necessary.

Note: writer instance will always be of type XMLStreamWriter2 (including Typed Access API) so upcasts are safe.


addVirtualWrapping

public void addVirtualWrapping(Set<String> namesToWrap)
Method that may be called to indicate that specified names (only local parts retained currently: this may be changed in future) should be considered "auto-wrapping", meaning that they will be doubled to contain two opening elements, two matching closing elements. This is needed for supporting handling of so-called "unwrapped" array types, something XML mappings like JAXB often use.

NOTE: this method is considered part of internal implementation interface, and it is NOT guaranteed to remain unchanged between minor versions (it is however expected not to change in patch versions). So if you have to use it, be prepared for possible additional work.

Since:
2.1

getCurrentName

public String getCurrentName()
                      throws IOException,
                             com.fasterxml.jackson.core.JsonParseException
Method that can be called to get the name associated with the current event.

Specified by:
getCurrentName in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

overrideCurrentName

public void overrideCurrentName(String name)
Specified by:
overrideCurrentName in class com.fasterxml.jackson.core.base.ParserMinimalBase

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Specified by:
close in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException

isClosed

public boolean isClosed()
Specified by:
isClosed in class com.fasterxml.jackson.core.base.ParserMinimalBase

getParsingContext

public XmlReadContext getParsingContext()
Specified by:
getParsingContext in class com.fasterxml.jackson.core.base.ParserMinimalBase

getTokenLocation

public com.fasterxml.jackson.core.JsonLocation getTokenLocation()
Method that return the starting location of the current token; that is, position of the first character from input that starts the current token.

Specified by:
getTokenLocation in class com.fasterxml.jackson.core.JsonParser

getCurrentLocation

public com.fasterxml.jackson.core.JsonLocation getCurrentLocation()
Method that returns location of the last processed character; usually for error reporting purposes

Specified by:
getCurrentLocation in class com.fasterxml.jackson.core.JsonParser

isExpectedStartArrayToken

public boolean isExpectedStartArrayToken()
Since xml representation can not really distinguish between array and object starts (both are represented with elements), this method is overridden and taken to mean that expecation is that the current start element is to mean 'start array', instead of default of 'start object'.

Overrides:
isExpectedStartArrayToken in class com.fasterxml.jackson.core.JsonParser

nextToken

public com.fasterxml.jackson.core.JsonToken nextToken()
                                               throws IOException,
                                                      com.fasterxml.jackson.core.JsonParseException
Specified by:
nextToken in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getText

public String getText()
               throws IOException,
                      com.fasterxml.jackson.core.JsonParseException
Specified by:
getText in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getValueAsString

public final String getValueAsString()
                              throws IOException,
                                     com.fasterxml.jackson.core.JsonParseException
Overrides:
getValueAsString in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getValueAsString

public String getValueAsString(String defValue)
                        throws IOException,
                               com.fasterxml.jackson.core.JsonParseException
Overrides:
getValueAsString in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getTextCharacters

public char[] getTextCharacters()
                         throws IOException,
                                com.fasterxml.jackson.core.JsonParseException
Specified by:
getTextCharacters in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getTextLength

public int getTextLength()
                  throws IOException,
                         com.fasterxml.jackson.core.JsonParseException
Specified by:
getTextLength in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getTextOffset

public int getTextOffset()
                  throws IOException,
                         com.fasterxml.jackson.core.JsonParseException
Specified by:
getTextOffset in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

hasTextCharacters

public boolean hasTextCharacters()
XML input actually would offer access to character arrays; but since we must coalesce things it cannot really be exposed.

Specified by:
hasTextCharacters in class com.fasterxml.jackson.core.base.ParserMinimalBase

getEmbeddedObject

public Object getEmbeddedObject()
                         throws IOException,
                                com.fasterxml.jackson.core.JsonParseException
Specified by:
getEmbeddedObject in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getBinaryValue

public byte[] getBinaryValue(com.fasterxml.jackson.core.Base64Variant b64variant)
                      throws IOException,
                             com.fasterxml.jackson.core.JsonParseException
Specified by:
getBinaryValue in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

_decodeBase64

protected byte[] _decodeBase64(com.fasterxml.jackson.core.Base64Variant b64variant)
                        throws IOException,
                               com.fasterxml.jackson.core.JsonParseException
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

_reportInvalidBase64

protected void _reportInvalidBase64(com.fasterxml.jackson.core.Base64Variant b64variant,
                                    char ch,
                                    int bindex,
                                    String msg)
                             throws com.fasterxml.jackson.core.JsonParseException
Overrides:
_reportInvalidBase64 in class com.fasterxml.jackson.core.base.ParserMinimalBase
Parameters:
bindex - Relative index within base64 character unit; between 0 and 3 (as unit has exactly 4 characters)
Throws:
com.fasterxml.jackson.core.JsonParseException

_reportBase64EOF

protected void _reportBase64EOF()
                         throws com.fasterxml.jackson.core.JsonParseException
Overrides:
_reportBase64EOF in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
com.fasterxml.jackson.core.JsonParseException

getBigIntegerValue

public BigInteger getBigIntegerValue()
                              throws IOException,
                                     com.fasterxml.jackson.core.JsonParseException
Specified by:
getBigIntegerValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getDecimalValue

public BigDecimal getDecimalValue()
                           throws IOException,
                                  com.fasterxml.jackson.core.JsonParseException
Specified by:
getDecimalValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getDoubleValue

public double getDoubleValue()
                      throws IOException,
                             com.fasterxml.jackson.core.JsonParseException
Specified by:
getDoubleValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getFloatValue

public float getFloatValue()
                    throws IOException,
                           com.fasterxml.jackson.core.JsonParseException
Specified by:
getFloatValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getIntValue

public int getIntValue()
                throws IOException,
                       com.fasterxml.jackson.core.JsonParseException
Specified by:
getIntValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getLongValue

public long getLongValue()
                  throws IOException,
                         com.fasterxml.jackson.core.JsonParseException
Specified by:
getLongValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getNumberType

public com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()
                                                               throws IOException,
                                                                      com.fasterxml.jackson.core.JsonParseException
Specified by:
getNumberType in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

getNumberValue

public Number getNumberValue()
                      throws IOException,
                             com.fasterxml.jackson.core.JsonParseException
Specified by:
getNumberValue in class com.fasterxml.jackson.core.JsonParser
Throws:
IOException
com.fasterxml.jackson.core.JsonParseException

_handleEOF

protected void _handleEOF()
                   throws com.fasterxml.jackson.core.JsonParseException
Method called when an EOF is encountered between tokens. If so, it may be a legitimate EOF, but only iff there is no open non-root context.

Specified by:
_handleEOF in class com.fasterxml.jackson.core.base.ParserMinimalBase
Throws:
com.fasterxml.jackson.core.JsonParseException

_releaseBuffers

protected void _releaseBuffers()
                        throws IOException
Method called to release internal buffers owned by the base parser.

Throws:
IOException

_getByteArrayBuilder

protected com.fasterxml.jackson.core.util.ByteArrayBuilder _getByteArrayBuilder()

_isEmpty

protected boolean _isEmpty(String str)


Copyright © 2012 FasterXML. All Rights Reserved.