diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-09-01 12:55:35 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-09-01 12:55:35 +0200 |
commit | 0bfd5421a19dc6118fbe8aad068cc83cdbf6b279 (patch) | |
tree | 5a4b42a9037f2532a9c27ccadac99abc79e125fe /src | |
parent | 61edc98f8564a5cf3b675d8f206449ad8574cee6 (diff) | |
download | AntennaPod-0bfd5421a19dc6118fbe8aad068cc83cdbf6b279.zip |
Fixed problems in Atom feed parser
Diffstat (limited to 'src')
4 files changed, 29 insertions, 19 deletions
diff --git a/src/de/danoeh/antennapod/syndication/handler/SyndHandler.java b/src/de/danoeh/antennapod/syndication/handler/SyndHandler.java index d281fb021..4582aabba 100644 --- a/src/de/danoeh/antennapod/syndication/handler/SyndHandler.java +++ b/src/de/danoeh/antennapod/syndication/handler/SyndHandler.java @@ -22,7 +22,6 @@ public class SyndHandler extends DefaultHandler { private static final String DEFAULT_PREFIX = ""; protected HandlerState state; - public SyndHandler(Feed feed, TypeGetter.Type type) { state = new HandlerState(feed); if (type == TypeGetter.Type.RSS20) { @@ -49,8 +48,8 @@ public class SyndHandler extends DefaultHandler { if (!state.tagstack.empty()) { if (state.getTagstack().size() >= 2) { if (state.contentBuf != null) { - String content = new String(ch, start, length); - state.contentBuf.append(content); + String content = new String(ch, start, length); + state.contentBuf.append(content); } } } @@ -83,24 +82,29 @@ public class SyndHandler extends DefaultHandler { state.defaultNamespaces.push(new NSAtom()); } else if (prefix.equals(NSAtom.NSTAG)) { state.namespaces.put(uri, new NSAtom()); - if (AppConfig.DEBUG) Log.d(TAG, "Recognized Atom namespace"); + if (AppConfig.DEBUG) + Log.d(TAG, "Recognized Atom namespace"); } - } else if (uri.equals(NSContent.NSURI) && prefix.equals(NSContent.NSTAG)) { + } else if (uri.equals(NSContent.NSURI) + && prefix.equals(NSContent.NSTAG)) { state.namespaces.put(uri, new NSContent()); - if (AppConfig.DEBUG) Log.d(TAG, "Recognized Content namespace"); + if (AppConfig.DEBUG) + Log.d(TAG, "Recognized Content namespace"); } else if (uri.equals(NSITunes.NSURI) && prefix.equals(NSITunes.NSTAG)) { state.namespaces.put(uri, new NSITunes()); - if (AppConfig.DEBUG) Log.d(TAG, "Recognized ITunes namespace"); - } else if (uri.equals(NSSimpleChapters.NSURI) && prefix.equals(NSSimpleChapters.NSTAG)) { + if (AppConfig.DEBUG) + Log.d(TAG, "Recognized ITunes namespace"); + } else if (uri.equals(NSSimpleChapters.NSURI) + && prefix.equals(NSSimpleChapters.NSTAG)) { state.namespaces.put(uri, new NSSimpleChapters()); - if (AppConfig.DEBUG) Log.d(TAG, "Recognized SimpleChapters namespace"); + if (AppConfig.DEBUG) + Log.d(TAG, "Recognized SimpleChapters namespace"); } } private Namespace getHandlingNamespace(String uri) { Namespace handler = state.namespaces.get(uri); - if (handler == null && uri.equals(DEFAULT_PREFIX) - && !state.defaultNamespaces.empty()) { + if (handler == null && !state.defaultNamespaces.empty()) { handler = state.defaultNamespaces.peek(); } return handler; diff --git a/src/de/danoeh/antennapod/syndication/namespace/atom/AtomText.java b/src/de/danoeh/antennapod/syndication/namespace/atom/AtomText.java index 16beb277b..fec20de2f 100644 --- a/src/de/danoeh/antennapod/syndication/namespace/atom/AtomText.java +++ b/src/de/danoeh/antennapod/syndication/namespace/atom/AtomText.java @@ -10,22 +10,24 @@ public class AtomText extends SyndElement { public static final String TYPE_TEXT = "text"; public static final String TYPE_HTML = "html"; public static final String TYPE_XHTML = "xhtml"; - + private String type; private String content; - + public AtomText(String name, Namespace namespace, String type) { super(name, namespace); this.type = type; } - + /** Processes the content according to the type and returns it. */ public String getProcessedContent() { - if (type.equals(TYPE_HTML)) { + if (type == null) { + return content; + } else if (type.equals(TYPE_HTML)) { return StringEscapeUtils.unescapeHtml4(content); } else if (type.equals(TYPE_XHTML)) { return content; - } else { // Handle as text by default + } else { // Handle as text by default return content; } } @@ -41,7 +43,5 @@ public class AtomText extends SyndElement { public String getType() { return type; } - - } diff --git a/src/de/danoeh/antennapod/syndication/namespace/atom/NSAtom.java b/src/de/danoeh/antennapod/syndication/namespace/atom/NSAtom.java index 5cfec16cb..1fe5ef2f8 100644 --- a/src/de/danoeh/antennapod/syndication/namespace/atom/NSAtom.java +++ b/src/de/danoeh/antennapod/syndication/namespace/atom/NSAtom.java @@ -102,7 +102,12 @@ public class NSAtom extends Namespace { if (state.getTagstack().size() >= 2) { AtomText textElement = null; - String content = state.getContentBuf().toString(); + String content; + if (state.getContentBuf() != null) { + content = state.getContentBuf().toString(); + } else { + content = new String(); + } SyndElement topElement = state.getTagstack().peek(); String top = topElement.getName(); SyndElement secondElement = state.getSecondTag(); diff --git a/src/de/danoeh/antennapod/syndication/util/SyndDateUtils.java b/src/de/danoeh/antennapod/syndication/util/SyndDateUtils.java index 139cdf650..9a61f18e5 100644 --- a/src/de/danoeh/antennapod/syndication/util/SyndDateUtils.java +++ b/src/de/danoeh/antennapod/syndication/util/SyndDateUtils.java @@ -47,6 +47,7 @@ public class SyndDateUtils { SimpleDateFormat format = RFC822Formatter.get(); for (int i = 0; i < RFC822DATES.length; i++) { try { + format.applyPattern(RFC822DATES[i]); result = format.parse(date); break; } catch (ParseException e) { |