Skip to content
Snippets Groups Projects
Unverified Commit 5044127c authored by akwizgran's avatar akwizgran
Browse files

Catch IllegalArgumentException when parsing RSS feed.

parent eb6561b9
No related branches found
No related tags found
No related merge requests found
...@@ -161,12 +161,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener, ...@@ -161,12 +161,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
@Override @Override
public void addFeed(String url) throws DbException, IOException { public void addFeed(String url) throws DbException, IOException {
// fetch syndication feed to get its metadata // fetch syndication feed to get its metadata
SyndFeed f; SyndFeed f = fetchSyndFeed(url);
try {
f = fetchSyndFeed(url);
} catch (FeedException e) {
throw new IOException(e);
}
Feed feed = feedFactory.createFeed(url, f); Feed feed = feedFactory.createFeed(url, f);
...@@ -183,12 +178,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener, ...@@ -183,12 +178,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
} }
// fetch feed again and post entries // fetch feed again and post entries
Feed updatedFeed; Feed updatedFeed = fetchFeed(feed);
try {
updatedFeed = fetchFeed(feed);
} catch (FeedException e) {
throw new IOException(e);
}
// store feed again to also store last added entry // store feed again to also store last added entry
txn = db.startTransaction(false); txn = db.startTransaction(false);
...@@ -314,10 +304,6 @@ class FeedManagerImpl implements FeedManager, Client, EventListener, ...@@ -314,10 +304,6 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
for (Feed feed : feeds) { for (Feed feed : feeds) {
try { try {
newFeeds.add(fetchFeed(feed)); newFeeds.add(fetchFeed(feed));
} catch (FeedException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
newFeeds.add(feed);
} catch (IOException e) { } catch (IOException e) {
if (LOG.isLoggable(WARNING)) if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e); LOG.log(WARNING, e.toString(), e);
...@@ -339,15 +325,14 @@ class FeedManagerImpl implements FeedManager, Client, EventListener, ...@@ -339,15 +325,14 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
LOG.info("Done updating RSS feeds"); LOG.info("Done updating RSS feeds");
} }
private SyndFeed fetchSyndFeed(String url) private SyndFeed fetchSyndFeed(String url) throws IOException {
throws FeedException, IOException {
// fetch feed // fetch feed
InputStream stream = getFeedInputStream(url); InputStream stream = getFeedInputStream(url);
SyndFeed f = getSyndFeed(stream); SyndFeed f = getSyndFeed(stream);
stream.close(); stream.close();
if (f.getEntries().size() == 0) if (f.getEntries().size() == 0)
throw new FeedException("Feed has no entries"); throw new IOException("Feed has no entries");
// clean title // clean title
String title = String title =
...@@ -371,8 +356,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener, ...@@ -371,8 +356,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
return f; return f;
} }
private Feed fetchFeed(Feed feed) private Feed fetchFeed(Feed feed) throws IOException, DbException {
throws FeedException, IOException, DbException {
// fetch and clean feed // fetch and clean feed
SyndFeed f = fetchSyndFeed(feed.getUrl()); SyndFeed f = fetchSyndFeed(feed.getUrl());
...@@ -402,11 +386,16 @@ class FeedManagerImpl implements FeedManager, Client, EventListener, ...@@ -402,11 +386,16 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
throw new IOException("Empty response body"); throw new IOException("Empty response body");
} }
private SyndFeed getSyndFeed(InputStream stream) private SyndFeed getSyndFeed(InputStream stream) throws IOException {
throws IOException, FeedException {
SyndFeedInput input = new SyndFeedInput(); SyndFeedInput input = new SyndFeedInput();
return input.build(new XmlReader(stream)); try {
return input.build(new XmlReader(stream));
} catch (IllegalArgumentException e) {
throw new IOException(e);
} catch (FeedException e) {
throw new IOException(e);
}
} }
private long postFeedEntries(Feed feed, List<SyndEntry> entries) private long postFeedEntries(Feed feed, List<SyndEntry> entries)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment