use of nu.validator.datatype.Html5DatatypeException in project validator by validator.
the class MessageEmitterAdapter method emitDatatypeErrors.
/**
* @param messageTextHandler
* @param datatypeErrors
* @throws SAXException
*/
private void emitDatatypeErrors(MessageTextHandler messageTextHandler, Map<String, DatatypeException> datatypeErrors) throws SAXException {
if (datatypeErrors.isEmpty()) {
messageTextString(messageTextHandler, PERIOD, false);
} else {
messageTextString(messageTextHandler, COLON, false);
for (Map.Entry<String, DatatypeException> entry : datatypeErrors.entrySet()) {
messageTextString(messageTextHandler, SPACE, false);
DatatypeException ex = entry.getValue();
if (ex instanceof Html5DatatypeException) {
Html5DatatypeException ex5 = (Html5DatatypeException) ex;
String[] segments = ex5.getSegments();
for (int i = 0; i < segments.length; i++) {
String segment = segments[i];
if (i % 2 == 0) {
emitStringWithQurlyQuotes(messageTextHandler, segment);
} else {
String scrubbed = scrub(segment);
messageTextHandler.startCode();
messageTextHandler.characters(scrubbed.toCharArray(), 0, scrubbed.length());
messageTextHandler.endCode();
}
}
} else {
emitStringWithQurlyQuotes(messageTextHandler, ex.getMessage());
}
}
}
}
use of nu.validator.datatype.Html5DatatypeException in project validator by validator.
the class MessageEmitterAdapter method error.
/**
* @param e
* @throws SAXException
*/
private void error(SAXParseException e, boolean exact) throws SAXException {
if ((!batchMode && fatalErrors > 0) || nonDocumentErrors > 0) {
return;
}
Map<String, DatatypeException> datatypeErrors = null;
if (e instanceof BadAttributeValueException) {
datatypeErrors = ((BadAttributeValueException) e).getExceptions();
}
if (e instanceof VnuBadAttrValueException) {
datatypeErrors = ((VnuBadAttrValueException) e).getExceptions();
}
if (e instanceof VnuBadElementNameException) {
datatypeErrors = ((VnuBadElementNameException) e).getExceptions();
}
if (e instanceof DatatypeMismatchException) {
datatypeErrors = ((DatatypeMismatchException) e).getExceptions();
}
if (datatypeErrors != null) {
for (Map.Entry<String, DatatypeException> entry : datatypeErrors.entrySet()) {
DatatypeException dex = entry.getValue();
if (dex instanceof Html5DatatypeException) {
Html5DatatypeException ex5 = (Html5DatatypeException) dex;
if (ex5.isWarning()) {
this.warnings++;
throwIfTooManyMessages();
messageFromSAXParseException(MessageType.WARNING, e, exact, null);
return;
}
}
}
}
this.errors++;
throwIfTooManyMessages();
messageFromSAXParseException(MessageType.ERROR, e, exact, null);
}
use of nu.validator.datatype.Html5DatatypeException in project validator by validator.
the class MessageEmitterAdapter method rngMessageText.
private void rngMessageText(AbstractValidationException e) throws SAXException {
MessageTextHandler messageTextHandler = emitter.startText();
if (messageTextHandler != null) {
if (e instanceof BadAttributeValueException) {
BadAttributeValueException ex = (BadAttributeValueException) e;
boolean isWarning = false;
Map<String, DatatypeException> datatypeErrors = ex.getExceptions();
for (Map.Entry<String, DatatypeException> entry : datatypeErrors.entrySet()) {
DatatypeException dex = entry.getValue();
if (dex instanceof Html5DatatypeException) {
Html5DatatypeException ex5 = (Html5DatatypeException) dex;
if (ex5.isWarning()) {
isWarning = true;
}
}
}
if (isWarning) {
messageTextString(messageTextHandler, POTENTIALLY_BAD_VALUE, false);
} else {
messageTextString(messageTextHandler, BAD_VALUE, false);
}
if (ex.getAttributeValue().length() < 200) {
codeString(messageTextHandler, ex.getAttributeValue());
}
messageTextString(messageTextHandler, FOR, false);
attribute(messageTextHandler, ex.getAttributeName(), ex.getCurrentElement(), false);
messageTextString(messageTextHandler, ON, false);
element(messageTextHandler, ex.getCurrentElement(), false);
emitDatatypeErrors(messageTextHandler, ex.getExceptions());
} else if (e instanceof ImpossibleAttributeIgnoredException) {
ImpossibleAttributeIgnoredException ex = (ImpossibleAttributeIgnoredException) e;
attribute(messageTextHandler, ex.getAttributeName(), ex.getCurrentElement(), true);
messageTextString(messageTextHandler, NOT_ALLOWED_ON, false);
element(messageTextHandler, ex.getCurrentElement(), false);
messageTextString(messageTextHandler, AT_THIS_POINT, false);
} else if (e instanceof OnlyTextNotAllowedException) {
OnlyTextNotAllowedException ex = (OnlyTextNotAllowedException) e;
element(messageTextHandler, ex.getCurrentElement(), true);
messageTextString(messageTextHandler, ONLY_TEXT, false);
} else if (e instanceof OutOfContextElementException) {
OutOfContextElementException ex = (OutOfContextElementException) e;
element(messageTextHandler, ex.getCurrentElement(), true);
messageTextString(messageTextHandler, NOT_ALLOWED, false);
if (ex.getParent() != null) {
messageTextString(messageTextHandler, AS_CHILD_OF, false);
element(messageTextHandler, ex.getParent(), false);
}
messageTextString(messageTextHandler, IN_THIS_CONTEXT_SUPPRESSING, false);
} else if (e instanceof RequiredAttributesMissingOneOfException) {
RequiredAttributesMissingOneOfException ex = (RequiredAttributesMissingOneOfException) e;
element(messageTextHandler, ex.getCurrentElement(), true);
messageTextString(messageTextHandler, REQUIRED_ATTRIBUTES_MISSING_ONE_OF, false);
for (Iterator<String> iter = ex.getAttributeLocalNames().iterator(); iter.hasNext(); ) {
codeString(messageTextHandler, iter.next());
if (iter.hasNext()) {
messageTextString(messageTextHandler, COMMA, false);
}
}
messageTextString(messageTextHandler, PERIOD, false);
} else if (e instanceof RequiredAttributesMissingException) {
RequiredAttributesMissingException ex = (RequiredAttributesMissingException) e;
element(messageTextHandler, ex.getCurrentElement(), true);
messageTextString(messageTextHandler, REQUIRED_ATTRIBUTES_MISSING, false);
codeString(messageTextHandler, ex.getAttributeLocalName());
messageTextString(messageTextHandler, PERIOD, false);
} else if (e instanceof RequiredElementsMissingException) {
RequiredElementsMissingException ex = (RequiredElementsMissingException) e;
if (ex.getParent() == null) {
messageTextString(messageTextHandler, REQUIRED_ELEMENTS_MISSING, false);
} else {
element(messageTextHandler, ex.getParent(), true);
if (ex.getMissingElementName() == null) {
messageTextString(messageTextHandler, IS_MISSING_A_REQUIRED_CHILD, false);
} else {
messageTextString(messageTextHandler, REQUIRED_CHILDREN_MISSING_FROM, false);
codeString(messageTextHandler, ex.getMissingElementName());
}
messageTextString(messageTextHandler, PERIOD, false);
}
} else if (e instanceof StringNotAllowedException) {
StringNotAllowedException ex = (StringNotAllowedException) e;
messageTextString(messageTextHandler, BAD_CHARACTER_CONTENT, false);
codeString(messageTextHandler, ex.getValue());
messageTextString(messageTextHandler, FOR, false);
element(messageTextHandler, ex.getCurrentElement(), false);
emitDatatypeErrors(messageTextHandler, ex.getExceptions());
} else if (e instanceof TextNotAllowedException) {
TextNotAllowedException ex = (TextNotAllowedException) e;
messageTextString(messageTextHandler, TEXT_NOT_ALLOWED_IN, false);
element(messageTextHandler, ex.getCurrentElement(), false);
messageTextString(messageTextHandler, IN_THIS_CONTEXT, false);
} else if (e instanceof UnfinishedElementException) {
UnfinishedElementException ex = (UnfinishedElementException) e;
element(messageTextHandler, ex.getCurrentElement(), true);
if (ex.getMissingElementName() == null) {
messageTextString(messageTextHandler, IS_MISSING_A_REQUIRED_CHILD, false);
} else {
messageTextString(messageTextHandler, REQUIRED_CHILDREN_MISSING_FROM, false);
codeString(messageTextHandler, ex.getMissingElementName());
}
messageTextString(messageTextHandler, PERIOD, false);
} else if (e instanceof UnfinishedElementOneOfException) {
UnfinishedElementOneOfException ex = (UnfinishedElementOneOfException) e;
element(messageTextHandler, ex.getCurrentElement(), true);
messageTextString(messageTextHandler, REQUIRED_CHILDREN_MISSING_ONE_OF_FROM, false);
for (Iterator<String> iter = ex.getMissingElementNames().iterator(); iter.hasNext(); ) {
String missingElementName = iter.next();
if (!("http://www.w3.org/1999/xhtml".equals(ex.getCurrentElement().getNamespaceUri()) && "frameset".equals(missingElementName))) {
codeString(messageTextHandler, missingElementName);
if (iter.hasNext()) {
messageTextString(messageTextHandler, COMMA, false);
}
}
}
messageTextString(messageTextHandler, PERIOD, false);
} else if (e instanceof RequiredElementsMissingOneOfException) {
RequiredElementsMissingOneOfException ex = (RequiredElementsMissingOneOfException) e;
element(messageTextHandler, ex.getParent(), true);
messageTextString(messageTextHandler, REQUIRED_CHILDREN_MISSING_ONE_OF_FROM, false);
for (Iterator<String> iter = ex.getMissingElementNames().iterator(); iter.hasNext(); ) {
String missingElementName = iter.next();
if (!("http://www.w3.org/1999/xhtml".equals(ex.getCurrentElement().getNamespaceUri()) && "frameset".equals(missingElementName))) {
codeString(messageTextHandler, missingElementName);
if (iter.hasNext()) {
messageTextString(messageTextHandler, COMMA, false);
}
}
}
messageTextString(messageTextHandler, PERIOD, false);
} else if (e instanceof UnknownElementException) {
UnknownElementException ex = (UnknownElementException) e;
messageTextString(messageTextHandler, UNKNOWN, false);
element(messageTextHandler, ex.getCurrentElement(), false);
messageTextString(messageTextHandler, NOT_ALLOWED, false);
if (ex.getParent() != null) {
messageTextString(messageTextHandler, AS_CHILD_OF, false);
element(messageTextHandler, ex.getParent(), false);
}
messageTextString(messageTextHandler, PERIOD, false);
}
}
emitter.endText();
}
use of nu.validator.datatype.Html5DatatypeException in project validator by validator.
the class MessageEmitterAdapter method elaborateDatatypes.
private void elaborateDatatypes(Map<String, DatatypeException> map) throws SAXException {
Set<DocumentFragment> fragments = new HashSet<>();
for (Map.Entry<String, DatatypeException> entry : map.entrySet()) {
DatatypeException ex = entry.getValue();
if (ex instanceof Html5DatatypeException) {
Html5DatatypeException ex5 = (Html5DatatypeException) ex;
DocumentFragment fragment = HTML5_DATATYPE_ADVICE.get(ex5.getDatatypeClass());
if (fragment != null) {
fragments.add(fragment);
}
}
}
if (!fragments.isEmpty()) {
ContentHandler ch = emitter.startElaboration();
if (ch != null) {
TreeParser treeParser = new TreeParser(ch, null);
XhtmlSaxEmitter xhtmlSaxEmitter = new XhtmlSaxEmitter(ch);
xhtmlSaxEmitter.startElement("dl");
for (DocumentFragment fragment : fragments) {
treeParser.parse(fragment);
}
xhtmlSaxEmitter.endElement("dl");
}
emitter.endElaboration();
}
}
use of nu.validator.datatype.Html5DatatypeException in project validator by validator.
the class MessageEmitterAdapter method vnuElementNameMessageText.
private void vnuElementNameMessageText(VnuBadElementNameException e) throws SAXException {
MessageTextHandler messageTextHandler = emitter.startText();
if (messageTextHandler != null) {
boolean isWarning = false;
Map<String, DatatypeException> datatypeErrors = e.getExceptions();
for (Map.Entry<String, DatatypeException> entry : datatypeErrors.entrySet()) {
DatatypeException dex = entry.getValue();
if (dex instanceof Html5DatatypeException) {
Html5DatatypeException ex5 = (Html5DatatypeException) dex;
if (ex5.isWarning()) {
isWarning = true;
}
}
}
if (isWarning) {
messageTextString(messageTextHandler, POTENTIALLY_BAD_ELEMENT_NAME, false);
} else {
messageTextString(messageTextHandler, BAD_ELEMENT_NAME, false);
}
messageTextString(messageTextHandler, SPACE, false);
codeString(messageTextHandler, e.getElementName());
emitDatatypeErrors(messageTextHandler, e.getExceptions());
}
emitter.endText();
}
Aggregations