diff --git a/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java b/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java index a2859e89..0b9c1500 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedRefreshWorker.java @@ -7,12 +7,11 @@ import java.util.Date; import javax.inject.Inject; import org.apache.commons.lang.mutable.MutableBoolean; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.commafeed.backend.MetricsBean; import com.commafeed.backend.HttpGetter.NotModifiedException; +import com.commafeed.backend.MetricsBean; import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedPushInfo; @@ -143,13 +142,6 @@ public class FeedRefreshWorker { if (info == null) { info = feedPushInfoService.findOrCreate(feed, hub, topic); } - if (!StringUtils.equals(hub, info.getHub()) - || !StringUtils.equals(topic, info.getTopic())) { - info.setHub(hub); - info.setTopic(topic); - info.setFeed(feed); - info.setActive(false); - } feed.setPushInfo(info); } } diff --git a/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java b/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java index b0bdaa7a..911227d8 100644 --- a/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java +++ b/src/main/java/com/commafeed/backend/pubsubhubbub/SubscriptionHandler.java @@ -5,6 +5,7 @@ import java.util.List; import javax.inject.Inject; import javax.ws.rs.core.MediaType; +import org.apache.commons.lang.StringUtils; import org.apache.http.HttpHeaders; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; @@ -17,6 +18,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.commafeed.backend.HttpGetter; +import com.commafeed.backend.dao.FeedPushInfoDAO; import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedPushInfo; import com.commafeed.backend.services.ApplicationSettingsService; @@ -30,6 +32,9 @@ public class SubscriptionHandler { @Inject ApplicationSettingsService applicationSettingsService; + @Inject + FeedPushInfoDAO feedPushInfoDAO; + public void subscribe(Feed feed) { FeedPushInfo info = feed.getPushInfo(); String hub = info.getHub(); @@ -63,9 +68,20 @@ public class SubscriptionHandler { int code = response.getStatusLine().getStatusCode(); if (code != 204 && code != 202 && code != 200) { - throw new Exception("Unexpected response code: " + code + " " - + response.getStatusLine().getReasonPhrase() + " - " - + EntityUtils.toString(response.getEntity())); + String message = EntityUtils.toString(response.getEntity()); + String pushpressError = " is value is not allowed. You may only subscribe to"; + if (code == 400 + && StringUtils.contains(message, pushpressError)) { + String[] tokens = message.split(" "); + info.setTopic(tokens[tokens.length - 1]); + feedPushInfoDAO.update(info); + log.debug("handled pushpress subfeed {} : {}", topic, + info.getTopic()); + } else { + throw new Exception("Unexpected response code: " + code + + " " + response.getStatusLine().getReasonPhrase() + + " - " + message); + } } log.debug("subscribed to {} for {}", hub, topic); } catch (Exception e) {