diff options
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java index 32cd538d5..4d56e1365 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java @@ -1,8 +1,7 @@ package de.danoeh.antennapod.core.syndication.handler; import android.util.Log; -import de.danoeh.antennapod.core.BuildConfig; -import de.danoeh.antennapod.core.feed.Feed; + import org.apache.commons.io.input.XmlStreamReader; import org.jsoup.Jsoup; import org.xmlpull.v1.XmlPullParser; @@ -14,6 +13,8 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; +import de.danoeh.antennapod.core.feed.Feed; + /** Gets the type of a specific feed by reading the root element. */ public class TypeGetter { private static final String TAG = "TypeGetter"; @@ -28,11 +29,13 @@ public class TypeGetter { public Type getType(Feed feed) throws UnsupportedFeedtypeException { XmlPullParserFactory factory; if (feed.getFile_url() != null) { + Reader reader = null; try { factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); - xpp.setInput(createReader(feed)); + reader = createReader(feed); + xpp.setInput(reader); int eventType = xpp.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { @@ -40,38 +43,30 @@ public class TypeGetter { String tag = xpp.getName(); if (tag.equals(ATOM_ROOT)) { feed.setType(Feed.TYPE_ATOM1); - if (BuildConfig.DEBUG) - Log.d(TAG, "Recognized type Atom"); + Log.d(TAG, "Recognized type Atom"); return Type.ATOM; } else if (tag.equals(RSS_ROOT)) { - String strVersion = xpp.getAttributeValue(null, - "version"); + String strVersion = xpp.getAttributeValue(null, "version"); if (strVersion != null) { - if (strVersion.equals("2.0")) { feed.setType(Feed.TYPE_RSS2); - if (BuildConfig.DEBUG) - Log.d(TAG, "Recognized type RSS 2.0"); + Log.d(TAG, "Recognized type RSS 2.0"); return Type.RSS20; } else if (strVersion.equals("0.91") || strVersion.equals("0.92")) { - if (BuildConfig.DEBUG) - Log.d(TAG, - "Recognized type RSS 0.91/0.92"); + Log.d(TAG, "Recognized type RSS 0.91/0.92"); return Type.RSS091; } } throw new UnsupportedFeedtypeException(Type.INVALID); } else { - if (BuildConfig.DEBUG) - Log.d(TAG, "Type is invalid"); + Log.d(TAG, "Type is invalid"); throw new UnsupportedFeedtypeException(Type.INVALID, tag); } } else { eventType = xpp.next(); } } - } catch (XmlPullParserException e) { e.printStackTrace(); // XML document might actually be a HTML document -> try to parse as HTML @@ -88,10 +83,17 @@ public class TypeGetter { } catch (IOException e) { e.printStackTrace(); + } finally { + if(reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } } - if (BuildConfig.DEBUG) - Log.d(TAG, "Type is invalid"); + Log.d(TAG, "Type is invalid"); throw new UnsupportedFeedtypeException(Type.INVALID); } |