You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2005/01/30 01:51:59 UTC
svn commit: r149089 - in jakarta/commons/sandbox/feedparser/trunk: . src/java/org/apache/commons/feedparser tests/feeds xdocs
Author: burton
Date: Sat Jan 29 16:51:57 2005
New Revision: 149089
URL: http://svn.apache.org/viewcvs?view=rev&rev=149089
Log:
support for RSS 2.0 enclosures...
Added:
jakarta/commons/sandbox/feedparser/trunk/tests/feeds/rss-2.0-enclosure.rss
Modified:
jakarta/commons/sandbox/feedparser/trunk/TODO
jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java
jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java
jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java
jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml
Modified: jakarta/commons/sandbox/feedparser/trunk/TODO
Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/TODO?view=diff&rev=149089&p1=jakarta/commons/sandbox/feedparser/trunk/TODO&r1=149088&p2=jakarta/commons/sandbox/feedparser/trunk/TODO&r2=149089
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/TODO (original)
+++ jakarta/commons/sandbox/feedparser/trunk/TODO Sat Jan 29 16:51:57 2005
@@ -18,6 +18,10 @@
- (DONE) Remove ALL references to newsmonster IO layer.
+- (DONE) Support MetaFeedParser.onCreated() for RSS 2.0 /rss/channel/item/pubdate
+
+- (DONE) Implement RSS 2.0 enclosure linkage ... this should be an onLink handler.
+
- Atom GUIDs and RSS 2.0 GUIDs
- http://www.ietf.org/internet-drafts/draft-ietf-atompub-format-02.txt
@@ -28,15 +32,13 @@
http://diveintomark.org/tests/client/autodiscovery/
-- Support Base64 Atom values and the ability to enable them.
+- Support Base64 Atom values and the ability to enable them to be automatically decoded.
- Atom's xml:base is NOT supported right now. We NEED to support this.
- Do we support multiple content items in Atom?
- We do not support multipart/alternative in the feedparser.
-
-- Implement RSS 2.0 enclosure linkage ... this should be an onLink handler.
- Rework the factory mechanism to support multiple FeedParsers... should be an
interface.
Modified: jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java
Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java?view=diff&rev=149089&p1=jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java&r1=149088&p2=jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java&r2=149089
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java (original)
+++ jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/AtomFeedParser.java Sat Jan 29 16:51:57 2005
@@ -375,28 +375,5 @@
}
- //FIXME: unify this with RSSFeedParser.getChildElementTextByName
- private static String selectText( String query, Element element ) throws Exception {
-
- XPath xpath = new XPath( query );
- xpath.setNamespaceContext( NS.context );
-
- //perform onChannel method... (title, link, description)
- Element e = (Element)xpath.selectSingleNode( element );
-
- if ( e == null )
- return null;
-
- String result = e.getText();
-
- //The normalize method of XML SHOULD take care of this but for some
- //reason it doesnt.
- if ( result != null )
- result = result.trim();
-
- return result;
-
- }
-
}
Modified: jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java
Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java?view=diff&rev=149089&p1=jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java&r1=149088&p2=jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java&r2=149089
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java (original)
+++ jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/BaseParser.java Sat Jan 29 16:51:57 2005
@@ -38,7 +38,7 @@
* Basic parser support common between RSS, Atom, and FOAF feed impls.
*
* @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a>
- * @version $Id: BaseParser.java,v 1.2 2004/10/18 00:00:09 burton Exp $
+ * @version $Id$
*/
public class BaseParser {
@@ -102,5 +102,57 @@
return null;
}
-
+
+ // **** shared code for all parsers *****************************************
+
+ //FIXME: unify this with RSSFeedParser.getChildElementTextByName
+ protected static String selectText( String query, Element element ) throws Exception {
+
+ XPath xpath = new XPath( query );
+ xpath.setNamespaceContext( NS.context );
+
+ //perform onChannel method... (title, link, description)
+ Element e = (Element)xpath.selectSingleNode( element );
+
+ if ( e == null )
+ return null;
+
+ String result = e.getText();
+
+ //The normalize method of XML SHOULD take care of this but for some
+ //reason it doesnt.
+ if ( result != null )
+ result = result.trim();
+
+ return result;
+
+ }
+
+ /**
+ * Regardless of namespace, get the child node text by name or null if it is not found.
+ *
+ * @author <a href="mailto:burton@peerfear.org">Kevin A. Burton</a>
+ */
+ protected static String getChildElementTextByName( FeedParserState state,
+ String name ) throws Exception {
+
+ //FIXME: this can be rewritten to use getChild()
+
+ XPath xpath = new XPath( "descendant::*[local-name() = '" + name + "']" );
+ Object resultNode = xpath.selectSingleNode( state.current );
+
+ String resultText = null;
+
+ if ( resultNode != null )
+ resultText = ((Element)resultNode).getText();
+
+ //The normalize method of XML SHOULD take care of this but for some
+ //reason it doesnt.
+ if ( resultText != null )
+ resultText = resultText.trim();
+
+ return resultText;
+
+ }
+
}
Modified: jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java
Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java?view=diff&rev=149089&p1=jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java&r1=149088&p2=jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java&r2=149089
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java (original)
+++ jakarta/commons/sandbox/feedparser/trunk/src/java/org/apache/commons/feedparser/RSSFeedParser.java Sat Jan 29 16:51:57 2005
@@ -36,7 +36,7 @@
* Handles parsing RSS .
*
* @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a>
- * @version $Id: RSSFeedParser.java,v 1.15 2005/01/23 09:49:50 burton Exp $
+ * @version $Id$
*/
public class RSSFeedParser extends BaseParser {
@@ -258,36 +258,39 @@
MetaFeedParser.parse( listener, state );
TagFeedParser.parse( listener, state );
+
+ doEnclosures( listener, state );
listener.onItemEnd();
}
-
- /**
- * Regardless of namespace, get the child node text by name or null if it is not found.
- *
- * @author <a href="mailto:burton@peerfear.org">Kevin A. Burton</a>
- */
- public static String getChildElementTextByName( FeedParserState state,
- String name ) throws Exception {
- //FIXME: this can be rewritten to use getChild()
-
- XPath xpath = new XPath( "descendant::*[local-name() = '" + name + "']" );
- Object resultNode = xpath.selectSingleNode( state.current );
+ private static void doEnclosures( FeedParserListener listener,
+ FeedParserState state ) throws Exception {
+
+ if ( listener instanceof LinkFeedParserListener == false )
+ return;
- String resultText = null;
+ Element element = state.current.getChild( "enclosure" );
- if ( resultNode != null )
- resultText = ((Element)resultNode).getText();
+ if ( element == null )
+ return;
- //The normalize method of XML SHOULD take care of this but for some
- //reason it doesnt.
- if ( resultText != null )
- resultText = resultText.trim();
+ LinkFeedParserListener linkFeedParserListener = (LinkFeedParserListener)listener;
- return resultText;
+ String rel = null;
+ String type = element.getAttributeValue( "type" );
+ String href = element.getAttributeValue( "url" );
+ String title = null;
+ long length = Integer.parseInt( element.getAttributeValue( "length" ) );
+
+ linkFeedParserListener.onLink( state,
+ rel,
+ type,
+ href,
+ title,
+ length );
}
-
+
}
Added: jakarta/commons/sandbox/feedparser/trunk/tests/feeds/rss-2.0-enclosure.rss
Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/tests/feeds/rss-2.0-enclosure.rss?view=auto&rev=149089
==============================================================================
--- (empty file)
+++ jakarta/commons/sandbox/feedparser/trunk/tests/feeds/rss-2.0-enclosure.rss Sat Jan 29 16:51:57 2005
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!-- RSS generated by UserLand Frontier v9.0.1 on 10/17/2004; 2:40:35 PM Pacific -->
+<rss version="2.0">
+ <channel>
+ <title>Scripting News</title>
+ <link>http://www.scripting.com/</link>
+ <description>It's even worse than it appears.</description>
+ <language>en-us</language>
+ <copyright>Copyright 1997-2004 Dave Winer</copyright>
+ <pubDate>Sun, 17 Oct 2004 07:00:00 GMT</pubDate>
+ <lastBuildDate>Sun, 17 Oct 2004 21:40:35 GMT</lastBuildDate>
+ <docs>http://blogs.law.harvard.edu/tech/rss</docs>
+ <generator>UserLand Frontier v9.0.1</generator>
+ <managingEditor>dwiner@cyber.law.harvard.edu</managingEditor>
+ <webMaster>dwiner@cyber.law.harvard.edu</webMaster>
+
+ <item>
+ <description><a href="http://static.podcatch.com/manila/gems/un/eps.mp3">This is a test</a>. For the next sixty seconds this station will conduct a test of the Emergency Podcast System. </description>
+ <pubDate>Sun, 17 Oct 2004 17:36:38 GMT</pubDate>
+ <guid>http://archive.scripting.com/2004/10/17#When:10:36:38AM</guid>
+ <enclosure url="http://static.podcatch.com/manila/gems/un/eps.mp3" length="189455" type="audio/mpeg" />
+ </item>
+ <item>
+ <description><a href="http://static.podcatch.com/manila/gems/un/anotherTestAudioBlogPost.mp3">I got another</a> test blog post. An audio test blog post. Pay no attention to the man behind the curtain.</description>
+ <pubDate>Sun, 17 Oct 2004 19:11:14 GMT</pubDate>
+ <guid>http://archive.scripting.com/2004/10/17#When:12:11:14PM</guid>
+ <enclosure url="http://static.podcatch.com/manila/gems/un/anotherTestAudioBlogPost.mp3" length="106423" type="audio/mpeg" />
+ </item>
+ </channel>
+</rss>
Modified: jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml
Url: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml?view=diff&rev=149089&p1=jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml&r1=149088&p2=jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml&r2=149089
==============================================================================
--- jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml (original)
+++ jakarta/commons/sandbox/feedparser/trunk/xdocs/index.xml Sat Jan 29 16:51:57 2005
@@ -141,6 +141,10 @@
Helps enables tags within RSS feeds
</dd>
+ <dd>
+ RSS 2.0 enclosures
+ </dd>
+
</dl>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org