1 /* 2 * Copyright 1999,2004 The Apache Software Foundation. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.apache.commons.feedparser; 18 19 import java.util.Date; 20 import java.util.Locale; 21 22 /** 23 * 24 * Provides a MetaData event listener for RSS 0.9x, RSS 1.0, 2.0 and Atom 25 * metadata values. 26 * 27 * Each format provides mechanisms to represent copyright strings, dates, 28 * modified times, etc. This interface provides a generic implementation for 29 * each. 30 * 31 * @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a> 32 * @version $Id: MetaFeedParserListener.java 373614 2006-01-30 22:31:21Z mvdb $ 33 */ 34 public interface MetaFeedParserListener { 35 36 public void onCopyright( FeedParserState state, String content ) throws FeedParserException; 37 public void onCopyrightEnd() throws FeedParserException; 38 39 /** 40 * 41 * --- ATOM SUPPORT --- 42 * 43 * The "atom:created" element's content indicates the time that the entry 44 * was created. Entries MAY contain an atom:created element, but MUST NOT 45 * contain more than one. When this element is present, its content MUST be 46 * a W3C Date-Time string [[ref]]. The date SHOULD be expressed in the "UTC" 47 * time zone [[reword?]]. 48 * 49 * If atom:created is not present, CONSUMERS MUST consider its value to be 50 * the same as that of atom:modified. 51 * 52 * http://www.mnot.net/drafts/draft-nottingham-atom-format-00.html#rfc.section.3.2.8 53 * 54 * --- RSS 2.0 SUPPORT --- 55 * 56 * <pubDate> is an optional sub-element of <item>. 57 * 58 * Its value is a date, indicating when the item was published. If it's a 59 * date in the future, aggregators may choose to not display the item until 60 * that date. 61 * 62 * <pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate> 63 * 64 * http://feedvalidator.org/docs/rss2.html#ltpubdategtSubelementOfLtitemgt 65 * 66 * --- RSS 1.0 SUPPORT --- 67 * 68 * We use dc:date which is ISO 8601 compliant. 69 * 70 * http://www.w3.org/TR/NOTE-datetime 71 * http://web.resource.org/rss/1.0/modules/dc/ 72 * 73 * 74 */ 75 public void onCreated( FeedParserState state, Date date ) throws FeedParserException; 76 public void onCreatedEnd() throws FeedParserException; 77 78 /** 79 * http://www.mnot.net/drafts/draft-nottingham-atom-format-00.html#rfc.section.3.2.7 80 * 81 * 82 */ 83 public void onIssued( FeedParserState state, String content ) throws FeedParserException; 84 public void onIssuedEnd() throws FeedParserException; 85 86 /** 87 * RSS 2.0 category. Dublin Core. 88 */ 89 public void onSubject( FeedParserState state, String content ) throws FeedParserException; 90 public void onSubjectEnd() throws FeedParserException; 91 92 /** 93 * Called when we've found an xml:lang or a dc:lang on Atom and RSS feeds. 94 * 95 * 96 */ 97 public void onLocale( FeedParserState state, Locale locale ) throws FeedParserException; 98 public void onLocaleEnd() throws FeedParserException; 99 100 /** 101 * Used to represent RSS 2.0 GUIDs and atom:id constructs. For Atom 102 * isPermalink should be ignored. 103 * 104 * 105 */ 106 public void onGUID( FeedParserState state, 107 String value, 108 boolean isPermalink ) throws FeedParserException; 109 110 public void onGUIDEnd() throws FeedParserException; 111 112 /** 113 * Called when a generator contruct is found within Atom or RSS 2.0 114 * 115 * 116 */ 117 public void onGenerator( FeedParserState state, String content ) throws FeedParserException; 118 public void onGeneratorEnd() throws FeedParserException; 119 120 /** 121 * Provided for author information across RSS 2.0, atom, dc:creator in RSS 122 * 1.0. Both email, and resource may be null if not specified. 123 * 124 * TODO: what does RSS 0.91, 0.9, etc provide? 125 * 126 * NOTE that this is not yet 100% compatible with FOAF person constructs. 127 * FOAF provides additional metadata including title, firstName, surname, 128 * nick, etc which we don't provide with this method. We'll probably add 129 * additional events for this in the future. 130 * 131 * 132 */ 133 public void onAuthor( FeedParserState state, 134 String name, 135 String email, 136 String resource ) throws FeedParserException; 137 138 public void onAuthorEnd() throws FeedParserException; 139 140 public void onComments( FeedParserState state, 141 String resource ) throws FeedParserException; 142 143 public void onCommentsEnd() throws FeedParserException; 144 145 public void onCommentsFeed( FeedParserState state, 146 String resource ) throws FeedParserException; 147 148 public void onCommentsFeedEnd() throws FeedParserException; 149 150 }