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 2004/10/04 02:59:47 UTC

cvs commit: jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate FeedLocator.java

burton      2004/10/03 17:59:47

  Modified:    feedparser/src/java/org/apache/commons/feedparser
                        AtomFeedParser.java
               feedparser/src/java/org/apache/commons/feedparser/impl
                        DebugFeedParserListener.java
               feedparser/src/java/org/apache/commons/feedparser/locate
                        FeedLocator.java
  Log:
  Now supports the atom:link mechanism with ALL links being called back
  
  Revision  Changes    Path
  1.13      +37 -1     jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/AtomFeedParser.java
  
  Index: AtomFeedParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/AtomFeedParser.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AtomFeedParser.java	31 Aug 2004 21:00:32 -0000	1.12
  +++ AtomFeedParser.java	4 Oct 2004 00:59:47 -0000	1.13
  @@ -159,6 +159,8 @@
               
               listener.onItem( state, title, link, description, link );
   
  +            doLink( state, listener, child );
  +            
               doMeta( state, listener, child );
   
               doContent( state, listener, child );
  @@ -171,6 +173,40 @@
   
       }
   
  +    private static void doLink( FeedParserState state,
  +                                FeedParserListener listener,
  +                                Element current ) throws Exception {
  +
  +        if ( listener instanceof LinkFeedParserListener == false )
  +            return;
  +
  +        LinkFeedParserListener lfpl = (LinkFeedParserListener)listener;
  +        
  +        XPath xpath = new XPath( "atom:link" );
  +        xpath.setNamespaceContext( NS.context );
  +
  +        List items = xpath.selectNodes( current );
  +
  +        Iterator it = items.iterator();
  +            
  +        //update items.
  +        while ( it.hasNext() ) {
  +
  +            Element link = (Element)it.next();
  +            
  +            String href = link.getAttributeValue( "href" );
  +            String rel = link.getAttributeValue( "rel" );
  +            String type = link.getAttributeValue( "type" );
  +
  +            String title = null;
  +            long length = -1;
  +
  +            lfpl.onLink( state, rel, type, href, title, length );
  +            
  +        }
  +        
  +    }
  +    
       private static void doContent( FeedParserState state,
                                      FeedParserListener listener,
                                      Element current ) throws Exception {
  
  
  
  1.9       +24 -2     jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java
  
  Index: DebugFeedParserListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/impl/DebugFeedParserListener.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DebugFeedParserListener.java	31 Aug 2004 21:00:32 -0000	1.8
  +++ DebugFeedParserListener.java	4 Oct 2004 00:59:47 -0000	1.9
  @@ -32,7 +32,8 @@
       extends DefaultFeedParserListener
       implements FeedParserListener,
                  FeedDirectoryParserListener,
  -               MetaFeedParserListener {
  +               MetaFeedParserListener,
  +               LinkFeedParserListener {
   
       PrintStream out = System.out;
   
  @@ -159,6 +160,27 @@
       public void onCreated( FeedParserState state, Date date ) throws FeedParserException {
   
           out.println( "onCreated: " + date.toString() );
  +        
  +    }
  +
  +    // **** LinkFeedParserListener **********************************************
  +
  +    /**
  +     *
  +     * 
  +     * @param length The length of the content or -1 if not specified.
  +     */
  +    public void onLink( FeedParserState state,
  +                        String rel,
  +                        String type,
  +                        String href,
  +                        String title,
  +                        long length ) throws FeedParserException {
  +
  +        out.println( "onLink: " );
  +        out.println( "\trel: " + rel );
  +        out.println( "\thref: " + href );
  +        out.println( "\ttype: " + type );
           
       }
   
  
  
  
  1.23      +6 -1      jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/FeedLocator.java
  
  Index: FeedLocator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/feedparser/src/java/org/apache/commons/feedparser/locate/FeedLocator.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- FeedLocator.java	30 Sep 2004 19:27:38 -0000	1.22
  +++ FeedLocator.java	4 Oct 2004 00:59:47 -0000	1.23
  @@ -104,7 +104,12 @@
           //String resource = "file:///projects/feedparser/tests/locate5.html";
           //String resource = "file:///projects/feedparser/tests/locate6.html";
   
  -        String resource = "http://flickr.com/photos/tags/cat/";
  +        
  +        //FIXME: add UNIT TESTS for Yahoo Groups and Flickr
  +        String resource = "http://groups.yahoo.com/group/aggregators/";
  +
  +        //String resource = "http://flickr.com/photos/tags/cats";
  +
           
           //String resource = "file:///projects/feedparser/tests/locate8.html";
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org