From d4fa817983617520f929d6e9b62b2a2398054b02 Mon Sep 17 00:00:00 2001 From: Athou Date: Sun, 21 Apr 2013 12:39:10 +0200 Subject: [PATCH] import opml asynchronously --- .../commafeed/backend/feeds/OPMLImporter.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java b/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java index 3b9217cd..964ce356 100644 --- a/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java +++ b/src/main/java/com/commafeed/backend/feeds/OPMLImporter.java @@ -3,9 +3,13 @@ package com.commafeed.backend.feeds; import java.io.StringReader; import java.util.List; +import javax.ejb.Asynchronous; +import javax.ejb.Stateless; import javax.inject.Inject; import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.model.FeedCategory; @@ -13,11 +17,13 @@ import com.commafeed.backend.model.User; import com.commafeed.backend.services.FeedSubscriptionService; import com.sun.syndication.feed.opml.Opml; import com.sun.syndication.feed.opml.Outline; -import com.sun.syndication.io.FeedException; import com.sun.syndication.io.WireFeedInput; +@Stateless public class OPMLImporter { + private static Logger log = LoggerFactory.getLogger(OPMLImporter.class); + @Inject FeedSubscriptionService feedSubscriptionService; @@ -25,14 +31,20 @@ public class OPMLImporter { FeedCategoryDAO feedCategoryDAO; @SuppressWarnings("unchecked") - public void importOpml(User user, String xml) throws FeedException { + @Asynchronous + public void importOpml(User user, String xml) { WireFeedInput input = new WireFeedInput(); - Opml feed = (Opml) input.build(new StringReader(xml)); - List outlines = (List) feed.getOutlines(); - for (Outline outline : outlines) { - handleOutline(user, outline, null); + try { + Opml feed = (Opml) input.build(new StringReader(xml)); + List outlines = (List) feed.getOutlines(); + for (Outline outline : outlines) { + handleOutline(user, outline, null); + } + } catch (Exception e) { + log.error(e.getMessage(), e); } + } @SuppressWarnings("unchecked")