diff --git a/src/main/java/org/rometools/feed/module/mediarss/io/MediaModuleParser.java b/src/main/java/org/rometools/feed/module/mediarss/io/MediaModuleParser.java index 35c4ee7..604cdc4 100644 --- a/src/main/java/org/rometools/feed/module/mediarss/io/MediaModuleParser.java +++ b/src/main/java/org/rometools/feed/module/mediarss/io/MediaModuleParser.java @@ -313,19 +313,25 @@ public class MediaModuleParser implements ModuleParser { } // ratings { - final List ratings = e.getChildren("rating", getNS()); final ArrayList values = new ArrayList(); - for (int i = 0; ratings != null && i < ratings.size(); i++) { + final List ratings = e.getChildren("rating", getNS()); + for (final Element ratingElement : ratings) { try { - final Element rat = ratings.get(i); - values.add(new Rating(rat.getAttributeValue("scheme"), rat.getText())); + final String ratingText = ratingElement.getText(); + String ratingScheme = Strings.trimToNull(ratingElement.getAttributeValue("scheme")); + if (ratingScheme == null) { + ratingScheme = "urn:simple"; + } + final Rating rating = new Rating(ratingScheme, ratingText); + values.add(rating); } catch (final Exception ex) { LOG.warn("Exception parsing rating tag.", ex); } } md.setRatings(values.toArray(new Rating[values.size()])); + } // text { diff --git a/src/test/java/org/rometools/feed/module/mediarss/MediaModuleTest.java b/src/test/java/org/rometools/feed/module/mediarss/MediaModuleTest.java index 6d7005a..796186c 100644 --- a/src/test/java/org/rometools/feed/module/mediarss/MediaModuleTest.java +++ b/src/test/java/org/rometools/feed/module/mediarss/MediaModuleTest.java @@ -22,6 +22,7 @@ import junit.framework.TestSuite; import org.rometools.feed.module.AbstractTestCase; import org.rometools.feed.module.mediarss.types.MediaContent; +import org.rometools.feed.module.mediarss.types.Rating; import org.rometools.feed.module.mediarss.types.Thumbnail; import com.sun.syndication.feed.synd.SyndEntry; @@ -90,7 +91,7 @@ public class MediaModuleTest extends AbstractTestCase { } /** - * test url with whitespace in media element + * tests parsing thubnails with empty dimensions * (https://github.com/rometools/rome-modules/issues/7). * * @throws IOException if file not found or not accessible @@ -108,6 +109,24 @@ public class MediaModuleTest extends AbstractTestCase { } + /** + * tests parsing rating without scheme (https://github.com/rometools/rome-modules/issues/12). + * + * @throws IOException if file not found or not accessible + * @throws FeedException when the feed can't be parsed + * + */ + public void testParseRatingWithoutScheme() throws FeedException, IOException { + + final SyndFeed feed = getSyndFeed("org/rometools/feed/module/mediarss/issue-12.xml"); + final SyndEntry entry = feed.getEntries().get(0); + final MediaEntryModule module = (MediaEntryModule) entry.getModule(MediaEntryModule.URI); + final Rating[] ratings = module.getMetadata().getRatings(); + + assertThat(ratings, is(notNullValue())); + + } + /** * test url with whitespace in media element * (https://github.com/rometools/rome-modules/issues/20). diff --git a/src/test/resources/org/rometools/feed/module/mediarss/issue-12.xml b/src/test/resources/org/rometools/feed/module/mediarss/issue-12.xml new file mode 100644 index 0000000..274cca5 --- /dev/null +++ b/src/test/resources/org/rometools/feed/module/mediarss/issue-12.xml @@ -0,0 +1,8 @@ + + + + + adult + + + \ No newline at end of file