tweak feed fetching

This commit is contained in:
Jeremie Panzer
2013-03-27 09:37:15 +01:00
parent 3bf414c82b
commit 0d83bd19d0
6 changed files with 69 additions and 71 deletions

View File

@@ -0,0 +1,51 @@
package com.commafeed.backend.feeds;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
import javax.ejb.AccessTimeout;
import javax.ejb.Asynchronous;
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Stateless;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.commafeed.backend.dao.FeedEntryService;
import com.commafeed.backend.dao.FeedService;
import com.commafeed.backend.model.Feed;
@Stateless
public class FeedUpdater {
private static Logger log = LoggerFactory.getLogger(FeedTimer.class);
@Inject
FeedFetcher fetcher;
@Inject
FeedService feedService;
@Inject
FeedEntryService feedEntryService;
@Asynchronous
@Lock(LockType.READ)
@AccessTimeout(value = 15, unit = TimeUnit.SECONDS)
public void update(Feed feed) {
try {
Feed fetchedFeed = fetcher.fetch(feed.getUrl());
feedEntryService.updateEntries(feed.getUrl(),
fetchedFeed.getEntries());
} catch (Exception e) {
log.info("Unable to refresh feed " + feed.getUrl() + " : "
+ e.getMessage());
feed.setLastUpdated(Calendar.getInstance().getTime());
feed.setMessage("Unable to refresh feed: " + e.getMessage());
feedService.update(feed);
}
}
}