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;
018
019
020 /**
021 * <p>
022 * Interface for generic feeds that support feed directory structures. These
023 * are feed such as OPML and OCS that support nested feeds. This can be used
024 * within two systems to exchange feed lists.
025 *
026 * <p>
027 * This interface needs to be compatible with:
028 *
029 * <p>
030 *
031 * <dl>
032 * <dt>FDML</dt>
033 * <dd>http://www.intertwingly.net/wiki/fdml/</dd>
034 *
035 * <dt>OPML (Outline Processor Markup Language)</dt>
036 * <dt>OCS (Open Content Syndication)</dt>
037 *
038 * <dt>XFN (XHTML Friends Network)</dt>
039 *
040 * </dl>
041 *
042 * @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a>
043 * @version $Id: FeedDirectoryParserListener.java 373614 2006-01-30 22:31:21Z mvdb $
044 */
045 public interface FeedDirectoryParserListener extends FeedParserListener {
046
047 /**
048 * Called when an directory item is found. This is compatible with the
049 * FeedParserListener so that existing implementations work. This provides
050 * a mechanism to index FDML, OPML, OCS, etc with existing feed parsers.
051 *
052 * @param weblog The HTML URL to the root of the weblog. Example:
053 * http://www.peerfear.org
054 *
055 * @param title The title of the feed or weblog. Maybe be null when not
056 * specified.
057 *
058 * @param feed The XML URL to the RSS/Atom feed for this weblog. This may
059 * be null in some situations when we don't have a feed URL
060 *
061 * @see FeedParserListener#onItem
062 *
063 */
064 public void onItem( FeedParserState state,
065 String title,
066 String weblog,
067 String description,
068 String feed ) throws FeedParserException;
069
070 public void onItemEnd() throws FeedParserException;
071
072 /**
073 * Called when we've found a relation for a given item. This way you can
074 * specify the relationship you have with a given entry in your directory.
075 * This is mostly for compatibility purposes with XFN so that the values can
076 * be 'met', 'date', 'sweetheart', 'friend'.
077 *
078 * For XFN we would call onItem() methods and then onRelation() methods with
079 * each of the relations passed.
080 *
081 *
082 */
083 public void onRelation( FeedParserState state,
084 String value );
085
086 public void onRelationEnd();
087
088 /**
089 * Called when a new Folder is found. If feeds are in the default root
090 * folder this method is not called. This is mostly for OPML support but
091 * could be used within other feed formats. When this method isn't called
092 * one could assume that items are in the 'root' folder or no folder.
093 *
094 *
095 */
096 public void onFolder( FeedParserState state,
097 String name ) throws FeedParserException;
098
099 public void onFolderEnd() throws FeedParserException;
100
101 }
102