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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to