From 4a84bc26d9adef94b8a6a952f1af1e07de8ec3f4 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Wed, 10 Feb 2010 22:48:28 +0100 Subject: [PATCH] reporting encoding issues, warn about empty lines --- .../ical/services/IcalendarValidationService.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/bzzt/ical/services/IcalendarValidationService.java b/src/main/java/net/bzzt/ical/services/IcalendarValidationService.java index 524936f..691c681 100644 --- a/src/main/java/net/bzzt/ical/services/IcalendarValidationService.java +++ b/src/main/java/net/bzzt/ical/services/IcalendarValidationService.java @@ -42,6 +42,8 @@ public class IcalendarValidationService { private static final ValidationRuleInfo VALID_CRLF_NEWLINES = new ValidationRuleInfo( "3.1"); + private static final ValidationRuleInfo VALID_EMPTY_LINES = new ValidationRuleInfo(""); + public static WebMarkupContainer getValidationResult(String id, InputStream calendarStream, String charSet) { CollectingValidationResultHandler validationResultHandler = new CollectingValidationResultHandler(); @@ -67,7 +69,7 @@ public class IcalendarValidationService { throw new RuntimeException(e); } - if (!"utf-8".equals(charSet)) { + if (!"utf-8".equalsIgnoreCase(charSet)) { validationResultHandler.onValidationResult(new ValidationResult( null, "Charset was [{0}] instead of utf-8 as recommended", new Object[] { charSet }, VALID_CHARSET_UTF8)); @@ -149,8 +151,8 @@ public class IcalendarValidationService { .onValidationResult( new ValidationResult( null, - "Input contains non-[{0}] characters on line {1}", - new Object[] { charSet, lineno }, + "Input contains non-[{0}] characters on line {1}: [{2}]", + new Object[] { charSet, lineno, new String(bytes, offset, length) }, VALID_CHARSET_UTF8)); } catch (ValidationException e1) { throw new RuntimeException(e1); @@ -162,8 +164,8 @@ public class IcalendarValidationService { .onValidationResult( new ValidationResult( null, - "Input contains non-[{0}] characters on line {1}", - new Object[] { charSet, lineno }, + "Input contains non-[{0}] characters on line {1}: [{2}]", + new Object[] { charSet, lineno, new String(bytes, offset, length) }, VALID_CHARSET_UTF8)); } catch (ValidationException e1) { throw new RuntimeException(e1); @@ -208,6 +210,13 @@ public class IcalendarValidationService { "CRLF should be used for newlines", VALID_CRLF_NEWLINES)); } + if (calendarString.contains("\r\n\r\n")) + { + ValidationResultHandler.get().onValidationResult( + new ValidationResult(null, + "Feeds should not contain empty lines", + VALID_EMPTY_LINES)); + } return calendarString; } -- 2.11.4.GIT