Package com.tangosol.run.xml
Class SimpleParser
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.run.xml.SimpleParser
-
public class SimpleParser extends Base
This class uses the XmlTokenizer to produce an XmlDocument from XML text.- Version:
- 1.00, 2001.07.16
- Author:
- Cameron Purdy
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
m_fValidate
If true, validate XML if it contains an XSD referenceprotected com.tangosol.run.xml.XmlToken
m_token
The "current" token being evaluated.protected com.tangosol.run.xml.XmlTokenizer
m_toker
The lexical tokenizer.
-
Constructor Summary
Constructors Constructor Description SimpleParser()
Construct an XML SimpleParser.SimpleParser(boolean fValidate)
Construct an XML SimpleParser.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected com.tangosol.run.xml.XmlToken
current()
Returns the current token and advances to the next token.protected boolean
hasCurrent()
Determine if there is a current token.protected boolean
hasNext()
Determine if there is a next token.protected void
init()
Internal initialization.protected XmlDocument
instantiateDocument()
Factory method to instantiate an XmlDocument implementation.static void
main(String[] asArgs)
Unit test.protected com.tangosol.run.xml.XmlToken
mark()
Marks the current position and returns it as a token.protected com.tangosol.run.xml.XmlToken
match(int id)
Verifies that the current token matches the passed token id and, if so, advances to the next token.protected com.tangosol.run.xml.XmlToken
match(String sName)
Verifies that the current token is a name token whose name matches the passed String and, if so, advances to the next token.protected com.tangosol.run.xml.XmlToken
next()
Advances to and returns the next token.protected void
parseComment(XmlElement xml)
Parse comments.protected void
parseComment(XmlElement xml, boolean fIsDocument)
Parse comments.protected void
parseDoctype(XmlDocument xml)
Parse doc type.protected void
parseDocument(XmlDocument xml)
Factory method to instantiate an XmlDocument implementation.protected void
parseElement(XmlElement xml)
Note: '<' and element name have already been parsedprotected void
parseMisc(XmlElement xml)
Parse comments / other PIs.protected void
parsePi(XmlElement xml)
Parse <?protected void
parsePi(XmlElement xml, boolean fXmlDeclAllowed)
Parse <?XmlDocument
parseXml(InputStream stream)
Parse the specified InputStream into an XmlDocument object.XmlDocument
parseXml(InputStream stream, String sCharset)
Parse the specified InputStream into an XmlDocument object using the specified charset.XmlDocument
parseXml(Reader reader)
Parse the specified Reader into an XmlDocument object.XmlDocument
parseXml(String sXml)
Parse the specified String into an XmlDocument object.XmlDocument
parseXml(String sXml, XmlDocument xml)
Parse the passed script.protected void
parseXmlDecl(XmlDocument xml)
Parse XML declaration.protected com.tangosol.run.xml.XmlToken
peek(int id)
Tests if the current token matches the passed token id and, if so, advances to the next token.protected com.tangosol.run.xml.XmlToken
peek(int cat, int subcat)
Tests if the current token matches the passed token category and sub-category.protected com.tangosol.run.xml.XmlToken
peek(String sName)
Tests if the current token is a name that matches the passed String and, if so, advances to the next token.protected InputStream
skipBOM(InputStream in)
Read the providedInputStream
to determine if the stream starts with a UTF-8 BOM (http://www.unicode.org/faq/utf_bom.html#BOM).-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
-
-
-
Constructor Detail
-
SimpleParser
public SimpleParser()
Construct an XML SimpleParser. If the XML contains an XSD reference, the parser will validate using the provided XSD.
-
SimpleParser
public SimpleParser(boolean fValidate)
Construct an XML SimpleParser.- Parameters:
fValidate
- if true, validate XML if it contains an XSD reference
-
-
Method Detail
-
init
protected void init()
Internal initialization.
-
parseXml
public XmlDocument parseXml(String sXml) throws IOException
Parse the specified String into an XmlDocument object.- Parameters:
sXml
- the String to parse- Returns:
- an XmlDocument object
- Throws:
IOException
- if I/O error occurs
-
parseXml
public XmlDocument parseXml(Reader reader) throws IOException
Parse the specified Reader into an XmlDocument object.- Parameters:
reader
- the Reader object- Returns:
- an XmlDocument object
- Throws:
IOException
- if I/O error occurs
-
parseXml
public XmlDocument parseXml(InputStream stream) throws IOException
Parse the specified InputStream into an XmlDocument object.- Parameters:
stream
- the InputStream object- Returns:
- an XmlDocument object
- Throws:
IOException
- if I/O error occurs
-
parseXml
public XmlDocument parseXml(InputStream stream, String sCharset) throws IOException
Parse the specified InputStream into an XmlDocument object using the specified charset.- Parameters:
stream
- the InputStream objectsCharset
- the charset name- Returns:
- an XmlDocument object
- Throws:
IOException
- if I/O error occurs
-
parseXml
public XmlDocument parseXml(String sXml, XmlDocument xml) throws IOException
Parse the passed script.- Parameters:
sXml
- the script to parse (as a string)xml
- the XML document object to parse into- Returns:
- the XmlDocument object
- Throws:
IOException
- if I/O error occurs
-
instantiateDocument
protected XmlDocument instantiateDocument()
Factory method to instantiate an XmlDocument implementation.- Returns:
- an object implementing XmlDocument
-
main
public static void main(String[] asArgs)
Unit test.- Parameters:
asArgs
- the string array arguments
-
parseDocument
protected void parseDocument(XmlDocument xml) throws com.tangosol.dev.compiler.CompilerException
Factory method to instantiate an XmlDocument implementation.- Parameters:
xml
- a blank XmlDocument- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parsePi
protected void parsePi(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
Parse <?xml.- Parameters:
xml
- the XML element- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parsePi
protected void parsePi(XmlElement xml, boolean fXmlDeclAllowed) throws com.tangosol.dev.compiler.CompilerException
Parse <?xml.- Parameters:
xml
- the XML elementfXmlDeclAllowed
- whether XML declaration is allowed- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parseXmlDecl
protected void parseXmlDecl(XmlDocument xml) throws com.tangosol.dev.compiler.CompilerException
Parse XML declaration.- Parameters:
xml
- the XML document- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parseDoctype
protected void parseDoctype(XmlDocument xml) throws com.tangosol.dev.compiler.CompilerException
Parse doc type.- Parameters:
xml
- the XML document- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parseElement
protected void parseElement(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
Note: '<' and element name have already been parsed- Parameters:
xml
- the XML element- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parseMisc
protected void parseMisc(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
Parse comments / other PIs.- Parameters:
xml
- the XML element- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parseComment
protected void parseComment(XmlElement xml) throws com.tangosol.dev.compiler.CompilerException
Parse comments.- Parameters:
xml
- the XML element- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
parseComment
protected void parseComment(XmlElement xml, boolean fIsDocument) throws com.tangosol.dev.compiler.CompilerException
Parse comments.- Parameters:
xml
- the XML elementfIsDocument
- whether the passed in XmlElement is an XmlDocument- Throws:
com.tangosol.dev.compiler.CompilerException
- if compiler error occurs
-
hasCurrent
protected boolean hasCurrent()
Determine if there is a current token.- Returns:
- true if there is a current token
-
current
protected com.tangosol.run.xml.XmlToken current() throws com.tangosol.dev.compiler.CompilerException
Returns the current token and advances to the next token.- Returns:
- the current token
- Throws:
com.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
hasNext
protected boolean hasNext()
Determine if there is a next token.- Returns:
- true if there is a next token
-
next
protected com.tangosol.run.xml.XmlToken next() throws com.tangosol.dev.compiler.CompilerException
Advances to and returns the next token.- Returns:
- the next token
- Throws:
com.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
match
protected com.tangosol.run.xml.XmlToken match(int id) throws com.tangosol.dev.compiler.CompilerException
Verifies that the current token matches the passed token id and, if so, advances to the next token. Otherwise, a syntax exception is thrown.- Parameters:
id
- the token id to match- Returns:
- the current token
- Throws:
com.tangosol.dev.compiler.SyntaxException
- thrown if the token does not matchcom.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
match
protected com.tangosol.run.xml.XmlToken match(String sName) throws com.tangosol.dev.compiler.CompilerException
Verifies that the current token is a name token whose name matches the passed String and, if so, advances to the next token. Otherwise, a syntax exception is thrown.- Parameters:
sName
- the name token text to match- Returns:
- the matched token
- Throws:
com.tangosol.dev.compiler.SyntaxException
- thrown if the token does not matchcom.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
peek
protected com.tangosol.run.xml.XmlToken peek(int id) throws com.tangosol.dev.compiler.CompilerException
Tests if the current token matches the passed token id and, if so, advances to the next token.- Parameters:
id
- the token id to peek for- Returns:
- the current token, if matched, or null
- Throws:
com.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
peek
protected com.tangosol.run.xml.XmlToken peek(int cat, int subcat) throws com.tangosol.dev.compiler.CompilerException
Tests if the current token matches the passed token category and sub-category. If so, it returns the current token and advances to the next token.- Parameters:
cat
- the category to peek forsubcat
- the sub-category to peek for- Returns:
- the current token, if matched, or null
- Throws:
com.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
peek
protected com.tangosol.run.xml.XmlToken peek(String sName) throws com.tangosol.dev.compiler.CompilerException
Tests if the current token is a name that matches the passed String and, if so, advances to the next token.- Parameters:
sName
- the name token text to peek for- Returns:
- id the current token, if matched, or null
- Throws:
com.tangosol.dev.compiler.CompilerException
- potentially thrown by the tokenizer
-
mark
protected com.tangosol.run.xml.XmlToken mark()
Marks the current position and returns it as a token.- Returns:
- the current token
-
skipBOM
protected InputStream skipBOM(InputStream in) throws IOException
Read the providedInputStream
to determine if the stream starts with a UTF-8 BOM (http://www.unicode.org/faq/utf_bom.html#BOM). If the BOM is present, advance the stream to skip it.This is a workaround for the inability of the Java UTF-8 encoding to recognize the UTF-8 BOM (http://bugs.sun.com/view_bug.do?bug_id=4508058).
- Parameters:
in
- InputStream to check for BOM- Returns:
- an InputStream with the UTF-8 BOM skipped
- Throws:
IOException
- if I/O error occurs
-
-