public class Verifier extends AbstractVerifier implements IVerifier
Modifier and Type | Class and Description |
---|---|
private static class |
Verifier.Context |
Modifier and Type | Field and Description |
---|---|
private DatatypeRef |
attributeType
the same instance is reused by the feedAttribute method to reduce
the number of the object creation.
|
private DatatypeRef |
characterType
this field is used to receive type information of character literals.
|
protected Acceptor |
current |
private static int |
DEFAULT_PANIC_LEVEL |
protected DocumentDeclaration |
docDecl
Schema object against which the validation will be done
|
private java.util.Set |
duplicateIds
Stores all duplicate id values.
|
static java.lang.String |
ERR_DUPLICATE_ID |
static java.lang.String |
ERR_MISSING_ATTRIBUTE |
static java.lang.String |
ERR_UNCOMPLETED_CONTENT |
static java.lang.String |
ERR_UNEXPECTED_ATTRIBUTE |
static java.lang.String |
ERR_UNEXPECTED_ELEMENT |
static java.lang.String |
ERR_UNEXPECTED_STARTTAG |
static java.lang.String |
ERR_UNEXPECTED_TEXT |
static java.lang.String |
ERR_UNSOLD_IDREF |
protected org.xml.sax.ErrorHandler |
errorHandler
Error handler
|
protected boolean |
hadError
This flag will be set to true if an error is found
|
private int |
initialPanicLevel
Initial panic level when an error is found.
|
private boolean |
isFinished
This flag will be set to true after endDocument method is called.
|
protected int |
panicLevel
Panic level.
|
(package private) Verifier.Context |
stack
context stack
|
private StartTagInfo |
sti
An object used to store start tag information.
|
private int |
stringCareLevel
current string care level.
|
private java.lang.StringBuffer |
text
characters that were read (but not processed)
|
dummyLocator, idrefs, ids, locator, namespaceSupport, performIDcheck
Constructor and Description |
---|
Verifier(DocumentDeclaration documentDecl,
org.xml.sax.ErrorHandler errorHandler) |
Modifier and Type | Method and Description |
---|---|
void |
characters(char[] buf,
int start,
int len) |
void |
endDocument() |
void |
endElement(java.lang.String namespaceUri,
java.lang.String localName,
java.lang.String qName) |
protected org.relaxng.datatype.Datatype[] |
feedAttribute(Acceptor child,
java.lang.String uri,
java.lang.String localName,
java.lang.String qName,
java.lang.String value) |
java.lang.Object |
getCurrentElementType()
returns current element type.
|
org.xml.sax.ErrorHandler |
getErrorHandler() |
org.relaxng.datatype.Datatype[] |
getLastCharacterType()
gets DataType that validated the last characters.
|
void |
ignorableWhitespace(char[] buf,
int start,
int len) |
protected void |
init() |
boolean |
isValid()
checks if the document was valid.
|
static java.lang.String |
localizeMessage(java.lang.String propertyName,
java.lang.Object[] args) |
void |
onDuplicateId(java.lang.String id)
this method is called when a duplicate id value is found.
|
protected ValidityViolation |
onError(java.lang.String msg,
ErrorInfo ei) |
protected ValidityViolation |
onError(StringRef ref,
java.lang.String defaultMsg,
ErrorInfo ei)
signals an error.
|
protected void |
onNextAcceptorReady(StartTagInfo sti,
Acceptor nextAcceptor)
this method is called from the startElement method
after the tag name is processed and the child acceptor is created.
|
void |
setErrorHandler(org.xml.sax.ErrorHandler handler) |
void |
setPanicMode(boolean usePanicMode)
Turns on/off the panic mode.
|
void |
startDocument() |
void |
startElement(java.lang.String namespaceUri,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.Attributes atts) |
protected void |
verifyText() |
endPrefixMapping, getBaseUri, getLocator, isNotation, isUnparsedEntity, notationDecl, onID, processingInstruction, resolveNamespacePrefix, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getLocator
protected Acceptor current
Verifier.Context stack
private int stringCareLevel
private java.lang.StringBuffer text
protected org.xml.sax.ErrorHandler errorHandler
protected boolean hadError
private boolean isFinished
private final StartTagInfo sti
protected final DocumentDeclaration docDecl
protected int panicLevel
private int initialPanicLevel
private static final int DEFAULT_PANIC_LEVEL
private final DatatypeRef characterType
private final DatatypeRef attributeType
private java.util.Set duplicateIds
public static final java.lang.String ERR_UNEXPECTED_TEXT
public static final java.lang.String ERR_UNEXPECTED_ATTRIBUTE
public static final java.lang.String ERR_MISSING_ATTRIBUTE
public static final java.lang.String ERR_UNEXPECTED_STARTTAG
public static final java.lang.String ERR_UNCOMPLETED_CONTENT
public static final java.lang.String ERR_UNEXPECTED_ELEMENT
public static final java.lang.String ERR_UNSOLD_IDREF
public static final java.lang.String ERR_DUPLICATE_ID
public Verifier(DocumentDeclaration documentDecl, org.xml.sax.ErrorHandler errorHandler)
public final org.xml.sax.ErrorHandler getErrorHandler()
getErrorHandler
in interface IVerifier
public final void setErrorHandler(org.xml.sax.ErrorHandler handler)
setErrorHandler
in interface IVerifier
public final boolean isValid()
IVerifier
public final void setPanicMode(boolean usePanicMode)
IVerifier
However, turning it off is sometimes useful, when you are sure that the structure of the document is almost valid (e.g., validating a document generated by an application or when you are sure about the validity of the structure and only interested in validating datatypes,)
setPanicMode
in interface IVerifier
public org.relaxng.datatype.Datatype[] getLastCharacterType()
IVerifier
This method works correctly only when called immediately after startElement and endElement method. When called, this method returns DataType object that validated the last character literals.
For RELAX NG grammar, this method can return an array of length 2 or more. This happens when the last character matches <list> pattern. In that case, each type corresponds to each token (where tokens are the white-space separation of the last characters).
For any other grammar, this method always returns an array of length 1 (or null, if the type assignment failed).
So when you are using VerifierFilter, you can call this method only in your startElement and endElement method.
getLastCharacterType
in interface IVerifier
protected void verifyText() throws org.xml.sax.SAXException
org.xml.sax.SAXException
public void startElement(java.lang.String namespaceUri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts) throws org.xml.sax.SAXException
startElement
in interface org.xml.sax.ContentHandler
startElement
in class AbstractVerifier
org.xml.sax.SAXException
protected void onNextAcceptorReady(StartTagInfo sti, Acceptor nextAcceptor) throws org.xml.sax.SAXException
This method is called before the attributes are consumed.
derived class can use this method to do something useful.
org.xml.sax.SAXException
protected org.relaxng.datatype.Datatype[] feedAttribute(Acceptor child, java.lang.String uri, java.lang.String localName, java.lang.String qName, java.lang.String value) throws org.xml.sax.SAXException
org.xml.sax.SAXException
public void endElement(java.lang.String namespaceUri, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXException
endElement
in interface org.xml.sax.ContentHandler
endElement
in class AbstractVerifier
org.xml.sax.SAXException
protected ValidityViolation onError(StringRef ref, java.lang.String defaultMsg, ErrorInfo ei) throws org.xml.sax.SAXException
org.xml.sax.SAXException
protected ValidityViolation onError(java.lang.String msg, ErrorInfo ei) throws org.xml.sax.SAXException
org.xml.sax.SAXException
public java.lang.Object getCurrentElementType()
IVerifier
getCurrentElementType
in interface IVerifier
public void characters(char[] buf, int start, int len) throws org.xml.sax.SAXException
characters
in interface org.xml.sax.ContentHandler
org.xml.sax.SAXException
public void ignorableWhitespace(char[] buf, int start, int len) throws org.xml.sax.SAXException
ignorableWhitespace
in interface org.xml.sax.ContentHandler
org.xml.sax.SAXException
protected void init()
init
in class AbstractVerifier
public void startDocument() throws org.xml.sax.SAXException
startDocument
in interface org.xml.sax.ContentHandler
org.xml.sax.SAXException
public void endDocument() throws org.xml.sax.SAXException
endDocument
in interface org.xml.sax.ContentHandler
org.xml.sax.SAXException
public void onDuplicateId(java.lang.String id)
AbstractVerifier
onDuplicateId
in class AbstractVerifier
public static java.lang.String localizeMessage(java.lang.String propertyName, java.lang.Object[] args)