From 0204dadc3f2d11e6350b539b320d0fb3842145c4 Mon Sep 17 00:00:00 2001 From: Athou Date: Sun, 21 Apr 2013 16:56:09 +0200 Subject: [PATCH] make sure dates are in an acceptable interval --- .../com/commafeed/backend/feeds/FeedParser.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/commafeed/backend/feeds/FeedParser.java b/src/main/java/com/commafeed/backend/feeds/FeedParser.java index 269c8b9c..66a825d6 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedParser.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedParser.java @@ -26,6 +26,9 @@ import com.sun.syndication.io.SyndFeedInput; public class FeedParser { + private static final Date START = new Date(0); + private static final Date END = new Date(Integer.MAX_VALUE); + private static final Function CONTENT_TO_STRING = new Function() { public String apply(SyndContent content) { return content.getValue(); @@ -56,7 +59,7 @@ public class FeedParser { entry.setGuid(item.getUri()); entry.setGuidHash(DigestUtils.sha1Hex(item.getUri())); entry.setUrl(item.getLink()); - entry.setUpdated(getUpdateDate(item)); + entry.setUpdated(validateDate(getUpdateDate(item))); FeedEntryContent content = new FeedEntryContent(); content.setContent(getContent(item)); @@ -71,7 +74,7 @@ public class FeedParser { feed.getEntries().add(entry); } - Date publishedDate = rss.getPublishedDate(); + Date publishedDate = validateDate(rss.getPublishedDate()); if (publishedDate == null && !feed.getEntries().isEmpty()) { FeedEntry first = feed.getEntries().iterator().next(); publishedDate = first.getUpdated(); @@ -97,6 +100,16 @@ public class FeedParser { return date; } + private Date validateDate(Date date) { + if (date == null) { + return null; + } + if (date.before(START) || date.after(END)) { + return null; + } + return date; + } + @SuppressWarnings("unchecked") private String getContent(SyndEntry item) { String content = null;