diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index 827e6b5a..28111b44 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -67,7 +67,7 @@ public class FeedDAO extends GenericDAO { List feeds = q.getResultList(); for (Feed feed : feeds) { - FeedPushInfo info = Iterables.getFirst(feed.getPushInfo(), null); + FeedPushInfo info = feed.getPushInfo(); if (info != null) { info.getTopic(); } diff --git a/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java b/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java index 9543724c..c6b88a8a 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java @@ -29,7 +29,6 @@ import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.pubsubhubbub.SubscriptionHandler; import com.commafeed.backend.services.ApplicationSettingsService; import com.commafeed.backend.services.FeedUpdateService; -import com.google.common.collect.Iterables; import com.google.common.util.concurrent.Striped; @Singleton @@ -158,7 +157,7 @@ public class FeedRefreshUpdater { } private void handlePubSub(final Feed feed) { - FeedPushInfo info = Iterables.getFirst(feed.getPushInfo(), null); + FeedPushInfo info = feed.getPushInfo(); if (info != null && info.isActive() == false) { new Thread() { @Override diff --git a/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java b/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java index eb3370d8..8188476f 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java @@ -18,7 +18,6 @@ import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedPushInfo; import com.commafeed.backend.services.ApplicationSettingsService; import com.commafeed.backend.services.FeedPushInfoService; -import com.google.common.collect.Iterables; import com.sun.syndication.io.FeedException; public class FeedRefreshWorker { @@ -86,6 +85,7 @@ public class FeedRefreshWorker { private void update(Feed feed) { + try { FetchedFeed fetchedFeed = fetcher.fetch(feed.getUrl(), false, feed.getLastModifiedHeader(), feed.getEtagHeader()); @@ -156,11 +156,11 @@ public class FeedRefreshWorker { topic = "http://" + topic; } log.debug("feed {} has pubsub info: {}", feed.getUrl(), topic); - FeedPushInfo info = Iterables.getFirst(feed.getPushInfo(), null); + FeedPushInfo info = feed.getPushInfo(); if (info == null) { info = feedPushInfoService.findOrCreate(feed, hub, topic); - feed.getPushInfo().add(info); } + feed.setPushInfo(info); } } diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java index bffca4fe..36046775 100644 --- a/src/main/java/com/commafeed/backend/model/Feed.java +++ b/src/main/java/com/commafeed/backend/model/Feed.java @@ -9,6 +9,7 @@ import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; +import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -68,11 +69,9 @@ public class Feed extends AbstractModel { @Column(length = 255) private String etagHeader; - @OneToMany(fetch = FetchType.LAZY, mappedBy = "feed", cascade = { + @OneToOne(fetch = FetchType.LAZY, mappedBy = "feed", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - // use a onetomany relationship for push info to avoid hibernate automatic - // lazy loading of onetoone optional relationships - private Set pushInfo; + private FeedPushInfo pushInfo; @ManyToMany(mappedBy = "feeds") private Set entries = Sets.newHashSet(); @@ -184,11 +183,11 @@ public class Feed extends AbstractModel { this.lastUpdateSuccess = lastUpdateSuccess; } - public Set getPushInfo() { + public FeedPushInfo getPushInfo() { return pushInfo; } - public void setPushInfo(Set pushInfo) { + public void setPushInfo(FeedPushInfo pushInfo) { this.pushInfo = pushInfo; } diff --git a/src/main/java/com/commafeed/backend/model/FeedPushInfo.java b/src/main/java/com/commafeed/backend/model/FeedPushInfo.java index 656a1a31..1e5a36a5 100644 --- a/src/main/java/com/commafeed/backend/model/FeedPushInfo.java +++ b/src/main/java/com/commafeed/backend/model/FeedPushInfo.java @@ -4,7 +4,7 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; import javax.persistence.Table; import org.hibernate.annotations.Index; @@ -15,7 +15,7 @@ import org.hibernate.annotations.Index; public class FeedPushInfo extends AbstractModel { @JoinColumn(unique = true) - @ManyToOne(fetch = FetchType.LAZY) + @OneToOne(fetch = FetchType.LAZY) private Feed feed; @Column(length = 2048, nullable = false) diff --git a/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java b/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java index 817356d0..7a2bf472 100644 --- a/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java +++ b/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java @@ -23,7 +23,6 @@ import com.commafeed.backend.feeds.FeedUtils; import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedPushInfo; import com.commafeed.backend.services.ApplicationSettingsService; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; public class SubscriptionHandler { @@ -38,7 +37,7 @@ public class SubscriptionHandler { FeedPushInfoDAO feedPushInfoDAO; public void subscribe(Feed feed) { - FeedPushInfo info = Iterables.getFirst(feed.getPushInfo(), null); + FeedPushInfo info = feed.getPushInfo(); String hub = info.getHub(); String topic = info.getTopic(); String publicUrl = FeedUtils