diff --git a/src/main/java/com/adobe/epubcheck/messages/MessageDictionary.java b/src/main/java/com/adobe/epubcheck/messages/MessageDictionary.java index 0018eabd5..f5db165a0 100644 --- a/src/main/java/com/adobe/epubcheck/messages/MessageDictionary.java +++ b/src/main/java/com/adobe/epubcheck/messages/MessageDictionary.java @@ -92,6 +92,7 @@ static Map getDefaultSeverities() map.put(MessageId.CHK_005, Severity.ERROR); map.put(MessageId.CHK_006, Severity.ERROR); map.put(MessageId.CHK_007, Severity.ERROR); + map.put(MessageId.CHK_008, Severity.ERROR); // CSS map.put(MessageId.CSS_001, Severity.ERROR); diff --git a/src/main/java/com/adobe/epubcheck/messages/MessageId.java b/src/main/java/com/adobe/epubcheck/messages/MessageId.java index 81531aad1..e27adf341 100644 --- a/src/main/java/com/adobe/epubcheck/messages/MessageId.java +++ b/src/main/java/com/adobe/epubcheck/messages/MessageId.java @@ -55,6 +55,7 @@ public enum MessageId implements Comparable CHK_005("CHK-005"), CHK_006("CHK-006"), CHK_007("CHK-007"), + CHK_008("CHK-008"), // Messages associated with styles CSS_001("CSS-001"), diff --git a/src/main/java/com/adobe/epubcheck/opf/OPFChecker.java b/src/main/java/com/adobe/epubcheck/opf/OPFChecker.java index cb870af30..e710f8004 100755 --- a/src/main/java/com/adobe/epubcheck/opf/OPFChecker.java +++ b/src/main/java/com/adobe/epubcheck/opf/OPFChecker.java @@ -416,11 +416,15 @@ else if (item.isNav()) } if (checkerFactory != null) { - // Create the content checker with an overridden validation context - ContentChecker checker = checkerFactory.newInstance(new ValidationContextBuilder(context) - .path(item.getPath()).mimetype(mimetype).properties(item.getProperties()).build()); - // Validate - checker.runChecks(); + try { + // Create the content checker with an overridden validation context + ContentChecker checker = checkerFactory.newInstance(new ValidationContextBuilder(context) + .path(item.getPath()).mimetype(mimetype).properties(item.getProperties()).build()); + // Validate + checker.runChecks(); + } catch (IllegalStateException e) { + report.message(MessageId.CHK_008, EPUBLocation.create(path), item.getPath()); + } } } diff --git a/src/main/resources/com/adobe/epubcheck/messages/MessageBundle.properties b/src/main/resources/com/adobe/epubcheck/messages/MessageBundle.properties index fa192dd5d..a12c82590 100644 --- a/src/main/resources/com/adobe/epubcheck/messages/MessageBundle.properties +++ b/src/main/resources/com/adobe/epubcheck/messages/MessageBundle.properties @@ -32,6 +32,7 @@ CHK_004=The custom message contains too many parameters in message overrides fil CHK_005=The custom suggestion contains too many parameters in message overrides file '%1$s'. CHK_006=Unable to parse the custom format parameter in message overrides file '%1$s'. CHK_007=Error encountered while processing custom message file '%1$s': "%2$s". +CHK_008=Error encountered while processing an item '%1$s'; skip other checkes for the item. #CSS CSS_001=The \'%1$s\' property must not be included in an EPUB Style Sheet. diff --git a/src/test/java/com/adobe/epubcheck/api/Epub20CheckTest.java b/src/test/java/com/adobe/epubcheck/api/Epub20CheckTest.java index ee3147964..369b0a038 100644 --- a/src/test/java/com/adobe/epubcheck/api/Epub20CheckTest.java +++ b/src/test/java/com/adobe/epubcheck/api/Epub20CheckTest.java @@ -272,4 +272,12 @@ public void testLinkedStylesheetCaseInsensitiveIssue316() { Collections.addAll(expectedErrors, MessageId.RSC_007); testValidateDocument("invalid/issue316.epub"); } + + @Test + public void testValidateEPUB_issue21() + { + Collections.addAll(expectedErrors, MessageId.OPF_054, MessageId.OPF_050, MessageId.CHK_008); + Collections.addAll(expectedWarnings, MessageId.OPF_055); + testValidateDocument("/Issue21.epub"); + } }