001    /*
002     * Copyright 1999,2004 The Apache Software Foundation.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.apache.commons.feedparser.example;
018    
019    import java.io.InputStream;
020    import java.util.Date;
021    
022    import org.apache.commons.feedparser.DefaultFeedParserListener;
023    import org.apache.commons.feedparser.FeedParser;
024    import org.apache.commons.feedparser.FeedParserException;
025    import org.apache.commons.feedparser.FeedParserFactory;
026    import org.apache.commons.feedparser.FeedParserListener;
027    import org.apache.commons.feedparser.FeedParserState;
028    import org.apache.commons.feedparser.network.ResourceRequest;
029    import org.apache.commons.feedparser.network.ResourceRequestFactory;
030    
031    /**
032     * Example use of the FeedParser
033     *
034     * @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a>
035     * @version $Id: HelloFeedParser.java 373622 2006-01-30 22:53:00Z mvdb $
036     */
037    public class HelloFeedParser {
038    
039        public static void main( String[] args ) throws Exception {
040    
041            //create a new FeedParser...
042            FeedParser parser = FeedParserFactory.newFeedParser();
043    
044            //create a listener for handling our callbacks
045            FeedParserListener listener = new DefaultFeedParserListener() {
046    
047                    public void onChannel( FeedParserState state,
048                                           String title,
049                                           String link,
050                                           String description ) throws FeedParserException {
051    
052                        System.out.println( "Found a new channel: " + title );
053    
054                    }
055    
056                    public void onItem( FeedParserState state,
057                                        String title,
058                                        String link,
059                                        String description,
060                                        String permalink ) throws FeedParserException {
061    
062                        System.out.println( "Found a new published article: " + permalink );
063                        
064                    }
065    
066                    public void onCreated( FeedParserState state, Date date ) throws FeedParserException {
067                        System.out.println( "Which was created on: " + date );
068                    }
069    
070                };
071    
072            //specify the feed we want to fetch
073    
074            String resource = "http://peerfear.org/rss/index.rss";
075    
076            if ( args.length == 1 )
077                resource = args[0];
078    
079            System.out.println( "Fetching resource:" + resource );
080            
081            //use the FeedParser network IO package to fetch our resource URL
082            ResourceRequest request = ResourceRequestFactory.getResourceRequest( resource );
083    
084            //grab our input stream
085            InputStream is = request.getInputStream();
086    
087            //start parsing our feed and have the above onItem methods called
088            parser.parse( listener, is, resource );
089    
090        }
091    
092    }
093