Package org.codehaus.mojo.xml.format
Class IndentCheckSaxHandler
- java.lang.Object
-
- org.xml.sax.helpers.DefaultHandler
-
- org.codehaus.mojo.xml.format.IndentCheckSaxHandler
-
- All Implemented Interfaces:
org.xml.sax.ContentHandler
,org.xml.sax.DTDHandler
,org.xml.sax.EntityResolver
,org.xml.sax.ErrorHandler
public class IndentCheckSaxHandler extends org.xml.sax.helpers.DefaultHandler
ADefaultHandler
implementation that detects formatting violations and reports them to the suppliedXmlFormatViolationHandler
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
IndentCheckSaxHandler.ElementEntry
An entry that can be stored on a stackprivate static class
IndentCheckSaxHandler.Indent
An indent occurrence within a file characterized byIndentCheckSaxHandler.Indent.lineNumber
andIndentCheckSaxHandler.Indent.size
.
-
Field Summary
Fields Modifier and Type Field Description private java.lang.StringBuilder
charBuffer
private int
charLineNumber
private java.io.File
file
The file being checkedprivate int
indentSize
The number of spaces for indentationprivate IndentCheckSaxHandler.Indent
lastIndent
private org.xml.sax.Locator
locator
The locator set bySAXParser
private java.util.Deque<IndentCheckSaxHandler.ElementEntry>
stack
The element stackprivate XmlFormatViolationHandler
violationHandler
TheXmlFormatViolationHandler
for reporting found violations
-
Constructor Summary
Constructors Constructor Description IndentCheckSaxHandler(java.io.File file, int indentSize, XmlFormatViolationHandler violationHandler)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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 tocharacters(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 emptyInputSource
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.
-
-
-
Field Detail
-
charBuffer
private final java.lang.StringBuilder charBuffer
-
charLineNumber
private int charLineNumber
-
file
private final java.io.File file
The file being checked
-
indentSize
private final int indentSize
The number of spaces for indentation
-
lastIndent
private IndentCheckSaxHandler.Indent lastIndent
-
locator
private org.xml.sax.Locator locator
The locator set bySAXParser
-
stack
private java.util.Deque<IndentCheckSaxHandler.ElementEntry> stack
The element stack
-
violationHandler
private final XmlFormatViolationHandler violationHandler
TheXmlFormatViolationHandler
for reporting found violations
-
-
Constructor Detail
-
IndentCheckSaxHandler
public IndentCheckSaxHandler(java.io.File file, int indentSize, XmlFormatViolationHandler violationHandler)
-
-
Method Detail
-
characters
public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXException
Stores the passed characters into a character buffer.- Specified by:
characters
in interfaceorg.xml.sax.ContentHandler
- Overrides:
characters
in classorg.xml.sax.helpers.DefaultHandler
- Throws:
org.xml.sax.SAXException
- See Also:
DefaultHandler.characters(char[], int, int)
-
endElement
public void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXException
Checks indentation for an end element.- Specified by:
endElement
in interfaceorg.xml.sax.ContentHandler
- Overrides:
endElement
in classorg.xml.sax.helpers.DefaultHandler
- Throws:
org.xml.sax.SAXException
- See Also:
DefaultHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
-
flushCharacters
private void flushCharacters()
-
ignorableWhitespace
public void ignorableWhitespace(char[] chars, int start, int length) throws org.xml.sax.SAXException
Just delegates tocharacters(char[], int, int)
, since this method is not called in all situations where it could be naively expected.- Specified by:
ignorableWhitespace
in interfaceorg.xml.sax.ContentHandler
- Overrides:
ignorableWhitespace
in classorg.xml.sax.helpers.DefaultHandler
- Throws:
org.xml.sax.SAXException
- See Also:
DefaultHandler.ignorableWhitespace(char[], int, int)
-
resolveEntity
public org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXException, java.io.IOException
Always returns an emptyInputSource
to avoid loading of any DTDs.- Specified by:
resolveEntity
in interfaceorg.xml.sax.EntityResolver
- Overrides:
resolveEntity
in classorg.xml.sax.helpers.DefaultHandler
- Throws:
org.xml.sax.SAXException
java.io.IOException
- See Also:
DefaultHandler.resolveEntity(java.lang.String, java.lang.String)
-
setDocumentLocator
public void setDocumentLocator(org.xml.sax.Locator locator)
- Specified by:
setDocumentLocator
in interfaceorg.xml.sax.ContentHandler
- Overrides:
setDocumentLocator
in classorg.xml.sax.helpers.DefaultHandler
- See Also:
DefaultHandler.setDocumentLocator(org.xml.sax.Locator)
-
startElement
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
Checks indentation for a start element.- Specified by:
startElement
in interfaceorg.xml.sax.ContentHandler
- Overrides:
startElement
in classorg.xml.sax.helpers.DefaultHandler
- Throws:
org.xml.sax.SAXException
- See Also:
DefaultHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
-
-