1.1 restoration
[mir.git] / source / mir / rss / RSSReader.java
index 1d7bf40..6d89d49 100755 (executable)
 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 {