You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2011/06/15 18:42:37 UTC
svn commit: r1136113 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/FeedProcessorImpl.java
test/java/org/apache/shindig/gadgets/FeedProcessorImplTest.java
Author: lindner
Date: Wed Jun 15 16:42:36 2011
New Revision: 1136113
URL: http://svn.apache.org/viewvc?rev=1136113&view=rev
Log:
feedprocessorimpl cleanup
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FeedProcessorImpl.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FeedProcessorImplTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FeedProcessorImpl.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FeedProcessorImpl.java?rev=1136113&r1=1136112&r2=1136113&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FeedProcessorImpl.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FeedProcessorImpl.java Wed Jun 15 16:42:36 2011
@@ -21,8 +21,8 @@ package org.apache.shindig.gadgets;
import java.io.StringReader;
import java.util.List;
+import com.google.common.base.Strings;
import com.sun.syndication.feed.module.mediarss.types.UrlReference;
-
import com.sun.syndication.feed.module.mediarss.MediaEntryModule;
import com.sun.syndication.feed.module.mediarss.MediaModule;
import com.sun.syndication.feed.module.mediarss.types.MediaContent;
@@ -35,61 +35,56 @@ import com.sun.syndication.feed.synd.Syn
import com.sun.syndication.feed.synd.SyndPerson;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedInput;
+
import org.apache.shindig.gadgets.http.HttpResponse;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
- * Processes RSS & Atom Feeds and converts them into JSON output.
+ * Processes RSS/Atom Feeds and converts them into JSON output.
*/
public class FeedProcessorImpl implements FeedProcessor {
/**
* Converts feed XML to JSON.
- *
- * @param feedUrl
- * The url that the feed was retrieved from.
- * @param feedXml
- * The raw XML of the feed to be converted.
- * @param getSummaries
- * True if summaries should be returned.
- * @param numEntries
- * Number of entries to return.
+ *
+ * @param feedUrl The url that the feed was retrieved from.
+ * @param feedXml The raw XML of the feed to be converted.
+ * @param getSummaries True if summaries should be returned.
+ * @param numEntries Number of entries to return.
* @return The JSON representation of the feed.
*/
- @SuppressWarnings("unchecked")
+ //@SuppressWarnings("unchecked")
public JSONObject process(String feedUrl, String feedXml, boolean getSummaries, int numEntries)
- throws GadgetException {
+ throws GadgetException {
try {
SyndFeed feed = new SyndFeedInput().build(new StringReader(feedXml));
JSONObject json = new JSONObject();
- json.put("Title", feed.getTitle());
+ json.put("Title", Strings.nullToEmpty(feed.getTitle()));
json.put("URL", feedUrl);
- json.put("Description", feed.getDescription());
- json.put("Link", feed.getLink());
+ json.put("Description", Strings.nullToEmpty(feed.getDescription()));
+ json.put("Link", Strings.nullToEmpty(feed.getLink()));
//Retrieve the feed image if it is available as well as an image url if the image is available.
- if (feed.getImage() != null && !feed.getImage().getUrl().isEmpty()){
- SyndImage feedImage = (SyndImage)feed.getImage();
+ if (feed.getImage() != null && !Strings.isNullOrEmpty(feed.getImage().getUrl())) {
+ SyndImage feedImage = feed.getImage();
JSONObject jsonImage = new JSONObject();
jsonImage.put("Url", feedImage.getUrl());
- if(feedImage.getTitle() != null
- && !feedImage.getTitle().isEmpty()){
- jsonImage.put("Title", feedImage.getTitle());
- }
- if(feedImage.getDescription() != null &&
- !feedImage.getDescription().isEmpty()){
- jsonImage.put("Description", feedImage.getDescription());
+
+ if (!Strings.isNullOrEmpty(feedImage.getTitle())) {
+ jsonImage.put("Title", feedImage.getTitle());
}
- if(feedImage.getLink() != null &&
- !feedImage.getLink().isEmpty()){
+ if (!Strings.isNullOrEmpty(feedImage.getDescription())) {
+ jsonImage.put("Description", feedImage.getDescription());
+ }
+ if (!Strings.isNullOrEmpty(feedImage.getLink())) {
jsonImage.put("Link", feedImage.getLink());
}
json.put("Image", jsonImage);
}
-
+
List<SyndPerson> authors = feed.getAuthors();
String jsonAuthor = null;
if (authors != null && !authors.isEmpty()) {
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FeedProcessorImplTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FeedProcessorImplTest.java?rev=1136113&r1=1136112&r2=1136113&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FeedProcessorImplTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FeedProcessorImplTest.java Wed Jun 15 16:42:36 2011
@@ -52,10 +52,10 @@ public class FeedProcessorImplTest {
"<pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>" +
"<image>" +
"<url>" + FEED_IMAGE_URL + "</url>" +
- "<title>" + FEED_IMAGE_TITLE + "</title>" +
+ "<title>" + FEED_IMAGE_TITLE + "</title>" +
"<description>" + FEED_IMAGE_DESCRIPTION + "</description>" +
"<link>" + FEED_IMAGE_LINK + "</link>" +
- "</image>" +
+ "</image>" +
"<item>" +
"<title>" + FEED_ENTRY_TITLE + "</title>" +
"<link>" + FEED_ENTRY_LINK + "</link>" +
@@ -107,7 +107,7 @@ public class FeedProcessorImplTest {
"<media:thumbnail url=\"" + MEDIA_THUMB_URL + "\" />" +
"</item>" +
"</channel></rss>";
-
+
private final static String URL_ATOM = "http://www.example.com/feed.atom";
private final static String DATE_ATOM = "2008-06-06T22:20:00Z";
private final static String DATA_ATOM =
@@ -208,51 +208,51 @@ public class FeedProcessorImplTest {
assertNull("Summary should not be returned when getSummaries is false",
entry.optString("Summary", null));
}
-
+
@Test
public void parseMediaRss() throws Exception {
- JSONObject feed = processor.process(URL_RSS, DATA_RSS_WITH_MEDIARSS, true, 1);
+ JSONObject feed = processor.process(URL_RSS, DATA_RSS_WITH_MEDIARSS, true, 1);
+
+ assertEquals(URL_RSS, feed.getString("URL"));
+ assertEquals(FEED_TITLE, feed.getString("Title"));
+ assertEquals(FEED_AUTHOR_EMAIL, feed.getString("Author"));
+
+ JSONArray entryArray = feed.getJSONArray("Entry");
+ JSONObject entry = entryArray.getJSONObject(0);
+
+ assertEquals(1, entryArray.length());
+ assertEquals(FEED_ENTRY_TITLE, entry.getString("Title"));
+ assertEquals(FEED_ENTRY_LINK, entry.getString("Link"));
+ assertEquals(FEED_ENTRY_SUMMARY, entry.getString("Summary"));
- assertEquals(URL_RSS, feed.getString("URL"));
- assertEquals(FEED_TITLE, feed.getString("Title"));
- assertEquals(FEED_AUTHOR_EMAIL, feed.getString("Author"));
-
- JSONArray entryArray = feed.getJSONArray("Entry");
- JSONObject entry = entryArray.getJSONObject(0);
-
- assertEquals(1, entryArray.length());
- assertEquals(FEED_ENTRY_TITLE, entry.getString("Title"));
- assertEquals(FEED_ENTRY_LINK, entry.getString("Link"));
- assertEquals(FEED_ENTRY_SUMMARY, entry.getString("Summary"));
-
- // Three lots of content, each with a width/height and type
- JSONObject media = entry.getJSONObject("Media");
- JSONArray contents = media.getJSONArray("Contents");
-
- assertEquals(3, contents.length());
-
- JSONObject contents1 = contents.getJSONObject(0);
- assertEquals(MEDIA_CONTENT_URL1, contents1.getString("URL"));
- assertEquals(MEDIA_CONTENT_TYPE, contents1.getString("Type"));
- assertEquals(MEDIA_CONTENT_WIDTH, contents1.getInt("Width"));
- assertEquals(MEDIA_CONTENT_HEIGHT, contents1.getInt("Height"));
-
- JSONObject contents2 = contents.getJSONObject(1);
- assertEquals(MEDIA_CONTENT_URL2, contents2.getString("URL"));
- assertEquals(MEDIA_CONTENT_TYPE, contents2.getString("Type"));
- assertEquals(MEDIA_CONTENT_WIDTH, contents2.getInt("Width"));
- assertEquals(MEDIA_CONTENT_HEIGHT, contents2.getInt("Height"));
-
- JSONObject contents3 = contents.getJSONObject(2);
- assertEquals(MEDIA_CONTENT_URL3, contents3.getString("URL"));
- assertEquals(MEDIA_CONTENT_TYPE, contents3.getString("Type"));
- assertEquals(MEDIA_CONTENT_WIDTH, contents3.getInt("Width"));
- assertEquals(MEDIA_CONTENT_HEIGHT, contents3.getInt("Height"));
-
- JSONObject thumbnail = media.getJSONObject("Thumbnail");
- assertEquals(MEDIA_THUMB_URL, thumbnail.getString("URL"));
- assertEquals(MEDIA_THUMB_WIDTH, thumbnail.getInt("Width"));
- assertEquals(MEDIA_THUMB_HEIGHT, thumbnail.getInt("Height"));
+ // Three lots of content, each with a width/height and type
+ JSONObject media = entry.getJSONObject("Media");
+ JSONArray contents = media.getJSONArray("Contents");
+
+ assertEquals(3, contents.length());
+
+ JSONObject contents1 = contents.getJSONObject(0);
+ assertEquals(MEDIA_CONTENT_URL1, contents1.getString("URL"));
+ assertEquals(MEDIA_CONTENT_TYPE, contents1.getString("Type"));
+ assertEquals(MEDIA_CONTENT_WIDTH, contents1.getInt("Width"));
+ assertEquals(MEDIA_CONTENT_HEIGHT, contents1.getInt("Height"));
+
+ JSONObject contents2 = contents.getJSONObject(1);
+ assertEquals(MEDIA_CONTENT_URL2, contents2.getString("URL"));
+ assertEquals(MEDIA_CONTENT_TYPE, contents2.getString("Type"));
+ assertEquals(MEDIA_CONTENT_WIDTH, contents2.getInt("Width"));
+ assertEquals(MEDIA_CONTENT_HEIGHT, contents2.getInt("Height"));
+
+ JSONObject contents3 = contents.getJSONObject(2);
+ assertEquals(MEDIA_CONTENT_URL3, contents3.getString("URL"));
+ assertEquals(MEDIA_CONTENT_TYPE, contents3.getString("Type"));
+ assertEquals(MEDIA_CONTENT_WIDTH, contents3.getInt("Width"));
+ assertEquals(MEDIA_CONTENT_HEIGHT, contents3.getInt("Height"));
+
+ JSONObject thumbnail = media.getJSONObject("Thumbnail");
+ assertEquals(MEDIA_THUMB_URL, thumbnail.getString("URL"));
+ assertEquals(MEDIA_THUMB_WIDTH, thumbnail.getInt("Width"));
+ assertEquals(MEDIA_THUMB_HEIGHT, thumbnail.getInt("Height"));
}
@Test
@@ -295,59 +295,59 @@ public class FeedProcessorImplTest {
assertNull("Summary should not be returned when getSummaries is false",
entry.optString("Summary", null));
}
-
+
@Test
public void parseMediaAtom() throws Exception {
- JSONObject feed = processor.process(URL_ATOM, DATA_ATOM_WITH_MEDIARSS, true, 1);
+ JSONObject feed = processor.process(URL_ATOM, DATA_ATOM_WITH_MEDIARSS, true, 1);
+
+ assertEquals(URL_ATOM, feed.getString("URL"));
+ assertEquals(FEED_TITLE, feed.getString("Title"));
+ assertEquals(FEED_AUTHOR, feed.getString("Author"));
+
+ JSONArray entryArray = feed.getJSONArray("Entry");
+ JSONObject entry = entryArray.getJSONObject(0);
+
+ assertEquals(1, entryArray.length());
+ assertEquals(FEED_ENTRY_TITLE, entry.getString("Title"));
+ assertEquals(FEED_ENTRY_LINK, entry.getString("Link"));
+ assertEquals(FEED_ENTRY_SUMMARY, entry.getString("Summary"));
- assertEquals(URL_ATOM, feed.getString("URL"));
- assertEquals(FEED_TITLE, feed.getString("Title"));
- assertEquals(FEED_AUTHOR, feed.getString("Author"));
-
- JSONArray entryArray = feed.getJSONArray("Entry");
- JSONObject entry = entryArray.getJSONObject(0);
-
- assertEquals(1, entryArray.length());
- assertEquals(FEED_ENTRY_TITLE, entry.getString("Title"));
- assertEquals(FEED_ENTRY_LINK, entry.getString("Link"));
- assertEquals(FEED_ENTRY_SUMMARY, entry.getString("Summary"));
-
- // Three lots of content, each with a width/height and type
- JSONObject media = entry.getJSONObject("Media");
- JSONArray contents = media.getJSONArray("Contents");
-
- assertEquals(3, contents.length());
-
- JSONObject contents1 = contents.getJSONObject(0);
- assertEquals(MEDIA_CONTENT_URL1, contents1.getString("URL"));
- assertEquals(MEDIA_CONTENT_TYPE, contents1.getString("Type"));
- assertEquals(MEDIA_CONTENT_WIDTH, contents1.getInt("Width"));
- assertEquals(MEDIA_CONTENT_HEIGHT, contents1.getInt("Height"));
-
- JSONObject contents2 = contents.getJSONObject(1);
- assertEquals(MEDIA_CONTENT_URL2, contents2.getString("URL"));
- assertEquals(MEDIA_CONTENT_TYPE, contents2.getString("Type"));
- assertEquals(MEDIA_CONTENT_WIDTH, contents2.getInt("Width"));
- assertEquals(MEDIA_CONTENT_HEIGHT, contents2.getInt("Height"));
-
- JSONObject contents3 = contents.getJSONObject(2);
- assertEquals(MEDIA_CONTENT_URL3, contents3.getString("URL"));
- assertEquals(MEDIA_CONTENT_TYPE, contents3.getString("Type"));
- assertEquals(MEDIA_CONTENT_WIDTH, contents3.getInt("Width"));
- assertEquals(MEDIA_CONTENT_HEIGHT, contents3.getInt("Height"));
-
- JSONObject thumbnail = media.getJSONObject("Thumbnail");
- assertEquals(MEDIA_THUMB_URL, thumbnail.getString("URL"));
- assertEquals(MEDIA_THUMB_WIDTH, thumbnail.getInt("Width"));
- assertEquals(MEDIA_THUMB_HEIGHT, thumbnail.getInt("Height"));
+ // Three lots of content, each with a width/height and type
+ JSONObject media = entry.getJSONObject("Media");
+ JSONArray contents = media.getJSONArray("Contents");
+
+ assertEquals(3, contents.length());
+
+ JSONObject contents1 = contents.getJSONObject(0);
+ assertEquals(MEDIA_CONTENT_URL1, contents1.getString("URL"));
+ assertEquals(MEDIA_CONTENT_TYPE, contents1.getString("Type"));
+ assertEquals(MEDIA_CONTENT_WIDTH, contents1.getInt("Width"));
+ assertEquals(MEDIA_CONTENT_HEIGHT, contents1.getInt("Height"));
+
+ JSONObject contents2 = contents.getJSONObject(1);
+ assertEquals(MEDIA_CONTENT_URL2, contents2.getString("URL"));
+ assertEquals(MEDIA_CONTENT_TYPE, contents2.getString("Type"));
+ assertEquals(MEDIA_CONTENT_WIDTH, contents2.getInt("Width"));
+ assertEquals(MEDIA_CONTENT_HEIGHT, contents2.getInt("Height"));
+
+ JSONObject contents3 = contents.getJSONObject(2);
+ assertEquals(MEDIA_CONTENT_URL3, contents3.getString("URL"));
+ assertEquals(MEDIA_CONTENT_TYPE, contents3.getString("Type"));
+ assertEquals(MEDIA_CONTENT_WIDTH, contents3.getInt("Width"));
+ assertEquals(MEDIA_CONTENT_HEIGHT, contents3.getInt("Height"));
+
+ JSONObject thumbnail = media.getJSONObject("Thumbnail");
+ assertEquals(MEDIA_THUMB_URL, thumbnail.getString("URL"));
+ assertEquals(MEDIA_THUMB_WIDTH, thumbnail.getInt("Width"));
+ assertEquals(MEDIA_THUMB_HEIGHT, thumbnail.getInt("Height"));
}
- @Test(expected=GadgetException.class)
+ @Test(expected = GadgetException.class)
public void parseBadXml() throws GadgetException {
processor.process(URL_RSS, BAD_XML, false, 1);
}
- @Test(expected=GadgetException.class)
+ @Test(expected = GadgetException.class)
public void parseInvalidXml() throws GadgetException {
processor.process(URL_RSS, INVALID_XML, false, 1);
}