X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Frss%2FRSSReader.java;h=6d89d49c22b768590033e996e34fb57cea6715cd;hb=63e0ee1fb8038eb6d8f0190cf38c3b3ab2727216;hp=1d7bf402b023e58254a8f7d384791b3960a66742;hpb=8b91e8d8bf4a31a88440a404e83238dcf32f8f4a;p=mir.git diff --git a/source/mir/rss/RSSReader.java b/source/mir/rss/RSSReader.java index 1d7bf402..6d89d49c 100755 --- a/source/mir/rss/RSSReader.java +++ b/source/mir/rss/RSSReader.java @@ -30,13 +30,13 @@ package mir.rss; import java.io.InputStream; -import java.net.URL; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Vector; import mir.util.DateTimeFunctions; +import mir.util.HTTPClientHelper; import mir.util.xml.XMLParserEngine; import mir.util.xml.XMLParserExc; import mir.util.xml.XMLParserFailure; @@ -77,7 +77,7 @@ public class RSSReader { private Map moduleToPrefix; public RSSReader() { - modules = new Vector(); + modules = new ArrayList(); namespaceURItoModule = new HashMap(); moduleToPrefix = new HashMap(); @@ -118,7 +118,19 @@ public class RSSReader { public RSSData parseInputStream(InputStream aStream) throws RSSExc, RSSFailure { try { RSSData result = new RSSData(); - XMLParserEngine.getInstance().parse("xml.namespaceaware", aStream, new RootSectionHandler(result)); + XMLParserEngine.getInstance().parse("xml", aStream, new RootSectionHandler(result)); + + return result; + } + catch (Throwable t) { + throw new RSSFailure(t); + } + } + + public RSSData parseInputStream(InputStream aStream, String anEncoding) throws RSSExc, RSSFailure { + try { + RSSData result = new RSSData(); + XMLParserEngine.getInstance().parse("xml", aStream, anEncoding, new RootSectionHandler(result)); return result; } @@ -129,12 +141,30 @@ public class RSSReader { public RSSData parseUrl(String anUrl) throws RSSExc, RSSFailure { try { - InputStream inputStream = (InputStream) new URL(anUrl).getContent(new Class[] {InputStream.class}); + HTTPClientHelper httpClientHelper = new HTTPClientHelper(); + InputStream inputStream = httpClientHelper.getUrl(anUrl); + if (inputStream==null) + throw new RSSExc("RSSChannel.parseUrl: Can't get url content"); + RSSData theRSSData = parseInputStream(inputStream); + httpClientHelper.releaseHTTPConnection(); + return theRSSData; + } + catch (Throwable t) { + throw new RSSFailure(t); + } + } + + public RSSData parseUrl(String anUrl, String anEncoding) throws RSSExc, RSSFailure { + try { + HTTPClientHelper httpClientHelper = new HTTPClientHelper(); + InputStream inputStream = httpClientHelper.getUrl(anUrl); if (inputStream==null) throw new RSSExc("RSSChannel.parseUrl: Can't get url content"); - return parseInputStream(inputStream); + RSSData theRSSData = parseInputStream(inputStream, anEncoding); + httpClientHelper.releaseHTTPConnection(); + return theRSSData; } catch (Throwable t) { throw new RSSFailure(t); @@ -235,7 +265,7 @@ public class RSSReader { List value = (List) aResource.get(makeQualifiedName(aTag)); if (value==null) { - value = new Vector(); + value = new ArrayList(); aResource.set(makeQualifiedName(aTag), value); } @@ -349,7 +379,7 @@ public class RSSReader { private List items; public RDFCollectionSectionHandler() { - items = new Vector(); + items = new ArrayList(); } public mir.util.xml.SectionHandler startElement(String aTag, Map anAttributes) throws XMLParserExc { @@ -451,7 +481,7 @@ public class RSSReader { private List items; public RDFSequenceSectionHandler() { - items = new Vector(); + items = new ArrayList(); } public mir.util.xml.SectionHandler startElement(String aTag, Map anAttributes) throws XMLParserExc {