Search in sources :

Example 6 with Html5DatatypeException

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());
            }
        }
    }
}
Also used : Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) DatatypeException(org.relaxng.datatype.DatatypeException) Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) Map(java.util.Map) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap)

Example 7 with Html5DatatypeException

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);
}
Also used : Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) DatatypeException(org.relaxng.datatype.DatatypeException) Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) BadAttributeValueException(com.thaiopensource.relaxng.exceptions.BadAttributeValueException) VnuBadAttrValueException(nu.validator.checker.VnuBadAttrValueException) VnuBadElementNameException(nu.validator.checker.VnuBadElementNameException) DatatypeMismatchException(nu.validator.checker.DatatypeMismatchException) Map(java.util.Map) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap)

Example 8 with Html5DatatypeException

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();
}
Also used : Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) RequiredAttributesMissingOneOfException(com.thaiopensource.relaxng.exceptions.RequiredAttributesMissingOneOfException) RequiredAttributesMissingException(com.thaiopensource.relaxng.exceptions.RequiredAttributesMissingException) RequiredElementsMissingException(com.thaiopensource.relaxng.exceptions.RequiredElementsMissingException) UnfinishedElementException(com.thaiopensource.relaxng.exceptions.UnfinishedElementException) RequiredElementsMissingOneOfException(com.thaiopensource.relaxng.exceptions.RequiredElementsMissingOneOfException) OutOfContextElementException(com.thaiopensource.relaxng.exceptions.OutOfContextElementException) StringNotAllowedException(com.thaiopensource.relaxng.exceptions.StringNotAllowedException) UnfinishedElementOneOfException(com.thaiopensource.relaxng.exceptions.UnfinishedElementOneOfException) Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) DatatypeException(org.relaxng.datatype.DatatypeException) OnlyTextNotAllowedException(com.thaiopensource.relaxng.exceptions.OnlyTextNotAllowedException) ImpossibleAttributeIgnoredException(com.thaiopensource.relaxng.exceptions.ImpossibleAttributeIgnoredException) BadAttributeValueException(com.thaiopensource.relaxng.exceptions.BadAttributeValueException) Iterator(java.util.Iterator) UnknownElementException(com.thaiopensource.relaxng.exceptions.UnknownElementException) Map(java.util.Map) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap) OnlyTextNotAllowedException(com.thaiopensource.relaxng.exceptions.OnlyTextNotAllowedException) TextNotAllowedException(com.thaiopensource.relaxng.exceptions.TextNotAllowedException)

Example 9 with Html5DatatypeException

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();
    }
}
Also used : Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) DatatypeException(org.relaxng.datatype.DatatypeException) Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) TreeParser(nu.validator.saxtree.TreeParser) XhtmlSaxEmitter(nu.validator.xml.XhtmlSaxEmitter) Map(java.util.Map) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap) DocumentFragment(nu.validator.saxtree.DocumentFragment) ContentHandler(org.xml.sax.ContentHandler) HashSet(java.util.HashSet)

Example 10 with Html5DatatypeException

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();
}
Also used : Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) DatatypeException(org.relaxng.datatype.DatatypeException) Html5DatatypeException(nu.validator.datatype.Html5DatatypeException) Map(java.util.Map) HashMap(java.util.HashMap) TreeMap(java.util.TreeMap)

Aggregations

Html5DatatypeException (nu.validator.datatype.Html5DatatypeException)10 DatatypeException (org.relaxng.datatype.DatatypeException)8 HashMap (java.util.HashMap)7 Map (java.util.Map)7 TreeMap (java.util.TreeMap)6 BadAttributeValueException (com.thaiopensource.relaxng.exceptions.BadAttributeValueException)2 HashSet (java.util.HashSet)2 VnuBadAttrValueException (nu.validator.checker.VnuBadAttrValueException)2 VnuBadElementNameException (nu.validator.checker.VnuBadElementNameException)2 ImpossibleAttributeIgnoredException (com.thaiopensource.relaxng.exceptions.ImpossibleAttributeIgnoredException)1 OnlyTextNotAllowedException (com.thaiopensource.relaxng.exceptions.OnlyTextNotAllowedException)1 OutOfContextElementException (com.thaiopensource.relaxng.exceptions.OutOfContextElementException)1 RequiredAttributesMissingException (com.thaiopensource.relaxng.exceptions.RequiredAttributesMissingException)1 RequiredAttributesMissingOneOfException (com.thaiopensource.relaxng.exceptions.RequiredAttributesMissingOneOfException)1 RequiredElementsMissingException (com.thaiopensource.relaxng.exceptions.RequiredElementsMissingException)1 RequiredElementsMissingOneOfException (com.thaiopensource.relaxng.exceptions.RequiredElementsMissingOneOfException)1 StringNotAllowedException (com.thaiopensource.relaxng.exceptions.StringNotAllowedException)1 TextNotAllowedException (com.thaiopensource.relaxng.exceptions.TextNotAllowedException)1 UnfinishedElementException (com.thaiopensource.relaxng.exceptions.UnfinishedElementException)1 UnfinishedElementOneOfException (com.thaiopensource.relaxng.exceptions.UnfinishedElementOneOfException)1