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);
   }