public class IndentCheckSaxHandler
extends org.xml.sax.helpers.DefaultHandler
DefaultHandler
implementation that detects formatting violations and reports them to the supplied
XmlFormatViolationHandler
.Modifier and Type | Class and Description |
---|---|
private static class |
IndentCheckSaxHandler.ElementEntry
An entry that can be stored on a stack
|
private static class |
IndentCheckSaxHandler.Indent
An indent occurrence within a file characterized by
IndentCheckSaxHandler.Indent.lineNumber and IndentCheckSaxHandler.Indent.size . |
Modifier and Type | Field and Description |
---|---|
private java.lang.StringBuilder |
charBuffer |
private int |
charLineNumber |
private java.io.File |
file
The file being checked
|
private int |
indentSize
The number of spaces for indentation
|
private IndentCheckSaxHandler.Indent |
lastIndent |
private org.xml.sax.Locator |
locator
The locator set by
SAXParser |
private java.util.Deque<IndentCheckSaxHandler.ElementEntry> |
stack
The element stack
|
private XmlFormatViolationHandler |
violationHandler
The
XmlFormatViolationHandler for reporting found violations |
Constructor and Description |
---|
IndentCheckSaxHandler(java.io.File file,
int indentSize,
XmlFormatViolationHandler violationHandler) |
Modifier and Type | Method and Description |
---|---|
void |
characters(char[] ch,
int start,
int length)
Stores the passed characters into a character buffer.
|
void |
endElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName)
Checks indentation for an end element.
|
private void |
flushCharacters()
|
void |
ignorableWhitespace(char[] chars,
int start,
int length)
Just delegates to
characters(char[], int, int) , since this method is not called in all situations where
it could be naively expected. |
org.xml.sax.InputSource |
resolveEntity(java.lang.String publicId,
java.lang.String systemId)
Always returns an empty
InputSource to avoid loading of any DTDs. |
void |
setDocumentLocator(org.xml.sax.Locator locator) |
void |
startElement(java.lang.String uri,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.Attributes attributes)
Checks indentation for a start element.
|
private final java.lang.StringBuilder charBuffer
private int charLineNumber
private final java.io.File file
private final int indentSize
private IndentCheckSaxHandler.Indent lastIndent
private org.xml.sax.Locator locator
SAXParser
private java.util.Deque<IndentCheckSaxHandler.ElementEntry> stack
private final XmlFormatViolationHandler violationHandler
XmlFormatViolationHandler
for reporting found violationspublic IndentCheckSaxHandler(java.io.File file, int indentSize, XmlFormatViolationHandler violationHandler)
public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXException
characters
in interface org.xml.sax.ContentHandler
characters
in class org.xml.sax.helpers.DefaultHandler
org.xml.sax.SAXException
DefaultHandler.characters(char[], int, int)
public void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXException
endElement
in interface org.xml.sax.ContentHandler
endElement
in class org.xml.sax.helpers.DefaultHandler
org.xml.sax.SAXException
DefaultHandler.startElement(java.lang.String, java.lang.String, java.lang.String,
org.xml.sax.Attributes)
private void flushCharacters()
public void ignorableWhitespace(char[] chars, int start, int length) throws org.xml.sax.SAXException
characters(char[], int, int)
, since this method is not called in all situations where
it could be naively expected.ignorableWhitespace
in interface org.xml.sax.ContentHandler
ignorableWhitespace
in class org.xml.sax.helpers.DefaultHandler
org.xml.sax.SAXException
DefaultHandler.ignorableWhitespace(char[], int, int)
public org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXException, java.io.IOException
InputSource
to avoid loading of any DTDs.resolveEntity
in interface org.xml.sax.EntityResolver
resolveEntity
in class org.xml.sax.helpers.DefaultHandler
org.xml.sax.SAXException
java.io.IOException
DefaultHandler.resolveEntity(java.lang.String, java.lang.String)
public void setDocumentLocator(org.xml.sax.Locator locator)
setDocumentLocator
in interface org.xml.sax.ContentHandler
setDocumentLocator
in class org.xml.sax.helpers.DefaultHandler
DefaultHandler.setDocumentLocator(org.xml.sax.Locator)
public void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException
startElement
in interface org.xml.sax.ContentHandler
startElement
in class org.xml.sax.helpers.DefaultHandler
org.xml.sax.SAXException
DefaultHandler.startElement(java.lang.String, java.lang.String, java.lang.String,
org.xml.sax.Attributes)