From e6bc803b0c7c6a5b3b7bc3a8872dcbf2ab634dc7 Mon Sep 17 00:00:00 2001 From: Martin Kurz Date: Wed, 25 Sep 2013 22:00:14 +0200 Subject: [PATCH 1/6] merged site, maven site config from test repo and some urls fixed --- README.md | 6 + pom.xml | 85 +- .../fetcher/BuildingTheRomeFetcher.md | 5 + src/site/markdown/fetcher/ChangeLog.md | 109 +++ .../Dependencies/HttpClientFeedFetcher.md | 5 + .../markdown/fetcher/Dependencies/index.md | 39 + src/site/markdown/fetcher/KnownIssues.md | 35 + .../fetcher/Releases/ROMEFetcher0.6.md | 43 + .../fetcher/Releases/ROMEFetcher0.7.md | 43 + .../fetcher/Releases/ROMEFetcher0.9.md | 47 ++ .../fetcher/Releases/ROMEFetcher1.0.md | 43 + .../fetcher/Releases/ROMEFetcher1.0RC2.md | 47 ++ .../fetcher/Releases/RomeFetcher0.3.md | 47 ++ .../fetcher/Releases/RomeFetcher0.4.md | 43 + .../fetcher/Releases/RomeFetcher0.5.md | 47 ++ src/site/markdown/fetcher/Releases/index.md | 1 + .../fetcher/SampleProgramsIncluded.md | 17 + src/site/markdown/fetcher/TodoList.md | 19 + ...singTheRomeFetcherModuleToRetrieveFeeds.md | 42 + src/site/markdown/fetcher/WishList.md | 9 + src/site/markdown/fetcher/index.md | 78 ++ src/site/markdown/incubator/Certiorem.md | 72 ++ .../markdown/incubator/CertioremTutorial.md | 174 ++++ src/site/markdown/incubator/index.md | 19 + src/site/markdown/mano/index.md | 577 ++++++++++++++ src/site/markdown/modules/A9OpenSearch.md | 55 ++ src/site/markdown/modules/Content.md | 36 + src/site/markdown/modules/CreativeCommons.md | 42 + src/site/markdown/modules/GeoRSS.md | 52 ++ src/site/markdown/modules/GoogleBase.md | 41 + .../markdown/modules/IPhotoPhotocasting.md | 52 ++ src/site/markdown/modules/ITunesPodcasting.md | 53 ++ src/site/markdown/modules/MediaRSS.md | 55 ++ .../modules/MicrosoftSimpleListExtensions.md | 52 ++ .../MicrosoftSimpleSharingExtensions.md | 37 + src/site/markdown/modules/Slash.md | 42 + src/site/markdown/modules/Weather.md | 40 + src/site/markdown/modules/index.md | 92 +++ src/site/markdown/opml/index.md | 145 ++++ .../markdown/propono/ROMEProponoVersion0.4.md | 15 + .../markdown/propono/ROMEProponoVersion0.5.md | 25 + .../markdown/propono/ROMEProponoVersion0.6.md | 84 ++ .../markdown/propono/ROMEProponoVersion1.0.md | 30 + src/site/markdown/propono/index.md | 29 + src/site/markdown/rome/ChangeLog.md | 752 ++++++++++++++++++ ...ningACustomModuleBeanParserAndGenerator.md | 384 +++++++++ ...egateManySyndicationFeedsIntoASingleOne.md | 147 ++++ ...ertASyndicationFeedFromOneTypeToAnother.md | 103 +++ ...ingRomeToCreateAndWriteASyndicationFeed.md | 205 +++++ ...TutorialUsingRomeToReadASyndicationFeed.md | 90 +++ ...andingTheRomeCommonClassesAndInterfaces.md | 374 +++++++++ src/site/markdown/rome/HowRomeWorks/index.md | 97 +++ src/site/markdown/rome/HowToBuildRome.md | 101 +++ src/site/markdown/rome/PreservingWireFeeds.md | 52 ++ .../rome/ProductsOrSitesPoweredByROME.md | 198 +++++ src/site/markdown/rome/ROMEAndMaven2.md | 56 ++ src/site/markdown/rome/ROMEAndOSGI.md | 13 + .../markdown/rome/ROMEDevelopmentProcess.md | 21 + .../ROME21stProposalJune10th2006NOTCURRENT.md | 428 ++++++++++ .../ROME22ndProposalJuly18th2006CURRENT.md | 434 ++++++++++ .../ROMEFeatureRequests.md | 54 ++ .../rome/ROMEDevelopmentProposals/index.md | 28 + src/site/markdown/rome/ROMEROADMAPProposed.md | 84 ++ ...1HowToBuildAndRunTheTutorialsSampleCode.md | 81 ++ ...egateManySyndicationFeedsIntoASingleOne.md | 158 ++++ ...ertASyndicationFeedFromOneTypeToAnother.md | 93 +++ ...TutorialUsingRomeToReadASyndicationFeed.md | 81 ++ .../ROME0.1Beta/RomeV0.1Tutorials/index.md | 17 + .../rome/ROMEReleases/ROME0.1Beta/index.md | 33 + ...egateManySyndicationFeedsIntoASingleOne.md | 144 ++++ ...ertASyndicationFeedFromOneTypeToAnother.md | 100 +++ ...TutorialUsingRomeToReadASyndicationFeed.md | 88 ++ .../ROME0.2Beta/RomeV0.2Tutorials/index.md | 17 + .../rome/ROMEReleases/ROME0.2Beta/index.md | 29 + ...3HowToBuildAndRunTheTutorialsSampleCode.md | 81 ++ ...ningACustomModuleBeanParserAndGenerator.md | 368 +++++++++ ...egateManySyndicationFeedsIntoASingleOne.md | 150 ++++ ...ertASyndicationFeedFromOneTypeToAnother.md | 105 +++ ...ingRomeToCreateAndWriteASyndicationFeed.md | 205 +++++ ...TutorialUsingRomeToReadASyndicationFeed.md | 93 +++ .../ROME0.3Beta/RomeV0.3Tutorials/index.md | 21 + .../rome/ROMEReleases/ROME0.3Beta/index.md | 33 + ...4HowToBuildAndRunTheTutorialsSampleCode.md | 85 ++ ...omeWithinAServletToCreateAndReturnAFeed.md | 243 ++++++ .../ROME0.4Beta/RomeV0.4Tutorials/index.md | 23 + .../rome/ROMEReleases/ROME0.4Beta/index.md | 68 ++ .../ROMEReleases/ROME0.5Beta/ROMET-Shirt.md | 21 + .../rome/ROMEReleases/ROME0.5Beta/index.md | 68 ++ .../markdown/rome/ROMEReleases/ROME0.6Beta.md | 64 ++ .../markdown/rome/ROMEReleases/ROME0.7Beta.md | 66 ++ .../markdown/rome/ROMEReleases/ROME0.8Beta.md | 74 ++ .../markdown/rome/ROMEReleases/ROME0.9Beta.md | 72 ++ .../markdown/rome/ROMEReleases/ROME1.0RC1.md | 42 + .../markdown/rome/ROMEReleases/ROME1.0RC2.md | 35 + .../rome/ROMEReleases/ROME1.0Release.md | 40 + src/site/markdown/rome/ROMEReleases/index.md | 135 ++++ src/site/markdown/rome/RomeAPIFAQ.md | 142 ++++ .../rome/RomeV0.4FeedAndEntryURIMapping.md | 112 +++ ...ndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md | 40 + ...tryUriPropertiesMapToRSSAndAtomElements.md | 108 +++ ...teElementsMappingToSyndFeedAndSyndEntry.md | 99 +++ ...RssAndAtOMUtilitiEsROMEPluginsMechanism.md | 222 ++++++ ...5HowToBuildAndRunTheTutorialsSampleCode.md | 89 +++ ...ningACustomModuleBeanParserAndGenerator.md | 391 +++++++++ ...egateManySyndicationFeedsIntoASingleOne.md | 147 ++++ ...ertASyndicationFeedFromOneTypeToAnother.md | 103 +++ ...ingROMEToCreateAndWriteASyndicationFeed.md | 205 +++++ ...TutorialUsingROMEToReadASyndicationFeed.md | 90 +++ ...OMEWithinAServletToCreateAndReturnAFeed.md | 243 ++++++ .../TheCopyFromInterface.md | 107 +++ ...ingRssAndAtOMUtilitiEsROMEBeanUtilities.md | 166 ++++ ...ROMEHelpsGettingTheRightCharsetEncoding.md | 172 ++++ .../index.md | 57 ++ .../markdown/rome/SitesToMoveFromJava.net.md | 551 +++++++++++++ .../markdown/rome/TutorialsAndArticles.md | 114 +++ .../rome/WhatPartOfTheAPIYouShouldBeUsing.md | 9 + ...ongWithOtherExistingRSSParsingLibraries.md | 95 +++ src/site/markdown/rome/WhyThisProject.md | 31 + src/site/markdown/rome/index.md | 85 ++ src/site/resources/.nojekyll | 0 src/site/resources/css/site.css | 8 + src/site/resources/images/romelogo.png | Bin 0 -> 10835 bytes src/site/site.xml | 25 + 123 files changed, 12578 insertions(+), 16 deletions(-) create mode 100644 README.md create mode 100644 src/site/markdown/fetcher/BuildingTheRomeFetcher.md create mode 100644 src/site/markdown/fetcher/ChangeLog.md create mode 100644 src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md create mode 100644 src/site/markdown/fetcher/Dependencies/index.md create mode 100644 src/site/markdown/fetcher/KnownIssues.md create mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md create mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md create mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md create mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md create mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md create mode 100644 src/site/markdown/fetcher/Releases/RomeFetcher0.3.md create mode 100644 src/site/markdown/fetcher/Releases/RomeFetcher0.4.md create mode 100644 src/site/markdown/fetcher/Releases/RomeFetcher0.5.md create mode 100644 src/site/markdown/fetcher/Releases/index.md create mode 100644 src/site/markdown/fetcher/SampleProgramsIncluded.md create mode 100644 src/site/markdown/fetcher/TodoList.md create mode 100644 src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md create mode 100644 src/site/markdown/fetcher/WishList.md create mode 100644 src/site/markdown/fetcher/index.md create mode 100644 src/site/markdown/incubator/Certiorem.md create mode 100644 src/site/markdown/incubator/CertioremTutorial.md create mode 100644 src/site/markdown/incubator/index.md create mode 100644 src/site/markdown/mano/index.md create mode 100644 src/site/markdown/modules/A9OpenSearch.md create mode 100644 src/site/markdown/modules/Content.md create mode 100644 src/site/markdown/modules/CreativeCommons.md create mode 100644 src/site/markdown/modules/GeoRSS.md create mode 100644 src/site/markdown/modules/GoogleBase.md create mode 100644 src/site/markdown/modules/IPhotoPhotocasting.md create mode 100644 src/site/markdown/modules/ITunesPodcasting.md create mode 100644 src/site/markdown/modules/MediaRSS.md create mode 100644 src/site/markdown/modules/MicrosoftSimpleListExtensions.md create mode 100644 src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md create mode 100644 src/site/markdown/modules/Slash.md create mode 100644 src/site/markdown/modules/Weather.md create mode 100644 src/site/markdown/modules/index.md create mode 100644 src/site/markdown/opml/index.md create mode 100644 src/site/markdown/propono/ROMEProponoVersion0.4.md create mode 100644 src/site/markdown/propono/ROMEProponoVersion0.5.md create mode 100644 src/site/markdown/propono/ROMEProponoVersion0.6.md create mode 100644 src/site/markdown/propono/ROMEProponoVersion1.0.md create mode 100644 src/site/markdown/propono/index.md create mode 100644 src/site/markdown/rome/ChangeLog.md create mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md create mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md create mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md create mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md create mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md create mode 100644 src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md create mode 100644 src/site/markdown/rome/HowRomeWorks/index.md create mode 100644 src/site/markdown/rome/HowToBuildRome.md create mode 100644 src/site/markdown/rome/PreservingWireFeeds.md create mode 100644 src/site/markdown/rome/ProductsOrSitesPoweredByROME.md create mode 100644 src/site/markdown/rome/ROMEAndMaven2.md create mode 100644 src/site/markdown/rome/ROMEAndOSGI.md create mode 100644 src/site/markdown/rome/ROMEDevelopmentProcess.md create mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md create mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md create mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md create mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/index.md create mode 100644 src/site/markdown/rome/ROMEROADMAPProposed.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md create mode 100644 src/site/markdown/rome/ROMEReleases/ROME1.0Release.md create mode 100644 src/site/markdown/rome/ROMEReleases/index.md create mode 100644 src/site/markdown/rome/RomeAPIFAQ.md create mode 100644 src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md create mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md create mode 100644 src/site/markdown/rome/SitesToMoveFromJava.net.md create mode 100644 src/site/markdown/rome/TutorialsAndArticles.md create mode 100644 src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md create mode 100644 src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md create mode 100644 src/site/markdown/rome/WhyThisProject.md create mode 100644 src/site/markdown/rome/index.md create mode 100644 src/site/resources/.nojekyll create mode 100644 src/site/resources/css/site.css create mode 100644 src/site/resources/images/romelogo.png create mode 100644 src/site/site.xml diff --git a/README.md b/README.md new file mode 100644 index 0000000..1c987c4 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +rome +==== + +ROME is a set of RSS and Atom Utilities for Java. It makes it easy to work in Java with most syndication formats: RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0 + +More Information: http://imk.github.io/rome/ diff --git a/pom.xml b/pom.xml index 216dcc3..13ac757 100644 --- a/pom.xml +++ b/pom.xml @@ -15,9 +15,9 @@ SyndFeed object that lets you work on with the data without bothering about the underlying format. - https://rome.dev.java.net/ + https://github.com/rometools/rome/ - https://rometools.jira.com/browse/ROME#selectedTab=com.atlassian.jira.plugin.system.project%3Aissues-panel + https://github.com/rometools/rome/issues @@ -32,15 +32,9 @@ dev@rome.dev.java.net - - https://rome.dev.java.net/servlets/ProjectMailingListList - - - https://rome.dev.java.net/servlets/ProjectMailingListList - - - https://rome.dev.java.net/servlets/SummarizeList?listName=dev - + https://rome.dev.java.net/servlets/ProjectMailingListList + https://rome.dev.java.net/servlets/ProjectMailingListList + https://rome.dev.java.net/servlets/SummarizeList?listName=dev @@ -66,9 +60,9 @@ - scm:svn:https://rometools.jira.com/svn/ROME/trunk - scm:svn:https://rometools.jira.com/svn/ROME/trunk - https://rometools.jira.com/source/browse/ROME + scm:git:git@github.com:rometools/rome.git + scm:git:git@github.com:rometools/rome.git + https://github.com/rometools/rome @@ -123,11 +117,42 @@ org.apache.maven.plugins maven-resources-plugin - 2.2 + 2.6 ${project.build.sourceEncoding} + + org.apache.maven.plugins + maven-site-plugin + 3.3 + + 9000 + ${basedir}/target/site/tempdir + + + + org.apache.maven.doxia + doxia-module-markdown + 1.4 + + + org.apache.maven.doxia + doxia-module-confluence + 1.4 + + + + + org.apache.maven.plugins + maven-scm-publish-plugin + 1.0-beta-2 + + gh-pages + scm:git:git@github.com:imk/rome.git + ${project.build.directory}/site + + @@ -197,5 +222,33 @@ UTF-8 - + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 2.6 + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9 + + + + javadoc + test-javadoc + + + + aggregate + false + + aggregate + + + + + + diff --git a/src/site/markdown/fetcher/BuildingTheRomeFetcher.md b/src/site/markdown/fetcher/BuildingTheRomeFetcher.md new file mode 100644 index 0000000..33f06d5 --- /dev/null +++ b/src/site/markdown/fetcher/BuildingTheRomeFetcher.md @@ -0,0 +1,5 @@ +# Building the Rome Fetcher + + +The Rome Fetcher can build using Maven 2. + diff --git a/src/site/markdown/fetcher/ChangeLog.md b/src/site/markdown/fetcher/ChangeLog.md new file mode 100644 index 0000000..fa96d02 --- /dev/null +++ b/src/site/markdown/fetcher/ChangeLog.md @@ -0,0 +1,109 @@ +# Change Log + +## Prior to first release (on the way to v0.3) + + + +1. Updated to handle removal of IO methods using byte streams + Byte Stream IO was removed from Rome itself. The Rome Fetcher is now updated to support this + +1. Add FeedFetcherI interface and FeedFetcherFactory class + There is now a FeedFetcherI interface, which FeedFetcher implements. Use FeedFetcherFactory to create instances of FeedFetcher (as suggested by Joseph Ottinger) (FeedFetcherFactory was later removed) + +1. Event Support Added to FeedFetcherI + The FeedFetcherI interface now supports feed polled, feed retrieved and feed unchanged events + +1. Samples added + Samples are now included with the Rome Fetcher + +1. Unit Tests Added + JUnit based tests which invoke the Rome Fetcher against an embedded Jetty webserver are now included + +1. Bug fixes in the FeedFetcher event model + The JUnit test suite uncovered some bugs in the event model used by the FeedFetcher. These bugs are now fixed. + +1. Refactored the SyndFeedInfo class + SyndFeedInfo now extends ObjectBean + +1. Removed FeedFetcherFactory + The benefit of the FeedFetcherFactory was arguable. Now the client code will need to manage the creation of specific implementations of the FeedFetcher + + +## Prior to second release (on the way to v0.4) + + + +1. Refectored to match Rome naming standards + FeedFetcherI renamed to FeedFetcher + #. New FeedFetcher Implementation + HttpClientFeedFetcher uses the Apache Commons HTTP Client + +1. Abstract test classes excluded in project.xml + Tests now run correctly under Maven + +1. Added GZip support to HttpClientFeedFetcher + HttpClientFeedFetcher now supports GZip compression. Tests have been added. + + +## Prior to third release (on the way to v0.5) + + + +1. SyndFeedInfo implements Serializable + SyndFeedInfo implements Serializable to make it easier to store + +1. Support for rfc3229 delta encoding + The Fetcher now supports rfc3229 delta encoding. See [http://www.ietf.org/rfc/rfc3229.txt](http://www.ietf.org/rfc/rfc3229.txt) and [http://bobwyman.pubsub.com/main/2004/09/using\_rfc3229\_w.html](http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html). Note that this is support is experimental and disabled by default + + +## Prior to 0.6 + + + +1. Feed passed to FetcherEvents + When a feed is retrieved it is now passed to the Fetcher Event. This makes it easier to code applications using an event oriented style. + + +## Prior to 0.7 + + + +1. Fix for URL Connection leak + In some circumstances URLConnection objects were not closed. This could cause problems in long\-running application. + + +## 0.8 was never released + + +## Prior to 0.9 + + + +1. Fix for potential synchronization issue + There was the possibility of synchronization issues in the FeedFetcher. Fixed, thanks to suggestions from Javier Kohen. + +1. New LinkedHashMapFeedInfoCache FeedFetcherCache implementation + The new LinkedHashMapFeedInfoCache has the advantage that it will not grow unbound + + +## Prior to 1.0RC2 + + + +1. BeanInfo class added for AbstractFeedFetcher + com.sun.syndication.fetcher.impl.AbstractFeedFetcherBeanInfo was created to allow introspection to correctly find the events + +1. Callback to allow access to HttpClient HttpMethod object + Add a HttpClientMethodCallbackIntf to allow the calling code to modify the HttpClient HttpMethod used to make the request (eg, add additinal headers, etc.) Also fixes a reported bug where the user agent wasn't being set properly + +1. Support for clearing cache + See [http://java.net/jira/browse/ROME\-119](http://java.net/jira/browse/ROME-119) for details + + +## Prior to 1.0 + + + +1. Support for preserving wire feed data. + The fetcher now has a setPreserveWireFeed() method which will setup ROME to preserve WireFeed data. See [PreservingWireFeeds](../rome/PreservingWireFeeds.html) for further information. + diff --git a/src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md b/src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md new file mode 100644 index 0000000..4274de3 --- /dev/null +++ b/src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md @@ -0,0 +1,5 @@ +# HttpClientFeedFetcher + + +An implementation of the `FeedFetcher` which uses the Jakarta HTTP Client. This HTTP client has many benefits over the standard Java implementation. + diff --git a/src/site/markdown/fetcher/Dependencies/index.md b/src/site/markdown/fetcher/Dependencies/index.md new file mode 100644 index 0000000..6ba2948 --- /dev/null +++ b/src/site/markdown/fetcher/Dependencies/index.md @@ -0,0 +1,39 @@ +# Dependencies + + +The Rome Fetcher aims to introduce the absolute minimum number of extra dependencies. Currently (30\-June\-2004) no extra dependencies over those required by Rome are required to use the fetcher. + + + +The current dependencies required to use the Rome Fetcher are: + + + +* JDK 1.4\+ + +* Current version of Rome + +* JDom v 1.0 + + + +To build the Rome Fetcher the [Jakarta HTTP Client](http://jakarta.apache.org/commons/httpclient/) is required. + + + +If the [HttpClientFeedFetcher.html](HttpClientFeedFetcher.html) fetcher implementation is used then the Jakarta HTTP Client and Jakarta Commons Logging is required. + + + +To build and run the unit tests for the Rome Fetcher the following additional dependencies are required: + + + +* servletapi version 2.3 + +* jetty 4.2.12 + + + +Note that Maven will automatically download the correct versions of all dependancies. + diff --git a/src/site/markdown/fetcher/KnownIssues.md b/src/site/markdown/fetcher/KnownIssues.md new file mode 100644 index 0000000..be39e6d --- /dev/null +++ b/src/site/markdown/fetcher/KnownIssues.md @@ -0,0 +1,35 @@ +# Known Issues + +## Version 0.3 + + + +* The Maven build does not run the jetty tests because of a bug in Maven + +* Version 0.3 does not have Xerces included in the project.xml (it is required to run the samples). Either get the latest project.xml from CVS, or [patch it yourself](https://rome.dev.java.net/source/browse/rome/subprojects/fetcher/project.xml?r1=1.1&r2=1.2) + +* 0.3 had a bug that caused it to overwite system properties. + + +## Version 0.4 + + + +* No known issues (yet!) + + +## Version 0.5 + + + +* When listening to feed events using FetcherListener, there is no way to get to the retrieved content, because it is set after firing the event. \-\- [jawe](http://wiki.java.net/twiki/bin/view/Javawsxml/Jawe) + +* When listening to feed events using FetcherListener, the feed URLs returned by the FetcherEvent are prepended with "sun.net.www.protocol.http.HttpURLConnection:" \-\- [jawe](http://wiki.java.net/twiki/bin/view/Javawsxml/Jawe) + + +## Version 0.7 + + + +* HashMapFeedInfoCache doesn't work quite right because URL.hashCode() does hostname resolution and treats virtual hosts with the same IP as equal, so e.g. all RSS feeds from blogspot.com collide in the cache. Also, it's really slow. Fix is to use URL.toExternalForm() as the hash key instead of the URL itself. + diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md b/src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md new file mode 100644 index 0000000..4be657c --- /dev/null +++ b/src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md @@ -0,0 +1,43 @@ +# ROME Fetcher 0.6 + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.6/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md b/src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md new file mode 100644 index 0000000..d6deb7c --- /dev/null +++ b/src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md @@ -0,0 +1,43 @@ +# ROME Fetcher 0.7 + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.7/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md b/src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md new file mode 100644 index 0000000..a730e6c --- /dev/null +++ b/src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md @@ -0,0 +1,47 @@ +# ROME Fetcher 0.9 + + +Note that there was no 0.8 Fetcher release + + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.9/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md b/src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md new file mode 100644 index 0000000..d967728 --- /dev/null +++ b/src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md @@ -0,0 +1,43 @@ +# ROME Fetcher 1.0 + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/1.0/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md b/src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md new file mode 100644 index 0000000..8e2eb14 --- /dev/null +++ b/src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md @@ -0,0 +1,47 @@ +# ROME Fetcher 1.0 RC2 + + +Note that there was no 1.0 RC1 Fetcher release + + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/1.0RC2/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/RomeFetcher0.3.md b/src/site/markdown/fetcher/Releases/RomeFetcher0.3.md new file mode 100644 index 0000000..4bd9902 --- /dev/null +++ b/src/site/markdown/fetcher/Releases/RomeFetcher0.3.md @@ -0,0 +1,47 @@ +# Rome Fetcher 0.3 + + +Rome Fetcher version 0.3 is inital release of the Rome Fetcher. It is released as version 0.3 to synchronize with the version number of the core Rome project release. + + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.3/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/RomeFetcher0.4.md b/src/site/markdown/fetcher/Releases/RomeFetcher0.4.md new file mode 100644 index 0000000..c37bab6 --- /dev/null +++ b/src/site/markdown/fetcher/Releases/RomeFetcher0.4.md @@ -0,0 +1,43 @@ +# Rome Fetcher 0.4 + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.4/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/RomeFetcher0.5.md b/src/site/markdown/fetcher/Releases/RomeFetcher0.5.md new file mode 100644 index 0000000..7f4fa71 --- /dev/null +++ b/src/site/markdown/fetcher/Releases/RomeFetcher0.5.md @@ -0,0 +1,47 @@ +# Rome Fetcher 0.5 + + +The ROME Fetcher v 0.6 is now released. This page exists for historical purposes only. + + +## Downloads + + +## Tutorials + + + +* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) + +* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) + + +## API Docs + + + +* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.5/overview-summary.html) + + +## Todo list + + + +* [../TodoList.html](../TodoList.html) + + +## Issues + + + +* [../KnownIssues.html](../KnownIssues.html) + + +## Change Log + + + +* [../ChangeLog.html](../ChangeLog.html) + diff --git a/src/site/markdown/fetcher/Releases/index.md b/src/site/markdown/fetcher/Releases/index.md new file mode 100644 index 0000000..ac239ca --- /dev/null +++ b/src/site/markdown/fetcher/Releases/index.md @@ -0,0 +1 @@ +# Releases diff --git a/src/site/markdown/fetcher/SampleProgramsIncluded.md b/src/site/markdown/fetcher/SampleProgramsIncluded.md new file mode 100644 index 0000000..af1f35f --- /dev/null +++ b/src/site/markdown/fetcher/SampleProgramsIncluded.md @@ -0,0 +1,17 @@ +# Sample programs included + + +There are two sample programs included with Rome Fetcher. + + + +[FeedReader](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/samples/FeedReader.java) is a program which demonstrates the use of the Fetcher to retrieve a feed and then to use the conditional get support to retrieve it again only if it has changed. It also shows how to use the event API in the Fetcher. It can be run using the `maven run\-read` target. + + + +[FeedAggregator](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/samples/FeedAggregator.java) is a program which aggregates a number of feeds together into a single feed. It can be run using the `maven run\-aggr` target. + + + +(Note that in verision 0.3 the Maven build does not include Xerces in the classpath \- which is required to use Rome. This is [easy to fix](https://rome.dev.java.net/source/browse/rome/subprojects/fetcher/project.xml?r1=1.1&r2=1.2).) + diff --git a/src/site/markdown/fetcher/TodoList.md b/src/site/markdown/fetcher/TodoList.md new file mode 100644 index 0000000..bf4f3cf --- /dev/null +++ b/src/site/markdown/fetcher/TodoList.md @@ -0,0 +1,19 @@ +# Todo list + + +Please discuss items here on the rome dev mailing list + + + +* Automatically update the \-[default User\-Agent version number](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/FeedFetcher.java) via the build\- Done: 23\-June\-2004 + +* Listener Architecture (for URL changes via 3xx redirection etc) Done: 30\-June\-2004 + +* [RSS Redirection](http://radio.userland.com/userGuide/reference/howToRedirectRss) + +* Unit Tests: smart unit tests along the lines of Mark Pilgrim's tests, in his \-[Python Universal Feed Parser](http://diveintomark.org/projects/feed_parser/). He instantiates a web server to a local directory where the samples live, and then fetches the feeds from the server, which allows him to test in depth the behavior of gzip compression and etags handling.\- Done 30\-June\-2004 + +* Better character encoding handling \- See [http://diveintomark.org/archives/2004/02/13/xml\-media\-types](http://diveintomark.org/archives/2004/02/13/xml-media-types) + +* A caching feed fetcher + diff --git a/src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md b/src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md new file mode 100644 index 0000000..f4e2e77 --- /dev/null +++ b/src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md @@ -0,0 +1,42 @@ +# Using the Rome Fetcher module to retrieve feeds + + +The HttpURLFeedFetcher class does the actual HTTP request. It relies on the FeedInfoCacheI interface which stores information about each feed required for conditional gets. Currently there is a single implementation of FeedInfoCacheI supplied: `HashMapFeedInfoCache`. + + + +The basic usage of FeedFetcher is as follows: + + + +``` + +FeedFetcherCache feedInfoCache = HashMapFeedInfoCache.getInstance(); +FeedFetcher feedFetcher = new HttpURLFeedFetcher(feedInfoCache); +SyndFeed feed = feedFetcher.retrieveFeed(new URL("http://blogs.sun.com/roller/rss/pat")); +System.out.println(feed); + +``` + + +Any subsequent fetches of [http://blogs.sun.com/roller/rss/pat](http://blogs.sun.com/roller/rss/pat) by any FeedFetcher using feedInfoCache will now only retrieve the feed if it has changed. + + + +FeedFetcher can be used without a cache if required. Simply create it using the zero\-parameter constructor: + + + +``` + +FeedFetcher feedFetcher = new HttpURLFeedFetcher(); + +``` + + +A more complete sample (including the use of listener on Fetcher events) [is included in the Rome Fetcher project](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/samples/FeedReader.java) + + + +Note that there has been considerable discussion on the rome\-dev list about the best way to manage the creation of the feed fetcher. Currently the client code needs to be responsible for creating specific implementations of the FeedFetcherI interface. + diff --git a/src/site/markdown/fetcher/WishList.md b/src/site/markdown/fetcher/WishList.md new file mode 100644 index 0000000..674715c --- /dev/null +++ b/src/site/markdown/fetcher/WishList.md @@ -0,0 +1,9 @@ +# Wish list + + +* [RSS Autodiscovery](http://diveintomark.org/archives/2002/05/31) + +* [Atom Autodiscovery](http://www.intertwingly.net/wiki/pie/PaceAutoDisco) + +* Connection timeout and read settings. + diff --git a/src/site/markdown/fetcher/index.md b/src/site/markdown/fetcher/index.md new file mode 100644 index 0000000..0c65b29 --- /dev/null +++ b/src/site/markdown/fetcher/index.md @@ -0,0 +1,78 @@ +# Home + +# Rome Fetcher + + + +The Rome Fetcher (see modules/fetcher) allows the retrieval of feeds via HTTP. It supports [HTTP conditional gets](http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers) (ie: last modified and ETag handling) and GZip encoded feeds. It should enable user to write aggregators that follow the [Atom aggregator behaviour recommendations](http://diveintomark.org/archives/2003/07/21/atom_aggregator_behavior_http_level) + + + +As with the rest of Rome, the Fetcher subproject is ultra\-lean \- it requires [no new dependencies](Dependencies/index.html) over the requirements for Rome. + + +# Tutorials + + + +* [BuildingTheRomeFetcher.html](BuildingTheRomeFetcher.html) + +* [UsingTheRomeFetcherModuleToRetrieveFeeds.html](UsingTheRomeFetcherModuleToRetrieveFeeds.html) + +* [SampleProgramsIncluded.html](SampleProgramsIncluded.html) + + +# Todo list + + + +* [TodoList.html](TodoList.html) + + +# Wish list + + + +* [WishList.html](WishList.html) + + +# Issues + + + +* [KnownIssues.html](KnownIssues.html) + + +# Releases + + + +* [Releases/RomeFetcher0.3.html](Releases/RomeFetcher0.3.html) + +* [Releases/RomeFetcher0.4.html](Releases/RomeFetcher0.4.html) + +* [Releases/RomeFetcher0.5.html](Releases/RomeFetcher0.5.html) + +* [Releases/ROMEFetcher0.6.html](Releases/ROMEFetcher0.6.html) + +* [Releases/ROMEFetcher0.7.html](Releases/ROMEFetcher0.7.html) + +* [Releases/ROMEFetcher0.9.html](Releases/ROMEFetcher0.9.html) + +* [Releases/ROMEFetcher1.0RC2.html](Releases/ROMEFetcher1.0RC2.html) + +* [Releases/ROMEFetcher1.0.html](Releases/ROMEFetcher1.0.html) + + +# Change Log + + + +* [ChangeLog.html](ChangeLog.html) + + + + + + + \ No newline at end of file diff --git a/src/site/markdown/incubator/Certiorem.md b/src/site/markdown/incubator/Certiorem.md new file mode 100644 index 0000000..f5225e2 --- /dev/null +++ b/src/site/markdown/incubator/Certiorem.md @@ -0,0 +1,72 @@ +# certiorem + + +Certiorem is an implementation of the [PubSubHubub ](http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html)protocol for ROME. + + + +It is dependent on ROME and ROME\-Fetcher for the base implementations, and will provide standard plugins for Propono to allow for publish eventing, where applicable. + + +## Primary Components + + +### Hub Implementation and Scaffolding (Done) + + + +The first part of Certiorem is a basic set of scaffolding classes that can be used to create a PSH notification hub. Initially, this will include a non\-guaranteed delivery hub, with standard implementations suitable for deployment on most JavaEE application servers or Google App Engine. It is intended that there should be at least one simple, drop in WAR file, utilizing JavaEE classes that can work in a default configuration for various standard web containers. Subsequently,  each of the classes in the PSH implementation up through the primary Controller class use constructor\-time composition/configuration so that the user/developer can easily construct a custom configuration of the Hub. + + +### Client Implementation Integrated with ROME\-Fetcher (Done) + + + +For web\-based applications that use ROME\-Fetcher, an extended push\-notified store wrapper that will update based on callbacks from a Hub of change notifications. This will include a highly configurable callback servlet to write into the Fetcher cache as changes are made. Additionally, the system should support (semi\-)real time notifications of changes in the form of a listener that exectutes in a TBD thread state relative to the callback servlet. This should be packaged as a simple JAR with no more deps than fetcher that defines the callback servlet, and automagically does subscribes where link\=rel appropriate. + + +### Notification Implementation for Propono based and JAX\-RS based Servers (In Progress) + + + +This should be a simple API call to notify a Hub of changes to topics. Again, this should provide real\-time notifications either synchronously or asynchronously. Importantly for Asynchronous notifications, they should block subsequent change notifications pending a notification to the Hub. + + + +References:  + + + +[https://github.com/nlothian/RTUpdates/blob/master/src/com/nicklothian/pubsubhub/PubSubHubSubscriptionServlet.java](https://github.com/nlothian/RTUpdates/blob/master/src/com/nicklothian/pubsubhub/PubSubHubSubscriptionServlet.java) + + + +[http://grack.com/blog/2009/09/09/parsing\-the\-pubsubhubbub\-notifications/](http://grack.com/blog/2009/09/09/parsing-the-pubsubhubbub-notifications/) + + +# Notes on the Code + + + +It is still mostly a rough sketch, but the big outlines are there: + + + +There are three main packages: pub, sub and hub. + + + +The pub package is basically just a single utility class for pushing notifications to a hub. + + + +The hub package contains the Hub class. This is a general business controller that is intended to allow you to build a servlet around it with a very, very thin veneer, but you could also use it to drive an XMPP or JMS version too. It is basically built by composition of a number of classes, for which there are some default implementations: A Verifier, which makes the callback to verify new subscriptions, the HubDAO which stores the current subscriptions and subscriber statistics, and a Notifier which actually sends notifications to the subscribers. There are a couple of implementations of each of these (though the JPA HubDAO is still in process). Mostly the implementations for the Verifier and Notifier support threadpooling or no\-threads (for App Engine use). + + + +I have just started sketching out the sub package, but it basically has a "Subscriptions" class that will take in notifications (using the same "thin veneer" pattern that the Hub class uses). It is also constructed with some impls: A SubscriptionDAO that stores you current subscription information, a FeedFetcherCache that holds the received data, and a Requester that makes the subscription requests to hubs. + + + +I am hoping to have a basic end to end example working sometime in the next week or so, but if anyone wants to look over what is there, feel free. + diff --git a/src/site/markdown/incubator/CertioremTutorial.md b/src/site/markdown/incubator/CertioremTutorial.md new file mode 100644 index 0000000..1b02ac0 --- /dev/null +++ b/src/site/markdown/incubator/CertioremTutorial.md @@ -0,0 +1,174 @@ +# Certiorem Tutorial + + +Certiorem is a PubSubHubub (PSH) implementation for ROME. It isn't an application, but an API for building each of the three components (Publisher, Subscriber and Hub) into your web apps. + + + +You can see an [example webapp here](https://rometools.jira.com/source/browse/INCUBATOR/trunk/pubsubhubub/webapp). + + +# Creating a Hub + + + +Hubs take notifications, or "Pings" that tell it the content of a feed has been updated, fetch the feed, then notify each of the subscribers of the change. As you will begin to see, Certiorem is very much about "Composition" of classes. The Hub class is a prime example of this. + + + +Looking at the example webapp we see: + + + +``` + +@Provides +@Singleton +public Hub buildHub() { + FeedFetcher fetcher = new HttpURLFeedFetcher(new DeltaFeedInfoCache()); +    Hub hub = new Hub(new InMemoryHubDAO(), new UnthreadedVerifier(), new UnthreadedNotifier(), fetcher); + +    return hub; +} + +``` + + +First we construct an instance of FeedFetcher, from the Fetcher subproject. This will be used to fetch feeds from remote hosts. There are a number of implementations for FeedFetcher and FeedInfoCache in the Fetcher project. Please look there for info on what is what. + + + +Next we need a HubDAO implementation. This is a DAO for managing Subscriber and SubscriptionSummary classes. Here we are using an in\-memory DAO, which like the HashMapFeedInfoCache will evaporate if we restart our web application. A JPA implementation for persistence is also available, but incomplete at time of writing. + + + +Next we need two implementations of network client interfaces: a Verifier, and a Notifier. The Verifier calls back to the Subscribers and verifies their subscribe/unsubscribe operations. A Notifier is used to send updates to to the clients. There are two basic implementations of these provided: A ThreadPool\* and Unthreaded\* version of each. The thread pool version uses a ThreadPoolExecutor to run queues of outbound calls. The Unthreaded version of each, makes the network calls in\-line with the request to the hub. These are suitable for environments like Google App Engine where spawning threads from servlets is absolutely verboten. + + + +There are other constructors that contain lists of restrictions for what the hub will support: acceptable topic feeds, ports, protocols, etc. + + + +The hub here is just a business logic class. In order to have a functioning hub, we need a servlet exposing the Hub. In the "web" package, there is an abstract servlet you can use to do just this. In the Guice wired example, we simply create a servlet with an injected Hub implementation. + + + +``` + +@Singleton +public class HubServlet extends AbstractHubServlet { + + @Inject + public HubServlet(final Hub hub){ + super(hub); + } +} +//... in the ServerModule... + + +serve("/hub*").with(HubServlet.class); + +``` + + +We can now include a \ value in our feeds and publish notifications of changes.  + + +# Publishing Ping Notifications + + + +This is perhaps the easiest thing to do. The Publisher class will take various combinations of URLs and SyndFeeds and send the appropriate notification. If your SyndFeed contains a \ and \ you can just pass the SyndFeed object. Otherwise, you can use the URL strings where appropriate. + + + +The example couldn't be simpler: + + + +``` + +Publisher pub = new Publisher(); +try { + pub.sendUpdateNotification("http://localhost/webapp/hub", "http://localhost/webapp/research-atom.xml"); +} catch (NotificationException ex) { + Logger.getLogger(NotifyTest.class.getName()).log(Level.SEVERE, null, ex); + throw new ServletException(ex); +} + +``` + + +Once this notification is sent, the hub will make a request to the feed and notify the clients of new entries. + + +# Subscribing to Feeds + + + +To set up a feed subscriber, you need to go through a process very much like setting up a Hub. First, create the Subscriptions class by composition: + + + +``` + +@Provides +@Singleton +public Subscriptions buildSubs(){ +    Subscriptions subs = new Subscriptions(new HashMapFeedInfoCache(), new AsyncRequester(), +            "http://localhost/webapp/subscriptions/", new InMemorySubDAO()); +    return subs; +} + +``` + + +First we need a FeedInfoCache implementation. This will be updated as notifications come in, so in your web app, you want to make sure this is shared with the FeedFetcher implementation you are using to read feeds. Next you need a Requester, this is a network class that makes subscription requests to remote hubs. Next, a URL prefix for where the callbacks will live. This really means the URL to the SubServlet that is resolvable externally. Finally, a DAO for storing and retrieving Subscription objects. + + + +As in the Hub, we need a wrapper servlet to call into the Subscriptions class + + + +``` + +@Singleton +public class SubServlet extends AbstractSubServlet { + + @Inject + public SubServlet(final Subscriptions subscriptions){ + super(subscriptions); + } +} + +// In the ServerModule... +serve("/subscriptions/*").with(SubServlet.class) + +``` + + +Now if we want to subscribe to a feed, we get a reference to the Subscriptions object, and pass in either the SyndFeed (with appropriate rel\="hub" and rel\="self" links) or simply a couple of URLs: + + + +``` + + subs.subscribe("http://localhost/webapp/hub", "http://localhost/webapp/research-atom.xml", true, -1, null, new SubscriptionCallback(){ + + public void onFailure(Exception e) { + e.printStackTrace(); + } + + public void onSubscribe(Subscription subscribed) { + System.out.println("Subscribed "+subscribed.getId() +" "+subscribed.getSourceUrl()); + } + + }); + +``` + + +Here we pass in the URL of the Hub, the URL of the feed, a boolean indicating we want to make the subscription request synchronously, the lease seconds we want to keep the subscription for, a null cryptographic secret, and a Callback invoked when the subscribe request completes. + diff --git a/src/site/markdown/incubator/index.md b/src/site/markdown/incubator/index.md new file mode 100644 index 0000000..792ad65 --- /dev/null +++ b/src/site/markdown/incubator/index.md @@ -0,0 +1,19 @@ +# Home + + +This is the home of the Incubator space. + + + +To help you on your way, we've inserted some of our favourite macros on this home page. As you start creating pages, blogging and commenting you'll see the macros below fill up with all the activity in your space. + + + +[Certiorem.html](Certiorem.html) The Certiorem project – A PubSubHubub implementation for ROME + + + + + + + Navigate space \ No newline at end of file diff --git a/src/site/markdown/mano/index.md b/src/site/markdown/mano/index.md new file mode 100644 index 0000000..0c1132c --- /dev/null +++ b/src/site/markdown/mano/index.md @@ -0,0 +1,577 @@ +# Home + +# ROME.Mano v0.0 pre\-Alpha + + + +Mano (_to flow_ in Latin) is a pipeline framework for RSS and Atom feeds. + + + +* [The Concept](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_Concept) + +* [Being More Concrete](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Being_More_Concrete) + +* [What Is in the Box?](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#What_Is_in_the_Box) + + * [The FeedHandler Public API](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_FeedHandler_Public_API) + + * [The Mano Servlet](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_Mano_Servlet) + + * [The FeedHandler Deployment Descriptor](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_FeedHandler_Deployment_Descr) + + * [The Handler Toolbox](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_Handler_Toolbox) + + * [Fetch Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Fetch_Handler) + + * [Convert Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Convert_Handler) + + * [Branding Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Branding_Handler) + + * [File Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#File_Handler) + + * [Clone Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Clone_Handler) + + * [Paginate Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Paginate_Handler) + + * [Multi Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Multi_Handler) + + * [Tracking Handler & Servlet](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Tracking_Handler_Servlet) + + * [Echo Handler (alias the Uploader)](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Echo_Handler_alias_the_Uploader) + + * [Null Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Null_Handler) + + * [Sort Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Sort_Handler) + + + + + +* [Building ROME.Mano](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Building_ROME_Mano) + +* [Sample ROME.Mano URLs](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Sample_ROME_Mano_URLs) + + +## The Concept + + + +Mano has been modeled after a widely accepted pattern, Java servlet filters. + + + +A request for a feed flows out through a chain of handlers until a feed is synthesized then the feed flows back through the chain in reverse order. + + + +As the request flows out handlers can modify the request, and when the request is flowing back with the feed the same handlers can them modify the feed. + + + +``` + +|| Mano framework || +|| || +|| +\-------\-+ +\-------\-+ || +feed URL \--> \|\| \| \| \--> ... \--> \| \| \|\| +|| | handler 1 | | handler N | || +feed <-\- \|\| \| \| <-\- ... <-\- \| \| \|\| +|| +\-------\-+ +\-------\-+ || +|| || + +``` + +## Being More Concrete + + + +The Mano framework is a Java Web Application that has a servlet serving feeds. + + + +Upon an HTTP request for a feed a Mano servlet based on the information in the request builds a handler sequence and invokes it, the response is a feed that is returned by the Mano servlet to the requester user\-agent. + + + +A feed reader user\-agent requests a feed to a server running the Mano framework WebApp. + + + +Based on information in the request the Mano servlet determines that the handlers to invoke are the convert and the fetch handlers and creates the corresponding handler chain. + + + +``` + + public class ManoFeedServlet extends HttpServlet { + + protected void doGet(HttpServletRequest req,HttpServletResponse res) + throws ServletException, IOException { + + FeedHandlerRequest handlerReq = createRequest(req); + FeedHandlerResponseImpl handlerRes = createResponse(req); + List handlerList = createHandlerList(req); + FeedHandlerChainImpl chain = + new FeedHandlerChainImpl(handlerReq, handlerRes, handlerList); + + chain.execute(); + ... + } + +} + +``` + + +When flowing out the convert handler does nothing but chaining the request for the next handler (handlers do not know anything about earlier and later handlers in the chain, that is managed by the Mano framework). + + + +``` + + public class ConvertFeedHandler extends BaseFeedHandler { + + public void handle(FeedHandlerRequest handlerRequest, + FeedHandlerResponse handlerResponse, FeedHandlerChain handlerChain) + throws FeedHandlerException, IOException { + + handlerChain.chain(handlerRequest, handlerResponse); + ... + } + +} + +``` + + +Then fetch handler receives the request, obtains the feed URL from a request parameter and using ROME Fetcher it fetches the feed. The resulting SyndFeed bean is set into the response by the fetch handler. The fetch handler is the end of the chain, it does not chain any further handlers. + + + +``` + + public class FetchFeedHandler extends BaseFeedHandler { + + public void handle(FeedHandlerRequest handlerRequest, + FeedHandlerResponse handlerResponse, FeedHandlerChain handlerChain) + throws FeedHandlerException, IOException { + + String url = handlerRequest.getParameter("fetch.url"); + SyndFeed feed = fetcher.retrieveFeed(new URL(url)); + handlerResponse.setSyndFeed(feed); + } + +} + +``` + + +At this point the Mano framework start the flow back of the request and the convert handler will regain control of the invocation, it will obtain the SyndFeed bean from the response and it will set the feed type of the bean to the type indicated in a request parameter. + + + +``` + + public class ConvertFeedHandler extends BaseFeedHandler { + + public void handle(FeedHandlerRequest handlerRequest, + FeedHandlerResponse handlerResponse, FeedHandlerChain handlerChain) + throws FeedHandlerException, IOException { + + handlerChain.chain(handlerRequest, handlerResponse); + + SyndFeed feed = handlerResponse.getSyndFeed(); + String toType = handlerRequest.getParameter("convert.to"); + feed.setFeedType(toType); + } + +} + +``` + + +The handler chain finishes, the control comes back to the Mano servlet, the Mano servlet gets the feed bean from the response (the handler response autoconverts from SyndFeed to WireFeed). The Mano servlet writes the feed bean to the servlet response. + + + +``` + + public class ManoFeedServlet extends HttpServlet { + + protected void doGet(HttpServletRequest req,HttpServletResponse res) + throws ServletException, IOException { + + ... + chain.execute(); + + WireFeed feed = handlerRes.getWireFeed(); + WireFeedOutput feedOutput = new WireFeedOutput(); + feedOutput.output(feed, res.getWriter()); + } + +} + +``` + + +The conversion from the original feed type to the feed type indicated in the convert.to parameter is done automatically by ROME when converting from SyndFeed to WireFeed just by setting the feed type in the SyndFeed bean. + + +## What Is in the Box? + + + +ROME.Mano includes the handler API, a Mano servlet, a handler manager that uses a handler Deployment Descriptor and a toolbox with handlers (convert, fetch, branding, paginate, multi, clone and file). + + +### The FeedHandler Public API + + + +* FeedHandler, methods: init(), handle() & destroy(). + +* FeedHandlerChain, method: chain(). + +* FeedHandlerConfig, methods: init parameters and context. + +* FeedHandlerRequest, methods: to handle parameters, headers, attributes and principal. + +* FeedHandlerResponse, methods: to set and retrieve WireFeed bean or SyndFeed bean, to set HTTP status, to set HTTP headers. + + + +* BaseFeedHandler, convenience base class implementation of the FeedHandler. + +* FeedHandlerException exception when something goes wrong. + + +### The Mano Servlet + + + +The Mano Servlet must be mapped to a path ending with '/\*'. The handlers and their invocation order must be indicated in the extra path, handler names must be separated by a '/'. + + + +Parameters in the query\-string are passed to the handlers, by convention the parameters should be namespaced with the name of the target handler. For example, for the **fetch** handler the **url** parameter should be named **fetch.url**. + + +### The FeedHandler Deployment Descriptor + + + +The handler deployment descriptor, by default at /WEB\-INF/feedhandler.xml defines all the available handlers. A handler manager controls the lifecycle of the handlers behinds the scenes. For example: + + + +``` + + + + fetch + com.sun.syndication.handler.toolbox.FetchFeedHandler + + + convert + com.sun.syndication.handler.toolbox.ConvertFeedHandler + + to.default + rss_1.0 + + + ... + + +``` + +### The Handler Toolbox + + + +A collection of handlers is provided with the Mano framework. + + +#### Fetch Handler + + + +It fetches a Feed URL. + + + +It fetches the feed URL indicated in the namespaced **url** parameter. It uses ROME Fetcher \=HttpURLFeedFetcher to fetch the feed. This handler stops the handler chain. + + +#### Convert Handler + + + +It converts a feed to the specified feed type. + + + +After invoking the handler chain for further processing it sets the feed type to the value of the namespaced **to** parameter or to a default feed type if the parameter is not specified. + + +#### Branding Handler + + + +It brands the description of the entries with the feed image (or the site favicon if there is not feed image) and the title. + + +#### File Handler + + + +It reads or writes a feed from disk. + + + +If the namespaced **read** parameter is present and there is a file with the value of the parameter (the value of the parameter does not have to be the URL of the feed, it can be any valid file name) the feed is read from the file and the handler stops the chain from continuing further out. If there is not file for the given ID then the handler lets the chain to continue further down. + + + +If the namespaced **write** parameter is present after the filter chain returns the feed is written to a file with the value of the parameter as name. + + + +If both **read** and **write** parameters are specified the handler acts a cache, if the read succeeds then read feed is returned, if the read fails then the chain continues and the obtained feed is written. A subsequent request will return the stored feed. + + +#### Clone Handler + + + +It does a deep clone of the returned feed and sets the clone in the response. + + + +Because feed beans are passed by reference between handlers, if a handler caches or stores feeds to be served to multiple users, it may be necessary to put a clone handler before it so earlier handlers modifying the feed do not affect the cached/stored feed. + + +#### Paginate Handler + + + +It paginates the entries of a feed. + + + +The namespaced **offset** (base 0)and **size** parameters indicate the range of entries to return. If **offset** is not present 0 is used. If **size** is not present a default value of 50 is used. + + +#### Multi Handler + + + +It invokes the handler chain multiple times and consolidates the entries of all invocations into a single feed. + + + +It is useful for merging feeds. For example, fetching N feeds and returning a single feed with all their entries. + + + +The namespaced **param** indicates the name of the multivalue parameter to iterate for the multiple invocations. Each one of the multiple invocations sets the parameter indicated in the **param** parameter to a single value corresponding to the current iteration. For example, the request URL: + + + +**http ://foo.com/mano/feed/multi/fetch?multi.param\=fetch.url&fetch.url\=A&fetch.url\=B&fetch.url\=C** + + + +It will result in 3 forked chain requests each one with a single value for the **fetch.url** parameter. + + + +* fetch.url\=A + +* fetch.url\=B + +* fetch.url\=C + + + +All the entries for the 3 chain requests will be aggregated in the feed bean returned by the MultiFeedHandler. + + + +If the **param** parameter is multivalue then the Multi handler will iterate over all those parameters. For example if **param** values are **fetch.url** and **file.write**: + + + +**http ://foo.com/mano/feed/multi/fetch?multi.param\=fetch.url&multi.param\=file.write&fetch.url\=A&fetch.url\=B&fetch.url\=C&file.write\=X&file.write\=Y&file.write\=Z** + + + +It will result in 3 forked chain request each one with single values for the **fetch.url** and **file.write** parameters: + + + +* fetch.url\=A&file.write\=X + +* fetch.url\=B&file.write\=Y + +* fetch.url\=C&file.write\=Z + + +#### Tracking Handler & Servlet + + + +Together the Tracking handler and servlet enable feed usage tracking, clicked links (feed site and entries) and viewed entries. + + + +The Tracking handler rewriting URLs within the feed to point to the Tracking servlet and adds an image URL (also pointing to the tracking servlet) to the entries descriptions. + + + +The Tracking servlet logs the ID, URL and type of usage (VIEW or CLICK). When a client clicks on a link or displays the description of an entry the Tracking servlet is invoked, it tracks the request using and ID in the URL and redirects to the original request or render a 1 pixel transparent image. + + + +The 'tracking.url' init parameter in the Tracking handler defines the URL of the Tracking servlet. + + + +The createTrackingId() method in the Tracking handler creating a dummy ID. For serious usage this method should be overriden. + + + +The track() method in the Tracking servlet is using a Logger to log tracking information. + + +#### Echo Handler (alias the Uploader) + + + +The Echo handler echoes (returns back) the feed POSTed to the Mano servlet. + + + +This handler, as opposed to the others in the toolbox, it requires running in a servlet container and it has to be fronted by a servlet that supports POST requests as the ManoServlet does. + + + +The POST request must have the handler parameters in the query\-string the content\-type header should be 'application/xml', the payload of the POST request must be a feed XML document and it's charset encoding it is assumed to be same as the one defined in the request. + + + +The curl command can be used to test this handler, for example: + + + +``` + + curl http://localhost:8080/mano/feed/echo \ + --data-binary @~/myfeed.xml --header "content-type: application/xml + +``` + + +An interesting use of the Echo handler is that together with the File handler it can be use o upload and store feeds, for example: + + + +``` + + curl http://localhost:8080/mano/feed/file/echo?file.write=myfeed \ + --data-binary @~/myfeed.xml --header "content-type: application/xml + +``` + +#### Null Handler + + + +The Null handler discards the feed from the response and returns no content. If the response had a feed it is discarded and the repose status code is set to NO CONTENT (204). If the response had an error code the error code is returned. + + +#### Sort Handler + + + +The Sort handler sorts entries by title or published date, in ascendent (default) or descendent order. + + + +The namespaced parameter by must be title (default) or date. The namespaced parameter order must be asc (default) or desc. + + + +NULL values are considered \-infinite for the purposes of ordering. + + +## Building ROME.Mano + + + +ROME.Mano is a ROME sub\-project, rome/subprojects/mano. + + + +It dependencies are ROME v0.8, JDOM v1.0, ROME Fetcher v0.8 and Servlet API v2.3\+. + + + +It uses Maven 1.0.2 to build, maven war. + + +## Sample ROME.Mano URLs + + + +Fetching a feed: + + + +* [http://localhost:8080/mano/feed/fetch?fetch.url\=http://wired.com/rss/index.xml](http://localhost:8080/mano/feed/fetch?fetch.url=http://wired.com/rss/index.xml) + + + +Fetching and converting a feed: + + + +* [http://localhost:8080/mano/feed/convert/fetch?convert.to\=atom\_0.3&fetch.url\=http://wired.com/rss/index.xml](http://localhost:8080/mano/feed/convert/fetch?convert.to=atom_0.3&fetch.url=http://wired.com/rss/index.xml) + + + +Fetching, converting and storing 3 feeds (one at the time): + + + +* [http://localhost:8080/mano/feed/file/convert/fetch?file.write\=a&convert.to\=atom\_1.0&fetch.url\=http://wired.com/rss/index.xml](http://localhost:8080/mano/feed/file/convert/fetch?file.write=a&convert.to=atom_1.0&fetch.url=http://wired.com/rss/index.xml) + +* [http://localhost:8080/mano/feed/file/convert/fetch?file.write\=b&convert.to\=atom\_1.0&fetch.url\=http://www.tbray.org/ongoing/ongoing.rss](http://localhost:8080/mano/feed/file/convert/fetch?file.write=b&convert.to=atom_1.0&fetch.url=http://www.tbray.org/ongoing/ongoing.rss) + +* [http://localhost:8080/mano/feed/file/convert/fetch?file.write\=acconvert.to\=atom\_1.0&fetch.url\=http://hotdeals.apple.com/newarrivals/rss/newarrivals.xml](http://localhost:8080/mano/feed/file/convert/fetch?file.write=acconvert.to=atom_1.0&fetch.url=http://hotdeals.apple.com/newarrivals/rss/newarrivals.xml) + + + +Fetching, converting and storing 3 feeds (all at once) and returning a merged feed with all their entries: + + + +* [http://localhost:8080/mano/feed/multi/file/convert/fetch?multi.param\=file.write&multi.param\=fetch.url&file.write\=wired&fetch.url\=http://wired.com/rss/index.xml&file.write\=cnn\-top&fetch.url\=http://rss.cnn.com/rss/cnn\_topstories.rss&file.write\=cnn\-world&fetch.url\=http://rss.cnn.com/rss/cnn\_world.rss&file.write\=salon\-sports&fetch.url\=http://salon.com/rss/sports.rss&convert.to\=atom\_1.0](http://localhost:8080/mano/feed/multi/file/convert/fetch?multi.param=file.write&multi.param=fetch.url&file.write=wired&fetch.url=http://wired.com/rss/index.xml&file.write=cnn-top&fetch.url=http://rss.cnn.com/rss/cnn_topstories.rss&file.write=cnn-world&fetch.url=http://rss.cnn.com/rss/cnn_world.rss&file.write=salon-sports&fetch.url=http://salon.com/rss/sports.rss&convert.to=atom_1.0) + + + +Reading 3 feeds previously written to disk, merging their entries and paginating the feed: + + + +* [http://localhost:8080/mano/feed/multi/branding/file?&multi.param\=file.read&file.read\=wired&file.read\=cnn\-top&file.read\=cnn\-world&file.read\=salon\-sports](http://localhost:8080/mano/feed/multi/branding/file?&multi.param=file.read&file.read=wired&file.read=cnn-top&file.read=cnn-world&file.read=salon-sports) + + + +Same as previous feed but with tracking, pagination and sorted: + + + +* [http://localhost:8080/mano/feed/tracking/sort/paginate/multi/branding/file?paginate.offset\=10&paginate.size\=20&multi.param\=file.read&file.read\=wired&file.read\=cnn\-top&file.read\=cnn\-world&file.read\=salon\-sports&sort.by\=title&sort.order\=desc](http://localhost:8080/mano/feed/tracking/sort/paginate/multi/branding/file?paginate.offset=10&paginate.size=20&multi.param=file.read&file.read=wired&file.read=cnn-top&file.read=cnn-world&file.read=salon-sports&sort.by=title&sort.order=desc) + + \ No newline at end of file diff --git a/src/site/markdown/modules/A9OpenSearch.md b/src/site/markdown/modules/A9OpenSearch.md new file mode 100644 index 0000000..00f5516 --- /dev/null +++ b/src/site/markdown/modules/A9OpenSearch.md @@ -0,0 +1,55 @@ +# A9 OpenSearch + + +This plug in is for use with [OpenSearch.org](http://www.opensearch.org/) results. + + + +The latest version is 0.1 available. + + +## Sample Usage + + + +``` + +SyndFeed feed = new SyndFeedImpl(); +feed.setFeedType(feedType); + +// Add the opensearch module, you would get information like totalResults from the +// return results of your search +List mods = feed.getModules(); +OpenSearchModule osm = new OpenSearchModuleImpl(); +osm.setItemsPerPage(1); +osm.setStartIndex(1); +osm.setTotalResults(1024); +osm.setItemsPerPage(50); + +OSQuery query = new OSQuery(); +query.setRole("superset"); +query.setSearchTerms("Java Syndication"); +query.setStartPage(1); +osm.addQuery(query); + +Link link = new Link(); +link.setHref("http://www.bargainstriker.com/opensearch-description.xml"); +link.setType("application/opensearchdescription+xml"); +osm.setLink(link); + +mods.add(osm); + +feed.setModules(mods); +// end add module + +``` + +## Changes + + +### 0.1 + + + +Initial move to the ROME project. + diff --git a/src/site/markdown/modules/Content.md b/src/site/markdown/modules/Content.md new file mode 100644 index 0000000..c09a740 --- /dev/null +++ b/src/site/markdown/modules/Content.md @@ -0,0 +1,36 @@ +# Content + + +This plug in is for use content:encoded in feeds. + + + +The latest version is 0.4 available. + + +## Sample Usage + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed syndfeed = input.build(new XmlReader(feed.toURL())); + +Module module = syndfeed.getModule("http://purl.org/rss/1.0/modules/content/"); +ContentModule content = (ContentModule) module; + +Iterator it = content.getEncodeds().iterator(); +System.out.println( it.next() ); + +``` + +## Changes + + +### 0.4 + + + +Initial move to the ROME project. + diff --git a/src/site/markdown/modules/CreativeCommons.md b/src/site/markdown/modules/CreativeCommons.md new file mode 100644 index 0000000..2773cbb --- /dev/null +++ b/src/site/markdown/modules/CreativeCommons.md @@ -0,0 +1,42 @@ +# Creative Commons + + +This plug in is for use with feeds from Creative Commons license. + + + +This module provides a unified rights and license system for both the RSS2/Atom and RSS/RDF namespace. However, if you wish to **generate** RDF/RSS feeds, you need to use a CVS build of ROME (or a version higher than 0.8). + + + +The latest version is 0.2 available. + + +## Sample Usage + + + +``` + +CreativeCommons commons = new CreativeCommonsImpl(); +commons.setLicense( new License[]{ License.NONCOMMERCIAL } ); +// Note, you do not have to setAllLicenses right now. When the RSS1 functionality is +// added, this will be required at the Feed level only. +ArrayList modules = new ArrayList() +modules.add( commons ); +syndEntry.setModules( commons ); + +//Alternately, to get the module: +CreativeCommons commons = (CreativeCommons) syndFeed.getModule( CreativeCommons.URI ); + +``` + +## Changes + + +### 0.2 + + + +Initial release from ROME. + diff --git a/src/site/markdown/modules/GeoRSS.md b/src/site/markdown/modules/GeoRSS.md new file mode 100644 index 0000000..080e79b --- /dev/null +++ b/src/site/markdown/modules/GeoRSS.md @@ -0,0 +1,52 @@ +# GeoRSS + + +This Rome plugin is for adding location information to RSS/Atom. + + + +The latest version is 0.1 available. + + +## Sample Usage + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(new URL("http://www.geonames.org/recent-changes.xml"))); + +List; entries = feed.getEntries(); +for (SyndEntry entry : entries) { + GeoRSSModule geoRSSModule = GeoRSSUtils.getGeoRSS(entry); + System.out.println(entry.getTitle() + " : lat=" + + geoRSSModule.getLatitude() + ",lng=" + + geoRSSModule.getLongitude() + ", desc=" + + entry.getDescription().getValue() + "; time=" + + entry.getPublishedDate()); + } + +//to generate a GeoRSS item + +GeoRSSModule geoRSSModule = new W3CGeoModuleImpl(); +//GeoRSSModule geoRSSModule = new SimpleModuleImpl(); +geoRSSModule.setLatitude(47.0); +geoRSSModule.setLongitude(9.0); +entry.getModules().add(geoRSSModule); + +``` + + +More information here: [http://georss.geonames.org/](http://georss.geonames.org/) + + +## Changes + + +### 0.1 + + + +Initial Releas from ROME + diff --git a/src/site/markdown/modules/GoogleBase.md b/src/site/markdown/modules/GoogleBase.md new file mode 100644 index 0000000..346c936 --- /dev/null +++ b/src/site/markdown/modules/GoogleBase.md @@ -0,0 +1,41 @@ +# Google Base + + +This plug in is for use with Google Base RSS/Atom Extensions + + + +The latest version is 0.2 available. + + +## Sample Usage + + + +``` + +SyndEntry entry = new SyndEntryImpl(); +// set up the entry... +Vehicle vehicle = new GoogleBaseImpl(); +vehicle.setMake("Honda"); +vehicle.setModel("Insight"); +vehicle.setYear( new Year("2000")); +List modules = new ArrayList(); +modules.add( vehicle ); +entry.setModules( modules ); + +//Optionally, to get Google Base information from a Feed: +Article article = entry.getModule( "http://base.google.com/ns/1.0" ); +System.out.println( article.getPages() ); + +``` + +## Changes + + +### 0.2 + + + +Initial release from ROME project. + diff --git a/src/site/markdown/modules/IPhotoPhotocasting.md b/src/site/markdown/modules/IPhotoPhotocasting.md new file mode 100644 index 0000000..56867b6 --- /dev/null +++ b/src/site/markdown/modules/IPhotoPhotocasting.md @@ -0,0 +1,52 @@ +# iPhoto Photocasting + + +This plug in is for use with iPhoto Photocast listings. + + + +This module will read and write photocast feeds "properly". Be advised, however, that an iPhoto photocast feed will not pass a FeedValidator test as they are not properly namespaced. If you are wanting to publish, rather than read, consider using the [MediaRSS.html](MediaRSS.html) plug in instead. iPhoto will also read [MediaRSS.html](MediaRSS.html) (Flickr Photostream) feeds as well. + + + +The latest version is 0.2 available. + + +## Sample Usage + + + +``` + +SyndFeed feed = input.build( new File( "/foo.rss" ) ) ); +List entries = feed.getEntries(); +for( int i =0; i < entries.size() ; i++ ){ + System.out.println( ((SyndEntry)entries.get(i)).getModule( PhotocastModule.URI ) ); +} + +// or to create a photocast module: + +SyndFeed myFeed = new SyndFeedImpl(); +myFeed.getModules().add( new PhotocastModuleImpl() ); +// you need this as a placeholder so the version gets in the feed. + +SyndEntry myEntry = new SyndEntryImpl(); +PhotocastModule pm = new PhotocastModuleImpl(); +pm.setUrl( new URL("http://foo.com/img.jpg" ) ); +pm.setThumnail( new URL("http://foo.com/img-small.jpg" ) ); +pm.setCropDate( new Date() ); +pm.setPhotoDate( new Date() ); +pm.setMetaData( new PhotoDate(), "Some comments that I think always get ignored." ); +myEntry.getModules().add( pm ); + +``` + +## Changes: + + +### 0.2 + + + +Initial move to the ROME project. + diff --git a/src/site/markdown/modules/ITunesPodcasting.md b/src/site/markdown/modules/ITunesPodcasting.md new file mode 100644 index 0000000..426f2d2 --- /dev/null +++ b/src/site/markdown/modules/ITunesPodcasting.md @@ -0,0 +1,53 @@ +# iTunes Podcasting + + +This plug in is for use with iTunes Music Service podcast listings. + + + +The latest version is 0.4 available. + + +## Sample Usage + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed syndfeed = input.build(new XmlReader(feed.toURL())); + +Module module = syndfeed.getModule("http://www.itunes.com/dtds/podcast-1.0.dtd"); +FeedInformation feedInfo = (FeedInformation) module; + +System.out.println( feedInfo.getImage() ); +System.out.println( feedInfo.getCategory() ); + +// Or to create a feed.. + +ArrayList modules = new ArrayList(); +EntryInformation e = new EntryInformationImpl(); +e.setDuration( new Duration( 10000 ) ); +modules.add( e ); +syndEntry.setModules( modules ); + +``` + +## Changes + + +### 0.4 + + + +* Corrected some Feed vs Item attribute issue. + +* Keywords now comma separated instead of space. + + +### 0.3 + + + +Added support for the "other" case of podcasts. It will now correctly parse all lowercase URIs as wells as the original mixed case URIs All generated feeds use the lowercase URI. Fixed some entity problems related to the apple summary tag. + diff --git a/src/site/markdown/modules/MediaRSS.md b/src/site/markdown/modules/MediaRSS.md new file mode 100644 index 0000000..f8e1b6a --- /dev/null +++ b/src/site/markdown/modules/MediaRSS.md @@ -0,0 +1,55 @@ +# MediaRSS + + +This plugin is for use with Yahoo! MediaRSS/Flickr Photostreams + + + +The latest version is 0.1 available. + + +## Sample Usage + + + +``` + +SyndFeed feed = input.build( myRSSFile ); +List entries = feed.getEntries(); +for( int i = 0; i < entries.size(); i++ ){ + System.out.println( ((SyndEntry) entries.get(i)).getModule( MediaModule.URI ) ); +} + +//Alternatively, to add a media item to an entry: + +MediaContent[] contents = new MediaContent[1]; +MediaContent myItem = new MediaContent( new UrlReference("http://me.com/movie.mpg") ); +contents[0] = myItem(); +Metadata md = new Metadata(); +Thumbnail[] thumbs = new Thumbnail[2]; +thumbs[0] = new Thumbnail( new URL("http://me.com/movie1.jpg") ); +thumbs[1] = new Thumbnail( new URL("http://me.com/movie2.jpg") ); +md.setThumbnail( thumbs ); +myItem.setMetadata( md ); +MediaEntryModuleImpl module = new MediaEntryModuleImpl(); +module.setMediaContents( contents ); +mySyndEntry.getModules().add( module ); + +``` + +## Changes + + +### 0.2.1 + + + +Bugfix for metadata on MediaGroups. + + +### 0.1 + + + +Initial release from ROME. + diff --git a/src/site/markdown/modules/MicrosoftSimpleListExtensions.md b/src/site/markdown/modules/MicrosoftSimpleListExtensions.md new file mode 100644 index 0000000..1f211ec --- /dev/null +++ b/src/site/markdown/modules/MicrosoftSimpleListExtensions.md @@ -0,0 +1,52 @@ +# Microsoft Simple List Extensions + + +This plug in is for use with feeds ith Microsoft Simple List Extensions. + + + +Note you need to use the current CVS version of ROME or 0.9 when available. + + + +The latest version is 0.1 available. + + +## Sample Usage + + + +``` + +SimpleListExtension sle = (SimpleListExtension) feed.getModule( SimpleListExtension.URI ); +System.out.println( sle ); +Group[] groups = sle.getGroupFields(); +System.out.println( groups[0].getLabel() ); + +//You can use the SleUtility class to do sorting and grouping: + +List sortedEntries = SleUtility.sort( feed.getEntries(), sle.getSortFields()[1], true ); +SyndEntry entry = (SyndEntry) sortedEntries.get( 0 ); + +//You can also Group or Sort and Group + +List sortedAndGroupedEntries = SleUtility.sortAndGroup( feed.getEntries, sle.getGroupFields(), sle.getSortFields()[0], false ); + +// If you change, for instance, module values on a feed and want to reinitialize it for +// grouping and sorting... + +SleUtility.initializeForSorting( feed ); + +// Be aware, this is a VERY heavy operation and should not be used frequently. + +``` + +## Changes + + +### 0.1 + + + +Initial release from ROME. + diff --git a/src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md b/src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md new file mode 100644 index 0000000..50b85a9 --- /dev/null +++ b/src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md @@ -0,0 +1,37 @@ +# Microsoft Simple Sharing Extensions + + +This ROME module supports Microsoft Simple Sharing Extensions, an RSS and [OPML](../opml/index.html) extension designed to support data synchronization between bi\-directional feeds. + + + +The latest version is 0.1 available. + + +## Sample Usage + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed syndfeed = input.build(new XmlReader(feed.toURL())); + +List entries = syndfeed.getEntries(); +Iterator it = entries.iterator(); + +for (int id = 101; it.hasNext() && id <= 113; id++) { + SyndEntry entry = (SyndEntry) it.next(); + Sync sync = (Sync) entry.getModule(SSEModule.SSE_SCHEMA_URI); + assertEquals(String.valueOf(id), sync.getId()); + + History history = sync.getHistory(); + assertNotNull(history); + + Date when = history.getWhen(); + assertNotNull(when); + Date testDate = DateParser.parseRFC822("Fri, 6 Jan 2006 19:24:09 GMT"); + assertEquals(testDate, when); +} + +``` diff --git a/src/site/markdown/modules/Slash.md b/src/site/markdown/modules/Slash.md new file mode 100644 index 0000000..761cea3 --- /dev/null +++ b/src/site/markdown/modules/Slash.md @@ -0,0 +1,42 @@ +# Slash + + +This plug in is for use with feeds from Slash\-based weblogs. + + + +The latest version is 0.2 available. + + +## Sample Usage + + + +``` + +SyndEntry entry = new SyndEntryImpl(); +// set up the entry... +Slash slash = new SlashImpl(); +slash.setComments( new Integer( 12 ) ); +slash.setDepartment( "look-another-rome-plugin" ); +slash.setSection("code"); +slash.setHitParade( new Integer[] { new Integer(12), new Integer(0) } ); +List modules = new ArrayList(); +modules.add( slash ); +entry.setModules( modules ); + +//Optionally, to get Slash information from a Feed: +Slash slash = entry.getModule( Slash.URI ); +System.out.println( slash.getComments() ); + +``` + +## Changes + + +### 0.2 + + + +Initial release from ROME. + diff --git a/src/site/markdown/modules/Weather.md b/src/site/markdown/modules/Weather.md new file mode 100644 index 0000000..50dc91d --- /dev/null +++ b/src/site/markdown/modules/Weather.md @@ -0,0 +1,40 @@ +# Weather + + +This plug in is for use the [Yahoo! Weather service](http://developer.yahoo.com/weather/). + + + +The latest version is 0.1 available. + + +## Sample Usage + + + +``` + +SyndFeed feed = input.build( ... ); +YWeatherFeedModule yfeed = (YWeatherFeedModule) feed.getModule( YWeatherFeedModule.URI ); +System.out.println( yfeed.getLocation().getCity() ); +SyndEntry entry = (SyndEntry) feed.getEntries().get(0); +YWeatherEntryModule yentry = (YWeatherEntryModule) entry.getModule( YWeatherEntryModule.URI ); +System.out.println( yentry.getForecasts()[0].getHigh() ); + +//Optionally, to add Weather information to a feed: +SyndEntry entry = new SyndEntryImpl(); +YWeatherEntryModule yentry = new YWeatherModuleImpl(); +yentry.setCondition( Condition("Partly Cloudy", ConditionCode.PARTLY_CLOUDY, 65, new Date() ) ); +entry.getModules.add(yentry); + +``` + +## Changes + + +### 0.1 + + + +Initial release from ROME. + diff --git a/src/site/markdown/modules/index.md b/src/site/markdown/modules/index.md new file mode 100644 index 0000000..6b18a9b --- /dev/null +++ b/src/site/markdown/modules/index.md @@ -0,0 +1,92 @@ +# Home + +## The ROME Modules Subproject. + + + +The ROME Modules project is an effort to roll up contributed module support into a single distribution for users. + + +## Current modules in the subproject include: + + + +* [ITunesPodcasting.html](ITunesPodcasting.html) – Apples extensions for listing in the iTunes podcast directory. + +* [GeoRSS.html](GeoRSS.html) – For adding location information to RSS/Atom. + +* [Slash.html](Slash.html) – Used by Slash\-based blogs. + +* [GoogleBase.html](GoogleBase.html) – For working with the Google Base types and custom tagsets. + +* [Content.html](Content.html) – For using content:encoded tags. + +* [CreativeCommons.html](CreativeCommons.html) – A unified module for working with the RDF and RSS/Atom Creative Commons License information. + +* [Yahoo! MediaRSS](MediaRSS.html) – For working with Yahoo! MediaRSS feeds (and Flickr Photostreams) + +* [IPhotoPhotocasting.html](IPhotoPhotocasting.html) – For working with Apple iPhoto Photocasts + +* [A9OpenSearch.html](A9OpenSearch.html) – For working with Amazon/OpenSearch.org results. + +* [MicrosoftSimpleListExtensions.html](MicrosoftSimpleListExtensions.html) – for sorting and grouping entries. + +* [MicrosoftSimpleSharingExtensions.html](MicrosoftSimpleSharingExtensions.html) – for synchronizing across bi\-directional RSS and [OPML](index.html) feeds. + +* [Yahoo! Weather](Weather.html) – For use with the Yahoo Weather API + + +## Get it. + + + +The 0.3.2 release of modules.jar (which contains all the above modules) is available. + + +### Downloads + + + +Please don't use modules\-0.3.jar. It had errors in the packaging which have been fixed in modules\-0.3.1.jar and subsequent releases + + + +See individual module sites for information. + + +## Changes + + +### 1.0 \- released 24 February 2011 + + + +Finalized 1.0 release. + + +### 0.3.2 \- released 30 Jan 2009 + + + +* [http://java.net/jira/browse/ROME\-122](http://java.net/jira/browse/ROME-122) + + +## General Guidelines for modules: + + + +This is intended to serve as a guide for contributions as well as a hint for users working with the modules. + + + +* Modules are packaged in com.sun.syndication.feed.module.\[Module Name\]. + +* Modules contain a com.sun.syndication.feed.module.\[Module Name\].Module.URI reference for retrieval from ROME Synd\* classes. + +* Modules contain a com.sun.syndication.feed.module.\[Module Name\].ModuleImpl that is a concrete implementation. + +* Modules contain a com.sun.syndication.feed.module.\[Module Name\].types package that holds any other datatypes needed for the module. Many of these are simple immutable types to simplify clone() and copyFrom() + +* Modules contain a com.sun.syndication.feed.module.\[Module Name\].io package with parsers and generators. + + \ No newline at end of file diff --git a/src/site/markdown/opml/index.md b/src/site/markdown/opml/index.md new file mode 100644 index 0000000..364ddbc --- /dev/null +++ b/src/site/markdown/opml/index.md @@ -0,0 +1,145 @@ +# Home + + +This project provides support for [OPML](http://www.opml.org/) in ROME. + + +## Downloads + + + +* [Binaries](https://rome.dev.java.net/servlets/ProjectDocumentList?folderID=5198) + +* [JavaDocs](https://rome.dev.java.net/nonav/apidocs/subprojects/opml/0.1/apidocs/index.html) + + +## Sample Usage + + + +To use this parser, simply include the jar file in your classpath as you are using ROME. Be sure it exists at the same level as ROME, such that, if ROME is in the common classpath of an application server, don't include this jar in your webapps WEB\-INF/lib. + + + +``` + +WireFeedInput input = new WireFeedInput(); + Opml feed = (Opml) input.build( new File("myOpml.xml") ); + List outlines = (List) feed.getOutlines(); + +``` + +## Hierarchy vs Flat + + + +Since OPML is a hierarchical format, some magic is required to preserve this information when they feed is moved to a Synd\* structure. This is accomplished by adding categories indicating the tree structure to the [SyndEntries](http://wiki.java.net/bin/edit/Javawsxml/SyndEntries?topicparent=Javawsxml.OPML;nowysiwyg=0) ... + + + +For example: + + + +``` + + + + Top Ten Sources for podcasting + Newsilike Media Group + opml@TopTenSources.com + + + + + + + + + + + + + + + + + + + + + +``` + + +... + When converted to RSS2 becomes: + + + +``` + + + Top Ten Sources for podcasting + http://foo.com + + Newsilike Media Group + + TopTenSources: podcasting + http://podcasting.TopTenSources.com/TopTenSources/ + node.-1732517202 + +http://podcasting.TopTenSources.com/TopTenSources/ + http://podcasting.TopTenSources.com/TopTenSources/ + + + CBS Technology News Podcast - Larry Magid' Tech Report + node.1353657827 + + + Larry Magid's Tech Report + http://www.cbsnews.com + node.-4085850 + parent.1353657827 + http://www.cbsnews.com + http://www.cbsnews.com + + + Adam Curry: Daily Source Code + node.835791399 + + + #374 Daily Source Code for Tuesday April 25th 2006 + http://radio.weblogs.com/0001014/2006/04/26.html#a7304 + node.222050897 + parent.835791399 + +http://radio.weblogs.com/0001014/2006/04/26.html#a7304 + http://radio.weblogs.com/0001014/2006/04/26.html#a7304 + + + #373 Daily Source Code for Monday April 24th 2006 + http://radio.weblogs.com/0001014/2006/04/24.html#a7303 + node.2088220478 + parent.835791399 + +http://radio.weblogs.com/0001014/2006/04/24.html#a7303 + http://radio.weblogs.com/0001014/2006/04/24.html#a7303 + + +``` + + +Nodes get categories with the "urn:rome.tree" URI that is used to maintain the tree structure. + + + +The other thing you will notice is the "urn:rome.attribute#url". Since OPML allows you to add arbitrary attributes to each outline element, these are used to preserve these values. + + \ No newline at end of file diff --git a/src/site/markdown/propono/ROMEProponoVersion0.4.md b/src/site/markdown/propono/ROMEProponoVersion0.4.md new file mode 100644 index 0000000..76fb971 --- /dev/null +++ b/src/site/markdown/propono/ROMEProponoVersion0.4.md @@ -0,0 +1,15 @@ +# ROME Propono Version 0.4 + + +This is the first release of the [Rome Propono](index.html) publishing library. It's a beta release and will be followed closely by Propono 0.5. + + +## Downloads + + +## API Docs + + + +* [Propono 0.4 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.4/overview-summary.html) + diff --git a/src/site/markdown/propono/ROMEProponoVersion0.5.md b/src/site/markdown/propono/ROMEProponoVersion0.5.md new file mode 100644 index 0000000..d1b3ab1 --- /dev/null +++ b/src/site/markdown/propono/ROMEProponoVersion0.5.md @@ -0,0 +1,25 @@ +# ROME Propono Version 0.5 + + +This is the second release of the [Rome Propono](index.html) publishing library. It's a bug fix release follow\-on to 0.4. Here are the changes: + + + +* Fixes in Blog Client constructors + +* AtomServlet uses application/atomsvc\+xml for the Service Document + +* Fixed issue #66: don't expect entry to be returned from update + +* Made example builds more configurable + + +## Downloads + + +## API Docs + + + +* [Propono 0.5 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.5/overview-summary.html) + diff --git a/src/site/markdown/propono/ROMEProponoVersion0.6.md b/src/site/markdown/propono/ROMEProponoVersion0.6.md new file mode 100644 index 0000000..5b2c53e --- /dev/null +++ b/src/site/markdown/propono/ROMEProponoVersion0.6.md @@ -0,0 +1,84 @@ +# ROME Propono Version 0.6 + + +September 30, 2007 + + + +This is the third release of the [Rome Propono](index.html) publishing library. It includes major changes to add support for the final Atom Publishing Protocol specification relative URIs and out\-of\-line categories. It's an an interim release it includes a pre\-release version of ROME 0.9.1\-dev. A new version will follow as soon as ROME 0.9.1 (or 1.0) has been finalized. + + +## Downloads + + +## API Docs + + + +* [Propono 0.6 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.6/overview-summary.html) + + +## Changes + + + +* Updated for APP final (draft #17) w/new APP URI "http://www.w3.org/2007/app" + +* Tested file\-based server against Tim Bray's Ape (from CVS September 30, 2007). + +* Now includes pre\-release of ROME 0.9.1 with key Atom parse fixes. + +* Changed arguements in Atom server's AtomHandler interface to accept AtomRequest objects instead of String\[\] pathinfo arrays. + +* Added support for relative URIs in the Service Document + + * Fixes [http://java.net/jira/browse/ROME\-67](http://java.net/jira/browse/ROME-67) + + * Added Collection.getHrefResolved() + + * Added Categories.getHrefResolved() + + + +* Added new options to the file\-based server's propono.properties file so you can turn on/off relative URIs and inline categories. + + * propono.atomserver.filebased.relativeURIs\=true + + * propono.atomserver.filebased.inlineCategories\=true + + + +* Added support for out\-of\-line categories in Atom client classes + + * Added new Categories.href property + + * New ClientCategories classes can fetch remote categories from href URI + + * Fixes [http://java.net/jira/browse/ROME\-68](http://java.net/jira/browse/ROME-68) + + + +* Added support for out\-of\-line categories in Atom server classes + + * New AtomHandler.getCategoriesDocument(String\[\] pathInfo) method + + * New AtomHandler.isCategoriesDocumentURI(String\[\] pathInfo) method + + + +* Renamed Introspection to Service Document + + * AtomHandler.isIntrospectionURI() \-\> AtomHandler.isSerivceDocumentURI() + + * AtomHandler.getIntrospection() \-\> AtomHandler.getServiceDocument() + + * Added String\[\] pathInfo argument to getServiceDocument() + + + +* Renamed PubControlModule to AppModule becuase it also supports app:edited + + * Added rome.properties file to configure AppModule + + + diff --git a/src/site/markdown/propono/ROMEProponoVersion1.0.md b/src/site/markdown/propono/ROMEProponoVersion1.0.md new file mode 100644 index 0000000..5bba5dd --- /dev/null +++ b/src/site/markdown/propono/ROMEProponoVersion1.0.md @@ -0,0 +1,30 @@ +# ROME Propono Version 1.0 + + +April 2009 + + + +ROME Propono 1.0 is coming soon. If you'd like to help out, you can try 1.0 RC1 and provide feedback to us on the ROME dev mail list. + + +## Downloads + + +## API Docs + + + +* [Propono 1.0 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/1.0/overview-summary.html) + + +## Changes + + + +* Updated to ROME 1.0 + +* Added support for pluggable authentication in the AtomPub client + +* Added support for OAuth in the AtomPub client, see Javadocs for details + diff --git a/src/site/markdown/propono/index.md b/src/site/markdown/propono/index.md new file mode 100644 index 0000000..2db6755 --- /dev/null +++ b/src/site/markdown/propono/index.md @@ -0,0 +1,29 @@ +# Home + +# ROME Propono + + + +The ROME Propono subproject is a Java class library that supports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API. + + +# Documentation + + + +* See the [Propono API docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.6/overview-summary.html) for an explanation of Propono usage, diagrams and code examples. + + +# Releases + + + +* [ROMEProponoVersion1.0.html](ROMEProponoVersion1.0.html) \- Release 1.0 coming soon... + +* [ROMEProponoVersion0.6.html](ROMEProponoVersion0.6.html) + +* [ROMEProponoVersion0.5.html](ROMEProponoVersion0.5.html) + +* [ROMEProponoVersion0.4.html](ROMEProponoVersion0.4.html) + + \ No newline at end of file diff --git a/src/site/markdown/rome/ChangeLog.md b/src/site/markdown/rome/ChangeLog.md new file mode 100644 index 0000000..989f8d2 --- /dev/null +++ b/src/site/markdown/rome/ChangeLog.md @@ -0,0 +1,752 @@ +# Change Log + +## Changes made since v1.0 + + + +1. [Issue 127](http://java.net/jira/browse/ROME-127): Rome 1.0 not JDK 1.4 compatible + + +## Changes made since v1.0RC2 + + + +1. [Issue 121](http://java.net/jira/browse/ROME-121): RSS item category iteration should try to reflect document order + +1. New property preserveWireFeed available on SyndFeedInput + WireFeeds will be preserved if the property preserveWireFeed is set on the SyndFeedInput object it is built from. Atom/RSS Entry/Item objects are also available from SyndEntry objects if the WireFeed is preserved using the new getWireEntry() method. See [PreservingWireFeeds.html](PreservingWireFeeds.html) for details. + + +## Changes made since v1.0RC1 + + + +1. Fix. Date parsing for Atom10 entry and additional W3C masks + Item date elements were being parsed with the W3C parser instead the lenient one (RFC822 \+ W3C \+ custom masks). + The following masks were added to W3C masks to handle RFC822 timezone (ie '\-800'): + +``` + +yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd't'HH:mm:sszZ + +``` + + +1. Fix. Contributors properties in SyndEntry were not implementing the semantics of list properties. + They were returning NULL instead, now they return an empty list if not values are set. + +1. Fix. Contributors properties in SyndEntry and SyndFeed were not being converted to/from WireFeed + +1. Fix. Syndication Module Generator was failing if some of its values were null. + Checks for nulll have been added it to the generator to prevent NullPointerExceptions + +1. New. Added new constructor to XmlReader + +``` + +public XmlReader(InputStream is, boolean lenient, String defaultEncoding) + +``` + + +1. New. Support atom person construct extensions, using the Extendable interface on SyndPerson: + Patch from James Roper. See [Issue 1101](http://java.net/jira/browse/ROME-110) for details + +1. New. Maven 2 build for main project + ROME can now be built with Maven 2 + +1. New. OSGi support + OSGi headers to MANIFEST.MF so that rome.jar can also be used in an OSGi environment. See [Issue 117](http://java.net/jira/browse/ROME-117) for details. + +1. New. Allow pretty printing to be turned on and off + see [Issue 114](http://java.net/jira/browse/ROME-114) for details. Thanks to Martin Kurz for the patch. + +1. Configurable classloading behavior for OSGi compatibility. + We have received a report of some issues with plugin loading in an OSGi environment ([Issue 118](http://java.net/jira/browse/ROME-118)). The fix appears to be to change Class.forName to classLoader.loadClass, but the semantics for this are subtly different, so we have made this new behavior user selectable. Set the "rome.pluginmanager.useloadclass" system property to "true" to enable it. + +1. More lenient number parsing + There were a number of problems with feeds providing blank or invalid values in fields which would be numbers. ROME will now handles these better. See issues [104](http://java.net/jira/browse/ROME-104), [107](http://java.net/jira/browse/ROME-107) and [108](http://java.net/jira/browse/ROME-108) for details. + + +## Changes made from v0.9 to v1.0RC1 + + + +1. New. XmlReader support for default encoding + The XmlReader can be set with an alternate default encoding in case no encoding has been detected from the transport (HTTP), the stream or the XML prolog. if no value is set the default fallback rules based on the content\-type will be used. The alternate default encoding can be set/viewed via a static methods, **setDefaultEncoding()** and **getDefaultEncoding()**. + +1. Fix. Atom 1.0 links were generated without title and length attributes. + The Atom 1.0 Generator was not generating title and length attributes when values are present. + +1. Fix. XmlReader, multi\-line prolog encoding detection. + XmlReader handles properly xml\-prolog detection when prolog goes over multiple lies (such as G groups feeds). + +1. Fix. Base64 decoding was failing under certain padding conditions. + +1. Fix. XmlReader fixes + Fixed bug that if BOM is UTF8 was not being set to UTF8. Changed logic to use Buffered stream instead pushback stream for all encoding detection. Changed logic of xml prolog detection to avoid having a buffer with half of a unicode character (instead filling up the buffer looking up to first '\>' which means it a valid buffer). + +1. New. XmlReader supports default encoding at instance level. + Via a new constructor is possible to indicate a default encoding different than the default encoding at class level. + +1. Fix. Making the EqualsBean to follow equals contract. + For X.equals(null) it was throwing a NullPointerException, now it returns FALSE. + +1. Fix. Render Atom icon and logo attributes. + AtomGenerator now adds icon and logo elements to xml tree + +1. Fix. Updated AtomPub namespace to its permenent home. + AtomService namespace updated to [http://www.w3.org/2007/app](http://www.w3.org/2007/app) + +1. New. Added support for configuration per classloader level. + The PluginManager (handles Parsers and Generators) now is singleton at classloader level allowing different configurations in different classloaders. + +1. Atom parser: better relative URI handling + Instead of simply resolving each relative URI at runtime and saving only the resolved one, we now save both the relative URI and the resolve one. We introduced the following new methods to provide access to the resolved URI. + + * Link.getLinkResolved() + + * Link.setLinkResolved() + + * Category.getSchemeResolved() + + * Category.setSchemeResolved() + + * Person.getUriResolved() + + * Person.setUriResolved() + + + +1. Utility methods useful in working with Atom protocol feeds + Added a couple of methods to make it easier to deal with Atompub feeds. + + * Entry.isMediaEntry() + + * Atom10Parser.parseEntry() + + * Atom10Generator.serializeEntry() + + + +1. Bugs fixed + Fixed the following bugs: + + * 49 Better content/summary mapping + + * 53 Content.setType not working with subtitles atom 1.0 + + * 56 fix of bug #39 leads to invalid atom feeds + + * 63 Missing link attribute when generating Atom 1.0 + + * 64 ROME's Atom parser doesn't pick up multiple alt links + + * 65 Atom feeds not including logo image + + * 71 encoding problem in XmlReader.getXmlProlog() + + * 79 Feed.setIcon()/setLogo() ignored by Atom10Generator + + * 81 SyndFeedImpl.equals() does not obey equals contract + + + +1. Fix. Parsers where ignoring namespaced prefixed Attributes. + If an XML feed uses a prefix for the Atom elements and the attributes of Atom elements use the prefix the parser was not picking up those attributes. + The fix makes the parser to look for prefixed and non\-prefixed attributes. + +1. Fix. Atom Feed and Entry beans author and category property getters + They were returning NULL when there were not authors or categories, they must return an empty list. + +1. New. Switch to enable/disable relative URI resolution in Atom 1.0 Parser. + The Atom10Parser class has a static method, setResolveURIs(boolean) that enables/disables relative URI resolution. + +1. New. XmlReader handling content\-type charset values has been relaxed. + XmlReader handles content\-type charset encoding value within single quotes and double quotes. + +1. Fix. Links, authors and contributors properties in SyndFeed were not implementing the semantics of list properties. + They were returning NULL instead, now they return an empty list if not values are set. + +1. Fix. RSS conversion of a SyndFeed was losing the link of the feed if the links property was used instead the link property. + Over time the SyndFeed has been modified to support more Atom specific properties and their cardinality, conversion to RSS of these properties was not always taken care. + The RSS converter has been changed so the link from SyndFeed is taken as channel link and if not set the first value of the links property is taken. + +1. Fix. WireFeedInput throws IllegalArgumentException if the feed type is not recognized. + Previously the IllegalArgumentException was wrapped by a ParsingFeedException (Reported by [Issue 91](http://java.net/jira/browse/ROME-91)). + +1. Fix. SyndFeedImpl.equals(other) checks for instance of other before casting. + The underlying ObjectBean does this check, but in this method a cast is done before to obtain the foreign markup, no the instance check is peformed before to avoid a class cast exception. + +1. Fix. Atom content based elements related fixes + + * Atom 0.3 Parser/Generator + + * Changed title to be treated as a Content construct. ([http://www.mnot.net/drafts/draft\-nottingham\-atom\-format\-02.html#rfc.section.4.3](http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.4.3)) + + + + * Atom 1.0 Generator: + + * changed feed title/subtitle and entry title to be treated as Content constructs. (Parser had this implemented already.) + + * added title attribute to links. (Parser had this implemented already.) + + * fixed content parsing for some XML content types. e.g. (application/xhtml\+xml) + + + + + +1. Fix. Atom link and enclosures handling + + * Atom 0.3 Converter + + * fixed link parsing code to parse all links (not just the first alternate link) and added enclosure support via link rel\="enclosure". + + * changed title conversion to use Content instead of plain text. + + + + * Atom 1.0 Converter + + * added SyndEnclosure to atom:link rel\=enclosure conversion. + + + + + +1. Fix. RSS 1.0 URI generation + + * RSS 1.0 Generator + + * channel/items/Seq/li/@resource now get's the item URI instead of the Link. ([http://web.resource.org/rss/1.0/spec#s5.3.5](http://web.resource.org/rss/1.0/spec#s5.3.5)) + + + + + +1. Fix. Javadocs corrections. + + * Fixed some javadoc comments for SyndEntry. + + + +1. Fix. Atom content based elements were not parsed with XML mime types. + If the mime type was and XML mime type the content value was being lost on parsing. + +1. Fix. duplication of content:encoded elements when reading/writing and RSS feed. + content:encoded elements are treated special, without a module, they have to be removed from the foreign markup to avoid duplication in case of read/write. Note that this fix will break if a content module is used. + +1. New. XmlFixerReader converts '&' into '&' when there is no matching entity. + Feeds commonly use '&' instead '&' in their content, this change converts those orphant '&'s into '&'s. + +1. Fix. RSS090Parser does not set the URI property. + The fix honors the documentation "For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 ... the SyndEntry uri property will be set with the value of the link element..." + +1. New. Removal of all unused namespaces from generated feeds. + The generators now remove all unused namespaces from the XML document before generating it. + + +## Changes made from v0.8 to v0.9 + + + +1. Design changes + + * Support Atom feed.title, feed.subtitle and entry.title [Issue 48](http://java.net/jira/browse/ROME-48) + #48 fixed via better support for Atom text constructs title and subtitle. Added get/setTitleEx() and get/setSubtitleEx(), which get get SyndContent objects. Title and subtitle still available from old getters/setters. + + * Support for mapping Atom summary/content to RSS description/content [https://rome.dev.java.net/servlets/ReadMsg?list\=dev&msgNo\=1680](https://rome.dev.java.net/servlets/ReadMsg?list=dev&msgNo=1680) + + * Fixed by introduced Content object in RSS model. ROME now parses as RSS Content. That makes parsing easier and allows us to support a more logical summary/content mapping: + + * RSS to/from Atom + + * RSS to/from Atom + + + + + +1. General parsing fixes + + * XmlReader xml prolog regular expression does not allow for single quotes [Issue 36](http://java.net/jira/browse/ROME-36) + The XmlReader was only parsing prolog encodings within double quotes, the regular expression to detect the encoding has been change to detect single or double quotes. + + * Fix. XML prolog parsing now support whitespaces around '\=' + If the XML prolog contained spaces around the '\=' between the encoding attribute name and the encoding attribute value the encoding was not being detected. The fix accepts all valid whitespace characters (as defined in the XML spec). + + * RSS parser does not recognize version\="2.00" [Issue 33](http://java.net/jira/browse/ROME-33) + + * Atom 1.0 Text Types Not Set Correctly [Issue 39](http://java.net/jira/browse/ROME-39) + + * Security issue [Issue 46](http://java.net/jira/browse/ROME-46) + + * Fix for the potential problem outlined in [http://www.securiteam.com/securitynews/6D0100A5PU.html](http://www.securiteam.com/securitynews/6D0100A5PU.html). Thanks to Nelson Minar for bringing this to our attention. + + * Fix. Wrong default description type for RSS 2.0 Fix for [Issue 26](http://java.net/jira/browse/ROME-26) + + * Change default description type for RSS 2.0 from text/plain to text/html as per RSS 2.0 spec + + * Fix to add all HTML4 entities, according to [http://www.w3.org/TR/REC\-html40/sgml/entities.html](http://www.w3.org/TR/REC-html40/sgml/entities.html) specially for the HTMLsymbol set (Mathematical, Greek and Symbolic characters for HTML) and the HTMLspecial set (Special characters for HTML). + + + +1. Date parsing fixes + + * Additional version and date leniency could extract more information [Issue 24](http://java.net/jira/browse/ROME-24) + + * Non RFC822 Dates not processed in RSS pubDate field [Issue 27](http://java.net/jira/browse/ROME-27) + + * RSS feed parsers were were only parsing RFC822 dates because they were not using the proper date\-time parsing function for the date\-time elements. + + * If a W3C date\-time element had no time component it was being parsed as local time instead of GMT, ROME DateParser class has been modified to use GMT in this situation. + + * Current JDKs do not handle 'UT' timezone indicator, ROME DateParser class has been modified to handle it. + + * Use Atom updated instead of published [Issue 41](http://java.net/jira/browse/ROME-41) + + * Atom 1.0 Date (Updated or Published) Not Set [Issue 42](http://java.net/jira/browse/ROME-42) + + * lastBuildDate does not populate publishedDate [Issue 43](http://java.net/jira/browse/ROME-43) Provides a feed date for RSS 0.91 feeds that specify lastBuildDate but not pubDate. + + + + * Fix. Parsing some numeric elements was failing due to whitespaces The image.width and image.height of RSS091U, the frequency of SyModule and the cloud.port of RSS092 elements are now being trimmed before doing the integer parsing. + + + +1. Atom link and URI fixes + + * Improper relative link resolution in Atom10Parser [Issue 37](http://java.net/jira/browse/ROME-37) + + * ATOM 1.0 Entry links parsing [Issue 38](http://java.net/jira/browse/ROME-38) + + * ConverterForRSS10.java does not set URI for item [Issue 25](http://java.net/jira/browse/ROME-25) + + * Valid IRI href attributes are stripped for atom:link [Issue 34](http://java.net/jira/browse/ROME-34) + + + +1. Module fixes + + * iTunes Module has incorrect author and category support [Issue 35](http://java.net/jira/browse/ROME-35) + + * mediarss.io.MediaModuleParser NumberFormatException [Issue 45](http://java.net/jira/browse/ROME-45) + + * Slash module not serializable for FeedFetcher [Issue 44](http://java.net/jira/browse/ROME-44) + + + + +## Changes made from v0.7 to v0.8 + + + +1. Change. Added enclosure support at Synd\* level + A new bean for handling enclosures at Synd\* level has been created (SyndEnclosure/SyndEnclosureImpl, interface/implementation). + The SyndEntry/SyndEntryImpl bean has a new 'enclosures' property which returns the list of enclosures for that item. + The Wire\* to Synd\* converters for RSS propagate enclosures in both directions. + This enables handling enclosures from RSS 0.92, 0.93, 0.94 and 2.0 at Synd\* level + Test cases have been modified to cover enclosures at Synd\* level. + +1. Change/Fix. Synd\* \- Atom entry dates mapping + + * (Change) Atom entries have 3 dates, 'modified', 'issued' and 'created'. Synd entries have only 1 date property 'publishedDate'. When converting from Atom to Synd the first not null date in the order above will be the one set in the Synd entry bean. + + * (Fix) When converting from Synd to Atom the Synd entries 'publishedDate' property value is set in both 'modified' and 'issued' properties of the Atom entry. + This Change/Fix is to be aligned with the Atom 0.3 spec. + + + +1. Fix. Trim enclosure length attribute + Fix from Trey Drake: At least 1 podcast site (ESPN) occasionally leaves trailing spaces in the enclosure content length attribute. This causes a NumberFormatException. + +1. Fix. Conversion to RSS 1.0 if Channel URI is not specified + Fix for problem converting to RSS 1.0 if not URI is specified at the channel level (it will now attempt to use the Link element) + +1. Changes to support Atom 1.0 + + * In com.sun.syndication.synd, added SyndLink and SyndPerson. + + * In SyndEntry added. In SyndEntry, added summary, updatedDate, links collection and support for multiple authors. + + * In com.sun.syndication.synd.impl, added Atom10Parser.java, Atom10Generator.java and ConverterForAtom10.java. + + + + +## Changes made from v0.6 to v0.7 + + + +1. Fix. RFC\-882 dates parsing and generation were using localized names for day and month names + The date parser and generator were using the JVM default Locale instead forcing an English Locale to use day and month names in English as specified by RFC\-822. Now US Locale is used. + +1. Fix. The 'ttl' element of RSS0.94 and RSS2.0 feeds was not being parsed + The parsers now parse the 'ttl' element and it is available in the resulting Channel bean. Note that 'ttl' info is not available in the SyndFeed bean, thus it's lost when converting from WireFeed to SyndFeed. + +1. Change. RSS enclosures with empty 'length' attributes are accepted + Parsing an RSS feed with an enclosure where the length attribute was an empty String were failing. Now they are parsed and the length is set to 0. + +1. Change. RSS 1.0 feeds use URI/Link for unique ID (rdf:about). + RSS 1.0 specification recommends that the rdf:about attribute URI use the value of the item's link element, though this could be different if the user chooses to override it by specifying their own URI. RSS 1.0 feeds now use the URI if specified, otherwise the link for the item. + +1. Fix. toString() was reporting NullPointerException with List properties + When a List (or Map) property had a NULL element the toString() logic was failing partially due to a NullPointerException. + +1. Fix. DC creator elements were being lost when converting to SyndFeed + DC creator elements were being lost when converting to SyndFeed. This was happening with RSS versions that have native author elements (0.94 and 2.0) and for the managingEditor element at channel level (available in 0.91 Userland and onwards). + +1. Change. Date and enumeration elements are trimmed during parsing + There are some feeds that add whitespaces or carriage return characters before or after the proper date or enumeration value. This was causing ROME to fail processing those elements. This is taken care now as all dates elements in all feed types and Modules and the 'channel.skipHours.hour' and 'channel.skipDays.day' (RSS0.91 \- RSS2.0) are trimmed before parsing and setting their values in the beans. + +1. Fix. SyndFeed description now maps to atom:tagline + Previously, atom:info was being mapped to the feed's description. According to the Atom03 spec atom:info should be ignored by parsers, and the more appropriate element is atom:tagline. + +1. Fix. RSS cloud is now generated/parsed correctly + The 'path' attribute from the cloud was not being generated/parsed. The parser now process all cloud attributes and set the cloud to the channel. + +1. Fix. RFC\-822 2 digit years + Previously RFC\-822 dates did not work correctly with 2 digit years. This is now fixed. + +1. Fix. No alternate link causes IndexOutOfBoundsException + Fix bug where no alternate link causes IndexOutOfBoundsException in ConverterForAtom03 (Thanks to Joseph Van Valen). + +1. Change. Date parsing attemps RFC822 on W3C parsing on all feeds + All feed parsers (RSS and Atom) now attemp both RFC822 and W3C parsing on date values. + +1. Fix. XmlFixerReader removes character from stream when parsing an entity that contains an invalid character + Fix bug in XmlFixerReader where an invalid entity such as "&ent\=", gets put back on the stream without the last character (in this example, "&ent\=" becomes "&ent"). This was most visible when the XmlFixerReader encountered an URL with a query string that has more than one parameter (e.g. [http://www.url.com/index.html?qp1\=1&qp2\=2](http://www.url.com/index.html?qp1=1&qp2=2)) \-\- all "\=" after the first one would disappear. + +1. Change. DateParser can use additional custom datetime masks + Besides attempting to parse datetime values in W3C and RFC822 formats additional datetime masks can be specified in the /rome.properties files using the 'datetime.extra.masks' property. To indicate multiple masks the '|' character must be used, all other characters are considered part of the mask. As with parser/generators/converter plugins the masks are read from all /rome.properties file in the classpath. + + +## Changes made from v0.5 to v0.6 + + + +1. Fix. W3C date\-time parsing now handles date\-time with 'Z' modifier + The W3C date\-time parser was not parsing times using the UTC modifier 'Z'. + +1. Fix. XML prolog encoding parsing was failing when other attributes where present in the prolog + If there was an attribute following the encoding attribute the value of the encoding attribute was misinterpreted. For example, for the XML prolog the detected encoding was **_UTF\-8" standalone\="yes_** instead of **_UTF\-8_**. + +1. Change. XmlReader lenient behavior gives priority to XML prolog encoding over content\-type charset + In ROME 0.5 the XmlReader first attempts to do a strict charset encoding detection. Only if the strict detection fails it attempts a lenient detection. When the HTTP Content\-Type header is of type **_text/\*xml_** and the header does not specify any charset, RFC 3023 mandates that the charset encoding must be **_US\-ASCII_**. It's a common error for sites to use the **_text/\*xml_** MIME type without charset information and indicate the charset encoding in the XML prolog of the document, being the charset encoding in the XML prolog different from **_US\-ASCII_**. The XmlReader lenient behavior has been modified to give precedence to the XML prolog charset encoding, if present, over the HTTP Content\-Type charset encoding. + +1. Addition. XML Healer + ROME parsers, SyndFeedInput and WireFeedInput, have a new feature, XML healing. + The XML healing trims the beginning of the XML text document if there are whitespaces, enters or XML comments before the XML prolog or the root element. It also replaces all HTML literal entities occurrences with coded entities. These changes convert feeds technically invalid (from the XML specification perspective) into valid ones allowing the SAX XML parser to successfully parse the XML if there are not other errors in it. + This behavior is active by default. It can be turned on and off using the new 'xmlHealerOn' property in the SyndFeedInput and WireFeedInput classes. + The idea for this feature was taken from the FeedFilter from Jakarta's commons feedparser. + +1. Addition. The XML prolog of generated feeds contains the feed encoding + ROME generators were creating feeds with the XML prolog encoding always set to 'UTF\-8', if the given Writer had another charset encoding things would break for anybody consuming the feed (a mismatch between the char stream charset and what the XML doc says). + The SyndFeedOutput and WireFeedOutput generators now use the SyndFeed and WireFeed 'encoding' property to set the 'encoding' attribute in the XML prolog of the generated feeds. It is the responsibility of the developer to ensure that if the String is written to a character stream the stream charset is the same as the feed encoding property. + +1. Change. SyndFeed to Atom convertion now uses 'escaped' mode for content elements + SyndFeed to Atom converter was using 'xml' mode for content elements. This was breaking feeds with content that was not propertly escaped as it was assumed to be XML fragments. + +1. Change. RSS 2.0 parser and generator now handles DC Module + ROME configuration has been changed so RSS 2.0 parser and generator handle DC Module elements at channel level and item level. + +1. Fix. RSS0.93, RSS0.94 and RSS2.0 'dc:date' element value was being lost under certain conditions + If a feed had 'dc:date' elements but not 'pubDate' elements, the 'dc:date' elements where lost when converting from Channel to SyndFeed. + This was happening for 'dc:date' elements at channel level and at item level. + +1. Fix. RSS 1.0 'rdf:resource' and 'rdf:about' item linking attributes use a unique ID now + The value for the 'rdf:resource' and 'rdf:about' linking attributes was done using the value of the 'link' element. If there is more than one item with the same link the generated feed will be incorrect. + Instead using the link value now the index of the item is used for the linkage between 'rdf:resource' and 'rdf:about' for items. + +1. Fix/Change. Parsing and setting of enumerated elements is case insentive now + Parsing and bean setting of enumerated values (such as RSS skipDay, Atom content mode, etc) are now case insentive, generation is strict (Postel Law). + +1. Fix. Remove enumeration check on 'rel' attribute of Atom link elements + Because a misunderstanding of Atom 0.3 specification the Atom Link bean was checking the value of the 'rel' property against a set of valid values. The check has been removed. + +1. Fix. DC subjects (in RSS versions with native categories) were being lost on conversion to SyndFeed + All RSS versions with native categories (at both channel and item level) now have the following behavior when converting to SyndFeed. + DC subjects are converted to SyndCategories. Native categories are converted to SyndCategories. They are both aggregated in a Set (to remove duplicates) then added to the SyndFeed. + When doing a SyndFeed to Channel conversion, if the RSS version has native categories and handles DC modules the categories will be duplicated as native and DC ones. + +1. Fix/Change. RSS 1.0 rdf:about attribute in the channel. + RSS 1.0 uses the rdf:about attribute at the channel level as an identifier. This was not being parsed or generated (only supported at the item level). Support for this was added along with test cases. + +1. Fix/Change/Addition. Multivalued Dublin Core element support. + Many feeds are using multiple DC elements to tag metadata, the interface for the DCModule has been changed to support Lists of elements, compatibility has been maintained with the existing interface though as the new methods are plural (creators vs. creator), the single value methods will remain as convenience methods. The implementation now uses the lists to represent all of the elements. The parser/generator modules for DC have been updated to reflect these changes along with a few other code cleanups in the DC\* modules. + +1. Fix. Removed length constraint checks from RSS1.0 generator + RSS1.0 specification does not require, only suggests, maximum length for some of the elements. ROME was enforcing those lenghts when generating RSS1.0 feeds. This enforcement has been removed becuase is not mandatory. + + +## Changes made from v0.4 to v0.5 + + + +1. Change. Got rid of Enum class + All constants in the beans are Strings now, the corresponding property setters check that the value being set is one of the valid constants. Rome has not business defining an Enum class. + +1. Change. Got rid of ToString interface + This is just an implementation convenience, it was polluting Rome API. Modified ToStringBean to work without requiring an interface and method to propagate the prefix to use with properties. + +1. Change. ObjectBean, ToStringBean, EqualsBean are not part of the public API anymore + These are just an implementation convenience, they were polluting Rome API. Rome bean implementations don't extends ObjectBean anymore. Instead they use it in a delegation pattern. While these classes are not public anymore they are part of Rome implementation. + +1. Change. CopyFrom interface moved to com.sun.syndication.feed package + The common package is gone now that the \*Bean classes are not there anymore. No point keeping a package just for an interface. + +1. Fix. PluginManager was not doing plugin lookup in the defined order + PluginManager (manages parsers, generators and convertors for feeds and modules) was not doing the lookup in order the plugins are defined in the rome.properties files. This is needed for parsers where the lookup involves detecting the feed type and the feed type detection goes needs to go from stronger to weaker. + +1. Addition. Rome now recognizes RSS 2.0 feeds with 'http://backend.userland.com/rss2' namespace + These namespace was defined by an RSS 2.0 draft and later was dropped. There are feeds out there using this namespace and Rome was not parsing them. + +1. Change. By default XmlReader does a lenient charset encoding detection. + If the charset encoding cannot be determined per HTTP MIME and XML specifications the following relaxed detection is performed: If the content type is 'text/html' it replaces it with 'text/xml' and tries the per specifications detection again. Else if the XML prolog had a charset encoding that encoding is used. Else if the content type had a charset encoding that encoding is used. Else 'UTF\-8' is used. + There are 2 new constructors that take a lenient flag to allow strict charset encoding detection. If scrict charset encoding detection is performed and it fails an XmlReaderException is thrown by the constructor. The XmlReaderException contains all the charset encoding information gathered from the stream including the unconsumed stream. + + +## Changes made from v0.3 to v0.4 + + + +1. Fix. Date elements on generated feeds use the right format now + There were some Date elements in Atom 0.3, DCModule, SyModule, RSS 0.91 and RSS 0.93 that were incorrectly formating the date \[they were just doing a toString() \]. Now they use the RFC822 and W3C format as indicated in their specs. + +1. Fix. SyndFeed and SyndEntry getModule(DCModule.URI) method always returns a DCModule, never null + This issue is related to Fix #19 in v0.3. The DCModule is 'special' for Synd\*, it must always be there. If it is not, it is created implicitly when needed. This was not happening when asking explicitly for the DCModule through the Synd\* interfaces. + +1. Addition. Added ParseFeedException to the \*Input classes + This new exception report the line and column number in the XML document where the parsing has failed. + +1. Change. Renamed '\*I' interfaces to just '\*' and default implementations to '\*Impl' + The Synd\* and Module interfaces/classes were affected. For example the interface that used to be SyndFeedI is now SyndFeed and the class that used to be SyndFeed is now SyndFeedImpl. + +1. Change. Ant 'build.xml' files have been improved + The build.xml were re\-written instead just using the Maven generated ones. + +1. Fix. DateParser now uses lenient parsing so as to work with JDK 1.5 + DateParser currently setLenient to false. This does not work with JDK 1.5. Changing the DateParser to setLient to true. + +1. Change. SyndCategoryListFacade is not a public class anymore + It's now a package private class (it should have been like that in the first place). + +1. Addition. Added a protected constructor to the Synd\*Impl classes + This constructor takes a Class parameter. It allows implementations extending SyndContentImpl to be able to use the ObjectBean functionality with extended interfaces (additional public properties). Use case: Hibernate beans that have an 'Id' Long property, a new interface HSynd\* (extending Synd\*) and a new implementation HSynd\*Impl (extending Synd\*Impl) where the clone(), equals(), hashCode() and toString() methods take the properties of the extension into account. + +1. Project layout change. Moved samples project to subprojects dir + The 'samples' project was moved from 'rome/modules/samples' to 'rome/subprojects/samples'. The 'rome/modules' project is left for Module subprojects only. + +1. Fix. Plugin manager bug didn't allow custom plugins to replace core plugins + All plugins are in a Map keyed off by its type (parsers, generators, converters) or URI (modules). There is also a helper List containing the plugins, this list is scanned when looking for a plugin (for example when selecting the right parser). Plugins were added to the List without checking if another element in the List was using the same key. Now the List is built using the Map values, thus the overwriting works fine. + +1. Fix. RSS 2.0 Converter (Wire \-\> Synd \- Wire) was not processing modules + The RSS 2.0 Converter now processes feed and entry modules both ways. + +1. Fix. New properties introspection mechanism in common classes + The java.beans.Introspector does not work as expected on interface properties (it doesn't scan properties of the super interfaces). Now, a private implementation of a properties introspector is used by the common bean classes. + +1. Change. Refactored private CopyFrom helper class + It was com.sun.syndication.feed.synd.impl.SyndCopyFrom now it is com.sun.syndication.common.impl.CopyFromHelper. + +1. Fix. RSS2.0 Wire\-Synd converter handles propertly RSS and DC categories + If the RSS2.0 feed had DC Module categories (subjects) this would override the RSS native categories. Now they are aggregated. + +1. Change/Fix. CloneableBean can take an ignore\-properties set + This change is useful for bean that have convenience properties mapping to other properties. SyndFeed and SyndEntry that map some of its properties (ie publishedDate, author, categories) to DC Module properties. There is not point cloning the convenience ones as they are just facades. + This fixes a SyndFeedImpl cloning problem with the categories. There is a package private list for the categories to DC subject mapping. The problem was related to accesibility of this package private list implementation by the CloneableBean. The change enables the blacklisting of certain properties (in this categories) when cloning. + +1. Change. Refactored Parsers/Generator classes + Introduced a base parser and base generator to handle modules. For the feed types that define modules support, the modules have to be defined the rome.properties file. For RSS 1.0 and Atom 0.3 Dublin Core and Syndication modules are defined, the first one at feed and entry level the second one at feed level. Note this was already done but hardwired in the specific feed type parsers and generators, now it is done in the base parser and base generator. Some code clean up and removal of duplicated code was also done. + +1. Change. Defined and implemented precedence order for native and module elements in feeds + For feeds supporting modules, some of the module defines elements collide with the feed native elements (this depends on the feed type, and it may affect the data such as publish\-date, author, copyright, categories). The SyndFeed and SyndEntry properties documented as convenience properties are (can be) affected. The convenience properties map into DC Module properties. + Rome now defines precedence of feed native elements over module elements when converting from WireFeed to SyndFeed. This is, in the situation of a clash, the native element data prevails and the the module element data is lost. + When converting from SyndFeed to WireFeed, if a SyndFeed convenience property has a native mapping in the target feed type it will be in both the native element and the DC Module element if the feed type defines support for the DC module. The data will appear twice in the feed, in the native elements and in the DC module elements. + +1. Change. Module namespaces are defined at root element + Module namespaces are always defined in the root element. The ModuleGenerator interface has a new method that returns all the namespaces used by the module, the generators use the namespaces returned by this method to inject them in the feed root element. + +1. Change/Fix. Test cases refactoring + Some refactoring in the test cases for the Synd\* entities. Some minor bugs (typos in constants) were found and fixed in the parsers. + The Ops and Synd tests are 100% complete. Not that they test 100% of Rome functionality but 100% of what they suppose to test. + +1. Fix. Atom 0.3 content elements with XML mode were not being parsed and converted properly + When mode is XML, free text was not being processed, only sub\-elements were being processed. + The Parser when parsing content with XML mode skips Atom namespace in the output of the processed fragment. + The Converter when going down pushes content data using XML mode, which is Atom's default (it was ESCAPED before). + +1. Addition. Constraints in data length and number of items are observed by RSS generators + As part of the generators refactoring the generators now verify the data in the Rome beans does not generate invalid feeds. + +1. Addition. New XmlReader that detects charset encoding + The XmlReader class handles the charset encoding of XML documents in Files, raw streams and HTTP streams. It following the rules defined by HTTP, MIME types and XML specifications. All this is nicely explained by Mark Pilgrim in his blog, [http://diveintomark.org/archives/2004/02/13/xml\-media\-types](http://diveintomark.org/archives/2004/02/13/xml-media-types) + +1. Rome now uses JDOM 1.0 + Dependencies have been updated to use JDOM 1.0. No code changes were needed because of this. + +1. Change. The length property in the RSS Enclosure bean is now a long + It used to be an int, but as it is meant to specify arbitrary lengths (in could be in the order of several megabytes) it was changed to be a long. + +1. Addition. SyndFeed and SyndEntry beans have a 'uri' property + It is used with RSS0.94 & RSS2.0 guid elements and with Atom0.3 id elements. Refer to [Feed and entry URI Mapping](RomeV0.4FeedAndEntryURIMapping.html) for a full explanation. + +1. Addition. New sample, FeedServlet + Added a new sample, FeedServlet. This servlet creates a feed and returns a feed. + +1. Change. RSS0.91 Userland and RSS0.91 Netscape are handled as different feed types + Instead having a single set of parser/converter/generator implementations there is one set for each one of them. This allows to differenciate incoming RSS0.91 Userland feeds from RSS0.91 Netscape feeds as well as choosing which one to generate. + + +## Changes made from v0.2 to v0.3 + + + +1. Changed loading mechanism for parsers, generators and converters + Previous mechanism was complicated and it wouldn't work in server environments where you cannot alter System properties at will. + Now there are no properties to set. Just including a rome.properties file in the root of a JAR file will make Rome to load any parser, generator or converter defined in the properties file and included in the JAR file (To be documented). + +1. Added Modules support to RSS 2.0 parser and generator + We were only looking for modules in RSS 1.0 and Atom 0.3. Now we also look in RSS 2.0. + +1. Modules parsers and generators are now per feed type + They were global, now each feed type parser and generator has it's own set of modules parsers and generators. They are configurable in the rome.properties file. + +1. All parsers, generators and converters are loaded once per definition + There were some cases we were loading them on every WireFeedParser/WireFeedGenerator instantiation. As they are all thread\-safe we just use one instance. + +1. Changed some implementation (hidden) class names + Some typos corrections and adding consistency to the naming. + +1. Added Fetcher module + Added a HTTP fetcher with conditional get and gzip support (See modules/fetcher) + +1. Modified the samples module build to fix error + Previouly some people were having a maven error trying to run some of the samples. This should now be fixed + +1. Removed methods with byte stream signatures from Rome IO classes + They have no way to know what the encoding is or has to be and they are using the platform default. That does not always work, for example when doing HTTP where the default is ISO\-8859\-1. + Leaving the char streams one and let the developer to do the right thing (Rome cannot do any magic here). + +1. Added getModule(String uri) to SyndFeedI, Atom Feed and RSS Channel + There was not way to obtain a specific module using the module URI, you had to obtain the module list and iterate looking for the module. The getModule(string uri) is a convenience method in all the feed beans to do that. + +1. New. Added 'encoding' property to WireFeed and SyndFeedI/SyndFeed + Impact: It affects RSS, Atom and SyndFeed syndication beans. + It's not being set or use by parsers and generators as they always deal with a char strean where the charset is already set. + The converters, going from Channel/Feed 2 SyndFeed and vice versa are wired to pass the encoding if set. + +1. Fix. CloneableBean array cloning bug + Impact: It affects all Rome beans as they all extend ObjectBean that uses CloneableBean + Arrays were not being cloned but copy by reference. This was affecting all Rome beans as they all extend ObjectBean. + +1. Change. CloneableBean, Basic (primitives & string) types not cloned anymore + Impact: It affects all Rome beans as they all extend ObjectBean that uses CloneableBean + Basic types are inmutable, no need to clone them. As things are done using reflection there were unnecessary objects creation. + +1. Change. CloneableBean, added Date to list of Basic types + Impact: It affects all Rome beans as they all extend ObjectBean that uses CloneableBean + Same reasoning as #12 + +1. Change/Fix. EqualsBeans, works on defined class + Impact: It affects all Rome beans as they all extend ObjectBean, which uses EqualsBean + EqualsBean checks for equality by comparing all properties. Until now it was doing this using all properties of the class implementing the bean. This behavior is not correct as implementations may have other properties than the defined in the public interface (and example is: a SyndFeedI implementation for Hibernate that has to have an ID field, and this would apply to all bean interfaces). + Because of this change, both EqualsBean and ObjectBean take a Class parameter in the constructor. Equals will limit the comparison for equality to the properties of that class. If there is not interface for the bean, just the bean implementation (this is the case of Channel and Feed), the implementation Class is passed + +1. Change/Fix. ToStringBean, works on defined class + Same as #14 but on ToStringBean instead EqualsBean + +1. New. Added copyFrom functionality to synd.\* and module.\* beans + Impact: It affect all synd.\* and module.\* beans and other classes that extend ObjectBean. + A new interface 'CopyFrom' has been added to commons. + synd.\* and module.\* bean interfaces implement this interface and their implementations implement the copyFrom functionality. + The copyFrom functionality allows copying a complete bean feed from one implementation to another. The obvious use case is from the default bean implementation to a persistent aware (ie Hibernate) implementation. + The implementation uses the same pattern used by EqualsBean, ConeableBean, it's in the synd.impl.\* package, the supporting class is call SyndCopyFrom. + Note that SyndCategories does not support the copyFrom functionality as it's just a convenience way of accessing DCModule's subjects (where DCModule supports copyFrom). The short explanation is that categories still work and are there after a copyFrom. + +1. Fix. WireFeed constructor was passing the WireFeed.class to ObjectBean + rss.Channel, atom.Feed & WeatherChannel constructor implementations only, no change to their signatures. + The class is used for property scanning for toString, equals behavior of the ObjectBean. + +1. Fix. copyFrom was failing with Enum properties + It was not possible to do a copyFrom on a feed with SyModule data as it had Enum properties. + Wrong comparison of classes when checking basic types, in the case of enumeration classes has to check it extends Enum not equality. + +1. Fix. SyndFeed and SyndEntry where losing Modules + If they had modules other than DCModule they were being dropped when accessing convenience methods (getCategories, getLanguage, etc). + The Synd\* convenience methods just map to the DCModule properties. If there is no DCModule a new one is created if needed. When this happened instead bean added to the list of current modules a new list with just the DCModule was being set. + +1. New Sample and tutorial for creating a feed + A new sample and tutorial that creates and writes a feed has been added. + +1. New Sample showing how to add a Module bean, parser and generator to Rome + This sample defines a dummy module for use with RSS 1.0 (it can work also with RSS 2.0 and Atom 0.3). Still have to write tutorial + +1. Undoing change #13 as Date is not inmutable + The Date class is not inmutable, CloneableBean now clones Date properties. + + +## Changes made from v0.1 to v0.2 + + + +1. FeedInput, added default constructor. Semantics is 'validation off' + We forgot to added it when it was added to SyndFeed. + NOTE that validation is not implemented yet. We need DTDs/XML\-Schemas for the different feed syndication types. + +1. FeedOutput and SyndOutput outputW3CDom() method typo correction + Fixed typo in outputW3CDom() method, it was ouptutW3CDom(). + +1. AbstractFeed, renamed to WireFeed + Never liked Abstract in the name. From Java inheritance it makes sense, but from the syndication feed perspective doesn't. It's the super class of the 2 wire feed beans Rome has, RSS Channel and Atom Feed. + +1. Renamed SyndFeed createRealFeed(feedType) method to createWireFeed(feedType) + For consistency with change #3 + +1. SyndFeed, added feedType property + Read/write property. It indicates what was the feed type of the WireFeed the SyndFeed was created from. And the feed type a WireFeed created with createWireFeed() will have. + +1. WireFeed, renamed type property to feedType + For consistency with #5. Also it's more clear what the type is about. + +1. Overloaded SyndFeed createRealFeed() with a no parameter signature + +1. FeedOutput, removed feed type from constructor + It now uses the WireFeed feedType property. + +1. SyndOutput, removed feed type from constructor + It now uses the SyndFeed feedType property define in #5. + +1. FeedOutput, removed getType() method + Now FeedOutput uses the WireFeed feedType property. + +1. Removed dependency on Jakarta Commons Codec library + We were using the Codec component to do Base64 encoding/decoding. Based on feedback to reduce component depencies we've removed this one (yes, we implemented a Base64 encoder/decoder). + +1. Removed dependency on Xerces library + This was an unnecessary dependency as Rome requeries JDK 1.4\+ which includes JAXP implementation. JDOM can use that one. + +1. Renamed syndication.io classes/interfaces + Renaming for naming consistency and to reflect on what type of feed they work on. + +``` + +FeedInput --> WireFeedInput +FeedOutput --> WireFeedOutput +FeedParser --> WireFeedParser +FeedGenerator --> WireFeedGenerator +SyndInput --> SyndFeedInput +SyndOutput --> SyndFeedOutputt + +``` + + +1. Removed syndication.util package, PlugableClasses is now private + The PlugableClasses class has no business in Rome public API, it's implementation specific, it has been hidden (it should be replaced later with a micro\-container). + +1. Added samples to the Rome project directory structure + Rome samples are a sub\-project located at rome/modules/sample. + diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md new file mode 100644 index 0000000..b8ca2b4 --- /dev/null +++ b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md @@ -0,0 +1,384 @@ +# Rome v0.4 Tutorial, Defining a Custom Module (bean, parser and generator) + + +**Software requirements:** Synd J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + +This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). + + + +To understand this tutorial you should be familiar the with Rome API and with the use of modules in syndication feeds. + + + +Out of the box Rome parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. + + + +The complete source for this tutorial is in the Rome samples bundle as well as in SVN. + + +## What is the intended outcome of the tutorial? + + + +The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. + + + +The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: + + + +``` + + + + + RSS 1.0 Feed with Sample Module + http://rome.dev.java.net + This is a feed showing how to use a custom module with Rome + + + + + + + Channel bar + Channel first foo + Channel second foo + + + Title of Item 01 + http://rome.dev.java.net/item01 + Item 01 does not have Sample module data + + + Title of Item 02 + http://rome.dev.java.net/item02 + Item 02 has Sample module data + Item 02 bar + Item 02 only foo + 2004-07-27T00:00+00:00 + + + +``` + +## Sample Module Bean + + + +First we must start with the bean interface, SampleModule. SampleModule must extend Module. The Module interface defines the getUri() method, which will return a URI identifying the module. The Module interface also extends the Cloneable, ToString and CopyFrom interfaces to ensure that the beans provide support for basic features as cloning, equality, toString, etc. (for more details on this check the [Understanding the Rome common classes and interfaces](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common) document). + + + +The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. + + + +Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). + + + +``` + +public interface SampleModule extends Module,CopyFrom { + + public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; + + public String getBar(); + public void setBar(String bar); + + public List getFoos(); + public void setFoos(List foos); + + public Date getDate(); + public void setDate(Date date); +} + +``` + + +Next we have to write the bean implementation, SampleModuleImpl. + + + +SampleModuleImpl extends ModuleImpl. ModuleImpl is the default implementation of the \=\=Module interface. ModuleImpl extends ObjectBean which provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModule). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. + + + +``` + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public SampleModule() { + super(SampleModule.class,SampleModule.URI); + } + + public String getBar() { + return _bar; + } + ... + +``` + + +The module properties are just Java Bean properties. The only catch is to follow Rome semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned.. Also, following Rome semantics, all properties are by reference, including mutable ones. + + + +``` + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + private String _bar; + private List _foos; + private Date _date; + ... + public void setBar(String bar) { + _bar = bar; + } + + public List getFoos() { + return (_foos==null) ? (_foos=new ArrayList()) : _foos; + } + + public void setFoos(List foos) { + _foos = foos; + } + + public Date getDate() { + return _date; + } + + public void setDate(Date date) { + _date = date; + } + +``` + + +Now the weird part: the bits for the CopyFrom logic. The [Understanding the Rome common classes and interfaces](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common) document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. + + + +The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). + + + +The copyFrom() method copies all the properties from the parameter object (which must be a SampleModule implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. + + + +``` + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public Class getInterface() { + return SampleModuleI.class; + } + + public void copyFrom(Object obj) { + SampleModule sm = (SampleModule) obj; + setBar(sm.getBar()); + List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) + setFoos(foos); + setDate((Date)sm.getDate().clone()); // because Date is not inmutable. + } + +} + +``` + +## Sample Module Parser + + + +The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. + + + +The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. + + + +In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. + + + +If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. + + + +``` + +public class SampleModuleParser implements ModuleParser { + + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + public Module parse(Element dcRoot) { + boolean foundSomething = false; + SampleModule fm = new SampleModuleImpl(); + + Element e = dcRoot.getChild("bar", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setBar(e.getText()); + } + List eList = dcRoot.getChildren("foo", SAMPLE_NS); + if (eList.size() > 0) { + foundSomething = true; + fm.setFoos(parseFoos(eList)); + } + e = dcRoot.getChild("date", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setDate(DateParser.parseW3CDateTime(e.getText())); + } + return (foundSomething) ? fm : null; + } + + private List parseFoos(List eList) { + List foos = new ArrayList(); + for (int i = 0; i < eList.size(); i++) { + Element e = (Element) eList.get(i); + foos.add(e.getText()); + } + return foos; + } + +} + +``` + +## Sample Module Generator + + + +The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. + + + +The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. The set of namespaces returned by the getNamespaces() method will be used to declare the namespaces used by the module in the feed root element. + + + +If no Sample Module bean is in the feed bean the module generator is not invoked at all. + + + +``` + +public class SampleModuleGenerator implements ModuleGenerator { + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + private static final Set NAMESPACES; + + static { + Set nss = new HashSet(); + nss.add(SAMPLE_NS); + NAMESPACES = Collections.unmodifiableSet(nss); + } + + public Set getNamespaceUris() { + return NAMESPACES; + } + + public void generate(Module module, Element element) { + + // this is not necessary, it is done to avoid the namespace definition in every item. + Element root = element; + while (root.getParent()!=null && root.getParent() instanceof Element) { + root = (Element) element.getParent(); + } + root.addNamespaceDeclaration(SAMPLE_NS); + + SampleModuleI fm = (SampleModule)module; + if (fm.getBar() != null) { + element.addContent(generateSimpleElement("bar", fm.getBar())); + } + List foos = fm.getFoos(); + for (int i = 0; i < foos.size(); i++) { + element.addContent(generateSimpleElement("foo",foos.get(i).toString())); + } + if (fm.getDate() != null) { + element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate()))); + } + } + + protected Element generateSimpleElement(String name, String value) { + Element element = new Element(name, SAMPLE_NS); + element.addContent(value); + return element; + } + +} + +``` + +## Configuration to make Rome process Sample Module in feeds + + + +The last step is to setup the configuration file to indicate to Rome how and when to use the Sample Module parser and generator. + + + +The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. + + + +You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. + + + +Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. + + + +``` + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +``` + + +If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. + + +## Using the Sample Module from the SyndFeed beans + + + +They will be there, just use them. You may get the SampleModule bean using the getModule(String Uri) method of the SyndFeed bean and the SyndEntry bean. + + + +Adding or replacing a syndication feed parser, generator or converter goes along the same lines of what it has been explained in the tutorial for modules. This is explained in the [Rome Plugins Mechanism](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Plugins) topic. + diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md new file mode 100644 index 0000000..c4dfdde --- /dev/null +++ b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md @@ -0,0 +1,147 @@ +# Rome v0.4 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + +**Software requirements:** J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + +``` + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + +Rome also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: + + + +``` + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + +``` + + +The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. + + + +SyndFeed instances can also be created and populated within the code. For example: + + + +``` + +SyndFeed aggrFeed = new SyndFeedImpl(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + +``` + + +The snipped of code above creates a SyndFeed instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + +SyndFeed properties can be modified, assigned to other SyndFeed instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeed properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeed property you are altering the SyndFeed. Or, another example, if you assign the list of entries of one SyndFeed instance to another SyndFeed isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeed instances. + + + +The following lines of code show how to copy the entries of a SyndFeed instance being read (inFeed) into a SyndFeed instance being created within the application (feed): + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndFeedImpl; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i + * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,new PrintWriter(System.out)); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md new file mode 100644 index 0000000..018553a --- /dev/null +++ b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md @@ -0,0 +1,205 @@ +# Rome v0.4 Tutorial, Using Rome to create and write a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.feed.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Creating a feed with SyndFeed beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeed bean with 3 entries is created. + + + +First the SyndFeed instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. + + + +``` + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + +``` + + +Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. + + + +``` + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + ... + entry = new SyndEntryImpl(); + entry.setTitle("Rome v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + +``` + + +Finally the list with entries is added to the SyndFeed bean. + + + +``` + + feed.setEntries(entries); + +``` + + +The SyndFeed bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. + + + +Rome includes generators that allow producing syndication feed XML documents from SyndFeed instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeed bean. All it takes to write a syndication feed XML document using Rome \-assuming you have a SyndFeed bean and a Writer instance\- are the following lines of code: + + + +``` + + SyndFeed feed = ...; + Writer writer = ...; + + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + +``` + + +First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeed bean to the Writer stream. + + + +Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. + + + +``` + +package com.sun.syndication.samples; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.SyndFeedOutput; + +import java.io.FileWriter; +import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * It creates a feed and writes it to a file. + *

+ * + */ +public class FeedWriter { + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String feedType = args[0]; + String fileName = args[1]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v2.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + Writer writer = new FileWriter(fileName); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + writer.close(); + + System.out.println("The feed has been written to the file ["+fileName+"]"); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); + System.out.println("The first parameter must be the syndication format for the feed"); + System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); + System.out.println("The second parameter must be the file name for the feed"); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md new file mode 100644 index 0000000..2a4ae9c --- /dev/null +++ b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md @@ -0,0 +1,90 @@ +# Rome v0.4 Tutorial, Using Rome to read a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + +``` + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + +The default SyndFeed implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + +``` + +System.out.println(feed); + +``` + + +Following is the full code for a Java application that reads a syndication feed and prints the SyndFeed bean to the application's output. + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md b/src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md new file mode 100644 index 0000000..829630d --- /dev/null +++ b/src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md @@ -0,0 +1,374 @@ +# Understanding the Rome common classes and interfaces + + +The Rome common package contains a set of Java classes that provide support for all the basic features Java Beans commonly must have: toString, equals, hashcode and cloning. There is also a simple enumeration base class (missing Java 5.0 already). + + + +By implementing or extending the common classes and interfaces Beans don't have to hand code these functions. This greatly simplifies things when Beans have several properties, collection properties and composite properties. + + + +The common classes use Java Bean instrospection on the properties of the classes extending and using them. This is done recursively on all properties. + + + +All Rome Beans (interfaces and default implementations) leverage and use these classes and interfaces defined in the common package. + + + +Ideally all this classes and interface should be part of a general component outside of Rome as they are not syndication specific (something like a commons\-bean component if we use Jakarta Commons naming). They cannot be hidden in an implementation package as Rome public API uses them. + + +## ToString and ToStringBean + + + +Beans implementing the ToString interface must implement the toString(String prefix) method. This method must print the bean properties names and values, one per per line, separating the name and value with an '\=' sign and prefixing the name with the given prefix parameter using the same notation used in the JSP expression language used in JSTL and in JSP 2.0. This must be done recursively for all array, collection and ToString properties. + + + +The ToStringBean class provides an implementation of the ToString interface with the defined behavior. The ToStringBean constructor takes the class definition the ToStringBean class should use for properties scanning \-using instrospection\- for printing, normally it is the class of the Bean using the ToStringBean. Beans leveraging the ToStringBean implementation can do it using two different patterns. + + +### Extending ToStringBean + + + +``` + +public class MyBean extend ToStringBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + +``` + +### Using a ToStringBean in delegation mode + + + +``` + +public class MyBean implements ToString { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public String toString(String prefix) { + ToStringBean tsBean = new ToStringBean(MyBean.class,this); + return tsBean.toString(prefix); + } + + public String toString() { + return toString("myBean"); + } + } + +``` + +## EqualBean + + + +The EqualsBean class provides a recursive introspetion\-based implementation of the equals() and hashCode() methods working on the Bean properties. The EqualsBean constructor takes the class definition that should be properties scanned (using introspection) by the equals() and thehashCode() methods. The EqualsBean class works on array, collection, bean and basic type properties. Java Beans leveraging the EqualsBean implementation can do it using two different patterns. + + +### Extending EqualsBean + + + +``` + +public class MyBean extend EqualsBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + +``` + +### Using a EqualsBean in delegation mode + + + +``` + +public class MyBean implements ToString { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public boolean equals(Object obj) { + EqualsBean eBean = new EqualsBean(MyBean.class,this); + return eBean.beanEquals(obj); + } + + public int hashCode() { + EqualsBean equals = new EqualsBean(MyBean.class,this); + return equals.beanHashCode(); + } + } + +``` + +## CloneableBean + + + +The CloneableBean class provides a recursive introspetion\-based implementation of the clone() method working on the Bean properties. The CloneableBean class works on array, collection, bean and basic type properties. Java Beans leveraging the CloneableBean implementation can do it using two different patterns. + + +### Extending CloneableBean + + + +``` + +public class MyBean extend CloneableBean { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + +``` + +### Using a CloneableBean in delegation mode + + + +``` + +public class MyBean implements Cloneable { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public Object clone() { + CloneableBean cBean = new CloneableBean(this); + return cBean.beanClone(); + } + } + +``` + + +By default, the CloneableBean copies all properties of the given object. It also supports an ignore\-properties set, the property names in this set will not be copied to the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module. + + +## ObjectBean + + + +The ObjectBean is a convenience bean providing ToStringBean, EqualsBean and CloneableBean functionality support. Also, ObjectBeans implements the Serializable interface making the beans serializable if all its properties are. Beans extending ObjectBean get toString(), equals(), hashCode() and clone() support as defined above. + + + +And example of using the ObjectBean class is: + + + +``` + +public class MyBean extends ObjectBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + +``` + +## Enum + + + +The Enum is an enumeration base class \[Too bad Java 5.0 is not here yet (Aug/16/2004)\] with equals(), hashCode(), toString(), clone() and serialization support. When used as properties of Beans implementing any of the above function it provides a seamless integration. + + + +And example of using the EnumBean class is: + + + +``` + +public static class Day extends Enum { + private Day(String name) { + super(name); + } + + public static final Day SUNDAY = new Day("sunday"); + public static final Day MONDAY = new Day("monday"); + public static final Day TUESDAY = new Day("tuesday"); + public static final Day WEDNESDAY = new Day("wednesday"); + public static final Day THURSDAY = new Day("thursday"); + public static final Day FRIDAY = new Day("friday"); + public static final Day SATURDAY = new Day("saturday"); + + } + +``` + +## CopyFrom + + + +The CopyFrom interface defines functionality similar to a deep cloning. The difference with the clone() method (besides the deep cloning requirements) is that the object to be the copy of the original one has to be explicitly created and it is this object the one that triggers the deep copying process. Implemetations of the CopyFrom interface should work propertly on arrays, collections, CopyFrom and basic type properties. + + + +Using CopyFrom objects enables copying data between different implementations of a given interface without these implementation having to know about each other. + + + +CopyFrom is unidirectional. A class implementing the CopyFrom knows how to extract properties from the given class (commonly having an interface in common). + + + +A simple example using the CopyFrom interface is: + + + +``` + +public interface Foo extends CopyFrom { + public void setName(String name); + public String getName(); + + public void setValues(Set values); + public Set getValues(); + } + + public class FooImplA implements Foo { + private String _name; + private Set _values; + + public void setName(String name) { + _name = name; + } + + public String getName() { + return _name; + } + + public void setValues(Set values) { + _values = values; + } + + public Set getValues() { + return _values; + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + + public class FooImplB implements Foo { + private Map _data; + + public FooImplB() { + _data = new HashMap(); + } + + public void setName(String name) { + _data.put("name",name); + } + + public String getName() { + return (String) _data.get("name"); + } + + public void setValues(Set values) { + _data.put("values",values); + } + + public Set getValues() { + return (Set) _data.get("values"); + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + +``` + + +A use case for the CopyFrom functionality is a Java Bean implementation of an interface and a persistency implementation (such as Hibernate) of the the same interface that may add extra persistency related properties to the bean (ie, the 'Id' property as the persistency layer primary key). + + + +For bean, array and collection properties the bean being invoked which copyFrom() method is invoked is responsible for those properties. + + + +For properties implementing the CopyFrom interface, the bean must create a property instance implementing the interface returned by the getInterface() method. This allows the bean doing the copyFrom() to handle specialized subclasses of property elements propertly. This is also applicacle to array and collection properties. The 'modules' property of the SyndFeed and SyndEntry beans is a use case of this feature where the copyFrom() invocation must create different beans subclasses for each type of module, the getInteface() helps to find the right implementation. + diff --git a/src/site/markdown/rome/HowRomeWorks/index.md b/src/site/markdown/rome/HowRomeWorks/index.md new file mode 100644 index 0000000..1c57398 --- /dev/null +++ b/src/site/markdown/rome/HowRomeWorks/index.md @@ -0,0 +1,97 @@ +# How Rome works + + +**Dave Johnson (****[The Roller Weblogger](http://www.rollerweblogger.org/)****) has written a very nice blog** **[How Rome Works](http://www.rollerweblogger.org/page/roller/20040808#how_rome_works)** **describing (as the title says) how Rome works. With his permission we are adding it to Rome documentation.** + + + +I spent some time exploring the new [Rome](http://rome.dev.java.net/) feed parser for Java and trying to understand how it works. Along the way, I put together the following class diagram and notes on the parsing process. I provide some pointers into the [Rome 0.4 Javadocs](http://rome.dev.java.net/apidocs/0_4/overview-summary.html). + + + +You don't need to know this stuff to use Rome, but it you are interested in internals you might find it interesting. + + +## Notes on the Rome parsing process + + + +Rome is based around an idealized and abstract model of a Newsfeed or "Syndication Feed." Rome can parse any format of Newsfeed, including RSS variants and Atom, into this model. Rome can convert from model representation to any of the same Newfeed output formats. + + + +Internally, Rome defines intermediate object models for specific Newsfeed formats, or "Wire Feed" formats, including both Atom and all RSS variants. For each format, there is a separate JDOM based parser class that parses XML into an intermediate model. Rome provides "converters" to convert between the intermediate Wire Feed models and the idealized Syndication Feed model. + + + +Rome makes no attempt at [Pilgrim\-style liberal XML parsing](http://www.xml.com/pub/a/2003/01/22/dive-into-xml.html). If a Newsfeed is not valid XML, then Rome will fail. Perhaps, as [Kevin Burton suggests](http://www.peerfear.org/rss/permalink/2003/01/23/1043368363-Smart_Parsing__Not_RSS_Parsing.shtml), parsing errors in Newsfeeds can and should be corrected. Kevin suggests that, when the parse fails, you can correct the problem and parse again. (BTW, I have some sample code that shows how to do this, but it only works with Xerces \- Crimsom's SAXParserException does not have reliable error line and column numbers.) + + + +Here is what happens during Rome Newsfeed parsing: + + + + + + + +1. Your code calls [SyndFeedInput](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/io/SyndFeedInput.html) to parse a Newsfeed, for example (see also [Using Rome to read a syndication feed](RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html)): + +``` +URL feedUrl = new URL("file:blogging-roller.rss"); +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new InputStreamReader(feedUrl.openStream())); + +``` + + +1. SyndFeedInput delegates to WireFeedInput to do the actual parsing. + +1. [WireFeedInput](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/io/WireFeedInput.html) uses a PluginManager of class FeedParsers to pick the right parser to use to parse the feed and then calls that parser to parse the Newsfeed. + +1. The appropriate parser parses the Newsfeed parses the feed, using [JDom](http://www.jdom.org/), into a [WireFeed](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/WireFeed.html). If the Newsfeed is in an RSS format, the the WireFeed is of class [Channel](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/rss/Channel.html) and contains Items, Clouds, and other RSS things from the [com.sun.syndication.feed.rss](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/rss/package-summary.html) package. Or, on the other hand, if the Newsfeed is in Atom format, then the WireFeed is of class [Feed](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/atom/Feed.html) from the [com.sun.syndication.atom](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/atom/package-summary.html) package. In the end, WireFeedInput returns a WireFeed. + +1. SyndFeedInput uses the returned WireFeedInput to create a SyndFeedImpl. Which implements SyndFeed. SyndFeed is an interface, the root of an abstraction that represents a format independent Newsfeed. + +1. [SyndFeedImpl](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/synd/SyndFeed.html) uses a Converter to convert between the format specific WireFeed representation and a format\-independent SyndFeed. + +1. SyndFeedInput returns to you a SyndFeed containing the parsed Newsfeed. + + +## Other Rome features + + + +Rome supports Newsfeed extension modules for all formats that also support modules: RSS 1.0, RSS 2.0, and Atom. Standard modules such as Dublic Core and Syndication are supported and you can [define your own custom modules](RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) too. + + + +Rome also supports [Newsfeed output](RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) and for each Newsfeed format provides a "generator" class that can take a Syndication Feed model and produce from it Newsfeed XML. + + +## Learning more + + + +I've linked to a number of the Rome 0.4 Tutorials, here is the full list from the [Rome Wiki](../index.html): + + + +1. [Using Rome to read a syndication feed](RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) + +1. [Using Rome to convert a syndication feed from one type to another](RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + +1. [Using Rome to aggregate many syndication feeds into a single one](RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + +1. [Using Rome to create and write a feed](RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) + +1. [Defining a Custom Module bean, parser and generator](RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) + + +## Conclusion + + + +Overall, Rome looks really good. It is obvious that a lot of thought has gone into design and a lot of work has been done on implementation (and docs). Rome is well on the way to "ending syndication feed confusion by supporting all of 'em" for us Java heads. + diff --git a/src/site/markdown/rome/HowToBuildRome.md b/src/site/markdown/rome/HowToBuildRome.md new file mode 100644 index 0000000..35ad55e --- /dev/null +++ b/src/site/markdown/rome/HowToBuildRome.md @@ -0,0 +1,101 @@ +# How to build Rome? + + +Rome is built using mighty [Maven](http://maven.apache.org/)! This is why these instructions are so short:\-) + + + +If you don't want to build Rome we'd suggest you download a binary build:\-) + + +## Check out from Subversion + + + +See [Version Control](https://rometools.jira.com/source/browse/ROME) for access intructions and to browse the source from your browser. + + + +Check out the tag version\-0\-1 for version 0.1. Else checkout the trunk for the development version. + + +## Setup maven + + + +See [Installing Maven](http://maven.apache.org/run-maven/index.html) for details. + + + +Maven automatically downloads dependencies of a project from an online repository. + + +### Build rome.jar + + + +At the command prompt type: + + + +``` + +> mvn jar:jar + +``` + + +This will build + + + +``` + +rome/target/rome-VERSION.jar + +``` + + +You're good to go. + + +### Build a full binary distribution + + + +``` + +> mvn + +``` + +### Build the project site + + + +``` + +> mvn site + +``` + +## For Rome developers + + +### Work on Rome using Eclipse + + + +``` + +> mvn eclipse:eclipse + +``` + + +will setup the Eclipse project for you. + + + +We don't use the site:deploy or dist:deploy targets yet since java.net is not very maven\-friendly yet:\-) + diff --git a/src/site/markdown/rome/PreservingWireFeeds.md b/src/site/markdown/rome/PreservingWireFeeds.md new file mode 100644 index 0000000..bfdc357 --- /dev/null +++ b/src/site/markdown/rome/PreservingWireFeeds.md @@ -0,0 +1,52 @@ +# Preserving WireFeeds + + +WireFeeds will be preserved if the property preserveWireFeed is set on the SyndFeedInput object it is built from: + + + +``` + +SyndFeedInput in = new SyndFeedInput(); +in.setPreserveWireFeed(true); +SyndFeed syndFeed = in.build(..); +WireFeed wireFeed = syndFeed.originalWireFeed(); + +``` + + +Atom/RSS Entry/Item objects are also available from SyndEntry objects if the WireFeed is preserved: + + + +``` + +Object obj = syndEntry.getWireEntry(); +if (obj != null && obj instanceof Entry) { + // it is an Atom Entry object + // do Atom specific stuff, eg: + Entry entry = (Entry) o; + System.out.println(entry.getRights()); +} else if (obj != null && obj instanceof Item) { + // it is a RSS Item object + // do RSS specific stuff eg: + Item item = (Item) o; + System.out.println(item.getComments()); +} + +``` + + +The Fetcher can be set to preserve WireFeeds by setting the preserveWireFeed property to true: + + + +``` + +feedFetcher.setPreserveWireFeed(true); + +``` + + +\-\- Main.nicklothian \- 11 Mar 2009 + diff --git a/src/site/markdown/rome/ProductsOrSitesPoweredByROME.md b/src/site/markdown/rome/ProductsOrSitesPoweredByROME.md new file mode 100644 index 0000000..3240751 --- /dev/null +++ b/src/site/markdown/rome/ProductsOrSitesPoweredByROME.md @@ -0,0 +1,198 @@ +# Products or sites powered by ROME + + +If your site or project is powered by ROME, please take the time to write a short testimonial on this wiki page, or send a mail to [users@rome.dev.java.net.](mailto:users@rome.dev.java.net.) Feel free to use our "Powered by ROME" badges in your work. (Several badge variations are available at the bottom of this page.) + + + + + + +## Open Source using ROME + + + +* [Firenze](http://firenze.berlios.de/) + Firenze is a free Java based open source command line podcast receiver. It is powered by the ROME syndication framework. With Firenze you can easily subscribe to your favorite Podcast feeds and reveive them. + +* [Feed'n Read](http://fnr.sourceforge.net/) + Feed'n Read (FnR) is a free Java based open source newsfeed reader. It is powered by the ROME syndication framework and therefore supports all current formats (RSS 0.90, 0.91, 0.92, 0.93, 0.94, 1.00, 2.00, ATOM 0.30 and 1.00). It disposes of an intuitive, fast and responsive user interface using the eclipse Rich Client Platform (RCP), i.e. JFace and SWT. Thus it combines the platform independent Java world on one hand with a fast native user interface on the other hand. + +* [Tudu Lists](http://tudu.sourceforge.net/) + An AJAXian Todo Lists manager. We moved from our hand\-made solution to ROME with great pleasure \- it was fast and easy, and the overall performance is very good (11 ms per request in average today). You can try it out on our live site at [http://tudu.ess.ch](http://tudu.ess.ch/). + +* [SnipSnap](http://snipsnap.org/) + +* [Roller Weblogger and Aggregator](http://www.rollerweblogger.org/page/project) + Roller is a weblog server. In Roller 1.1 there is a new aggregator feature, called PlanetRoller, based on ROME and ROME fetcher. Dave Johnson, who created Roller, [created PlanetRoller in a couple of days](http://rollerweblogger.org/page/roller/20050213#rome_texen_planet_roller), leveraging ROME and ROME fetcher to do all the hard work. You can try out at [PlanetRoller](http://www.rollerweblogger.org/planet/roller.html). + +* [ActiveMQ](http://incubator.apache.org/activemq/) + Apache ActiveMQ is a fast open source JMS 1.1 provider and Message Fabric supporting clustering, peer networks, discovery, TCP, SSL, multicast, persistence, XA and integrates seamlessly into J2EE 1.4 containers, light weight containers and any Java application. ActiveMQ is released under the Apache 2.0 License. + Currently ActiveMQ is using Rome to be able to [browse message queues](http://docs.codehaus.org/display/ACTIVEMQ/RSS+and+Atom) (with or without filters applied) as RSS or Atom feeds. + +* [XWiki](http://www.xwiki.org/) + +* [mobibot](http://www.thauvin.net/mobitopia/mobibot/) + +* [stat4j](http://sourceforge.net/projects/stat4j/) + Used ROME to create an RSS/ATOM Log4j Appender. Read more about it [here](http://www.jroller.com/comments/laraDAB?anchor=rss_atom_log4j_appender). + +* [SPOT Manager](http://www.spotdev.net/) + SPOT Manager uses ROME to parse RSS feeds and send them to your MSN Direct wristwatch! Learn about MSN Direct [here.](http://www.msndirect.com/) Download the program from [SPOTDev.net](http://www.spotdev.net/). + +* [LogDistiller](http://logdistiller.sf.net/) + LogDistiller is an extensible tool to merge and sort logs : reports can be stored in a feed file thanks to Rome. + +* [ION Internet Video Console](http://openvision.tv/) + The I/ON Internet Video Console fuses together leading technologies into one simple media player, connecting you directly to the video you want. Avoid the ads, pop\-ups, and spyware that come with watching video in a browser and watch the web. ROME powers our RSS capabilities. Learn more and download [here](http://openvision.tv/). + +* [Blog Mover](http://code.google.com/p/blog-mover) + Blog Mover's goal is allowing your blog moving freely between each BSP(Blog Service Provider). Learn more and try it [here](http://blog-mover.redv.com/). + +* [Scarab](http://scarab.tigris.org/) + The goal of the Scarab project is to build a highly customisable Artifact tracking system. It's distributed under a BSD/Apache style license. + +* [Ozmozr](http://ozmozr.org/) + Ozmozr is a website for online learning communities being developed by the [Center for Open Sustainable Learning](http://www.cosl.usu.edu/) at [Utah State University](http://www.usu.edu/). In ozmozr, users are both content producers and consumers, relying on their social networks to filter and distribute meaningful content. Ozmozr was built to leverage emergent technologies and support social and collaborative information filtering, self\-organization, identity development, and free/open resource\-sharing. + + +## Open Source Research Prototypes using ROME + + + +* [MORSE](http://www.infosys.tuwien.ac.at/prototype/morse/) + The [Model\-Aware Repository and Service Environment](http://www.infosys.tuwien.ac.at/prototype/morse/) (MORSE) is a service\-based environment for the storage and retrieval of models and model\-instances at both design\- and runtime. Models, and model\-elements are identified by Universally Unique Identifiers (UUID) and stored and managed in the MORSE repository. The MORSE repository provides versioning capabilities so that models can be manipulated at runtime and new and old versions of the models can be maintained in parallel. MORSE exposes various services to runtime clients and modeling tools. For instance, a [feed](http://www.infosys.tuwien.ac.at/m2projects/at.ac.tuwien.infosys.tholmes.morse/rs-impl/) reflects the latest changes within the repository. + + +## Free, Based On Open Standards, using ROME + + + +* [ScheduleWorld](http://www.scheduleworld.com/) + +* [FeedPod](http://feedpod.dev.java.net/) + + +## Commercial using ROME + + + +* [Interactive Brokers TraderWorkstation (TWS)](http://interactivebrokers.com/) + Interactive Brokers is leading software based broker. IB offers Universal Direct\-Access Trading and sophisticated trade management tools at highly competitive costs to professional traders and investors worldwide. IB is the gateway to trading a broad array of financial instruments \-\- stocks, options, futures, corporate bonds as well as forex \-\- on over 50 exchanges and marketplaces in 14 countries. TraderWorkstation is java\-based trading platform; ROME library is used to fetch, aggregate and visualize news related to securities listed in the application. + +* [parss](http://weblogs.at/parss/stories/2315/) + From the antville guys, that we met at blogtalk 1.0 2 years ago. + +* [Public Interactive](http://www.publicinteractive.com/) + Public Interactive® is the leading integrated Application Service Provider (ASP) of on\-line collaborative tools, community engagement technologies, content syndication services and member and audience relationship management systems for the public broadcasting industry. Rome is used for syndicating news content and Podcasts local published by stations in the Public Interactive network. + +* [Blog\-City Ltd](http://www.blog-city.com/) + Blog\-City.com has been using ROME for many months now, utilising both the core project and the Fetcher project to allow bloggers to run their own mini\-aggregators within their blog. + +* [Reger.com](http://www.reger.com/) + All blogs running at reger.com include ROME feeds. With the custom ROME module we wrote entry data is included in the RSS feeds. DataBlogging allows people to append activity\-specific data to each of their entries. In addition to the pre\-built log types (Running Log, Biking Log, Movie Log, etc), users can create custom log types with whatever data fields they need. The module outputs those data fields. Users simply customize their log types, adding and removing fields, and then the RSS feed automatically includes it. An RDDL document for the namespace can be found at[http://www.reger.com/about/specs/entrydata.rddl](http://www.reger.com/about/specs/entrydata.rddl) Thanks again for all of the help and for making ROME great! + +* [CNET Networks/TechRepublic.com](http://techrepublic.com.com/) + CNET Networks uses ROME with an application called the RSS Harvester. The purpose of this application is to harvest a list of predefined RSS/ATOM feeds, saving all new items for each feed in a database. In addition, each feed has an associated keyword that allows for easy surfacing of harvested data. + Once the feed data has been collected, internal editors can surface links to the harvested data on the TechRepublic website by including a call to a JSP component. This component passes several parameters including the number of items to return, the number of items from a particular site and an associated keyword. For example, [http://techrepublic.com.com/2001\-10591\-0.html](http://techrepublic.com.com/2001-10591-0.html) (see the section "More on ...") we surface related articles. + We are also using Rome for Re\-Blogging on TechRepublic.com. Users can start their own blogs on the site as well as choose to import an RSS feed from an existing blog such as blogger.com. When the user imports an existing blog we use Rome to parse the RSS/ATOM feed then convert it to a TechRepublic blog. Any new blog posts on the external blog are automatically imported to TechRepublic. + +* [Edmunds.com Inside Line](http://www.edmunds.com/insideline/) + We are currently using ROME as our feed generator and as a feed parser. Currently we publish RSS feeds of our latest articles on www.insideline.com, however, we also use it to provide updates between our sites. For example, our community site [Townhall](http://townhall-talk.edmunds.com/) produces RSS feeds which we then parse using ROME on our [Inside Line](http://www.edmunds.com/insideline) property. Rome has significantly speed up our development times thanks to its clean object model and its ability to generate multiple feed types. + +* [HBO Podcasts](http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewArtist?artistId=118405710) (iTunes Music Store Link) + HoPE (HBO Podcast Engine) powered by ROME and the iTunes Podcast module. To date has served over 15\-million podcasts for HBO podcast content such as The Sopranos, Real Time with Bill Maher, and Rome + +* [DressUpYourWedding](http://www.dressupyourwedding.com/Article.do) + + +## Sites using ROME + + + +* [Yabot](http://www.yabot.net/) + Yabot is a news service currently available in five editions (May 2008). + + Discovering and implementing ROME made Yabot's feed aggregation faster and easier. In previous versions we rendered the XML our selves but with ROME now doing most of this work developers can focus on presentation and integration features. Thanks! + +Mats, co\-founder @ Yabot \-[http://www.yabot.net](http://www.yabot.net/) + +* [WASALive](http://www.wasalive.com/) + Wasalive is a news, blogs and forums search engine. Results are sort by a mix of relevancy and date. Thanks to ROME library, Wasabot fetch and parse more than 70k feeds/days and store 3M posts. Thanks to ROME UTF8 support Wasalive is avalaible in [Russian](http://ru.wasalive.com/), [French](http://fr.wasalive.com/),[Spanish](http://es.wasalive.com/), [English](http://en.wasalive.com/) + +* [http://www.airport\-information.com](http://www.airport-information.com/) + Rome is used to create a RSS feed with news on airports worldwide. The database runs under Tomcat. The Rome library was very helpful and allowed an easy and quick implementation. \-\- Main.airportinformation \- 28 Jan 2008 + +* [http://www.abclinuxu.cz](http://www.abclinuxu.cz/) + I use rome in daily production on www.abclinuxu.cz for watching cca 8 feeds and generating cca 60 feeds. After fixing charset related issues (thanks!) it runs smoothly. I am happy that I could remove my old propietary RSS rw code with Rome ... Leos + +* [http://feeds.my.aol.com](http://feeds.my.aol.com/) + The latest My AOL product, a customizable, feed\-driven web application, uses the Rome library to read, manipulate, and normalize RSS, RDF, and Atom feeds. My AOL was built on a very rapid development schedule, and Rome made much of it a lot easier than it otherwise would have been. \-\-Bill Kocik, Sr. Software Engineer, America Online, Inc. + +* [http://www.backbase.com](http://www.backbase.com/) + Rome is used on our site to provide rss feeds for forum threads. Implementation took me something like few hours (including downloading and installation), so needless to say I am very happy. Thanks. m.j.milicevic + +* [The Open Source Zone](http://oszone.org/) + Rome is used to power the [Planet](http://oszone.org/channels) section of The Open Source Zone, where we aggregate the most interesting feeds concerning Open Source. Took very little to implement, thanks to Rome. Rome Fetcher is used too, which is great. + +* [rel8r.com](http://www.rel8r.com/) + rel8r is a tag search and feed aggregator. Rome is used extensively for collecting feeds as well as for publishing all of the aggregated feeds. We love it. \- Travis + +* [NewsRack](http://newsrack.in/) + Several organizations in the social development sector monitor news that is relevant to their work. This is a time\-consuming and laborious process for some groups, especially when the news is monitored, marked, cut, and filed using hard copies of newspapers and magazines. This process is very much the case in India. However, much of this work can be automated using web versions of newspapers and magazines. In this context, the broad goal of this project is to automate news monitoring. + NewsRack is a tool/service for classifying, filing, and long\-term archiving of news. Users specify filtering rules which are used to select relevant articles from incoming news feeds. The selected articles are then classified into various categories. This process is similar to the process of specifying email filters to pre\-sort incoming mail into various folders. + NewsRack is currently using Rome. I am looking for developers, so, if this project tickles you, please get in touch! \- Subramanya Sastry + +* [http://www.rsspress.it](http://www.rsspress.it/) + An Italian Rss Aggregator, with a very nice design and layout, very simple to use, with a lot of rss feeds not only in italian language. You can register it and have your personalized homepage with your preferred news. + +* [Geonames RSS to GeoRSS](http://www.geonames.org/rss-to-georss-converter.html) + The Geonames "RSS to GeoRSS Converter" reads the entries of an RSS feed and searches the Geonames Database to find a location for the entry text. If a relevant location is found, its latitude and longitude are added to the RSS feed using the GeoRSS encoding. + +* [feedarea.de](http://www.feedarea.de/) + FeedArea.de is a RSS, Atom and Podcast portal using Rome for handling the feed submissions. + +* [podblock.de](http://www.podblock.de/) / [podblock.com](http://www.podblock.com/) + PodBlock is a podcast portal using Rome for handling the feed submissions. + +* [javaMix.co.uk](http://www.javamix.co.uk/) + javaMix is a java news aggregation website using Rome to find the news. + +* [JavaMix](http://www.javamix.co.uk/) + the latest java news, articles and resources + +* [Wirecatch](http://wirecatch.com/) + Wirecatch is a semantic news aggregator and visualization tool. It uses Rome to grab several news feeds and show connections and relationships between names, concepts and documents. + +* [Swift](http://swiftmob.com/) + Swift imports rss feeds and formats them for mobile devices. Swift also include many other tools for building mobile friendly webpages that will reshape themselves for each phone so the experience for the end user is as good as possible. + +* [DevMeat](http://devmeat.com/) + DevMeat deliver fresh meat for software developers and Rome is TOP cook ! + +* [Folder2Feed](http://folder2feed.nogoodatcoding.com/) + Folder2Feed allows users to generate feeds from the contents of local and network folders; providing an easy way to monitor updates to folders of interest for a large audience. + +* [podcast.tv](http://www.podcast.tv/) + +* [podcast.it](http://www.podcast.it/) + +* [podcast.at](http://www.podcast.at/) + Podcast.tv, podcast.it and podcast.at are podcast directories using Rome for handling the feed submissions and parsing. + +* [CollaborationToday.info](http://collaborationtoday.info/) +Collaboration Today is a news aggregator, also an open source software developed by OpenNTF. This site is for IBM Collaboration Solutions professionals covering news about various IBM products like IBM Connections, IBM Notes/ Domino, IBM WebSphere Portal etc. and cross product topics like mobile, cloud and analytics. Rome is running on background and fetching stories from various sites. + + +## Powered By ROME Badges Here are badges for use with your ROME\-powered site or software: + + + +* **Static:** + +* **Animated:** + + + +Please copy the image to your own server rather than link to the image on its current host. + diff --git a/src/site/markdown/rome/ROMEAndMaven2.md b/src/site/markdown/rome/ROMEAndMaven2.md new file mode 100644 index 0000000..b585245 --- /dev/null +++ b/src/site/markdown/rome/ROMEAndMaven2.md @@ -0,0 +1,56 @@ +# ROME and Maven 2 + + +this page is not up to date + + + +Starting with ROME 1.0 RC2, rome jars are deployed on the [java.net maven repository](http://download.java.net/maven/2/). + + + +In your project you can add this repository by putting the following XML into your pom.xml + + + +``` + + + maven2-repository.dev.java.net + Java.net Repository for Maven + http://download.java.net/maven/2/ + default + + +``` + + +As of 22, April 2009, the jars are deployed for the following releases: + + + +* ROME 1.0 + +* ROME Fetcher 1.0 + +* ROME Modules 0.3.2 + + + +To include the Rome 1.0 in your maven2 project: + + + +``` + + + rome + rome + 1.0 + + +``` + + +\-\- Main.mj\_ \- 22 Apr 2009 + diff --git a/src/site/markdown/rome/ROMEAndOSGI.md b/src/site/markdown/rome/ROMEAndOSGI.md new file mode 100644 index 0000000..d2c3872 --- /dev/null +++ b/src/site/markdown/rome/ROMEAndOSGI.md @@ -0,0 +1,13 @@ +# ROME and OSGI + + +From ROME 1.0 RC2 onwards, the ROME jar includes OSGi information in its manifest. + + + +Note that we have received some reports that ROME plugin classloading may cause problems with OSGi. Setting the system property "rome.pluginmanager.useloadclass" to "true" may help avoid this. See [Issue 118](http://java.net/jira/browse/ROME-118) for further information. + + + +\-\- Main.nicklothian \- 08 Jan 2009 + diff --git a/src/site/markdown/rome/ROMEDevelopmentProcess.md b/src/site/markdown/rome/ROMEDevelopmentProcess.md new file mode 100644 index 0000000..b2e0bf9 --- /dev/null +++ b/src/site/markdown/rome/ROMEDevelopmentProcess.md @@ -0,0 +1,21 @@ +# ROME Development Process + + +We're welcoming our first external developer, [Nick Lothian](http://www.mackmo.com/nick/blog/) today, so we thought it would be good to set a few basic rules for this project. We don't want to be too formal, since we're still alpha, and trust our developer's common sense to "do the right thing". + + + +* Please before commiting anything send an email in the rome developer lists to explain what you want to do + +* When you create some new code, please javadoc it, and unit tests are welcome + +* If your code involves new functionality for end users, please document it on the wiki. + +* and update the [RomeChangesLog](ChangeLog.html) + +* I think that's it: Welcome to Rome + + + +\-\- [PatrickChanezon](http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon) \- 17 Jun 2004 + diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md b/src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md new file mode 100644 index 0000000..862e5fc --- /dev/null +++ b/src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md @@ -0,0 +1,428 @@ +# ROME2 1st Proposal (June 10th 2006) NOT CURRENT + + +It has been 2 years since ROME started and along the way we've fixed, improved, enhanced and changed the API and the implementation. We've had to address things we did not think at first, we have to add support for specifications that were not around when ROME started, doing that has not being a hard task. The best indicator we've done a fair job with ROME is adoption. + + + +Some cracks are starting to appear, mistakes in the design (such as overloading the use of DCModule), a bit of implementation over\-engineering (such as the home grown bean\-introspector and the **smart** ObjectBean & co classes), a more complex than needed API (the existence of 2 abstraction levels for feed, Synd and Wire beans). + + + +This proposal attempts to address the problems and limitations we currently have with ROME. + + +## Backwards Compatibility, Support and Upgrade + + + +ROME2 will change the API breaking backwards compatibility (after all we are an Open Source Project and that is what they do best). + + + +We will maintain ROME 1.0 (bugfixing only) for 1 year to allow a smooth transition for all ROME users. We will also prepare migration/upgrade tips (based on our own experience) for the ROME community. + + +## Leveraging New Language Features + + + +ROME2 will make use of Generics to type collections in its beans. It will also use the **enum** construct when applicable. + + +## Minimum Number of Dependencies + + + +ROME2 will implement its core competency (Atom and RSS parsing, generation and manipulation), it will leverage other components as much as possible but it will focus, as ROME, in being as lean as possible not only in its code by in its dependencies (keeping them down to a reasonable minimum). + + +## One Abstraction Level, 2 Models + + + +ROME2 will not have an abstract representation of feeds (the Synd beans). It will have 2 distinct models, Atom and RSS, both of them first citizens. + + + +ROME2 users will use the model that fits more their needs. + + + +Conversion (automatic and implicit) between the 2 models will be part of ROME2. + + +## No Interfaces, Pluggable Beans + + + +Interfaces are good, in fact they are great. However, when using them with beans that have to be created by the developer it ads noise to the code. Interfaces are used for all parameters and variables but implementations must be used to create the bean instances thus hard\-coding areas of the application to a specific implementation. Or a factory pattern has to be use throughout the code to hide the implementation, with a side effect of removing clarity from the code. + + + +ROME2 will bring the best of both worlds, it will allow coding such as + + + +``` + +Feed feed = new Feed(); +Entry entry1 = new Entry(); +Entry entry2 = new Entry(); +feed.getEntries().add(entry1); +feed.getEntries().add(entry2); + +``` + + +While allowing pluggability of the beans implementation. The pluggability will be achieved using a combination of a factory pattern and a self\-proxy patterns, both of them transparent to the ROME2 user. + + + +For example the ROME2 API bean for the Atom feed would be something like: + + + +``` + +public class Feed { + private Feed feed; + + public Feed() { + if (this.getClass() == Feed.class) { + feed = BeanFactory.getFactory().create(Feed.class); + } + } + + public final Feed getImplementation() { + return feed; + } + + public Text getTitle() { + return feed.getTitle(); + } + + public void setTitle(Text title) { + feed.setTitle(title); + } + +... +} + +``` + + +The ROME2 (default/provided) implementation bean for the Atom feed would be something like: + + + +``` + +public class FeedBean extends Feed { + private Text title; + + public Text getTitle() { + return title; + } + + public void setTitle(Text title) { + this.title = title; + } + +... +} + +``` + + +ROME2 users will use the ROME2 API bean as plain objects that they are. The ROME2 API beans will delegate all their properties to an instance implementing their corresponding class. This instance will be the implementation bean which is created by the BeanFactory. + + + +To provide alternate implementation beans an alternate BeanFactory has to be provided. + + + +To write an alternate implementation beans the ROME2 API bean has be used as an interface, all property methods have to be overridden, nothing else. + + + +When extending ROME2 API beans, for example providing a new module bean, it is left to the implementor to follow this pattern or to use plain beans for the the additional module. + + + +For cases (they shouldn't be many) that a ROME2 user needs to manipulate the implementation bean, all ROME2 API beans will give access to it via the getImplementation() method. + + +## Using multiple Bean implementations simultaneously + + + +ROME2 will support the use of multiple implementation beans simultaneously. + + + +A use case could be retrieving a feed from a persistent store (which uses its own implementation beans), retrieving a feed from the internet (using the default implementation beans), merging their entries and producing an output feed, into the persistent store or out to the internet. + + + +ROME2 public API will include the following classes for this purpose: + + + +``` + +public abstract class BeanFactory { + public abstract T create(Class beanClass); +} + +public class BeanFactoryInjector { + public static void execute(BeanFactory factory, Runnable runnable) { .. } +} + +``` + + +When these two classes are not used explicitly ROME2 will use the default BeanFactory that creates default implementation beans. + + + +For alternate implementation beans a BeanFactory has to be provided. This factory will be responsible for creating a complete ROME2 bean family. + + + +The code to create ROME2 beans with an alternate factory will have to be written in the run() method of a Runnable object and it will have to be executed via the BeanFactoryInjector.execute() method. + + + +The created ROME2 beans could be used outside of the Runnable.run() method, because of this ROME2 users have to be aware that it is possible to mix and match implementation beans and that may not always have a happy ending if not thought properly. + + +## Collection Elements + + + +All collection properties (such as the authors, categories, contributors, links and entries of an Atom feed bean) will only have getter methods in the ROME2 API beans, no setter methods. For example: + + + +``` + +public class Feed { + public List getAuthors() { ... } + public List getCategories() { ... } + ... +} + +``` + + +This will ensure that the implementation bean has control on the implementation of the collection being used. This is particularly important to enable alternate implementation beans to fetch data from a repository as the collection is iterated over. + + + +Persistent experts we need your input here. + + +## Modules + + + +Feeds, both RSS and Atom, are extensible via namespaced elements at feed/channel and entry/item level, these namespace elements are known as modules. Beans supporting modules (feed, channel, entry and item) will all have the following method to support modules. + + + +``` + +public Map getModules() { ... } + +``` + + +Because modules are uniquely identified by their URI, a Map will be used, the key will be the URI of the module and the value the module itself. As with other ROME2 API bean collection properties, the getModules() property has a getter only, the Map implementation is controlled by the implementation bean. + + + +Module URIs in ROME2, as all the links URLs in the beans, will be Strings thus reducing object creation explosion a bit. For cases that some URI manipulation is required, the JDK URI class should be used. + + +## Dynamic Modules Support + + + +ROME2 modules design has to ensure it provides simple and comprehensive support for dynamic modules such as SLE and GData. + + +## Unknown Modules + + + +A special Module subclass, UnknownModule, will serve as placeholder for module data not explicitly processed by ROME2 available parsers/generators. This will allow to consume and re\-export a feed without losing unknown (to ROME2) modules. Each unknown module will be keyed off with its URI in the map of the associated feed, channel, entry or item. + + + +The data of the unknown module will be available as a String. ROME2 users should not use \=UnknownModule\='s data directly, if they need to manipulate that data they should find or implement bean/parser/generator for the module they need to manipulate. + + + +Because unknown modules brings some extra overhead in the parsing and generating process ROME2 will have a property to enable/disable processing of unknown modules. + + +## The xml:lang Attributes + + + +All ROME2 API beans will have xml:lang attributes, String and enum and primitive types properties won't. + + +## The xml:base Attributes + + + +The xml:base attribute will not be present in any ROME2 API bean. + + + +It will be the responsibility of the parsers to resolve any relative URL present in the feed at parsing time. Similarly, generators may relativize URLs as a size optimization (for God's sake we are doing XML). + + +## Conversion between Feed Types + + + +A FeedConverter class will provide conversion from Atom to RSS beans and vice versa, both at feed/channel and entry/item level. All properties, including modules data will be copied, after an conversion the state of the beans will be completely independent. + + +## Object Class Methods in ROME2 Beans + + + +The equals() and hashCode() methods will not be overridden. All ROME2 beans are mutable, it is not safe to use them as keys of hash structures. + + + +Cloning will not be supported by ROME2 beans, instead they will have a copyFrom() method which is type safe and does a deep copy. Cloning a ROME2 bean will be a two step process, for example: + + + +``` + +Feed feed1 = new Feed(); +... +Feed feed2 = new Feed(); +feed2.copyFrom(feed1); + +``` + + +The toString() method in the beans will print the property that most likely identifies the bean plus the class name of the implementation bean. For example for a Feed bean the output of toString() would be: + + + +``` + +[http://foo.com/atom.xml - xxx.rome2.impl.pojo.atom.FeedBean] + +``` + + +\-\-\+\+ Plugins ClassLoading + + + +Bean implementations, parsers, generators, converters and all pluggable ROME2 components will be loaded using the same classLoader ROME2 core classes are loaded from. + + + +This is to keep simple the handling of them via singletons and their instantiation. Supporting different classLoaders would require complex handling for instantiation, to avoid missing classes and class mismatches. + + + +As an example of how easy things can go sour, imagine ROME2 core classes in the common path of a web\-container and 2 web\-apps adding their own beans/parsers/generators/modules, the singletons managing them are in ROME2 core, managed by the common classLoader, a simple singleton won't cut it. ROME2 core will be small enough that it will not be a memory consumption issue if it is once in each web\-app. + + +## Parsers and Generators + + + +XML parsing and generation will support stream mode. We may even consider using streaming as the underlaying default implementation even if manipulating a feed bean on its whole in memory. We have to see if how this could be done leveraging Abdera, else using StAX API directly. This also means we may get rid of the JDom dependency. + + + +For example, the streaming version of an Atom parser and generator would be something like: + + + +``` + +public interface AtomReader { + + // repeatable operation, returns was has been read from the header so far + Feed readFeed() throws FeedException; + + // returns null when reaches the end of the feed + Entry readEntry() throws FeedException; + + void close() throws FeedException; + } + +public interface AtomWriter { + + // if called must be called once and before a write(Entry) + void write(Feed feed) throws FeedException; + + // if the first write is for an entry, then the output is an entry document + abstract void write(Entry entry) throws FeedException; + + void close() throws FeedException; + } + +``` + + +As with ROME, in ROME2 Parsers will be as lenient as possible. Generators will be strict. + + +## Feed Validators + + + +A bean FeedValidator class will verify that a feed or entry bean is valid for a given feed type. Feed generators would use this class to ensure feed correctness. + + +## Feed Conversion + + + +Conversion from Atom beans to RSS beans and vice versa will be done by a FeedConverter class that would have the following signature: + + + +``` + +public class FeedConverter { + public Feed convertToFeed(Channel channel, boolean processItems) { ... } + public Entry convertToEntry(Item item) { ... } + public Channel convertToChannel(Feed feed, boolean processEntries) { ... } + public Item convertToItem(Entry entry) { ... } +} + +``` + + +Because the mapping from Atom to RSS elements is sometimes subject do discussion and different requirements the FeedConverter class will be pluggable. It will implement the self\-proxy pattern ROME2 API beans implement. + + +## Parser and Generator Filters + + + +Manipulation of feeds during parsing and generation at feed/channel and entry/item level will be possible by implementing readers and writers wrappers that work on top of the original reader and writer instances. + + + +This filtering/wrapping could be automated via configuration. + + +## Sources + diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md b/src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md new file mode 100644 index 0000000..8487913 --- /dev/null +++ b/src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md @@ -0,0 +1,434 @@ +# ROME2 2nd Proposal (July 18th 2006) CURRENT + + +It has been 2 years since ROME started and along the way we've fixed, improved, enhanced and changed the API and the implementation. We've had to address things we did not think at first, we have to add support for specifications that were not around when ROME started, doing that has not being a hard task. The best indicator we've done a fair job with ROME is adoption. + + + +Some cracks are starting to appear, mistakes in the design (such as overloading the use of DCModule), a bit of implementation over\-engineering (such as the home grown bean\-introspector and the **smart** ObjectBean & co classes), a more complex than needed API (the existence of 2 abstraction levels for feed, Synd and Wire beans). + + + +This proposal attempts to address the problems and limitations we currently have with ROME. + + +## Backwards Compatibility, Support and Upgrade + + + +ROME2 will change the API breaking backwards compatibility (after all we are an Open Source Project and that is what they do best). + + + +We will maintain ROME 1.0 (bugfixing only) for 1 year to allow a smooth transition for all ROME users. We will also prepare migration/upgrade tips (based on our own experience) for the ROME community. + + +## Leveraging New Language Features + + + +ROME2 will make use of Generics to type collections in its beans. It will also use the **enum** construct when applicable. + + +## Minimum Number of Dependencies + + + +ROME2 will implement its core competency (Atom and RSS parsing, generation and manipulation), it will leverage other components as much as possible but it will, as ROME, be as lean as possible not only in its code but in its dependencies (keeping them down to a reasonable minimum). + + +## One Abstraction Level, 2 Models + + + +ROME2 will not have an abstract representation of feeds (the Synd beans). It will have 2 distinct models, Atom and RSS, both of them first citizens. + + + +ROME2 users will use the model that fits more their needs. + + + +Conversion (automatic and programmatic) between the 2 models will be part of ROME2. + + +## Bean Interfaces + + + +After some discussions on the first ROME2 proposal we are going back to the interface model. The self proxy pattern proposed in the first proposal (to be able use arbitrary implementations) adds a bit of complexity into understanding what is going one plus it does not address in a clean way the needs for persistency (such as Hibernate or JPA). + + + +All ROME2 beans will interfaces. Different from ROME, the implementation classes for the ROME2 beans will not be part of the public API. Instead using directly constructors to create ROME2 beans, a factory pattern will be used. A Convenience class, Rome, will wrap the factory class providing a concise way of creating a ROME2 bean. + + + +For example, creating ROME2 beans using the Rome class convenience class will be something like: + + + +``` + +Feed feed = Rome.create(Feed.class); +Entry entry1 = Rome.create(Entry.class)); +Entry entry2 = Rome.create(Entry); +feed.getEntries().add(entry1); +feed.getEntries().add(entry2); + +``` + + +Which is equivalent to (using the Rome Bean factory class): + + + +``` + +Feed feed = BeanFactory.getFactory().create(Feed.class); +Entry entry1 = BeanFactory.getFactory().create(Entry.class)); +Entry entry2 = BeanFactory.getFactory().create(Entry); +feed.getEntries().add(entry1); +feed.getEntries().add(entry2); + +``` + + +To provide an alternate implementation beans an alternate set of beans will have to be provided. In addition, if necessary, an alternate bean factory could be used. + + + +To write an alternate implementation the bean classes will have to implement the ROME2 interface beans. + + +## Using multiple Bean implementations simultaneously + + + +ROME2 will support the use of multiple implementation beans simultaneously by changing the bean factory at anytime. + + + +A use case could be retrieving a feed from a persistent store (which uses its own implementation beans), retrieving a feed from the internet (using the default implementation beans), merging their entries and producing an output feed, into the persistent store or out to the internet. + + +## Bean Factory Scopes + + + +The bean factory will support a default factory and a context factory. The default factory is used if no context factory is available. The context factory uses a InheritableThreadLocal to store the factory in context, this is useful for use in dependency injection containers (Servlet, Spring, etc). + + +## Collection Elements + + + +All collection properties (such as the authors, categories, contributors, links and entries of an Atom feed bean) will only have getter methods in the ROME2 API beans, no setter methods. For example: + + + +``` + +public class Feed { + public List getAuthors() { ... } + public List getCategories() { ... } + ... +} + +``` + + +This will ensure that the implementation bean has control on the implementation of the collection being used. This is particularly important to enable alternate implementation beans to fetch data from a repository as the collection is iterated over. + + +## Modules + + + +Feeds, both RSS and Atom, are extensible via namespaced elements at feed/channel and entry/item level, these namespace elements are known as modules. Beans supporting modules (feed, channel, entry and item) will all have the following method to support modules. + + + +``` + +public Map getModules() { ... } + +``` + + +Because modules are uniquely identified by their URI, a Map will be used, the key will be the URI of the module and the value the module itself. As with other ROME2 API bean collection properties, the getModules() property has a getter only, the Map implementation is controlled by the implementation bean. + + + +Module URIs in ROME2, as all the links URLs in the beans, will be Strings thus reducing object creation explosion a bit. For cases that some URI manipulation is required, the JDK URI class should be used. + + +## Dynamic Modules Support + + + +ROME2 modules design has to ensure it provides simple and comprehensive support for dynamic modules such as SLE and GData. + + +## Unknown Modules + + + +A special Module subclass, UnknownModule, will serve as placeholder for module data not explicitly processed by ROME2 available parsers/generators. This will allow to consume and re\-export a feed without losing unknown (to ROME2) modules. Each unknown module will be keyed off with its URI in the map of the associated feed, channel, entry or item. + + + +The data of the unknown module will be available as a String. ROME2 users should not use \=UnknownModule\='s data directly, if they need to manipulate that data they should find or implement bean/parser/generator for the module they need to manipulate. + + + +Because unknown modules brings some extra overhead in the parsing and generating process ROME2 will have a property to enable/disable processing of unknown modules. + + +## The xml:lang Attributes + + + +All ROME2 API beans will have xml:lang attributes, String and enum and primitive types properties won't. + + +## The xml:base Attributes + + + +The xml:base attribute will not be present in any ROME2 API bean. + + + +It will be the responsibility of the parsers to resolve any relative URL present in the feed at parsing time. Similarly, generators may relativize URLs as a size optimization (for God's sake we are doing XML). + + +## Object Class Methods in ROME2 Beans + + + +The equals() and hashCode() methods will not be overridden. As all ROME2 beans are mutable, it is not safe to use them as keys of hash structures. + + + +Cloning will not be directly defined by ROME2 interface beans, instead they will have a copyFrom() method which is type safe and does a deep copy. Cloning a ROME2 bean will be a two step process, for example: + + + +``` + +Feed feed1 = Rome.create(Feed.class); +... +Feed feed2 = Rome.create(Feed.class); +feed2.copyFrom(feed1); + +``` + + +The toString() method in the beans will print the property that most likely identifies the bean plus the class name of the implementation bean. For example for a Feed bean the output of toString() would be: + + + +``` + +[xxx.rome2.impl.pojo.atom.FeedBean - http://foo.com/atom.xml] + +``` + + +\-\-\+\+ Plugins ClassLoading + + + +Bean implementations, parsers, generators, converters and all pluggable ROME2 components will be loaded using the same classLoader ROME2 core classes are loaded from. + + + +This is to keep simple the handling of them via singletons and their instantiation. Supporting different classLoaders would require complex handling for instantiation, to avoid missing classes and class mismatches. + + + +NOTE: As an example of how easy things can go sour, imagine ROME2 core classes in the common path of a web\-container and 2 web\-apps adding their own beans/parsers/generators/modules, the singletons managing them are in ROME2 core, managed by the common classLoader, a simple singleton won't cut it. ROME2 core will be small enough that it will not be a memory consumption issue if it is once in each web\-app. + + +## Parsers and Generators + + + +To support large feeds (several megabytes or even gigabytes) ROME2 will support stream parsing. We have to see if how this could be done leveraging Abdera, else using StAX API directly. + + + +Using XML stream parsers/generators is more complicated than using a DOM ones, to make easier for developers to implement parsers and generators ROME2 will take care of the details of the XML streaming API and it will expose feed fragments (the feed header and entries) via the JDom API, as JDom Elements. For example, the streaming version of an Atom parser and generator would be something like: + + + +``` + +public interface AtomParser { + // A JDom Document with just the root element, its attributes and namespaces in it. + boolean canParseFeed(Document jdomDoc); + + // repeatable operation, returns was has been read from the header so far + // feed parameter has whatever is has been readed from the feed header so far. + // If the given feed parameter is not null data from the jdom element is injected in it. + Feed parseFeed(Element jdomFeedElement, Feed feed) throws FeedException; + + + // the jdomFeedElement allows the parser to get context (such as base URL, namespaces) + // for the entry being parsed. + Entry parseEntry(Element jdomFeedElement, Element jdomEntryElement) throws FeedException; + } + + public interface AtomGenerator { + String getFeedType(); + + // if called must be called once and before a generateEntry(Entry) + Element generateFeed(Feed feed) throws FeedException; + + Element generateEntry(Entry entry) throws FeedException; + } + +``` + + +For Modules the parser and generator interface would be something like: + + + +``` + +public interface ModuleParser { + String getUri(); + + M parseModule(Element jdomFeedElement); + + M parseModule(Element jdomFeedElement, Element jdomEntryElement); + } + public interface ModuleGenerator { + String getUri(); + + Element generateModule(M module); + } + +``` + + +Parsers and Generators for modules will follow the same principle. + + + +As with ROME, in ROME2 Parsers will be as lenient as possible. Generators will be strict. + + +## ROME2 IO classes + + + +Feed parsers and generators will not be directly accessed by the ROME2 user, they are used by ROME2 to expose a more convenient API in the form of streaming API and builder API. For example: + + + +``` + +public class RomeIO { + + // streaming API + + public static AtomReader createAtomReader(Reader reader, boolean xmlHealing) { }; + public static RssReader createRssReader(Reader reader, boolean xmlHealing) { }; + + public static AtomWriter createAtomWriter(Writer writer, String feedType) { }; + public static RssWriter createRssWriter(Writer writer, String feedType) { }; + + + // builder API + + public Feed parseAsFeed(Reader reader) { }; + public Channel parseAsChannel(Reader reader) { }; + + public void generate(Writer writer, Feed feed, String feedType) { }; + public void generate(Writer writer, Channel channel, String feedType) { }; + } + public interface AtomReader { + + String getFeedType(); + + // repeatable read, returns the current parsed state of the feed header + Feed readFeed() throws FeedException; + + // returns a feed entry while there are more, NULL when done + Entry readEntry() throws FeedException; + + // closes the feed reader + void close() throws FeedException; + } + public interface AtomWriter { + + String getFeedType(); + + // if called must be called once and before a write(Entry) + void writeFeed(Feed feed) throws FeedException; + + // if the first write is for an Entry, then the output is an item document + void writeEntry(Entry entry) throws FeedException; + + void close() throws FeedException; + } + +``` + +## Feed Validators + + + +A bean FeedValidator class will verify that a feed or entry bean is valid for a given feed type. Feed generators would use this class to ensure feed correctness. + + +## Feed Conversion + + + +Conversion from Atom to RSS beans and vice versa will be done by an implementation of the FeedConverter interface. Conversion will be supported at both feed/channel and entry/item level. All properties, including modules data will be copied, after an conversion the state of the beans will be completely independent. + + + +The converter implementation will be pluggable, the implementation will be obtained from the bean factory and the Rome convenience class. + + + +Conversion from Atom beans to RSS beans and vice versa will be done by a FeedConverter class that would have the following signature: + + + +``` + +public interface FeedConverter { + public Feed convertToFeed(Channel channel); + public Feed convertToFeed(Channel channel, boolean processItems); + public Entry convertToEntry(Item item); + + public Channel convertToChannel(Feed feed); + public Channel convertToChannel(Feed feed, boolean processEntries); + public Item convertToItem(Entry entry); +} + +``` + +## Parser and Generator Filters + + + +Manipulation of feeds during parsing and generation at feed/channel and entry/item level would be possible by implementing readers and writers wrappers that work on top of the original reader and writer instances. + + + +This filtering/wrapping could be automated via configuration. + + +## Sources + + + +The following ZIP file only includes the ROME2 beans as described in this proposal, it does not include any of the parser, generator or IO API. + diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md b/src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md new file mode 100644 index 0000000..fc4a68d --- /dev/null +++ b/src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md @@ -0,0 +1,54 @@ +# ROME Feature Requests + + +* **BUG:** com.sun.syndication.io.impl.DateParser:Date parseW3CDateTime(String) incorrectly uses a comma (",") rather than a decimal (".") to delimit the seconds from miliseconds. The correct format can be found on [http://www.w3.org/TR/NOTE\-datetime](http://www.w3.org/TR/NOTE-datetime). The bug is on line 170 (version 0.8). The fix is to replace the line with this: `int secFraction \= pre.indexOf(".");` \-\- JLP 9/4/2006 + +* **BUG:** Atom 1.0 parsing uses wrong Content types. "text", "html", "xhtml" do not match what is parse from the content elements. Subsequently, the content elements always have a null value \- no way to get content. + +* **BUG:** Link in description is not parsed + Try to parse [http://jakarta.apache.org/site/rss.xml](http://jakarta.apache.org/site/rss.xml), look at entry [http://jakarta.apache.org/site/news/news\-2006\-q1.html#20060107.1](http://jakarta.apache.org/site/news/news-2006-q1.html#20060107.1) This entry has an "\Quatre pi&#232;ces + +``` + In the hope of gettin "Quatre pièces" in your html feed. You get from the SynFeedOutput.output() this: + +``` + +&lt;FONT size="2"&gt;Quatre pi&amp;#232;ces&lt;/FONT&gt; + +``` + Which ends up with "Quatre pièces" being displayed in the RSS Reader that is taking your feed. To get the correct ouput I have had to resort to outputString.replaceAll("&#","&#"); OK as a a workaround but not very elegant or performant! \-\- Main.rjwallis \- 19 Mar 2005 + +* From that what i know about Rome it's impossible to use "\<\[!CDDATA \[" entities in content of feed's tags. i know this isn't essential, but it would a very nice feature. + +* Provide support for lastBuildDate in RSS, many news provider, including Yahoo News and BBC use lastBuildDate instead of lastPublishDate. + diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/index.md b/src/site/markdown/rome/ROMEDevelopmentProposals/index.md new file mode 100644 index 0000000..b8ced06 --- /dev/null +++ b/src/site/markdown/rome/ROMEDevelopmentProposals/index.md @@ -0,0 +1,28 @@ +# ROME Development Proposals + +## ROME Development Proposals + + + +Link to new ROME feature and release proposals here. + + +## ROME2 Proposal + + + +* [../ROMEROADMAPProposed.html](../ROMEROADMAPProposed.html) + +* [ROME2 first proposal ](ROME21stProposalJune10th2006NOTCURRENT.html) (Jun/10/2006). + +* [ROME2 second proposal ](ROME22ndProposalJuly18th2006CURRENT.html) (Jul/18/2006). + + +## Requests for Enhancement (RFEs) + + + +* [Issue tracking system](https://rometools.jira.com/browse/ROME) \- file RFEs here + +* [Feature Requests](ROMEFeatureRequests.html) \- old feature request page + diff --git a/src/site/markdown/rome/ROMEROADMAPProposed.md b/src/site/markdown/rome/ROMEROADMAPProposed.md new file mode 100644 index 0000000..1c7e2fc --- /dev/null +++ b/src/site/markdown/rome/ROMEROADMAPProposed.md @@ -0,0 +1,84 @@ +# ROME ROADMAP (Proposed) + + + + + + + + + + + + + + + + + +
+ +version + + + +changes + +
+ +1.1 + + + +Omnibus release with ROME patches \+ JDK 1.5 changes. + +
+ +1.5 + + + +Migration to org.rometools (light break compat) + +
+ +1.6 + + + +Elimination of Synd\* interfaces and Synd\*Impl in favor of base objects (break compat) + +
+ +1.7 + + + +Introduction of "Rome" class with pass\-by\-ref context for modules + +
+ +1.8 + + + +Addition of a factory by package for the Rome class. + +
+ +1.9 + + + +JSR\-330   remix of the Rome class and all deps. + +
+ +## Old Development Proposals + + + +* [ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html](ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html) + +* [ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html](ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html) + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md new file mode 100644 index 0000000..b00c196 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md @@ -0,0 +1,81 @@ +# Rome v0.1, How to build and run the tutorials sample code + +## Building the samples with Maven + + + +This is, as usual, the easiest way. + + + +There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + +If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. + + + +If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be cp rome\-0.1/rome\-0.1.jar   \~/.maven/repository/rome/jars/). + + + +Then building the samples it's easy as a pie, just run maven jar in the rome\-samples project and you are all set. + + +## Building the samples with Ant + + + +Hopefully maven is helpful in supporting poor ant users who did not make the switch yet:\-) We generated an Ant build.xml file in order for you to be able to build rome\-samples with Ant. (Actually, Maven did it for us, the maven ant goal). + + + +The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. + + + +The only thing that will be left out is Rome's jar file itself: you'll need to copy it to the rome\-samples/target/lib directory (For example in UNIX would be cp rome\-0.1/rome\-0.1.jar  rome\-samples/target/lib, where rome\-0.1 is the binary distribution). + + + +To build rome\-samples just run ant jar. + + +## Running the samples with Maven + + + +The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. + + + +maven run\-agr runs the FeedAggregator sample + + + +maven run\-conv runs the FeedConverter sample + + + +maven run\-read runs the FeedReader sample + + +## Running the samples with Ant + + + +All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + +ant run\-aggr runs the FeedAggregator sample + + + +ant run\-conv runs the FeedConverter sample + + + +ant run\-read runs the FeedReader sample + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md new file mode 100644 index 0000000..d9d2aaa --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md @@ -0,0 +1,158 @@ +# Rome v0.1 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + +**Software requirements:** J2SE 1.4\+, Xerces 2.4.0, JDOM B10, Commons Codec 1.2 and Rome 0.1. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + +``` + +SyndInput input = new SyndInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + +``` + + +The first line creates a SyndInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndInput.build() method returns a SyndFeedI instance that can be easily processed. + + + +Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndOutput class does this generation. When creating a syndication feed output, the developer has to indicate the syndication feed type for the ouput, and the SyndOutput will use the right generator for it. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + +``` + +SyndOutput output = new SyndOutput(outputType); +output.output(feed,System.out); + +``` + + +The first line creates a SyndOutput instance that will produce syndication feeds of the type indicated by the outputType parameter. The outputType parameter can be any of the following values: rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + +SyndFeedI can also be created and populated within the code. For example: + + + +``` + +SyndFeedI aggrFeed = new SyndFeed(); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + +``` + + +The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome and sets the title, description, author and link properties of the feed. + + + +SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. + + + +The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): + + + +``` + +SyndFeedI feed = new SyndFeed(); +... +List entries = new ArrayList(); +feed.setEntries(entries); +... +SyndInput input = new SyndInput(false); +SyndFeedI inFeed = input.build(inputUrl.openStream()); + +entries.addAll(inFeed.getEntries()); + +``` + + +Note that it's OK to assign the entries list to the feed and later add entries to it as all SyndFeedI getters/setters do copy by reference. + + + +Following is the full code for a Java application that reads a list of syndication feed, aggregates their items into a single feed, and writes the aggregated feed to the application's output. + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndEntryI; +import com.sun.syndication.io.SyndInput; +import com.sun.syndication.io.SyndOutput; + +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeedI feed = new SyndFeed(); + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i + * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeedI feed = new SyndFeed(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i + * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(feedUrl.openStream()); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,System.out); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md new file mode 100644 index 0000000..475303d --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md @@ -0,0 +1,88 @@ +# Rome v0.2 Tutorial, Using Rome to read a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.2. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + +``` + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + +The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + +``` + +System.out.println(feed); + +``` + + +Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(feedUrl.openStream()); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md new file mode 100644 index 0000000..1ae0014 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md @@ -0,0 +1,17 @@ +# Rome v0.2 Tutorials + + +The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + +1. [Using Rome to read a syndication feed](RomeV0.2TutorialUsingRomeToReadASyndicationFeed.html) + +1. [Using Rome to convert a syndication feed from one type to another](RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + +1. [Using Rome to aggregate many syndication feeds into a single one](RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + + + +The instructions for building and running the samples are identical to the [instructions for Rome v0.1](../../ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html). + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md new file mode 100644 index 0000000..ac4a473 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md @@ -0,0 +1,29 @@ +# ROME 0.2 Beta + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM Beta 10](http://www.jdom.org/) + + +## Downloads + + +## Aditional Information + + + +* [Tutorials](RomeV0.2Tutorials/index.html) + +* Changes Log + + +## Known Issues + + + +* Same issues as Rome v0.1 + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md new file mode 100644 index 0000000..a5ef3cc --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md @@ -0,0 +1,81 @@ +# Rome v0.3, How to build and run the tutorials sample code + +## Building the samples with Maven + + + +This is, as usual, the easiest way. + + + +There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in `\~/.maven/repository`). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + +If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. + + + +If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be `cp rome\-0.3/rome\-0.3.jar   \~/.maven/repository/rome/jars/`). + + + +Then building the samples it's easy as a pie, just run maven jar in the rome\-samples project and you are all set. + + +## Building the samples with Ant + + + +Hopefully maven is helpful in supporting poor ant users who did not make the switch yet We generated an Ant build.xml file in order for you to be able to build rome\-samples with Ant. (Actually, Maven did it for us, the maven ant goal). + + + +The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. + + + +The only thing that will be left out is Rome's jar file itself: you'll need to copy it to the rome\-samples/target/lib directory (For example in UNIX would be `cp rome\-0.3/rome\-0.3.jar  rome\-samples/target/lib`, where rome\-0.3 is the binary distribution). + + + +To build rome\-samples just run `ant jar`. + + +## Running the samples with Maven + + + +The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. + + + +* `maven run\-agr` runs the FeedAggregator sample + +* `maven run\-conv` runs the FeedConverter sample + +* `maven run\-read` runs the FeedReader sample + +* `maven run\-write` runs the FeedWriter sample + +* `maven run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + +## Running the samples with Ant + + + +All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + +* `ant run\-aggr` runs the FeedAggregator sample + +* `ant run\-conv` runs the FeedConverter sample + +* `ant run\-read` runs the FeedReader sample + +* `ant run\-write` runs the FeedWriter sample + +* `ant run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md new file mode 100644 index 0000000..3f0e773 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md @@ -0,0 +1,368 @@ +# Rome v0.3 Tutorial, Defining a Custom Module (bean, parser and generator) + + +This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). + + + +To understand this tutorial you should be familiar the with Rome API and with the use of modules in syndication feeds. + + + +Out of the box Rome parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. + + + +The complete source for this tutorial is in the Rome samples bundle as well as in CVS. + + +## What is the intended outcome of the tutorial? + + + +The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. + + + +The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: + + + +``` + + + + + RSS 1.0 Feed with Sample Module + http://rome.dev.java.net + This is a feed showing how to use a custom module with Rome + + + + + + + Channel bar + Channel first foo + Channel second foo + + + Title of Item 01 + http://rome.dev.java.net/item01 + Item 01 does not have Sample module data + + + Title of Item 02 + http://rome.dev.java.net/item02 + Item 02 has Sample module data + Item 02 bar + Item 02 only foo + 2004-07-27T00:00+00:00 + + + +``` + +## Sample Module Bean + + + +First we must start with the bean interface, SampleModuleI. SampleModuleI must extend ModuleI. The ModuleI interface defines the getUri() method, which will return a URI identifying the module. The ModuleI interface also extends the Cloneable, ToString and CopyFrom interfaces to ensure that the beans provide support for basic features as cloning, equality, toString, etc. (for more details on this check the Understanding the Rome common classes and interfaces document). + + + +The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. + + + +Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). + + + +``` + +public interface SampleModuleI extends ModuleI,CopyFrom { + + public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; + + public String getBar(); + public void setBar(String bar); + + public List getFoos(); + public void setFoos(List foos); + + public Date getDate(); + public void setDate(Date date); +} + +``` + + +Next we have to write the bean implementation, SampleModule. + + + +SampleModule extends Module (the implementation counterpart of ModuleI). Module extends ObjectBean which provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModuleI). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. + + + +``` + +public class SampleModule extends Module implements SampleModuleI { + ... + public SampleModule() { + super(SampleModuleI.class,SampleModuleI.URI); + } + + public String getBar() { + return _bar; + } + ... + +``` + + +The module properties are just Java Bean properties. The only catch is to follow Rome semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned.. Also, following Rome semantics, all properties are by reference, including mutable ones. + + + +``` + +public class SampleModule extends Module implements SampleModuleI { + private String _bar; + private List _foos; + private Date _date; + ... + public void setBar(String bar) { + _bar = bar; + } + + public List getFoos() { + return (_foos==null) ? (_foos=new ArrayList()) : _foos; + } + + public void setFoos(List foos) { + _foos = foos; + } + + public Date getDate() { + return _date; + } + + public void setDate(Date date) { + _date = date; + } + +``` + + +Now the weird part: the bits for the CopyFrom logic. The Understanding the Rome common classes and interfaces document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. + + + +The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). + + + +The copyFrom() method copies all the properties from the parameter object (which must be a SampleModuleI implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. + + + +``` + +public class SampleModule extends Module implements SampleModuleI { + ... + public Class getInterface() { + return SampleModuleI.class; + } + + public void copyFrom(Object obj) { + SampleModuleI sm = (SampleModuleI) obj; + setBar(sm.getBar()); + List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) + setFoos(foos); + setDate((Date)sm.getDate().clone()); // because Date is not inmutable. + } + +} + +``` + +## Sample Module Parser + + + +The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. + + + +The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. + + + +In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. + + + +If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. + + + +``` + +public class SampleModuleParser implements ModuleParser { + + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModuleI.URI); + + public String getNamespaceUri() { + return SampleModuleI.URI; + } + + public ModuleI parse(Element dcRoot) { + boolean foundSomething = false; + SampleModuleI fm = new SampleModule(); + + Element e = dcRoot.getChild("bar", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setBar(e.getText()); + } + List eList = dcRoot.getChildren("foo", SAMPLE_NS); + if (eList.size() > 0) { + foundSomething = true; + fm.setFoos(parseFoos(eList)); + } + e = dcRoot.getChild("date", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setDate(DateParser.parseW3CDateTime(e.getText())); + } + return (foundSomething) ? fm : null; + } + + private List parseFoos(List eList) { + List foos = new ArrayList(); + for (int i = 0; i < eList.size(); i++) { + Element e = (Element) eList.get(i); + foos.add(e.getText()); + } + return foos; + } + +} + +``` + +## Sample Module Generator + + + +The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. + + + +The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. + + + +If no Sample Module bean is in the feed bean the module generator is not invoked at all. + + + +``` + +public class SampleModuleGenerator implements ModuleGenerator { + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModuleI.URI); + + public String getNamespaceUri() { + return SampleModuleI.URI; + } + + public void generate(ModuleI module, Element element) { + + // this is not necessary, it is done to avoid the namespace definition in every item. + Element root = element; + while (root.getParent()!=null && root.getParent() instanceof Element) { + root = (Element) element.getParent(); + } + root.addNamespaceDeclaration(SAMPLE_NS); + + SampleModuleI fm = (SampleModuleI)module; + if (fm.getBar() != null) { + element.addContent(generateSimpleElement("bar", fm.getBar())); + } + List foos = fm.getFoos(); + for (int i = 0; i < foos.size(); i++) { + element.addContent(generateSimpleElement("foo",foos.get(i).toString())); + } + if (fm.getDate() != null) { + element.addContent(generateSimpleElement("date", DateParser.parseW3CDateTime(fm.getDate()))); + } + } + + protected Element generateSimpleElement(String name, String value) { + Element element = new Element(name, SAMPLE_NS); + element.addContent(value); + return element; + } + +} + +``` + +## Configuration to make Rome process Sample Module in feeds + + + +The last step is to setup the configuration file to indicate to Rome how and when to use the Sample Module parser and generator. + + + +The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. + + + +You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. + + + +Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. + + + +``` + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +``` + + +If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. + + +## Using the Sample Module from the SyndFeedI beans + + + +They will be there, just use them. You may get the SampleModuleI bean using the getModule(String Uri) method of the SyndFeedI bean and the SyndEntryI bean. + + + +Adding or replacing a syndication feed parser, generator or converter is along the same lines of what it has been explained in the tutorial for modules. Eventually we'll have a doc on that too + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md new file mode 100644 index 0000000..62b5315 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md @@ -0,0 +1,150 @@ +# Rome v0.3 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + +**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + +``` + + +Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. + + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + +Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeedI object being output. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + +``` + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + +``` + + +The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3), the SyndFeedI feedType property indicates the type. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + +SyndFeedI can also be created and populated within the code. For example: + + + +``` + +SyndFeedI aggrFeed = new SyndFeed(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + +``` + + +The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + +SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. + + + +The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeedI feed = new SyndFeed(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i + * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,new PrintWriter(System.out)); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md new file mode 100644 index 0000000..aec5aba --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md @@ -0,0 +1,205 @@ +# Rome v0.3 Tutorial, Using Rome to create and write a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Creating a feed with SyndFeedI beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeedI bean with 3 entries is created. + + + +First the SyndFeedI instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. + + + +``` + +SyndFeedI feed = new SyndFeed(); +feed.setFeedType(feedType); + +feed.setTitle("Sample Feed (created with Rome)"); +feed.setLink("http://rome.dev.java.net"); +feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + +``` + + +Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. + + + +``` + +List entries = new ArrayList(); +SyndEntryI entry; +SyndContentI description; + +entry = new SyndEntry(); +entry.setTitle("Rome v1.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); +entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); +description = new SyndContent(); +description.setType("text/plain"); +description.setValue("Initial release of Rome"); +entry.setDescription(description); +entries.add(entry); +... +entry = new SyndEntry(); +entry.setTitle("Rome v3.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); +entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); +description = new SyndContent(); +description.setType("text/html"); +description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); +entry.setDescription(description); +entries.add(entry); + +``` + + +Finally the list with entries is added to the SyndFeedI bean. + + + +``` + +feed.setEntries(entries); + +``` + + +The SyndFeedI bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. + + + +Rome includes generators that allow producing syndication feed XML documents from SyndFeedI instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeedI bean. All it takes to write a syndication feed XML document using Rome \-assuming you have a SyndFeedI bean and a Writer instance\- are the following lines of code: + + + +``` + +SyndFeedI feed = ...; +Writer writer = ...; + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,writer); + +``` + + +First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeedI bean to the Writer stream. + + + +Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. + + + +``` + +package com.sun.syndication.samples; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.SyndFeedOutput; + +import java.io.FileWriter; +import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * It creates a feed and writes it to a file. + *

+ * + */ +public class FeedWriter { + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String feedType = args[0]; + String fileName = args[1]; + + SyndFeedI feed = new SyndFeed(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntryI entry; + SyndContentI description; + + entry = new SyndEntry(); + entry.setTitle("Rome v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContent(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntry(); + entry.setTitle("Rome v2.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + description = new SyndContent(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntry(); + entry.setTitle("Rome v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContent(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + Writer writer = new FileWriter(fileName); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + writer.close(); + + System.out.println("The feed has been written to the file ["+fileName+"]"); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); + System.out.println("The first parameter must be the syndication format for the feed"); + System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); + System.out.println("The second parameter must be the file name for the feed"); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md new file mode 100644 index 0000000..7ec5175 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md @@ -0,0 +1,93 @@ +# Rome v0.3 Tutorial, Using Rome to read a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + +Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + +Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + +``` + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + +Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. + + + +The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + +``` + +System.out.println(feed); + +``` + + +Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md new file mode 100644 index 0000000..4e1b95b --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md @@ -0,0 +1,21 @@ +# Rome v0.3 Tutorials + + +The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + +1. [Using Rome to read a syndication feed](RomeV0.3TutorialUsingRomeToReadASyndicationFeed.html) + +1. [Using Rome to convert a syndication feed from one type to another](RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + +1. [Using Rome to aggregate many syndication feeds into a single one](RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + +1. [Using Rome to create and write a feed](RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) **_(New)_** + +1. [Defining a Custom Module bean, parser and generator](RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.html) **_(New)_** + + + +For instructions on how to build and run the samples used in the tutorials [click here](RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.html). + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md new file mode 100644 index 0000000..af43257 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md @@ -0,0 +1,33 @@ +# ROME 0.3 Beta + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM Beta 10](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](RomeV0.3Tutorials/index.html) (2 New ones) + +* Changes Log + + +## Known Issues + + + +* Same issues as Rome v0.1 + +* When processing XML documents with DTD (ie: Netscape RSS 0.91) if the XML parser implementation is not Xerces and the system does not have access ot the internet, the XML parser will fail. + +* If the feed starts with a [BOM](http://www.unicode.org/faq/utf_bom.html#BOM) the JAXP SAX parser may fail, using [Xerces 2.6.2](http://xml.apache.org/xerces2-j) addresses the problem. + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md new file mode 100644 index 0000000..1a15847 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md @@ -0,0 +1,85 @@ +# Rome v0.4, How to build and run the tutorials sample code + +## Building the samples with Maven + + + +This is, as usual, the easiest way. + + + +There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + +If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. + + + +If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be `cp rome\-0.4/rome\-0.4.jar   \~/.maven/repository/rome/jars/`). + + + +Then building the samples it's easy as a pie, just run maven jar in the samples sub\-project and you are all set. + + + +To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. + + +## Building the samples with Ant + + + +The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. + + + +In order to build the samples (or any subprojects), you'll need to first ensure that rome itself is built. You can do this simply by running ant in the project root directory. + + + +Once this is done, change to the samples directory, and just run ant. This will produce two files, rome\-samples.jar which contains the sample applications, and rome\-samples.war which will contain a deployable web application war file for the FeedServlet sample. + + +## Running the samples with Maven + + + +The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. + + + +* `maven run\-agr` runs the FeedAggregator sample + +* `maven run\-conv` runs the FeedConverter sample + +* `maven run\-read` runs the FeedReader sample + +* `maven run\-write` runs the FeedWriter sample + +* `maven run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + + +To run the sample Web Application you'll need to deploy the WAR file into your servlet container. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. + + +## Running the samples with Ant + + + +All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + +* `ant run\-aggr` runs the FeedAggregator sample + +* `ant run\-conv` runs the FeedConverter sample + +* `ant run\-read` runs the FeedReader sample + +* `ant run\-write` runs the FeedWriter sample + +* `ant run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md new file mode 100644 index 0000000..eb10ace --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md @@ -0,0 +1,243 @@ +# Rome v0.4 Tutorial, Using Rome within a Servlet to create and return a feed + + +**Software requirements:** J2SE 1.4\+, Servlet Container 2.3\+, JDOM 1.0 and Rome 0.4. + + + +This sample consists of a servlet that serves a feed as response. The feed type (RSS in any of its variants or Atom) can be specified as a URL parameter when requesting the feed. The returned feed is hardwired in the sample and it would be straight forward to modify the sample to generate the feed dynamically (i.e. from data stored in a database). + + + +The core logic of the **_FeedServlet_** is in the following fragment of code: + + + +``` + +public class FeedServlet extends HttpServlet { + ... + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + ... + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + ... + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + feed = ... + return feed; + } + +} + +``` + + +The servlet returns a feed upon HTTP GET requests with the **_doGet()_** method. + + + +First the **_SyndFeed_** bean is obtained by invoking the **_getFeed()_** method, the request object is passed as it could be used to obtain request contextual information to create the feed. How to create a feed using SyndFeed bean is explained in detail in the [Using Rome to create and write a feed](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) Tutorial. + + + +Then the feed type of the response is determined, first looking at the request parameters and falling back to a default feed type (specified by a servlet init parameter) if the type is not indicated in the request parameters. Setting the feed type in the feed bean will indicate the **_SyndFeedOutput_** the feed type to output. + + + +Finally, the response is set with the proper content type (the MIME\_TYPE constant is 'application/xml; charset\=UTF\-8') and the feed is written to response writer using the **_SyndFeedOutput_** output classes. + + + +Following is the full code for the servlet. + + + +``` + +package com.sun.syndication.samples.servlet; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.FeedException; +import com.sun.syndication.io.SyndFeedOutput; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * Sample Servlet that serves a feed created with Rome. + *

+ * The feed type is determined by the 'type' request parameter, if the parameter is missing it defaults + * to the 'default.feed.type' servlet init parameter, if the init parameter is missing it defaults to 'atom_0.3' + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedServlet extends HttpServlet { + private static final String DEFAULT_FEED_TYPE = "default.feed.type"; + private static final String FEED_TYPE = "type"; + private static final String MIME_TYPE = "application/xml; charset=UTF-8"; + private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed"; + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + private String _defaultFeedType; + + public void init() { + _defaultFeedType = getServletConfig().getInitParameter(DEFAULT_FEED_TYPE); + _defaultFeedType = (_defaultFeedType!=null) ? _defaultFeedType : "atom_0.3"; + } + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + try { + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + } + catch (FeedException ex) { + String msg = COULD_NOT_GENERATE_FEED_ERROR; + log(msg,ex); + res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg); + } + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.1"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.2"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"+ + "

For details check the Changes Log for 0.2

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.3"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log for 0.3

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.4"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome04"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-09-24")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features, Unit testing completed

"+ + "

For details check the Changes Log for 0.4

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + return feed; + } + +} + +``` + + +To use the **_FeedServlet_** we need to create a Web Application. For the Web Application we need a deployment descriptor, the **_web.xml_** file: + + + +``` + + + + + + Rome Samples + + + FeedServlet + com.sun.syndication.samples.servlet.FeedServlet + + default.feed.type + rss_2.0 + + + + + FeedServlet + /feed + + + + +``` + + +To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. Deploy the WAR in a servlet container and the **_FeedServlet_** should be up an running. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md new file mode 100644 index 0000000..0e26e00 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md @@ -0,0 +1,23 @@ +# Rome v0.4 Tutorials + + +The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + +1. [Using Rome to read a syndication feed](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) + +1. [Using Rome to convert a syndication feed from one type to another](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + +1. [Using Rome to aggregate many syndication feeds into a single one](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + +1. [Using Rome to create and write a feed](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) + +1. [Defining a Custom Module bean, parser and generator](../../../HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) + +1. [Using Rome within a Servlet to create and return a feed](RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.html) **_(NEW)_** + + + +For instructions on how to build and run the samples used in the tutorials [click here](RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.html). + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md new file mode 100644 index 0000000..dab1c27 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md @@ -0,0 +1,68 @@ +# ROME 0.4 Beta + +## What is New, Highlights + + + +* Changed naming convention of bean interfaces and implementations (i.e.: SyndFeedI/SyndFeed are now SyndFeed/SyndFeedImpl) + +* New XmlReader that handles charset encoding as defined by the XML 1.0 specification and RFC 3023 + +* Support of RSS 0.91 Netscape and RSS 0.91 Userland as distinct feed types + +* All feed types have Modules support + +* Added checks to generators reducing the chances of generating invalid feeds + +* Comprehensive Unit testing + +* Bug fixes + +* More documentation and samples + +* Dependencies, upgraded to JDom 1.0 and removed Xerces + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](RomeV0.4Tutorials/index.html) + +* [Changes Log](../../ChangeLog.html) + +* Inside ROME, How Things Work + + * [How ROME Works](../../HowRomeWorks/index.html), Understanding Rome (a detailed overview by Dave Johnson) + + * [Rome common Package](../../HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html), bean utilities, enums, copying and clonning + + * [ROME Plugins Mechanism](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how Rome helps getting the right charset encoding + + + + +## Known Issues + + + +None. + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md b/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md new file mode 100644 index 0000000..82c93c6 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md @@ -0,0 +1,21 @@ +# ROME T-Shirt + + +I made it quickly before taking a plane, and ruined my iron when trying to press it myself on a T\-shirt, but it's better than nothing and a T\-shirt is vital to an open source project! + + + +It's at [http://www.cafepress.com/chanezon.13794826](http://www.cafepress.com/chanezon.13794826) + + + +Else just print the design yourself and iron it on a T\-shirt (advice from P@ the practical guy: don't try to iron glossy paper photo on a T\-shirt + + + + + + + +\-\- [PatrickChanezon](http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon) \- 10 Jan 2005 + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md new file mode 100644 index 0000000..4501e2b --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md @@ -0,0 +1,68 @@ +# ROME 0.5 Beta + +## What is New, Highlights + + + +* Removed common package and classes from the public API + +* Removed Enum class, using constants now + +* XmlReader now has a lenient behavior for charset encoding detection + +* Bug fixes + +* [ROMET-Shirt.html](ROMET-Shirt.html) + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + +* [Changes Log](../../ChangeLog.html) + +* Inside ROME, How Things Work + + * [How ROME Works](../../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * [ROME Plugins Mechanism](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding + + * [Creating a custom Module](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator + + * [The CopyFrom interface](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + + + +* Implementation documents + + * [ROME bean utilities, equals, toString and clonning](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + + + + +## Known Issues + + + +None. + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md new file mode 100644 index 0000000..d0ce663 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md @@ -0,0 +1,64 @@ +# ROME 0.6 Beta + + +Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.6 is reusing ROME 0.5 Wiki pages as most of the changes are internal and the documentation has not changed. + + +## What is New, Highlights + + + +* Bug fixes + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + +* [Changes Log](../ChangeLog.html) + +* Inside ROME, How Things Work + + * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding + + * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator + + * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + + + +* Implementation documents + + * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + + + + +## Known Issues + + + +None. + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md new file mode 100644 index 0000000..5bb5e4b --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md @@ -0,0 +1,66 @@ +# ROME 0.7 Beta + + +Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.7 is reusing ROME 0.5 Wiki pages as most of the changes are internal. + + +## What is New, Highlights + + + +* We got a cool logo + +* Bug fixes + +* Several Date and time parsing improvements including support for custom parsing masks + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + +* [Changes Log](../ChangeLog.html) + +* Inside ROME, How Things Work + + * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding + + * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator + + * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + + * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + + * [Customizing Date and time parsing](../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file **NEW** + + + + +## Known Issues + + + +None. + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md new file mode 100644 index 0000000..4b80afe --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md @@ -0,0 +1,74 @@ +# ROME 0.8 Beta + + +Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.8 is reusing ROME 0.7 Wiki pages as much as possible. + + +## What is New, Highlights + + + +* ROME now supports the final version of the Atom Syndication Format [RFC 4287](http://www.ietf.org/rfc/rfc4287): let's Nuke all these feeds! **NEW** + +* Enclosure support at the Synd level, for all our podcaster friends + +* Bug fixes + +* details in the ChangeList + +* Modules galore: Content, iTunes Podcast, Slash, Google Base, Creative Commons, MediaRSS + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + +* [Changes Log](../ChangeLog.html) + +* Inside ROME, How Things Work + + * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding + + * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator + + * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + + * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + + * [Customizing Date and time parsing](../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file **NEW** + + + + +## Known Issues + + + +None. + + + +\-\- [PatrickChanezon](http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon) \- 02 Feb 2006 + diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md new file mode 100644 index 0000000..4e64d08 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md @@ -0,0 +1,72 @@ +# ROME 0.9 Beta + + +Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.9 is reusing ROME 0.8 Wiki pages as much as possible. + + +## What is New, Highlights + + + +* Better support for RSS feeds that use + +* Better mapping for RSS description/content and Atom summary/content + +* Numerous bug fixes + +* Details in the ChangeList + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Additional Information + + + +* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + +* [Changes Log](../ChangeLog.html) + +* Inside ROME, How Things Work + + * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding + + * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator + + * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + + * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + + * [Customizing Date and time parsing](../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file **NEW** + + + + +## Known Issues + + + +None. + + + +\-\- Main.snoopdave \- 06 Dec 2006 + diff --git a/src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md b/src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md new file mode 100644 index 0000000..e516f41 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md @@ -0,0 +1,42 @@ +# ROME 1.0 RC1 + +## Rss and atOM utiliEs (ROME) v1.0 RC1 (16 Jul 2008) + + + +Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 1.0 is reusing wikis from previous versions as there are not significant changes. + + +## What is New, Highlights + + + +* Several XmlReader fixes + +* Several Atom 1.0 bean, parser and generator fixes + +* Some RSS fixes + +* Removal of unused namespaces + +* Details in the [change log](../ChangeLog.html) + + +## Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +### Documentation + + + +* [Javadocs](http://rome.dev.java.net/apidocs/1_0RC1/overview-summary.html) + diff --git a/src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md b/src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md new file mode 100644 index 0000000..40a0a57 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md @@ -0,0 +1,35 @@ +# ROME 1.0 RC2 + +## What is New, Highlights + + + +* ROME is now [built using Maven 2](../HowToBuildRome.html) + +* ROME jars are now available in the [java.net Maven repository](../ROMEAndMaven2.html) + +* More lenient handling of Number formats during parsing + +* Better date parsing for Atom dates + +* Complete details in the [change log](../ChangeLog.html) + + +## Dependencies + + + +* [J2SE](http://wiki.java.net/twiki/bin/view/Javawsxml/J2SE) 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + +## Downloads + + +## Documentation + + + +* [Javadocs](http://rome.dev.java.net/apidocs/1_0RC2/overview-summary.html) + diff --git a/src/site/markdown/rome/ROMEReleases/ROME1.0Release.md b/src/site/markdown/rome/ROMEReleases/ROME1.0Release.md new file mode 100644 index 0000000..a0b7e87 --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/ROME1.0Release.md @@ -0,0 +1,40 @@ +# ROME 1.0 Release + + +_ROME 1.0 was released on March 12, 2009_ + + +### What is New / Highlights + + + +Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 1.0 is reusing wikis from previous versions as there are not significant changes. + + + +* ROME can now optionally preserve WireFeed (ie, Atom/RSS specific) data and make it available via the SyndFeed data model. See [PreservingWireFeeds](../PreservingWireFeeds.html) for further details + + + +* Complete details in the [change log](../ChangeLog.html) + + +### Downloads + + +### Dependencies + + + +* J2SE 1.4\+ + +* [JDOM 1.0](http://www.jdom.org/) + + + +### Documentation + + + +* [Javadocs](http://rome.dev.java.net/apidocs/1_0/overview-summary.html) + diff --git a/src/site/markdown/rome/ROMEReleases/index.md b/src/site/markdown/rome/ROMEReleases/index.md new file mode 100644 index 0000000..dad2e3a --- /dev/null +++ b/src/site/markdown/rome/ROMEReleases/index.md @@ -0,0 +1,135 @@ +# ROME Releases + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Version + + + + Release Date + +
+ + [ROME 1.0](ROME1.0Release.html) + + + + March 12, 2009 + +
+ + [Rome v1.0 RC2](ROME1.0RC2.html) + + + + Jan 9, 2009 + +
+ + [Rome v1.0 RC1](ROME1.0RC1.html) + + + + Jul 16, 2007 + +
+ + [Rome v0.9 Beta](ROME0.9Beta.html) + + + + Dec 11, 2006 + +
+ + [Rome v0.8 Beta](ROME0.8Beta.html) + + + + Feb 01, 2006 + +
+ + [Rome v0.7 Beta](ROME0.7Beta.html) + + + + Sep 09, 2005 + +
+ + [Rome v0.6 Beta](ROME0.6Beta.html) + + + + Apr 01, 2005 + +
+ + [Rome v0.5 Beta](ROME0.5Beta/index.html) + + + + Jan 10, 2005 + +
+ + [Rome v0.4 Beta](ROME0.4Beta/index.html) + + + + Sep 27, 2004 + +
+ + [Rome v0.3 Beta](ROME0.3Beta/index.html) + + + + Jul 28, 2004 + +
+ + [Rome v0.2 Beta](ROME0.2Beta/index.html) + + + + Jun 16, 2004 + +
+ + [Rome v0.1 Beta](ROME0.1Beta/index.html) + + + + Jun 08, 2004 + +
diff --git a/src/site/markdown/rome/RomeAPIFAQ.md b/src/site/markdown/rome/RomeAPIFAQ.md new file mode 100644 index 0000000..67b8a78 --- /dev/null +++ b/src/site/markdown/rome/RomeAPIFAQ.md @@ -0,0 +1,142 @@ +# Rome API FAQ + + +As we were designing and implementing Rome we had discusssions, brainstorming and code reviews on the API. We've captured them in this document. + + +## Do SyndFeed support arbitrary Metadata? + + + +Yes, using what we call Modules. Currently we support the 2 modules defined in RSS 1.0, [Dublin Core](http://purl.org/rss/1.0/modules/dc/) and [Syndication](http://purl.org/rss/1.0/modules/syndication/). They are wired when converting from SyndFeed beans to RSS/Atom feeds beans and vice versa. We use the RSS 1.0 terminology of Modules because RSS 1.0 is the specification that defined and used extensibility the most. RSS 2.0 and Atom use XML namespaces to extend the feed. + + + +However we will develop, and encourage developers to develop Rome specific Modules to handle future RSS 2.0 and Atom extensions. + + + +If additional modules are defined to express metadata the converters should be modified to handle them. And the same goes for the parsers and generators or RSS/Atom feeds. + + +## Why those package, interfaces, classes and method names? + + + +We've struggled (and still are struggling) with names. We renamed and moved things around until we got dizzy. If you have suggestions please let us know. + + +## Where are the parser, generator and converter implementations? + + + +They are in hidden (not javadoc\-ed) packages within the Rome jar file. Their classes are loaded using declarations in a properties file. It is possible for developers to add or replace implementations of these components without modifying Rome source code, just by indicating an addition properties file to look for extra implementation classes. + + +## What are the interfaces and classes in the syndication.common package for? And why most bean (or interface) extend/implement them? + + + +At first we got tired of modifying the toString() methods every time we were adding/removing a property. As we were strictly following the Bean patterns we wrote a toString() method that would traverse the properties and print them. Then we went recursively. Then we refactor that into an interface and provided an adapter. + + + +Later we did the same to handle equals/hashcode, which is very useful when using Maps. + + + +To complete the task we did the same for cloning, providing deep cloning support. + + + +The ObjectBean is a base class that implements all these features. All Rome beans extend ObjectBean getting a toString, equals, hashcode and clone support for free. + + +## What are the property values when not set? + + + +For Boolean is **false**. For numbers is 1. For String is null. For collections is an empty collection (even if you set it to null you get an empty collection). For all other objects is null. + + +## Are properties copied by value or by reference when set or gotten? + + + +All properties as always handled by reference (except primitive types). If they are not immutable and you modify them you are affecting the bean/s that reference them too. + + +## What is with the interface and implementation names in the synd and module packages? + + + +Interfaces have the following naming pattern: \I. Default implementations provided with Rome are named just \. For example, SyndFeedI is the interface and SyndFeed is the default implementation. + + + +We decided to use \ for the default implementation classes as we think they'll be the implementation of choice most of the time. + + +## Why the beans in the synd and module packages have interface and implementation versions of them? + + + +We added interfaces only for the higher abstraction layer of Rome, SyndFeed (and Modules as they are used to express extensible metadata for SyndFeed instances). The reasoning behind such decoupling was to allow facading existing classes as SyndFeed beans. For example some persistent classes. This would allow to process them through components that work with SyndFeedI. + + +## Why the RSS and Atom beans don't have interface and implementation versions of it? + + + +We thought about this, we dismissed the idea. The reasoning was that we expect to work with the SyndFeed and Module beans all the time and the convenience of using interface should be at that level only. We have RSS and Atom only because we have folks going and making up things without talking to each other. In short, we expect all our application processing to be done in a feed agnostic way in Java using SyndFeed and Module beans. + + +## How all the escaping for the description elements is handled for the different feed types as they keep changing their mind version after version? + + + +Item description MIME type, depending on the RSS version is text/plain (0.91), text/html (0.92, 0.93, 2.0) or configurable (0.94). The thing is that when you get the value out of JDOM Element it's always XML unescaped. When putting data into a JDOM Element the data is XML escaped. This is not 100% correct but it will work in most of the cases. + + + +Note that type in feed beans indicate what was the escaping type of the underlying feed, but if you get the value is already unescaped. + + +## How does Rome handle Atom content elements that support encoding (Base64, XML, plain) using the mode attribute? + + + +The mode in feed in content indicates what was the encoding of the element in the feed, but when you get the value is already unencoded. + + +## What kind of input and output Rome supports? + + + +Rome implementation currently uses JDOM for parsing and generating syndication feeds. As people tend to use the XML libraries they feel more comfortable with we have built in support for SAX, DOM, JDOM, byte streams, character streams and strings. + + +## What is the SyndFeedI.getSupportedFeedTypes() method for? + + + +This method was originally a static method in the SyndFeed class. We've moved ot the SyndFeedI interface as we thought it would be useful to be able to ask a SyndFeedI instance the feed converters it handles. + + +## Are Rome beans Serializable? Why? + + + +Yes, the default bean implementations of SyndFeedI provided with Rome are Serializable. + + + +However, the \*I interfaces are not. We made that decision consciously and the reason behind it is closely related to the reason we introduced the \*I interfaces. You may want to extend some existing classes to implement SyndFeedI, and these classes you are extending may not be Serializable and cannot be (for example, they are tied to a live InputStream). + + +## Why all those packages? + + + +TBD + diff --git a/src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md b/src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md new file mode 100644 index 0000000..d37a2ba --- /dev/null +++ b/src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md @@ -0,0 +1,112 @@ +# Rome v0.4, Feed and Entry URI Mapping + + +Rome Synd beans define the concept of URI at both feed and entry levels. The purpose of this URI is to help uniquely identifying feeds and entries when processed with Rome. This is particularly useful when a system is persisting feeds and when doing data manipulation where a primary key for the feeds or the entries is needed. + + +## The Problem + + + +RSS 0.90, 0.91, 0.92, 0.93 and 1.0 do not define any special element for the purposes of identifying the feed or the items other than the items link element. The channel link element cannot be used to identify the feed as its semantics is to refer to the web site that has the information being published through the feed and, if web site offers more than one feed most likely both of them will have the same feed link value. + + + +RSS 0.94 and RSS 2.0 define the guid element at item level. The guid element has an overloaded meaning. If the isPermalink attribute is true, the guid value can be used also as the URL for the item instead of the link element as well as a unique ID for the item. If the isPermalink attribute is false, the guid value can be used as a unique ID for the item. However, RSS 0.94 or RSS 2.0, do not define that the value of the guid element must be an URI. + + + +Atom 0.3 defines an id element at feed and entry levels. The id element is defined as an URI. The Atom specification being currently designed requires the id element to contain a normalized URI as defined by RFC 2396bis. + + + +The RSS0.94 and RSS 2.0 guid element and the Atom 0.3 id element are optional elements. Because of this, they may not be present at all in feeds. + + +## Rome's Solution + + + +Because the concept of a URI it is not defined in all the feed formats, Rome makes an arbitrary design decision to provide the URI functionality regardless of the original (or target) feed type. The following behavior as been chosen based on expected and assumed usage pattern of feed and entry data. + + +### URI Normalization + + + +If the uri property of a SyndFeed or SyndEntry bean is not NULL, the getter method must return a normalized URI following the rules defined in RFC2396bis. + + +### Converting from WireFeed (RSS or Atom) to SyndFeed + + + +The common use case for this scenario is when consuming a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +#### SyndFeed + + + +None of the RSS versions define an ID at channel level. In addition to this, Rome input classes (WireFeedInput and SyndFeedInput) do not have access to the URL (if any) used to fetch the feed. Because of this Rome does not set in the SyndFeed uri property , it is left to developer to set (if needed) a URI in the feed bean. + + + +In the case of Atom 0.3, if the id element is present in the feed, the SyndFeed uri property will be set with the value of the id element. If it is not present, the developer must set (if needed) a URI manually. + + +#### SyndEntry + + + +For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 if the link element is present in the item, the SyndEntry uri property will be set with the value of the link element. Otherwise the SyndEntry uri property is left as NULL and the developer must set it (if needed). + + + +For RSS 0.94 & RSS 2.0 if the guid property is present in the item, the SyndEntry uri property will be set with the value of the guid element. If the guid element is not present, the SyndEntry uri property will be set with the value of the link element. If the link element is missing but the guid is present and it is flagged as a permalink, Rome will set set the SyndEntry link property with the value of the guid element (Rome is doing this because is a common practice to generated RSS 2.0 fees with guid elements marked as permalinks and without a link element). + + + +For Atom 0.3 if the id element is present, the SyndEntry uri property is set with the value of the id element. If the id element is not present, the SyndEntry uri property is set with the value of the alternate link element. + + +### Converting from SyndFeed to WireFeed (RSS or Atom) + + + +The common use case for this scenario is when generating a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +#### SyndFeed + + + +For RSS 0.91, RSS 0.92, RSS 0.93, RSS 1.0 & RSS 2.0 the SyndFeed uri property is lost as there is not possible representation in the channel element for it. + + + +For Atom 0.3 set the SyndFeed uri property is set as the value for the id element. + + +#### SyndEntry + + + +For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 the SyndEntry uri property is lost as there is not possible representation in the item element for it. + + + +For RSS 0.94 & RSS 2.0 the SyndEntry uri property is set as the value of the guid element with permalink set to false. If the SyndEntry uri property is not set, the SyndEntry link property is set as the value of the guid element with permalink set to true. Note that if the SyndFEntry linkproperty is missing the SyndEntry uri cannot be set as the value of the link element because it cannot be assumed that the uri property is an URL. + + + +Because SyndEntry instances always return a normalized URI the value of the guid elements of a generated RSS 0.94 or RSS 2.0 may differ from the values of the guid elements of the original feed. + + + +For Atom 0.3 the SyndEntry uri property is set as the id element. + + + +Mosh... + diff --git a/src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md b/src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md new file mode 100644 index 0000000..65b1adb --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md @@ -0,0 +1,40 @@ +# Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing + + +Date and time elements seem to be error prone. RSS feeds use RFC822 datetime formats and Atom feeds use W3C datetime formats. Both RFC822 and W3C support quite a few flavors for specifying date and time. Some feeds use the wrong standard (such as some RSS feeds using W3C dates). Other feeds have an ENTER before or after the date. And another feeds use an arbitrary format altogether. + + + +To help cope with this ROME makes a few tricks: + + + +* It trims datetime elements before parsing them. + +* It tries both RFC822 and W3C formats in all feeds. + +* It uses custom format masks (if provided) when the previous steps fail. + + +## Using Custom Format Masks + + + +Custom format masks can be specified in the _/rome.properties_ file in any of the classpath elements. + + + +The masks must be specified in the _datetime.extra.masks_ property. + + + +If more than one mask is to be specified they must be separated with '|' characters. + + + +The syntax for the masks is the one use by by the _java.text.SimpleDateFormat_ class. Always US Locale is assumed for the masks. + + + +If datetime masks are specified in more than one _/rome.properties_ file in teh classpath, they are all aggregated. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md new file mode 100644 index 0000000..a07bcc3 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md @@ -0,0 +1,108 @@ +# Feed and Entry URI Mapping, how SyndFeed and SyndEntry 'uri' properties map to RSS and Atom elements + + +Rss and atOM utilitiEs (ROME) Synd\* beans define the concept of URI at both feed and entry levels. The purpose of this URI is to help uniquely identifying feeds and entries when processed with ROME. This is particularly useful when a system is persisting feeds and when doing data manipulation where a primary key for the feeds or the entries is needed. + + +## The Problem + + + +RSS 0.90, 0.91, 0.92, 0.93 and 1.0 do not define any special element for the purposes of identifying the feed or the items other than the items link element. The channel link element cannot be used to identify the feed as its semantics is to refer to the web site that has the information being published through the feed and, if web site offers more than one feed most likely both of them will have the same feed link value. + + + +RSS 0.94 and RSS 2.0 define the guid element at item level. The guid element has an overloaded meaning. If the isPermalink attribute is true, the guid value can be used also as the URL for the item instead of the link element as well as a unique ID for the item. If the isPermalink attribute is false, the guid value can be used as a unique ID for the item. However, RSS 0.94 or RSS 2.0, do not define that the value of the guid element must be an URI. + + + +Atom 0.3 defines an id element at feed and entry levels. The id element is defined as an URI. The Atom specification being currently designed requires the id element to contain a normalized URI as defined by RFC 2396bis. + + + +The RSS0.94 and RSS 2.0 guid element and the Atom 0.3 id element are optional elements. Because of this, they may not be present at all in feeds. + + +## ROME's Solution + + + +Because the concept of a URI it is not defined in all the feed formats, ROME makes an arbitrary design decision to provide the URI functionality regardless of the original (or target) feed type. The following behavior as been chosen based on expected and assumed usage pattern of feed and entry data. + + +### URI Normalization + + + +If the uri property of a SyndFeed or SyndEntry bean is not NULL, the getter method must return a normalized URI following the rules defined in RFC2396bis. + + +### Converting from WireFeed (RSS or Atom) to SyndFeed + + + +The common use case for this scenario is when consuming a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +#### SyndFeed + + + +None of the RSS versions define an ID at channel level. In addition to this, ROME input classes (WireFeedInput and SyndFeedInput) do not have access to the URL (if any) used to fetch the feed. Because of this ROME does not set in the SyndFeed uri property , it is left to developer to set (if needed) a URI in the feed bean. + + + +In the case of Atom 0.3, if the id element is present in the feed, the SyndFeed uri property will be set with the value of the id element. If it is not present, the developer must set (if needed) a URI manually. + + +#### SyndEntry + + + +For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 if the link element is present in the item, the SyndEntry uri property will be set with the value of the link element. Otherwise the SyndEntry uri property is left as NULL and the developer must set it (if needed). + + + +For RSS 0.94 & RSS 2.0 if the guid property is present in the item, the SyndEntry uri property will be set with the value of the guid element. If the guid element is not present, the SyndEntry uri property will be set with the value of the link element. If the link element is missing but the guid is present and it is flagged as a permalink, ROME will set set the SyndEntry link property with the value of the guid element (ROME is doing this because is a common practice to generated RSS 2.0 fees with guid elements marked as permalinks and without a link element). + + + +For Atom 0.3 if the id element is present, the SyndEntry uri property is set with the value of the id element. If the id element is not present, the SyndEntry uri property is set with the value of the lternate link element. + + +### Converting from SyndFeed to WireFeed (RSS or Atom) + + + +The common use case for this scenario is when generating a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +#### SyndFeed + + + +For RSS 0.91, RSS 0.92, RSS 0.93, RSS 1.0 & RSS 2.0 the SyndFeed uri property is lost as there is not possible representation in the channel element for it. + + + +For Atom 0.3 set the SyndFeed uri property is set as the value for the id element. + + +#### SyndEntry + + + +For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 the SyndEntry uri property is lost as there is not possible representation in the item element for it. + + + +For RSS 0.94 & RSS 2.0 the SyndEntry uri property is set as the value of the guid element with permalink set to false. If the SyndEntry uri property is not set, the SyndEntry link property is set as the value of the guid element with permalink set to true. Note that if the SyndFEntry linkproperty is missing the SyndEntry uri cannot be set as the value of the link element because it cannot be assumed that the uri property is an URL. + + + +Because SyndEntry instances always return a normalized URI the value of the guid elements of a generated RSS 0.94 or RSS 2.0 may differ from the values of the guid elements of the original feed. + + + +For Atom 0.3 the SyndEntry uri property is set as the id element. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md new file mode 100644 index 0000000..55f734f --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md @@ -0,0 +1,99 @@ +# Feeds Date Elements Mapping to SyndFeed and SyndEntry + + +The different RSS versions and Atom define different date elements at feed and entry level. Some of them also define syndication information indicating when (and when not) and how often to fetch feeds for updates. There is not always a possible mapping or conversion of this information when going from one format to another. + + + +As this is still subject of debate ([How About a Date](http://www.tbray.org/ongoing/When/200x/2004/07/30/Dates) and [Date Survey](http://www.intertwingly.net/wiki/pie/DateSurvey)), for now, in Rss and atOM utilitiEs (ROME) we've taken a simplistic approach. + + + +When handling feeds at WireFeed level, **_rss.Channel_** or **_atom.Feed_**, it is possible to access all the date elements and syndication information available in the feed. + + + +When handling feeds at SyndFeed level, **_synd.SyndFeed_**, there is only one date element available, the **_publishedDate_**. Both, **_SyndFeed_** and **_SyndEntry_** have the **_publisheDate_** property. In addition, it is possible to use the Syndication Module. + + + +The mapping of the date elements from the different feed formats to SyndFeed is as follows. + + +## For RSS 0.90 + + + +RSS 0.90 does not define date elements. + + + +There is no mapping to **_SyndFeed_** and **_SyndEntry_** date properties. + + +## For RSS 0.91, 0.92 + + + +RSS 0.91 and 0.92 define **_pubDate_** and **_lastBuildDate_** at feed level. + + + +The feed **_pubDate_** element is mapped to the **_SyndFeed_** **_publishedDate_** property. The **_lastBuildDate_** element is lost. + + +## For RSS 0.93, 0.94 and 2.0 + + + +RSS 0.93, 0.94 and 2.0 define **_pubDate_** and **_lastBuildDate_** at feed level. They also define **_pubDate_** and **_expirationDate_** at item level. + + + +The feed **_pubDate_** element is mapped to the **_SyndFeed_** **_publishedDate_** property. The **_lastBuildDate_** element is lost. + + + +The item **_pubDate_** element is mapped to the **_SyndEntry_** **_publishedDate_** property. The **_expirationDate_** element is lost. + + +## For RSS 1.0 + + + +RSS 1.0 use DC Module data at feed an item level to indicate date information about the feed and the items. + + + +**_SyndFeed_** and **_SyndEntry_** use the DC Module **_date_** element for the **_publishedDate_** property. + + +## For Atom 0.3 + + + +Atom 0.3 defines a **_modified_** element at feed level and the **_modified_**, **_created_** & **_issued_** elements at entry level. + + + +The feed **_modified_** element is mapped to the **_SyndFeed_** **_publishedDate_** property. + + + +The item **_modified_** element is mapped to the **_SyndEntry_** **_publishedDate_** property. The entry elements, **_created_** and **_issued_**, are lost. + + +## For Atom 1.0 + + + +(Atom 1.0 supported in ROME since v0.8) + + + +Atom 1.0 defines an **_updated_** element at the feed level, which ROME maps to **_SyndFeed.publishedDate_**. + + + +Atom 1.0 defines **_updated_** and **_published_** elements at the entry level, which ROME maps to **_SyndEntry.updatedDate_** and **_SyndEntry.publishedDate_** respectively. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md new file mode 100644 index 0000000..bbf04ac --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md @@ -0,0 +1,222 @@ +# Rss and atOM utilitiEs (ROME) Plugins Mechanism + + +ROME has been designed around a plugin mechanism. All the supported feed types (RSSs and Atom) is done by plugins included in the distribution. + + + +Parsing feeds, generating feeds, converting feeds from a concrete feed to a SyndFeed and vice versa, parsing modules and generating modules is done using plugins. + + + +Plugins for new functionality can be added and default plugins can be easily replaced with alternate plugins. + + +## Plugins definition files + + + +Plugins are defined in a properties file, the **_rome.properties_** file. + + + +The default plugins definition file is included in the ROME JAR file, **_com/sun/syndication/rome.properties_**, this is the first plugins definition file to be processed. It defines the default parsers, generators and converters for feeds and modules ROME provides. + + + +After loading the default plugins definition file, ROME looks for additional plugins definition files in all the CLASSPATH entries, this time at root level, **_/rome.properties_**. And appends the plugins definitions to the existing ones. Note that if there are several **_/rome.properties_** files in the different CLASSPATH entries all of them are processed. The order of processing depends on how the **_ClassLoader_** processes the CLASSPATH entries, this is normally done in the order of appearance \-of the entry\- in the CLASSPATH. + + + +For each type of plugin (parser, generator, converter, ect) a list of available plugins is built following the read order just described. The plugins classes are then loaded and instantiated. All plugins have some kind of primary key. In the case or parsers, generators and converters the primary key is the type of feed they handle. In the case of modules, the primary key is the module URI. If a plugin list definition (the aggregation of all the plugins of the same time from all the **_rome.properties_**) contains more than one plugin with the same primary key, the latter one is the one that will be used(this enables replacing default plugins with custom ones). + + + +The plugins are read, loaded and managed by the implementation class **_com.sun.syndication.io.impl.PluginManager_**. This class is an abstract class and it is extended to provide support for each type of plugin. + + +## Parser Plugins + + + +Parser plugins are managed by the **_com.sun.syndication.io.impl.FeedParsers_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_WireFeedParser.classes_** property in all the **_rome.properties_** files. The fully qualified names of the parser classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file parser plugins definition is as follows: + + + +``` + +# Feed Parser implementation classes +# +WireFeedParser.classes=com.sun.syndication.io.impl.RSS090Parser \ + com.sun.syndication.io.impl.RSS091NetscapeParser \ + com.sun.syndication.io.impl.RSS091UserlandParser \ + com.sun.syndication.io.impl.RSS092Parser \ + com.sun.syndication.io.impl.RSS093Parser \ + com.sun.syndication.io.impl.RSS094Parser \ + com.sun.syndication.io.impl.RSS10Parser \ + com.sun.syndication.io.impl.RSS20wNSParser \ + com.sun.syndication.io.impl.RSS20Parser \ + com.sun.syndication.io.impl.Atom03Parser + +``` + + +All the classes defined in this property have to implement the **_com.sun.syndication.io.WireFeedParser_** interface. Parser instances must be thread safe. The return value of the **_getType()_** method is used as the primary key. If more than one parser returns the same type, the latter one prevails. + + +## Generator Plugins + + + +Generator plugins are managed by the **_com.sun.syndication.io.impl.FeedGenerators_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_WireFeedGenerator.classes_** property in all the **_rome.properties_** files. The fully qualified names of the generator classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file generator plugins definition is as follows: + + + +``` + +# Feed Generator implementation classes +# +WireFeedGenerator.classes=com.sun.syndication.io.impl.RSS090Generator \ + com.sun.syndication.io.impl.RSS091NetscapeGenerator \ + com.sun.syndication.io.impl.RSS091UserlandGenerator \ + com.sun.syndication.io.impl.RSS092Generator \ + com.sun.syndication.io.impl.RSS093Generator \ + com.sun.syndication.io.impl.RSS094Generator \ + com.sun.syndication.io.impl.RSS10Generator \ + com.sun.syndication.io.impl.RSS20Generator \ + com.sun.syndication.io.impl.Atom03Generator + +``` + + +All the classes defined in this property have to implement the **_com.sun.syndication.io.WireFeedGenerator_** interface. Generator instances must be thread safe. The return value of the **_getType()_** method is used as the primary key. If more than one generator returns the same type, the latter one prevails. + + +## Converter Plugins + + + +Converter plugins are managed by the **_com.sun.syndication.synd.impl.Converters_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_Converter.classes_** property in all the **_rome.properties_** files. The fully qualified names of the converter classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file converter plugins definition is as follows: + + + +``` + +# Feed Conversor implementation classes +# +Converter.classes=com.sun.syndication.feed.synd.impl.ConverterForAtom03 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS090 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS091Netscape \ + com.sun.syndication.feed.synd.impl.ConverterForRSS091Userland \ + com.sun.syndication.feed.synd.impl.ConverterForRSS092 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS093 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS094 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS10 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS20 + +``` + + +All the classes defined in this property have to implement the **_com.sun.syndication.synd.Converter_** interface. Converter instances must be thread safe. The return value of the **_getType()_** method is used as the primary key. If more than one converter returns the same type, the latter one prevails. + + +## Module Plugins + + + +There are 2 types of module plugins, module parser plugins and module generator plugins. They use a same pattern feed parsers and generators use. + + + +The main difference is that support for module plugins has to be wired in the feed parser and generator plugins. The default feed parser and generator plugins supporting module plugins are: RSS 1.0, RSS 2.0 and Atom 0.3. + + + +It is important to understand that this wiring is for modules support. Once a feed parser or generator has modules support, new modules can be used just by adding them to right property in the **_rome.properties_** file. No code changes are required. + + + +Module parsers and generators are defined at feed and item level. This allow selective handling of modules, for example handling Syndication module at feed level only. + + + +Module parser plugins are managed by the **_com.sun.syndication.io.impl.ModuleParsers_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_.feed.ModuleParser.classes_** and the **_.item.ModuleParser.classes_** properties in all the **_rome.properties_** files. must be the type defined by the parser (ie: rss\_1.0, atom\_0.3). The fully qualified names of the module parser classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file modules parser plugins definition is as follows: + + + +``` + +# Parsers for Atom 0.3 feed modules +# +atom_0.3.feed.ModuleParser.classes=com.sun.syndication.io.impl.SyModuleParser \ + com.sun.syndication.io.impl.DCModuleParser + +# Parsers for Atom 0.3 entry modules +# +atom_0.3.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.io.impl.SyModuleParser \ + com.sun.syndication.io.impl.DCModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser + +# Parsers for RSS 2.0 feed modules +# +rss_2.0.feed.ModuleParser.classes= + +# Parsers for RSS 2.0 item modules +# +rss_2.0.item.ModuleParser.classes= + +``` + + +All the classes defined in this property have to implement the **_com.sun.syndication.io.ModuleParser_** interface. ModuleParser instances must be thread safe. The return value of the **_getNamesapceUri()_** method is used as the primary key. If more than one module parser returns the same URI, the latter one prevails. + + + +Module generator plugins are managed by the **_com.sun.syndication.io.impl.GeneratorParsers_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_.feed.ModuleGenerator.classes_** and the **_.item.ModuleGenerator.classes_** properties in all the **_rome.properties_** files. must be the type defined by the generator (ie: rss\_1.0, atom\_0.3). The fully qualified names of the module generator classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file modules generator plugins definition is as follows: + + + +``` + +# Generators for Atom 0.3 feed modules +# +atom_0.3.feed.ModuleGenerator.classes=com.sun.syndication.io.impl.SyModuleGenerator \ + com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for Atom 0.3 entry modules +# +atom_0.3.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.io.impl.SyModuleGenerator \ + com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for RSS 2.0 feed modules +# +rss_2.0.feed.ModuleGenerator.classes= + +# Generators for RSS_2.0 entry modules +# +rss_2.0.item.ModuleGenerator.classes= + +``` + + +All the classes defined in this property have to implement the **_com.sun.syndication.io.ModuleGenerator_** interface. ModuleGenerator instances must be thread safe. The return value of the **_getNamesapceUri()_** method is used as the primary key. If more than one module generator returns the same URI, the latter one prevails. + + + +See also: a step\-by\-step [tutorial for implementing a custom module](RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html). + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md new file mode 100644 index 0000000..08a0bb0 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md @@ -0,0 +1,89 @@ +# Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code + + +These instructions are outdated + + +## Building the samples with Maven + + + +This is, as usual, the easiest way. + + + +There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + +If you built ROME run maven jar:install in the rome project to install ROME's jar in your Maven repository. + + + +If you got ROME binary distribution copy the ROME's jar file to your Maven repository (on UNIX that would be `cp rome\-0.5/rome\-0.5.jar \~/.maven/repository/rome/jars/`). + + + +Then building the samples it's easy as a pie, just run maven jar in the samples sub\-project and you are all set. + + + +To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. + + +## Building the samples with Ant + + + +The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files ROME depends on and are needed for building an application using Rome. + + + +In order to build the samples (or any subprojects), you'll need to first ensure that rome itself is built. You can do this simply by running ant in the project root directory. + + + +Once this is done, change to the samples directory, and just run ant. This will produce two files, rome\-samples.jar which contains the sample applications, and rome\-samples.war which will contain a deployable web application war file for the FeedServlet sample. + + +## Running the samples with Maven + + + +The Maven goals for running the samples are defined in maven.xml. + + + +* `maven run\-agr` runs the FeedAggregator sample + +* `maven run\-conv` runs the FeedConverter sample + +* `maven run\-read` runs the FeedReader sample + +* `maven run\-write` runs the FeedWriter sample + +* `maven run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + + +To run the sample Web Application you'll need to deploy the WAR file into your servlet container. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. + + +## Running the samples with Ant + + + +All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + +* `ant run\-aggr` runs the FeedAggregator sample + +* `ant run\-conv` runs the FeedConverter sample + +* `ant run\-read` runs the FeedReader sample + +* `ant run\-write` runs the FeedWriter sample + +* `ant run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md new file mode 100644 index 0000000..d43dad1 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md @@ -0,0 +1,391 @@ +# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator) + + +**Software requirements:** Synd J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + +This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). + + + +To understand this tutorial you should be familiar the with ROME API and with the use of modules in syndication feeds. + + + +Out of the box ROME parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. + + + +The complete source for this tutorial is in the ROME samples bundle as well as in CVS. + + +## What is the intended outcome of the tutorial? + + + +The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. + + + +The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: + + + +``` + + + + + RSS 1.0 Feed with Sample Module + http://rome.dev.java.net + This is a feed showing how to use a custom module with ROME + + + + + + + Channel bar + Channel first foo + Channel second foo + + + Title of Item 01 + http://rome.dev.java.net/item01 + Item 01 does not have Sample module data + + + Title of Item 02 + http://rome.dev.java.net/item02 + Item 02 has Sample module data + Item 02 bar + Item 02 only foo + 2004-07-27T00:00+00:00 + + + +``` + +## Sample Module Bean + + + +First we must start with the bean interface, SampleModule. SampleModule must extend Module. The Module interface defines the getUri() method, which will return a URI identifying the module. + + + +The Module interface also extends the CopyFrom interface to enable copying properties from alternate implementations of the concrete Module interface. More on this later in this page. + + + +The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. + + + +Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). + + + +``` + +public interface SampleModule extends Module { + + public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; + + public String getBar(); + public void setBar(String bar); + + public List getFoos(); + public void setFoos(List foos); + + public Date getDate(); + public void setDate(Date date); +} + +``` + + +Next we have to write the bean implementation, SampleModuleImpl. + + + +SampleModuleImpl extends ModuleImpl. ModuleImpl is the default implementation of the \=\=Module interface. ModuleImpl automatically provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModule). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. + + + +``` + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public SampleModuleImpl() { + super(SampleModule.class,SampleModule.URI); + } + + public String getBar() { + return _bar; + } + [...] + +``` + + +The module properties are just Java Bean properties. The only catch is to follow ROME semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned. Also, following ROME semantics, all properties are by reference, including mutable ones. + + + +``` + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + private String _bar; + private List _foos; + private Date _date; + ... + public void setBar(String bar) { + _bar = bar; + } + + public List getFoos() { + return (_foos==null) ? (_foos=new ArrayList()) : _foos; + } + + public void setFoos(List foos) { + _foos = foos; + } + + public Date getDate() { + return _date; + } + + public void setDate(Date date) { + _date = date; + } + +``` + +## The CopyFrom interface + + + +Now the weird part, the bits for the CopyFrom logic. The [TheCopyFromInterface.html](TheCopyFromInterface.html) document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. + + + +The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). + + + +The copyFrom() method copies all the properties from the parameter object (which must be a SampleModule implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. + + + +``` + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public Class getInterface() { + return SampleModule.class; + } + + public void copyFrom(Object obj) { + SampleModule sm = (SampleModule) obj; + setBar(sm.getBar()); + List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) + setFoos(foos); + setDate((Date)sm.getDate().clone()); // because Date is not inmutable. + } + +} + +``` + +## Sample Module Parser + + + +The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. + + + +The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. + + + +In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. + + + +If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. + + + +``` + +public class SampleModuleParser implements ModuleParser { + + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + public Module parse(Element dcRoot) { + boolean foundSomething = false; + SampleModule fm = new SampleModuleImpl(); + + Element e = dcRoot.getChild("bar", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setBar(e.getText()); + } + List eList = dcRoot.getChildren("foo", SAMPLE_NS); + if (eList.size() > 0) { + foundSomething = true; + fm.setFoos(parseFoos(eList)); + } + e = dcRoot.getChild("date", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setDate(DateParser.parseW3CDateTime(e.getText())); + } + return (foundSomething) ? fm : null; + } + + private List parseFoos(List eList) { + List foos = new ArrayList(); + for (int i = 0; i < eList.size(); i++) { + Element e = (Element) eList.get(i); + foos.add(e.getText()); + } + return foos; + } + +} + +``` + +## Sample Module Generator + + + +The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. + + + +The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. The set of namespaces returned by the getNamespaces() method will be used to declare the namespaces used by the module in the feed root element. + + + +If no Sample Module bean is in the feed bean the module generator is not invoked at all. + + + +``` + +public class SampleModuleGenerator implements ModuleGenerator { + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + private static final Set NAMESPACES; + + static { + Set nss = new HashSet(); + nss.add(SAMPLE_NS); + NAMESPACES = Collections.unmodifiableSet(nss); + } + + public Set getNamespaces() { + return NAMESPACES; + } + + public void generate(Module module, Element element) { + + // this is not necessary, it is done to avoid the namespace definition in every item. + Element root = element; + while (root.getParent()!=null && root.getParent() instanceof Element) { + root = (Element) element.getParent(); + } + root.addNamespaceDeclaration(SAMPLE_NS); + + SampleModuleI fm = (SampleModule)module; + if (fm.getBar() != null) { + element.addContent(generateSimpleElement("bar", fm.getBar())); + } + List foos = fm.getFoos(); + for (int i = 0; i < foos.size(); i++) { + element.addContent(generateSimpleElement("foo",foos.get(i).toString())); + } + if (fm.getDate() != null) { + element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate()))); + } + } + + protected Element generateSimpleElement(String name, String value) { + Element element = new Element(name, SAMPLE_NS); + element.addContent(value); + return element; + } + +} + +``` + +## Configuration to make ROME process Sample Module in feeds + + + +The last step is to setup the configuration file to indicate to ROME how and when to use the Sample Module parser and generator. + + + +The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. + + + +You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. + + + +Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. + + + +``` + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +``` + + +If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. + + +## Using the Sample Module from the SyndFeed beans + + + +They will be there, just use them. You may get the SampleModule bean using the getModule(String Uri) method of the SyndFeed bean and the SyndEntry bean. + + + +Adding or replacing a syndication feed parser, generator or converter goes along the same lines of what it has been explained in the tutorial for modules. This is explained in the [ROME Plugins Mechanism](RssAndAtOMUtilitiEsROMEPluginsMechanism.html) topic. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md new file mode 100644 index 0000000..989708a --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md @@ -0,0 +1,147 @@ +# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one + + +**Software requirements:** J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + +ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + +ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + +``` + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + +ROME also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: + + + +``` + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + +``` + + +The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. + + + +SyndFeed instances can also be created and populated within the code. For example: + + + +``` + +SyndFeed aggrFeed = new SyndFeedImpl(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + +``` + + +The snipped of code above creates a SyndFeed instance using the default implementation provided by ROME, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + +SyndFeed properties can be modified, assigned to other SyndFeed instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeed properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeed property you are altering the SyndFeed. Or, another example, if you assign the list of entries of one SyndFeed instance to another SyndFeed isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeed instances. + + + +The following lines of code show how to copy the entries of a SyndFeed instance being read (inFeed) into a SyndFeed instance being created within the application (feed): + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndFeedImpl; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i + * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,new PrintWriter(System.out)); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md new file mode 100644 index 0000000..05b9e30 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md @@ -0,0 +1,205 @@ +# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + +ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + +Creating a feed with SyndFeed beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeed bean with 3 entries is created. + + + +First the SyndFeed instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. + + + +``` + +SyndFeed feed = new SyndFeedImpl(); +feed.setFeedType(feedType); + +feed.setTitle("Sample Feed (created with ROME)"); +feed.setLink("http://rome.dev.java.net"); +feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + +``` + + +Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. + + + +``` + +List entries = new ArrayList(); +SyndEntry entry; +SyndContent description; + +entry = new SyndEntryImpl(); +entry.setTitle("ROME v1.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); +entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); +description = new SyndContentImpl(); +description.setType("text/plain"); +description.setValue("Initial release of ROME"); +entry.setDescription(description); +entries.add(entry); +[...] +entry = new SyndEntryImpl(); +entry.setTitle("ROME v3.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); +entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); +description = new SyndContentImpl(); +description.setType("text/html"); +description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); +entry.setDescription(description); +entries.add(entry); + +``` + + +Finally the list with entries is added to the SyndFeed bean. + + + +``` + +feed.setEntries(entries); + +``` + + +The SyndFeed bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. + + + +ROME includes generators that allow producing syndication feed XML documents from SyndFeed instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeed bean. All it takes to write a syndication feed XML document using ROME \-assuming you have a SyndFeed bean and a Writer instance\- are the following lines of code: + + + +``` + +SyndFeed feed = ...; +Writer writer = ...; + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,writer); + +``` + + +First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeed bean to the Writer stream. + + + +Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. + + + +``` + +package com.sun.syndication.samples; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.SyndFeedOutput; + +import java.io.FileWriter; +import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * It creates a feed and writes it to a file. + *

+ * + */ +public class FeedWriter { + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String feedType = args[0]; + String fileName = args[1]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with ROME)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of ROME"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v2.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + Writer writer = new FileWriter(fileName); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + writer.close(); + + System.out.println("The feed has been written to the file ["+fileName+"]"); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); + System.out.println("The first parameter must be the syndication format for the feed"); + System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); + System.out.println("The second parameter must be the file name for the feed"); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md new file mode 100644 index 0000000..07130c1 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md @@ -0,0 +1,90 @@ +# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed + + +**Software requirements:** J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + +ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + +ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: + + + +``` + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + +``` + + +The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + +The default SyndFeed implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + +``` + + System.out.println(feed); + +``` + + +Following is the full code for a Java application that reads a syndication feed and prints the SyndFeed bean to the application's output. + + + +``` + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + +``` diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md new file mode 100644 index 0000000..cbe3394 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md @@ -0,0 +1,243 @@ +# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed + + +**Software requirements:** J2SE 1.4\+, Servlet Container 2.3\+, JDOM 1.0 and ROME 0.5. + + + +This sample consists of a servlet that serves a feed as response. The feed type (RSS in any of its variants or Atom) can be specified as a URL parameter when requesting the feed. The returned feed is hardwired in the sample and it would be straight forward to modify the sample to generate the feed dynamically (i.e. from data stored in a database). + + + +The core logic of the **_FeedServlet_** is in the following fragment of code: + + + +``` + +public class FeedServlet extends HttpServlet { + ... + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + ... + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + ... + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + feed = ... + return feed; + } + +} + +``` + + +The servlet returns a feed upon HTTP GET requests with the **_doGet()_** method. + + + +First the **_SyndFeed_** bean is obtained by invoking the **_getFeed()_** method, the request object is passed as it could be used to obtain request contextual information to create the feed. How to create a feed using SyndFeed bean is explained in detail in the [Using ROME to create and write a feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) Tutorial. + + + +Then the feed type of the response is determined, first looking at the request parameters and falling back to a default feed type (specified by a servlet init parameter) if the type is not indicated in the request parameters. Setting the feed type in the feed bean will indicate the **_SyndFeedOutput_** the feed type to output. + + + +Finally, the response is set with the proper content type (the MIME\_TYPE constant is 'application/xml; charset\=UTF\-8') and the feed is written to response writer using the **_SyndFeedOutput_** output classes. + + + +Following is the full code for the servlet. + + + +``` + +package com.sun.syndication.samples.servlet; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.FeedException; +import com.sun.syndication.io.SyndFeedOutput; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * Sample Servlet that serves a feed created with ROME. + *

+ * The feed type is determined by the 'type' request parameter, if the parameter is missing it defaults + * to the 'default.feed.type' servlet init parameter, if the init parameter is missing it defaults to 'atom_0.3' + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedServlet extends HttpServlet { + private static final String DEFAULT_FEED_TYPE = "default.feed.type"; + private static final String FEED_TYPE = "type"; + private static final String MIME_TYPE = "application/xml; charset=UTF-8"; + private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed"; + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + private String _defaultFeedType; + + public void init() { + _defaultFeedType = getServletConfig().getInitParameter(DEFAULT_FEED_TYPE); + _defaultFeedType = (_defaultFeedType!=null) ? _defaultFeedType : "atom_0.3"; + } + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + try { + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + } + catch (FeedException ex) { + String msg = COULD_NOT_GENERATE_FEED_ERROR; + log(msg,ex); + res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg); + } + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + + feed.setTitle("Sample Feed (created with ROME)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v0.1"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome01"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of ROME"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.2"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome02"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"+ + "

For details check the Changes Log for 0.2

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v0.3"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome03"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log for 0.3

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v0.4"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome04"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-09-24")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features, Unit testing completed

"+ + "

For details check the Changes Log for 0.4

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + return feed; + } + +} + +``` + + +To use the **_FeedServlet_** we need to create a Web Application. For the Web Application we need a deployment descriptor, the **_web.xml_** file: + + + +``` + + + + + + ROME Samples + + + FeedServlet + com.sun.syndication.samples.servlet.FeedServlet + + default.feed.type + rss_2.0 + + + + + FeedServlet + /feed + + + + +``` + + +To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. Deploy the WAR in a servlet container and the **_FeedServlet_** should be up an running. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md new file mode 100644 index 0000000..1ff0297 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md @@ -0,0 +1,107 @@ +# The CopyFrom interface + + +The CopyFrom interface defines functionality similar to a deep cloning. The difference with the clone() method (besides the deep cloning requirements) is that the object to be the copy of the original one has to be explicitly created and it is this object the one that triggers the deep copying process. Implemetations of the CopyFrom interface should work propertly on arrays, collections, CopyFrom and basic type properties. + + + +Using CopyFrom objects enables copying data between different implementations of a given interface without these implementation having to know about each other. + + + +CopyFrom is unidirectional. A class implementing the CopyFrom knows how to extract properties from the given class (commonly having an interface in common). + + + +A simple example using the CopyFrom interface is: + + + +``` + + public interface Foo extends CopyFrom { + public void setName(String name); + public String getName(); + + public void setValues(Set values); + public Set getValues(); + } + + public class FooImplA implements Foo { + private String _name; + private Set _values; + + public void setName(String name) { + _name = name; + } + + public String getName() { + return _name; + } + + public void setValues(Set values) { + _values = values; + } + + public Set getValues() { + return _values; + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + + public class FooImplB implements Foo { + private Map _data; + + public FooImplB() { + _data = new HashMap(); + } + + public void setName(String name) { + _data.put("name",name); + } + + public String getName() { + return (String) _data.get("name"); + } + + public void setValues(Set values) { + _data.put("values",values); + } + + public Set getValues() { + return (Set) _data.get("values"); + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + +``` + + +A use case for the CopyFrom functionality is a Java Bean implementation of an interface and a persistency implementation (such as Hibernate) of the the same interface that may add extra persistency related properties to the bean (ie, the 'Id' property as the persistency layer primary key). + + + +For bean, array and collection properties the bean being invoked which copyFrom() method is invoked is responsible for those properties. + + + +For properties implementing the CopyFrom interface, the bean must create a property instance implementing the interface returned by the getInterface() method. This allows the bean doing the copyFrom() to handle specialized subclasses of property elements propertly. This is also applicacle to array and collection properties. The 'modules' property of the SyndFeed and SyndEntry beans is a use case of this feature where the copyFrom() invocation must create different beans subclasses for each type of module, the getInteface() helps to find the right implementation. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md new file mode 100644 index 0000000..71cd4c2 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md @@ -0,0 +1,166 @@ +# Understanding Rss and atOM utilitiEs (ROME) Bean Utilities + + +ROME bean utilities are not part of ROME public API. They are used by the default implementation of ROME beans and it may be useful for alternate implementations as well. It is important to keep in mind that these APIs are not public and they are subject to change breaking backward compatibility. + + + +Rome _com.sun.syndication.feed.impl_ package contains a set of Java classes that provide support for all the basic features Java Beans commonly must have: toString, equals, hashcode and cloning. + + + +By using these classes Beans don't have to hand code these functions. This greatly simplifies things when Beans have several properties, collection properties and composite properties. + + + +The _CloneableBean_, _EqualsBean_, _ToStringBean_ and _ObjectBean_ classes use instrospection on the properties of the classes using them. This is done recursively on all properties. All ROME Beans default implementations leverage these classes. + + +## ToStringBean + + + +Beans implementing the ToString interface must implement the toString(String prefix) method. This method must print the bean properties names and values, one per per line, separating the name and value with an '\=' sign and prefixing the name with the given prefix parameter using the same notation used in the JSP expression language used in JSTL and in JSP 2.0. This must be done recursively for all array, collection and ToString properties. + + + +The ToStringBean class provides an implementation of the toString() method producing a detailed output of all the properties of the Bean being processed. The ToStringBean constructor takes the class definition the ToStringBean class should use for properties scanning \-using instrospection\- for printing, normally it is the class of the Bean using the ToStringBean. + + +### Using the ToStringBean class + + + +``` + + public class MyBean { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public String toString(String prefix) { + ToStringBean tsBean = new ToStringBean(MyBean.class,this); + return tsBean.toString(prefix); + } + + public String toString() { + return toString("myBean"); + } + } + +``` + +## EqualBean + + + +The EqualsBean class provides a recursive introspetion\-based implementation of the equals() and hashCode() methods working on the Bean properties. The EqualsBean constructor takes the class definition that should be properties scanned (using introspection) by the equals() and thehashCode() methods. The EqualsBean class works on array, collection, bean and basic type properties. + + +### Using the EqualsBean class + + + +``` + + public class MyBean { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public boolean equals(Object obj) { + EqualsBean eBean = new EqualsBean(MyBean.class,this); + return eBean.beanEquals(obj); + } + + public int hashCode() { + EqualsBean equals = new EqualsBean(MyBean.class,this); + return equals.beanHashCode(); + } + } + +``` + +## CloneableBean + + + +The CloneableBean class provides a recursive introspetion\-based implementation of the clone() method working on the Bean properties. The CloneableBean class works on array, collection, bean and basic type properties. + + +### Using the CloneableBean class + + + +``` + + public class MyBean implements Cloneable { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public Object clone() { + CloneableBean cBean = new CloneableBean(this); + return cBean.beanClone(); + } + } + +``` + + +By default, the CloneableBean copies all properties of the given object. It also supports an ignore\-properties set, the property names in this set will not be copied to the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module. + + +## ObjectBean + + + +The ObjectBean is a convenience bean providing ToStringBean, EqualsBean and CloneableBean functionality support. Also, ObjectBeans implements the Serializable interface making the beans serializable if all its properties are. Beans extending ObjectBean get toString(), equals(),hashCode() and clone() support as defined above. + + + +And example of using the ObjectBean class is: + + + +``` + + public class MyBean extends ObjectBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + +``` + + +It can also be used in delegation mode instead as some of the previous examples. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md new file mode 100644 index 0000000..f1b3a0b --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md @@ -0,0 +1,172 @@ +# XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding + + +Determining the charset set encoding of an XML document it may prove not as easy as it seems, and when the XML document is served over HTTP things get a little more hairy. + + + +Current Java libraries or utilities don't do this by default, A JAXP SAX parser may detect the charset encoding of a XML document looking at the first bytes of the stream as defined Section 4.3.3 and Appendix F.1 of the in [XML 1.0 (Third Edition)](http://www.w3.org/TR/2004/REC-xml-20040204/) specification. But Appendix F.1 is non\-normative and not all Java XML parsers do it right now. For example the JAXP SAX parser implementation in [J2SE 1.4.2](http://java.sun.com/j2se/1.4.2) does not handle Appendix F.1 and [Xerces 2.6.2](http://xml.apache.org/xerces2-j/) just added support for it. But still this does not solve the whole problem. JAXP SAX parsers are not aware of the HTTP transport rules for charset encoding resolution as defined by [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt). They are not because they operate on a byte stream or a char stream without any knowledge of the stream transport protocol, HTTP in this case. + + + +[Mark Pilgrim](http://diveintomark.org/) did a very good job explaining how the charset encoding should be determined, [Determining the character encoding of a feed](http://diveintomark.org/archives/2004/02/13/xml-media-types) and [XML on the Web Has Failed](http://www.xml.com/pub/a/2004/07/21/dive.html). + + + +To isolate developers from this issue ROME has a special character stream class, the _XmlReader_. The _XmlReader_ class is a subclass of the _java.io.Reader_ that detects the charset encoding of XML documents read from files, input streams, URLs and input streams obtained over HTTP. Ideally this should be built into the JAXP SAX classes, most likely in the InputSource class. + + +## Default Lenient Behavior + + + +It is very common for many sites, due to improper configuration or lack of knowledge, to declare an invalid charset encoding. Invalid according to the XML 1.0 specification and the RFC 3023. For example a mismatch between the implicit charset encoding in the HTTP content\-type and the explicit charset encoding in the XML prolog. + + + +Because of this, ROME XmlReader by default has a lenient detection. This lenient detection works in the following order: + + + +* A strict charset encoding detection, as specified by the Algorithms below is attempted + +* If the content type was 'text/html' it replaces it with 'text/xml' and tries strict charset encoding detection again + +* If the XML prolog had a charset encoding that encoding is used + +* If the content type had a charset encoding that encoding is used + +* 'UTF\-8' is used + + + +The XmlReader class has 2 constructors that allow a strict (non\-lenient) charset encoding detection to be performed. This constructors take a lenient boolean flag, the flag should be set to _false_ for a strict detection. + + +## The Algorithms per XML 1.0 and RFC 3023 specifications + + + +Following it's a detailed explanation on the algorithms the _XmlReader_ uses to determine the charset encoding. These algorithms first appeared in [Tucu's Weblog](http://blogs.sun.com/roller/page/tucu/Weblog). + + +### Raw XML charset encoding detection + + + +Detection of the charset encoding of a XML document without external information (i.e. reading a XML document from a file). Following [Section 4.3.3](http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding) and [Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info) of the XML 1.0 specification the charset encoding of an XML document is determined as follows: + + + +``` + +BOMEnc : byte order mark. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLGuessEnc: best guess using the byte representation of the first bytes of XML declaration + ('') if present. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLEnc : encoding in the XML declaration (''). Possible values: anything or NULL + +if BOMEnc is NULL + if XMLGuessEnc is NULL or XMLEnc is NULL + encoding is 'UTF-8' [1.0] + else + if XMLEnc is 'UTF-16' and (XMLGuessEnc is 'UTF-16BE' or XMLGuessEnc is 'UTF-16LE') + encoding is XMLGuessEnc [1.1] + else + encoding is XMLEnc [1.2] +else +if BOMEnc is 'UTF-8' + if XMLGuessEnc is not NULL and XMLGuessEnc is not 'UTF-8' + ERROR, encoding mismatch [1.3] + if XMLEnc is not NULL and XMLEnc is not 'UTF-8' + ERROR, encoding mismatch [1.4] + encoding is 'UTF-8' +else +if BOMEnc is 'UTF-16BE' or BOMEnc is 'UTF-16LE' + if XMLGuessEnc is not NULL and XMLGuessEnc is not BOMEnc + ERROR, encoding mismatch [1.5] + if XMLEnc is not NULL and XMLEnc is not 'UTF-16' and XMLEnc is not BOMEnc + ERROR, encoding mismatch [1.6] + encoding is BOMEnc +else + ERROR, cannot happen given BOMEnc possible values (see above) [1.7] + +``` + + +Byte Order Mark encoding and XML guessed encoding detection rules are clearly explained in the [XML 1.0 Third Edition Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info). Note that in this algorithm BOMEnc and XMLGuessEnc are restricted to UTF\-8 and UTF\-16\* encodings. + + + +* **#1.0.** There is no BOM, an encoding or encoding family cannot be guessed from the first bytes in the stream, defaulting to UTF\-8. + +* **#1.1.** Strictly following [XML 1.0 Third Edition Section 4.3.3 Charset Encoding in Entities](http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding) (2nd paragraph) no BOM and UTF\-16 XML declaration encoding is an error. The BOM is required to identify if the encoding is BE or LE. But if XMLEnc was read it means that the encoding byte order of the stream was guessed from the first bytes in the stream, note that this is possible only if the document starts with a XML declaration. The logic verifies that there is no conflicting encoding information and relaxes the BOM requirement if a XML declaration (that allows guessing the byte order) is present. + +* **#1.2.** XMLEnc is present, it is not UTF\-16 (although it can be UTF\-16BE or UTF\-16LE), the guessed encoding is used to read the XML declaration encoding. Detecting encoding mismatches here it would require awareness of charset families, instead the algorithm relies on the charset encoding routines that will process the stream to discover and report mismatches. _IMPORTANT:_ To handle other encodings (i.e. USC\-4 or EBCDIC encoding families) the algorithm should be extended here. + +* **#1.3, #1.4, #1.5, #1.6** There is an explicit encoding mismatch. + +* **#1.7.** Given the currently assumed BOMEnc values this case cannot happen. _IMPORTANT:_ To handle other encodings (i.e. USC\-4 or EBCDIC encoding families) the algorithm should be extended here. + + +### XML over HTTP charset encoding detection + + + +Detection of the charset encoding of a XML document with external information (provided by HTTP). Following [Section 4.3.3](http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding), [Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info) and [Appendix F.2](http://www.w3.org/TR/2004/REC-xml-20040204/#sec-guessing-with-ext-info) of the XML 1.0 specification, plus [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) the charset encoding of an XML document served over HTTP is determined as follows: + + + +``` + +ContentType: Content-Type HTTP header +CTMime : MIME type defined in the ContentType +CTEnc : charset encoding defined in the ContentType, NULL otherwise +BOMEnc : byte order mark. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLGuessEnc: best guess using the byte representation of the first bytes of XML declaration + ('') if present. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLEnc : encoding in the XML declaration (''). Possible values: anything or NULL +APP-XML : RFC 3023 defined 'application/*xml' types +TEXT-XML : RFC 3023 defined 'text/*xml' types + +if CTMime is APP-XML or CTMime is TEXT-XML + if CTEnc is NULL + if CTMime is APP-XML + encoding is determined using the Raw XML charset encoding detection algorithm [2.0] + else + if CTMime is TEXT-XML + encoding is 'US-ASCII' [2.1] + else + if (CTEnc is 'UTF-16BE' or CTEnc is 'UTF-16LE') and BOMEnc is not NULL + ERROR, RFC 3023 explicitly forbids this [2.2] + else + if CTEnc is 'UTF-16' + if BOMEnc is 'UTF-16BE' or BOMEnc is 'UTF-16LE' + encoding is BOMEnc [2.3] + else + ERROR, missing BOM or encoding mismatch [2.4] + else + encoding is CTEnc [2.5] +else + ERROR, handling for other MIME types is undefined [2.6] + +``` + + +Byte Order Mark encoding and XML guessed encoding detection rules are clearly explained in the [XML 1.0 Third Edition Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info). Note that in this algorithm BOMEnc and XMLGuessEnc are restricted to UTF\-8 and UTF\-16\* encodings. + + + +* **#2.0.** HTTP content type declares a MIME of application type and XML sub\-type. There is not HTTP Content\-type charset encoding information. The charset encoding is determined using the Raw XML charset encoding detection algorithm. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _3.2. Application/xml Registration_. + +* **#2.1.** HTTP content type declares a MIME of text type and XML sub\-type. There is not HTTP Content\-type charset encoding information. The charset encoding is US\-ASCII. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _3.1. Text/xml Registration_. + +* **#2.2.** For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16BE' or 'UTF\-16LE' as the charset encoding, a BOM is prohibited. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset_. + +* **#2.3.** For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16' as the charset encoding, a BOM is required and it must be used to determine the byte order. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset_. + +* **#2.4.** For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16' as the charset encoding, a BOM must be present and it must be 'UTF\-16BE' or 'UTF\-16LE'. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset_. + +* **#2.5.** For text\-XML and application\-XML MIME types if the HTTP content type declares a charset encoding other than the UTF\-16 variants, that charset encoding is used, no other special handling is required. + +* **#2.6.** There is not defined logic to determine the charset encoding based on the MIME type given by the HTTP content type. + diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md new file mode 100644 index 0000000..0ed43d1 --- /dev/null +++ b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md @@ -0,0 +1,57 @@ +# Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles + +## Tutorials + + + +The following tutorials show how to use the ROME API. They focus on the higher abstraction layer of classes offered by ROME, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + +1. [Using ROME to read a syndication feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html) + +1. [Using ROME to convert a syndication feed from one type to another](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html) + +1. [Using ROME to aggregate many syndication feeds into a single one](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html) + +1. [Using ROME to create and write a feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) + +1. [Defining a Custom Module bean, parser and generator](RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html) + +1. [Using ROME within a Servlet to create and return a feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html) + + + +For instructions on how to build and run the samples used in the tutorials [click here](RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html). + + +## Additional Information + + + +* [Bean Utilities](UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + +* [XML Charset Encoding detection](XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html) + +* [TheCopyFromInterface.html](TheCopyFromInterface.html) + +* [Date Elements Mapping](FeedsDateElementsMappingToSyndFeedAndSyndEntry.html) + +* [Plugins Mechanism](RssAndAtOMUtilitiEsROMEPluginsMechanism.html) + +* [URI Mapping](FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html) + + +## Articles + + + +* [O'Reilly \- ROME in a Day: Parse and Publish Feeds in Java](http://www.xml.com/pub/a/2006/02/22/rome-parse-publish-rss-atom-feeds-java.html) by [Mark Woodman](http://markwoodman.com/) (February 22, 2006). + _A hands\-on tutorial that shows you how to act like your own FeedBurner and add a footer to existing feed items._ + +* [java.net \- Taking a Tour of ROME](http://today.java.net/pub/a/today/2006/02/02/tour-of-rome.html) by [Randy J. Ray](http://www.rjray.org/) (February 2, 2006). + _Working with web syndication? Your development path may lead you to ROME\-\-not the city, but the syndication framework, which makes working with RSS and Atom a breeze for both server\-and client\-side code. Randy J. Ray has an introduction to this project._ + +* [inkBlots \- Interview with Patrick Chanezon](http://inkblots.markwoodman.com/rss-diaries/patrick-chanezon) by [Mark Woodman](http://markwoodman.com/) (July 13, 2005). + _Why and how we started this project._ + diff --git a/src/site/markdown/rome/SitesToMoveFromJava.net.md b/src/site/markdown/rome/SitesToMoveFromJava.net.md new file mode 100644 index 0000000..c8ca49c --- /dev/null +++ b/src/site/markdown/rome/SitesToMoveFromJava.net.md @@ -0,0 +1,551 @@ +# sites to move from java.net + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + source + + + + target + + + +state + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/HowToBuild](http://wiki.java.net/twiki/bin/view/Javawsxml/HowToBuild) + + + + [How to build Rome?](HowToBuildRome.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/PoweredByRome](http://wiki.java.net/twiki/bin/view/Javawsxml/PoweredByRome) + + + + [ProductsOrSitesPoweredByROME.html](ProductsOrSitesPoweredByROME.html) + + + + missing images + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/PreservingWireFeeds](http://wiki.java.net/twiki/bin/view/Javawsxml/PreservingWireFeeds) + + + + [PreservingWireFeeds.html](PreservingWireFeeds.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/ProjectMotivation](http://wiki.java.net/twiki/bin/view/Javawsxml/ProjectMotivation) + + + + [Why this project?](WhyThisProject.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common) + + + + [HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html](HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04HowRomeWorks](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04HowRomeWorks) + + + + [HowRomeWorks/index.html](HowRomeWorks/index.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedAggregator](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedAggregator) + + + + [HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedConverter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedConverter) + + + + [HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedReader](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedReader) + + + + [HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedWriter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedWriter) + + + + [HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialSampleModule](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialSampleModule) + + + + [Rome v0.4 Tutorial, Defining a Custom Module (bean, parser and generator)](HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Tutorials](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Tutorials) + + + + [ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04URIMapping](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04URIMapping) + + + + [RomeV0.4FeedAndEntryURIMapping.html](RomeV0.4FeedAndEntryURIMapping.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05BeanUtils](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05BeanUtils) + + + + [Understanding Rss and atOM utilitiEs (ROME) Bean Utilities](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CharsetEncoding](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CharsetEncoding) + + + + [XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CopyFrom](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CopyFrom) + + + + [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05DateMapping](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05DateMapping) + + + + [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Plugins](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Plugins) + + + + [Rss and atOM utilitiEs (ROME) Plugins Mechanism](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05SamplesHowTo](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05SamplesHowTo) + + + + [Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedAggregator](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedAggregator) + + + + [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedConverter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedConverter) + + + + [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to convert a syndication feed from one type to another](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader) + + + + [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedServlet](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedServlet) + + + + [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html) + + + + links in code examples messed up + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedWriter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedWriter) + + + + [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) + + + + links in code examples messed up + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialSampleModule](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialSampleModule) + + + + [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator)](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Tutorials](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Tutorials) + + + + [Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05URIMapping](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05URIMapping) + + + + [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome07DateParsing](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome07DateParsing) + + + + [Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing](RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal2](http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal2) + + + + [ROME2 2nd Proposal (July 18th 2006) CURRENT](ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal](http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal) + + + + [ROME2 1st Proposal (June 10th 2006) NOT CURRENT](ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndMaven2](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndMaven2) + + + + [ROMEAndMaven2.html](ROMEAndMaven2.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndOSGi](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndOSGi) + + + + [ROMEAndOSGI.html](ROMEAndOSGI.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAPIFAQ](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAPIFAQ) + + + + [RomeAPIFAQ.html](RomeAPIFAQ.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeComparisonOtherLibs](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeComparisonOtherLibs) + + + + [What's wrong with other existing RSS parsing libraries?](WhatSWrongWithOtherExistingRSSParsingLibraries.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeDevelopmentProcess](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeDevelopmentProcess) + + + + [ROMEDevelopmentProcess.html](ROMEDevelopmentProcess.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeFeatureRequests](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeFeatureRequests) + + + + [ROMEDevelopmentProposals/ROMEFeatureRequests.html](ROMEDevelopmentProposals/ROMEFeatureRequests.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeProposals](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeProposals) + + + + [ROMEDevelopmentProposals/index.html](ROMEDevelopmentProposals/index.html) + + + + + +
+ + [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeWhatAPIToUse](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeWhatAPIToUse) + + + + [WhatPartOfTheAPIYouShouldBeUsing.html](WhatPartOfTheAPIYouShouldBeUsing.html) + + + + + +
diff --git a/src/site/markdown/rome/TutorialsAndArticles.md b/src/site/markdown/rome/TutorialsAndArticles.md new file mode 100644 index 0000000..a5f977c --- /dev/null +++ b/src/site/markdown/rome/TutorialsAndArticles.md @@ -0,0 +1,114 @@ +# Tutorials and Articles + +## Tutorials and documentation + + + +* Inside ROME, How Things Work + + * [How ROME Works](HowRomeWorks/index.html), Understanding Rome (a detailed overview by Dave Johnson) + + * [Rome common Package](HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html), bean utilities, enums, copying and clonning + + * [ROME Plugins Mechanism](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + + * [Feeds Date Elements](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + + * [Feed and Entry URI Mapping](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * [XML Charset Encoding Detection](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how Rome helps getting the right charset encoding + + + +* [RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html](RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) + +* [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) + + * [Using ROME to read a syndication feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html) + + * [Using ROME to convert a syndication feed from one type to another](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html) + + * [Using ROME to aggregate many syndication feeds into a single one](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html) + + * [Using ROME to create and write a feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) + + * [Defining a Custom Module bean, parser and generator](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html) + + * [Using ROME within a Servlet to create and return a feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html) + + * [instructions on how to build and run the samples used in the tutorials](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html) + + + +* [ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html) + + * [Using Rome to read a syndication feed](HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) + + * [Using Rome to convert a syndication feed from one type to another](HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + + * [Using Rome to aggregate many syndication feeds into a single one](HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + + * [Using Rome to create and write a feed](HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) + + * [Defining a Custom Module bean, parser and generator](HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) + + * [Using Rome within a Servlet to create and return a feed](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.html) + + * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.html) + + + +* [ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.html](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.html) + + * [Using Rome to read a syndication feed](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.html) + + * [Using Rome to convert a syndication feed from one type to another](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + + * [Using Rome to aggregate many syndication feeds into a single one](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + + * [Using Rome to create and write a feed](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) + + * [Defining a Custom Module bean, parser and generator](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.html) + + * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.html) + + + +* [ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.html](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.html) + + * [Using Rome to read a syndication feed](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.html) + + * [Using Rome to convert a syndication feed from one type to another](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + + * [Using Rome to aggregate many syndication feeds into a single one](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + + * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html) + + + +* [ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.html](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.html) + + * [Using Rome to read a syndication feed](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.html) + + * [Using Rome to convert a syndication feed from one type to another](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) + + * [Using Rome to aggregate many syndication feeds into a single one](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) + + * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html) + + + + +## Articles + + + +* [O'Reilly \- ROME in a Day: Parse and Publish Feeds in Java](http://www.xml.com/pub/a/2006/02/22/rome-parse-publish-rss-atom-feeds-java.html) by [Mark Woodman](http://markwoodman.com/) (February 22, 2006). + _A hands\-on tutorial that shows you how to act like your own FeedBurner and add a footer to existing feed items._ + +* [java.net \- Taking a Tour of ROME](http://today.java.net/pub/a/today/2006/02/02/tour-of-rome.html) by [Randy J. Ray](http://www.rjray.org/) (February 2, 2006). + _Working with web syndication? Your development path may lead you to ROME\-\-not the city, but the syndication framework, which makes working with RSS and Atom a breeze for both server\-and client\-side code. Randy J. Ray has an introduction to this project._ + +* [inkBlots \- Interview with Patrick Chanezon](http://inkblots.markwoodman.com/rss-diaries/patrick-chanezon) by [Mark Woodman](http://markwoodman.com/) (July 13, 2005). + _Why and how we started this project._ + diff --git a/src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md b/src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md new file mode 100644 index 0000000..7294c4d --- /dev/null +++ b/src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md @@ -0,0 +1,9 @@ +# What part of the API you should be using + + +Rome API allows developers to work with classes that closely resemble a particular syndication feed type. For example, the Channel class for RSS feeds and the Feed class for Atom feeds. All the Synd\* classes, which leverage the RSS and Atom specific classes, are the bridge to go from one syndication type to another. + + + +For day to day coding, we found ourselves using the **Synd\*** classes (in **com.sun.syndication.feed.synd**, **com.sun.syndication.feed.module** and **com.sun.syndication.io** packages) as we need to do applications that understand the different syndication feed types. And it is much simpler to work with a higher and independent abstraction. + diff --git a/src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md b/src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md new file mode 100644 index 0000000..6fe027e --- /dev/null +++ b/src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md @@ -0,0 +1,95 @@ +# What's wrong with other existing RSS parsing libraries? + + +Before we started with Rome we've evaluated other Java syndication management libraries to see if they'd fit our criteria. Feel free to update this evaluation if we forgot or mischaracterized your favorite library: this is a wiki after all:\-) + + +### Informa + + + +The [Informa: RSS Library for Java](http://informa.sourceforge.net/) which exists since 2002 is too complicated to grasp and use. As of this writing it has [19 interfaces and 12 marker interfaces](http://informa.sourceforge.net/apidocs/de/nava/informa/core/package-summary.html). It supports all RSS flavors in input, and only 1.0 and 0.91 in output. + + + +No RSS 2.0 output. + + + +No support for Atom at all. + + + +They have some interesting features such as Hibernate and Castor based database serialization, and JSP taglibs, which are useful paraphernalia for server side application development. This seems to be their main focus of development today. + + + +But we prefer to focus on our ESCAPE design criteria, so that our library does one thing really well: syndication parsing, abstract representation and conversion from/to all formats. + + + +Thus our library will be useful for both client and server side developers. + + + +We will develop the server side add\-on later when the basics will be well oiled. + + +### RSS4J + + + +[RSS4J](http://www.churchillobjects.com/c/13005.html) was released in version 0.92 in april 2002. It did not evolve since then. + + + +The web site explains: + + + +_This toolkit supports the three most commonly used RSS standards \- 0.90 (the original), 0.91 and 1.0. RSS 0.92 and 0.93 are not supported due to the dramatic changes it makes to the format and the fact that 1.0 is already finalized._ + + + +No need to say more: it seems to be a dead project and doesn't even start to address our requirements. + + +### RSS Utilities + + + +[RSS Utilities](http://java.sun.com/developer/technicalArticles/javaserverpages/rss_utilities/) seems like a one\-shot project from Rodrigo Oliveira, released in august 2003. It is a taglib to display RSS in JSPs, and includes a small parser for RSS 0.91, 0.92 and 2.0. + + + +It does not seem to be maintained, does not address RSS 1.0 and Atom. + + + +I would encourage Rodrigo to rewrite his taglibs using Rome as the parser, and eventually to contribute them to Rome. + + +### RSSLibJ + + + +[RSSLibJ](http://enigmastation.com/rsslibj) is a full\-Java RSS generation and consumption library, primarily centering on generating RSS feeds but able to consume them as well. It's maintained, but undergoing a refactoring to change a rather undesirable dependency. + + + +(This isn't a review \- this was added by one of RSSLibJ 's authors.) + + +### Sandler + + + +Sandler is yet another parser except that it only supports Atom feeds. I can't say more than that because I haven't used it. And now I won't have to. + + +### Conclusion + + + +These are the only RSS or Syndication management libraries we found in Java when we reviewed what was available and wether it was worth starting a new project. Feel free to add to it if we forgot something. + diff --git a/src/site/markdown/rome/WhyThisProject.md b/src/site/markdown/rome/WhyThisProject.md new file mode 100644 index 0000000..25be1d4 --- /dev/null +++ b/src/site/markdown/rome/WhyThisProject.md @@ -0,0 +1,31 @@ +# Why this project? + + +Various flavors of RSS and Atom syndication formats were reaching a tipping point in 2004. At Sun we started various projects involving these Syndication formats, but when looking around for Java libraries to take care of the parsing and generation of RSS we were not satisfied with what we found. [Project ROME](https://rometools.jira.com/) was started out of this frustration. + + + +Our requirements are to **ESCAPE** from [Syndication Feeds Hell](http://blogs.sun.com/tucu/entry/syndication_feeds_hell). In order to allow that the library must be: + + + +* \*E\*asy to use: given a url, get back a feed object independent of the underlying format, and serialize the feed object to the format I want. + +* \*S\*imple: RSS initially stood for "Really Simple Syndication"\*, and this simplicity is what made the format successful. Specifications wars have made the current situation much more complicated. The goal of the library is to give that simplicity back to developers: each API we use force on us a mental model of the domain and we are using more and more libraries on each project we implement. This library tries to ease the cognitive load of developers and provides a very simple model for feeds and entries, abstarcting out the details of the various underlying formats. + +* \*C\*omplete: must handle all versions of RSS and Atom + +* \*A\*bstract: provides a Java\-friendly abstraction layer on top of the various syndication specifications, that maps the commonalities of the various feed formats into a single simple JavaBeans Data Model. + +* \*P\*owerful: lets me access all the metadata of the feeds regardless of their format. If I need them, lets me access optional metadata expressed in extensions accepted by various formats (RSS 1.0 modules, other namespaces in Atom). + +* \*E\*xtensible: It needs to define a simple pluggable architecture to provide support for future extensions of the formats. + + + +\* \- not so, it was originally "RDF Site Summary", see: [RSS History](http://goatee.net/2003/rss-history.html) + + + +We set out to create this library in the same spirit as the [JDOM](http://www.jdom.org/mission/index.html) library for XML manipulation in Java, incorporating XOM's [Elliotte Rusty Harold's pearls of wisdom about API design and refactoring](http://www.artima.com/intv/jdom.html) (see [Air Bags and Other Design Principles](http://www.artima.com/intv/airbags.html) which links his 6 interviews with Bill Venners). ROME implementation uses JDOM. + diff --git a/src/site/markdown/rome/index.md b/src/site/markdown/rome/index.md new file mode 100644 index 0000000..9764ed0 --- /dev/null +++ b/src/site/markdown/rome/index.md @@ -0,0 +1,85 @@ +## Welcome to ROME + +_"...ending syndication feed confusion by supporting all of 'em. "_ _[\*](http://blogs.sun.com/roller/page/webmink/20040616#rome_wasn_t_built_in)_ + +**ROME is a set of _R_SS and At_om_ Utiliti_e_s for Java that is open source under the Apache 2.0 license.** + +RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0 + +ROME includes a set of parsers and generators for the various flavors of syndication feeds, as well as converters to convert from one format to another. +The parsers can give you back Java objects that are either specific for the format you want to work with, or a generic normalized SyndFeed class that +lets you work on with the data without bothering about the incoming or outgoing feed type. + +If you use ROME for your site or software, please add it to the wiki page [PoweredByRome](ProductsOrSitesPoweredByROME.html), or drop us an email + +Some of the links in the Navigation are out of date. This is because no one can edit them at present. However any registered user can edit the content +of the pages and you'll find most of the links updated there, notably the Tutorials and Articles. + +## ROME Subprojects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SubprojectPurposeLatest Release
ROME FetcherA caching feed fetcher that supports retrieval of feeds via HTTP conditional GET. + Supports ETags, GZip compression, and RFC3229 Delta encoding.ROME Fetcher v1.0 (Mar 11 2009)
Rome ModulesProvide support for feed extensions such as GeoRSS, iTunes, Microsoft SSE and SLE, Google GData and others.ROME Modules 1.0 (Feb 24 2011)
ROME ProponoSupports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, + an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API.ROME Propono v0.6.
ROME ManoA servlet pipeline framework for RSS and Atom feeds.
OPML for ROMEOutline Processor Markup Language (OPML) parser and tools.
+ +## Further information + +* [ROME Releases](ROMEReleases/index.html) +* Working with ROME + * [What part of the API you should be using](WhatPartOfTheAPIYouShouldBeUsing.html) + * [Tutorials and Articles](TutorialsAndArticles.html) +* Articles about ROME + * [Project Motivation](WhyThisProject.html) \- why we started ROME + * [API FAQ](RomeAPIFAQ.html), why things are like they are + * [Evaluation of existing RSS parsing libraries](WhatSWrongWithOtherExistingRSSParsingLibraries.html) +* Inside ROME, How Things Work + * [How ROME Works](HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + * [ROME Plugins Mechanism](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules + * [Feeds Date Elements](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry + * [Feed and Entry URI Mapping](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + * [XML Charset Encoding Detection](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding + * [Creating a custom Module](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator + * [The CopyFrom interface](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) + * [ROME bean utilities, equals, toString and cloning](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) + * [Customizing Date and time parsing](RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file + * [Using ROME from Maven2](ROMEAndMaven2.html) + * [Using ROME with OSGi](ROMEAndOSGI.html) + * [Preserving Wire Feeds to obtain access to Atom/RSS specific fields](PreservingWireFeeds.html) +* ROME development + * [How to build ROME](HowToBuildRome.html) (ROME uses [Maven](http://maven.apache.org/)) + * [Changes Log](ChangeLog.html), what and when + * [ROME Development Process](ROMEDevelopmentProcess.html) + * [ROME Development Proposals](ROMEDevelopmentProposals/index.html) \- proposals for new ROME features and releases +  \ No newline at end of file diff --git a/src/site/resources/.nojekyll b/src/site/resources/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/src/site/resources/css/site.css b/src/site/resources/css/site.css new file mode 100644 index 0000000..43c3cd8 --- /dev/null +++ b/src/site/resources/css/site.css @@ -0,0 +1,8 @@ +h1 { + padding: 4px 4px 4px 6px; + border: 1px solid #999; + color: #900; + background-color: #ddd; + font-weight:900; + font-size: x-large; +} \ No newline at end of file diff --git a/src/site/resources/images/romelogo.png b/src/site/resources/images/romelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..2c90608448e52857b31df02fa934de010996491f GIT binary patch literal 10835 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 literal 0 HcmV?d00001 diff --git a/src/site/site.xml b/src/site/site.xml new file mode 100644 index 0000000..db9b579 --- /dev/null +++ b/src/site/site.xml @@ -0,0 +1,25 @@ + + + + ROME + images/romelogo.png + http://github.com/ + + + + + + + + + + + + + + + + From 4aeffdd66299b50be0ac8f48b612b722f8302d7c Mon Sep 17 00:00:00 2001 From: Martin Kurz Date: Wed, 25 Sep 2013 22:01:49 +0200 Subject: [PATCH 2/6] ignores for eclipse --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7075a2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/target +/.classpath +/.project +/.settings From b330e2974a6a3de0b565b9a6efc10c895d1754fd Mon Sep 17 00:00:00 2001 From: Martin Kurz Date: Wed, 25 Sep 2013 22:08:54 +0200 Subject: [PATCH 3/6] github pages repo fixed for real repo --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 13ac757..077e8c3 100644 --- a/pom.xml +++ b/pom.xml @@ -149,7 +149,7 @@ 1.0-beta-2 gh-pages - scm:git:git@github.com:imk/rome.git + scm:git:git@github.com:rometools/rome.git ${project.build.directory}/site From 6a070a300d4015661a58047ff3b3d4bc49aa2a8f Mon Sep 17 00:00:00 2001 From: Martin Kurz Date: Thu, 26 Sep 2013 23:53:42 +0200 Subject: [PATCH 4/6] switch to apt --- .../fetcher/BuildingTheRomeFetcher.md | 5 - src/site/markdown/fetcher/ChangeLog.md | 109 --- .../Dependencies/HttpClientFeedFetcher.md | 5 - .../markdown/fetcher/Dependencies/index.md | 39 - src/site/markdown/fetcher/KnownIssues.md | 35 - .../fetcher/Releases/ROMEFetcher0.6.md | 43 - .../fetcher/Releases/ROMEFetcher0.7.md | 43 - .../fetcher/Releases/ROMEFetcher0.9.md | 47 -- .../fetcher/Releases/ROMEFetcher1.0.md | 43 - .../fetcher/Releases/ROMEFetcher1.0RC2.md | 47 -- .../fetcher/Releases/RomeFetcher0.3.md | 47 -- .../fetcher/Releases/RomeFetcher0.4.md | 43 - .../fetcher/Releases/RomeFetcher0.5.md | 47 -- src/site/markdown/fetcher/Releases/index.md | 1 - .../fetcher/SampleProgramsIncluded.md | 17 - src/site/markdown/fetcher/TodoList.md | 19 - ...singTheRomeFetcherModuleToRetrieveFeeds.md | 42 - src/site/markdown/fetcher/WishList.md | 9 - src/site/markdown/fetcher/index.md | 78 -- src/site/markdown/incubator/Certiorem.md | 72 -- .../markdown/incubator/CertioremTutorial.md | 174 ---- src/site/markdown/incubator/index.md | 19 - src/site/markdown/mano/index.md | 577 -------------- src/site/markdown/modules/A9OpenSearch.md | 55 -- src/site/markdown/modules/Content.md | 36 - src/site/markdown/modules/CreativeCommons.md | 42 - src/site/markdown/modules/GeoRSS.md | 52 -- src/site/markdown/modules/GoogleBase.md | 41 - .../markdown/modules/IPhotoPhotocasting.md | 52 -- src/site/markdown/modules/ITunesPodcasting.md | 53 -- src/site/markdown/modules/MediaRSS.md | 55 -- .../modules/MicrosoftSimpleListExtensions.md | 52 -- .../MicrosoftSimpleSharingExtensions.md | 37 - src/site/markdown/modules/Slash.md | 42 - src/site/markdown/modules/Weather.md | 40 - src/site/markdown/modules/index.md | 92 --- src/site/markdown/opml/index.md | 145 ---- .../markdown/propono/ROMEProponoVersion0.4.md | 15 - .../markdown/propono/ROMEProponoVersion0.5.md | 25 - .../markdown/propono/ROMEProponoVersion0.6.md | 84 -- .../markdown/propono/ROMEProponoVersion1.0.md | 30 - src/site/markdown/propono/index.md | 29 - src/site/markdown/rome/ChangeLog.md | 752 ------------------ ...ningACustomModuleBeanParserAndGenerator.md | 384 --------- ...egateManySyndicationFeedsIntoASingleOne.md | 147 ---- ...ertASyndicationFeedFromOneTypeToAnother.md | 103 --- ...ingRomeToCreateAndWriteASyndicationFeed.md | 205 ----- ...TutorialUsingRomeToReadASyndicationFeed.md | 90 --- ...andingTheRomeCommonClassesAndInterfaces.md | 374 --------- src/site/markdown/rome/HowRomeWorks/index.md | 97 --- src/site/markdown/rome/HowToBuildRome.md | 101 --- src/site/markdown/rome/PreservingWireFeeds.md | 52 -- .../rome/ProductsOrSitesPoweredByROME.md | 198 ----- src/site/markdown/rome/ROMEAndMaven2.md | 56 -- src/site/markdown/rome/ROMEAndOSGI.md | 13 - .../markdown/rome/ROMEDevelopmentProcess.md | 21 - .../ROME21stProposalJune10th2006NOTCURRENT.md | 428 ---------- .../ROME22ndProposalJuly18th2006CURRENT.md | 434 ---------- .../ROMEFeatureRequests.md | 54 -- .../rome/ROMEDevelopmentProposals/index.md | 28 - src/site/markdown/rome/ROMEROADMAPProposed.md | 84 -- ...1HowToBuildAndRunTheTutorialsSampleCode.md | 81 -- ...egateManySyndicationFeedsIntoASingleOne.md | 158 ---- ...ertASyndicationFeedFromOneTypeToAnother.md | 93 --- ...TutorialUsingRomeToReadASyndicationFeed.md | 81 -- .../ROME0.1Beta/RomeV0.1Tutorials/index.md | 17 - .../rome/ROMEReleases/ROME0.1Beta/index.md | 33 - ...egateManySyndicationFeedsIntoASingleOne.md | 144 ---- ...ertASyndicationFeedFromOneTypeToAnother.md | 100 --- ...TutorialUsingRomeToReadASyndicationFeed.md | 88 -- .../ROME0.2Beta/RomeV0.2Tutorials/index.md | 17 - .../rome/ROMEReleases/ROME0.2Beta/index.md | 29 - ...3HowToBuildAndRunTheTutorialsSampleCode.md | 81 -- ...ningACustomModuleBeanParserAndGenerator.md | 368 --------- ...egateManySyndicationFeedsIntoASingleOne.md | 150 ---- ...ertASyndicationFeedFromOneTypeToAnother.md | 105 --- ...ingRomeToCreateAndWriteASyndicationFeed.md | 205 ----- ...TutorialUsingRomeToReadASyndicationFeed.md | 93 --- .../ROME0.3Beta/RomeV0.3Tutorials/index.md | 21 - .../rome/ROMEReleases/ROME0.3Beta/index.md | 33 - ...4HowToBuildAndRunTheTutorialsSampleCode.md | 85 -- ...omeWithinAServletToCreateAndReturnAFeed.md | 243 ------ .../ROME0.4Beta/RomeV0.4Tutorials/index.md | 23 - .../rome/ROMEReleases/ROME0.4Beta/index.md | 68 -- .../ROMEReleases/ROME0.5Beta/ROMET-Shirt.md | 21 - .../rome/ROMEReleases/ROME0.5Beta/index.md | 68 -- .../markdown/rome/ROMEReleases/ROME0.6Beta.md | 64 -- .../markdown/rome/ROMEReleases/ROME0.7Beta.md | 66 -- .../markdown/rome/ROMEReleases/ROME0.8Beta.md | 74 -- .../markdown/rome/ROMEReleases/ROME0.9Beta.md | 72 -- .../markdown/rome/ROMEReleases/ROME1.0RC1.md | 42 - .../markdown/rome/ROMEReleases/ROME1.0RC2.md | 35 - .../rome/ROMEReleases/ROME1.0Release.md | 40 - src/site/markdown/rome/ROMEReleases/index.md | 135 ---- src/site/markdown/rome/RomeAPIFAQ.md | 142 ---- .../rome/RomeV0.4FeedAndEntryURIMapping.md | 112 --- ...ndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md | 40 - ...tryUriPropertiesMapToRSSAndAtomElements.md | 108 --- ...teElementsMappingToSyndFeedAndSyndEntry.md | 99 --- ...RssAndAtOMUtilitiEsROMEPluginsMechanism.md | 222 ------ ...5HowToBuildAndRunTheTutorialsSampleCode.md | 89 --- ...ningACustomModuleBeanParserAndGenerator.md | 391 --------- ...egateManySyndicationFeedsIntoASingleOne.md | 147 ---- ...ertASyndicationFeedFromOneTypeToAnother.md | 103 --- ...ingROMEToCreateAndWriteASyndicationFeed.md | 205 ----- ...TutorialUsingROMEToReadASyndicationFeed.md | 90 --- ...OMEWithinAServletToCreateAndReturnAFeed.md | 243 ------ .../TheCopyFromInterface.md | 107 --- ...ingRssAndAtOMUtilitiEsROMEBeanUtilities.md | 166 ---- ...ROMEHelpsGettingTheRightCharsetEncoding.md | 172 ---- .../index.md | 57 -- .../markdown/rome/SitesToMoveFromJava.net.md | 551 ------------- .../markdown/rome/TutorialsAndArticles.md | 114 --- .../rome/WhatPartOfTheAPIYouShouldBeUsing.md | 9 - ...ongWithOtherExistingRSSParsingLibraries.md | 95 --- src/site/markdown/rome/WhyThisProject.md | 31 - src/site/markdown/rome/index.md | 85 -- 117 files changed, 12470 deletions(-) delete mode 100644 src/site/markdown/fetcher/BuildingTheRomeFetcher.md delete mode 100644 src/site/markdown/fetcher/ChangeLog.md delete mode 100644 src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md delete mode 100644 src/site/markdown/fetcher/Dependencies/index.md delete mode 100644 src/site/markdown/fetcher/KnownIssues.md delete mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md delete mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md delete mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md delete mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md delete mode 100644 src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md delete mode 100644 src/site/markdown/fetcher/Releases/RomeFetcher0.3.md delete mode 100644 src/site/markdown/fetcher/Releases/RomeFetcher0.4.md delete mode 100644 src/site/markdown/fetcher/Releases/RomeFetcher0.5.md delete mode 100644 src/site/markdown/fetcher/Releases/index.md delete mode 100644 src/site/markdown/fetcher/SampleProgramsIncluded.md delete mode 100644 src/site/markdown/fetcher/TodoList.md delete mode 100644 src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md delete mode 100644 src/site/markdown/fetcher/WishList.md delete mode 100644 src/site/markdown/fetcher/index.md delete mode 100644 src/site/markdown/incubator/Certiorem.md delete mode 100644 src/site/markdown/incubator/CertioremTutorial.md delete mode 100644 src/site/markdown/incubator/index.md delete mode 100644 src/site/markdown/mano/index.md delete mode 100644 src/site/markdown/modules/A9OpenSearch.md delete mode 100644 src/site/markdown/modules/Content.md delete mode 100644 src/site/markdown/modules/CreativeCommons.md delete mode 100644 src/site/markdown/modules/GeoRSS.md delete mode 100644 src/site/markdown/modules/GoogleBase.md delete mode 100644 src/site/markdown/modules/IPhotoPhotocasting.md delete mode 100644 src/site/markdown/modules/ITunesPodcasting.md delete mode 100644 src/site/markdown/modules/MediaRSS.md delete mode 100644 src/site/markdown/modules/MicrosoftSimpleListExtensions.md delete mode 100644 src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md delete mode 100644 src/site/markdown/modules/Slash.md delete mode 100644 src/site/markdown/modules/Weather.md delete mode 100644 src/site/markdown/modules/index.md delete mode 100644 src/site/markdown/opml/index.md delete mode 100644 src/site/markdown/propono/ROMEProponoVersion0.4.md delete mode 100644 src/site/markdown/propono/ROMEProponoVersion0.5.md delete mode 100644 src/site/markdown/propono/ROMEProponoVersion0.6.md delete mode 100644 src/site/markdown/propono/ROMEProponoVersion1.0.md delete mode 100644 src/site/markdown/propono/index.md delete mode 100644 src/site/markdown/rome/ChangeLog.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md delete mode 100644 src/site/markdown/rome/HowRomeWorks/index.md delete mode 100644 src/site/markdown/rome/HowToBuildRome.md delete mode 100644 src/site/markdown/rome/PreservingWireFeeds.md delete mode 100644 src/site/markdown/rome/ProductsOrSitesPoweredByROME.md delete mode 100644 src/site/markdown/rome/ROMEAndMaven2.md delete mode 100644 src/site/markdown/rome/ROMEAndOSGI.md delete mode 100644 src/site/markdown/rome/ROMEDevelopmentProcess.md delete mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md delete mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md delete mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md delete mode 100644 src/site/markdown/rome/ROMEDevelopmentProposals/index.md delete mode 100644 src/site/markdown/rome/ROMEROADMAPProposed.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.1Beta/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md delete mode 100644 src/site/markdown/rome/ROMEReleases/ROME1.0Release.md delete mode 100644 src/site/markdown/rome/ROMEReleases/index.md delete mode 100644 src/site/markdown/rome/RomeAPIFAQ.md delete mode 100644 src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md delete mode 100644 src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md delete mode 100644 src/site/markdown/rome/SitesToMoveFromJava.net.md delete mode 100644 src/site/markdown/rome/TutorialsAndArticles.md delete mode 100644 src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md delete mode 100644 src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md delete mode 100644 src/site/markdown/rome/WhyThisProject.md delete mode 100644 src/site/markdown/rome/index.md diff --git a/src/site/markdown/fetcher/BuildingTheRomeFetcher.md b/src/site/markdown/fetcher/BuildingTheRomeFetcher.md deleted file mode 100644 index 33f06d5..0000000 --- a/src/site/markdown/fetcher/BuildingTheRomeFetcher.md +++ /dev/null @@ -1,5 +0,0 @@ -# Building the Rome Fetcher - - -The Rome Fetcher can build using Maven 2. - diff --git a/src/site/markdown/fetcher/ChangeLog.md b/src/site/markdown/fetcher/ChangeLog.md deleted file mode 100644 index fa96d02..0000000 --- a/src/site/markdown/fetcher/ChangeLog.md +++ /dev/null @@ -1,109 +0,0 @@ -# Change Log - -## Prior to first release (on the way to v0.3) - - - -1. Updated to handle removal of IO methods using byte streams - Byte Stream IO was removed from Rome itself. The Rome Fetcher is now updated to support this - -1. Add FeedFetcherI interface and FeedFetcherFactory class - There is now a FeedFetcherI interface, which FeedFetcher implements. Use FeedFetcherFactory to create instances of FeedFetcher (as suggested by Joseph Ottinger) (FeedFetcherFactory was later removed) - -1. Event Support Added to FeedFetcherI - The FeedFetcherI interface now supports feed polled, feed retrieved and feed unchanged events - -1. Samples added - Samples are now included with the Rome Fetcher - -1. Unit Tests Added - JUnit based tests which invoke the Rome Fetcher against an embedded Jetty webserver are now included - -1. Bug fixes in the FeedFetcher event model - The JUnit test suite uncovered some bugs in the event model used by the FeedFetcher. These bugs are now fixed. - -1. Refactored the SyndFeedInfo class - SyndFeedInfo now extends ObjectBean - -1. Removed FeedFetcherFactory - The benefit of the FeedFetcherFactory was arguable. Now the client code will need to manage the creation of specific implementations of the FeedFetcher - - -## Prior to second release (on the way to v0.4) - - - -1. Refectored to match Rome naming standards - FeedFetcherI renamed to FeedFetcher - #. New FeedFetcher Implementation - HttpClientFeedFetcher uses the Apache Commons HTTP Client - -1. Abstract test classes excluded in project.xml - Tests now run correctly under Maven - -1. Added GZip support to HttpClientFeedFetcher - HttpClientFeedFetcher now supports GZip compression. Tests have been added. - - -## Prior to third release (on the way to v0.5) - - - -1. SyndFeedInfo implements Serializable - SyndFeedInfo implements Serializable to make it easier to store - -1. Support for rfc3229 delta encoding - The Fetcher now supports rfc3229 delta encoding. See [http://www.ietf.org/rfc/rfc3229.txt](http://www.ietf.org/rfc/rfc3229.txt) and [http://bobwyman.pubsub.com/main/2004/09/using\_rfc3229\_w.html](http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html). Note that this is support is experimental and disabled by default - - -## Prior to 0.6 - - - -1. Feed passed to FetcherEvents - When a feed is retrieved it is now passed to the Fetcher Event. This makes it easier to code applications using an event oriented style. - - -## Prior to 0.7 - - - -1. Fix for URL Connection leak - In some circumstances URLConnection objects were not closed. This could cause problems in long\-running application. - - -## 0.8 was never released - - -## Prior to 0.9 - - - -1. Fix for potential synchronization issue - There was the possibility of synchronization issues in the FeedFetcher. Fixed, thanks to suggestions from Javier Kohen. - -1. New LinkedHashMapFeedInfoCache FeedFetcherCache implementation - The new LinkedHashMapFeedInfoCache has the advantage that it will not grow unbound - - -## Prior to 1.0RC2 - - - -1. BeanInfo class added for AbstractFeedFetcher - com.sun.syndication.fetcher.impl.AbstractFeedFetcherBeanInfo was created to allow introspection to correctly find the events - -1. Callback to allow access to HttpClient HttpMethod object - Add a HttpClientMethodCallbackIntf to allow the calling code to modify the HttpClient HttpMethod used to make the request (eg, add additinal headers, etc.) Also fixes a reported bug where the user agent wasn't being set properly - -1. Support for clearing cache - See [http://java.net/jira/browse/ROME\-119](http://java.net/jira/browse/ROME-119) for details - - -## Prior to 1.0 - - - -1. Support for preserving wire feed data. - The fetcher now has a setPreserveWireFeed() method which will setup ROME to preserve WireFeed data. See [PreservingWireFeeds](../rome/PreservingWireFeeds.html) for further information. - diff --git a/src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md b/src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md deleted file mode 100644 index 4274de3..0000000 --- a/src/site/markdown/fetcher/Dependencies/HttpClientFeedFetcher.md +++ /dev/null @@ -1,5 +0,0 @@ -# HttpClientFeedFetcher - - -An implementation of the `FeedFetcher` which uses the Jakarta HTTP Client. This HTTP client has many benefits over the standard Java implementation. - diff --git a/src/site/markdown/fetcher/Dependencies/index.md b/src/site/markdown/fetcher/Dependencies/index.md deleted file mode 100644 index 6ba2948..0000000 --- a/src/site/markdown/fetcher/Dependencies/index.md +++ /dev/null @@ -1,39 +0,0 @@ -# Dependencies - - -The Rome Fetcher aims to introduce the absolute minimum number of extra dependencies. Currently (30\-June\-2004) no extra dependencies over those required by Rome are required to use the fetcher. - - - -The current dependencies required to use the Rome Fetcher are: - - - -* JDK 1.4\+ - -* Current version of Rome - -* JDom v 1.0 - - - -To build the Rome Fetcher the [Jakarta HTTP Client](http://jakarta.apache.org/commons/httpclient/) is required. - - - -If the [HttpClientFeedFetcher.html](HttpClientFeedFetcher.html) fetcher implementation is used then the Jakarta HTTP Client and Jakarta Commons Logging is required. - - - -To build and run the unit tests for the Rome Fetcher the following additional dependencies are required: - - - -* servletapi version 2.3 - -* jetty 4.2.12 - - - -Note that Maven will automatically download the correct versions of all dependancies. - diff --git a/src/site/markdown/fetcher/KnownIssues.md b/src/site/markdown/fetcher/KnownIssues.md deleted file mode 100644 index be39e6d..0000000 --- a/src/site/markdown/fetcher/KnownIssues.md +++ /dev/null @@ -1,35 +0,0 @@ -# Known Issues - -## Version 0.3 - - - -* The Maven build does not run the jetty tests because of a bug in Maven - -* Version 0.3 does not have Xerces included in the project.xml (it is required to run the samples). Either get the latest project.xml from CVS, or [patch it yourself](https://rome.dev.java.net/source/browse/rome/subprojects/fetcher/project.xml?r1=1.1&r2=1.2) - -* 0.3 had a bug that caused it to overwite system properties. - - -## Version 0.4 - - - -* No known issues (yet!) - - -## Version 0.5 - - - -* When listening to feed events using FetcherListener, there is no way to get to the retrieved content, because it is set after firing the event. \-\- [jawe](http://wiki.java.net/twiki/bin/view/Javawsxml/Jawe) - -* When listening to feed events using FetcherListener, the feed URLs returned by the FetcherEvent are prepended with "sun.net.www.protocol.http.HttpURLConnection:" \-\- [jawe](http://wiki.java.net/twiki/bin/view/Javawsxml/Jawe) - - -## Version 0.7 - - - -* HashMapFeedInfoCache doesn't work quite right because URL.hashCode() does hostname resolution and treats virtual hosts with the same IP as equal, so e.g. all RSS feeds from blogspot.com collide in the cache. Also, it's really slow. Fix is to use URL.toExternalForm() as the hash key instead of the URL itself. - diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md b/src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md deleted file mode 100644 index 4be657c..0000000 --- a/src/site/markdown/fetcher/Releases/ROMEFetcher0.6.md +++ /dev/null @@ -1,43 +0,0 @@ -# ROME Fetcher 0.6 - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.6/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md b/src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md deleted file mode 100644 index d6deb7c..0000000 --- a/src/site/markdown/fetcher/Releases/ROMEFetcher0.7.md +++ /dev/null @@ -1,43 +0,0 @@ -# ROME Fetcher 0.7 - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.7/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md b/src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md deleted file mode 100644 index a730e6c..0000000 --- a/src/site/markdown/fetcher/Releases/ROMEFetcher0.9.md +++ /dev/null @@ -1,47 +0,0 @@ -# ROME Fetcher 0.9 - - -Note that there was no 0.8 Fetcher release - - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.9/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md b/src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md deleted file mode 100644 index d967728..0000000 --- a/src/site/markdown/fetcher/Releases/ROMEFetcher1.0.md +++ /dev/null @@ -1,43 +0,0 @@ -# ROME Fetcher 1.0 - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/1.0/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md b/src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md deleted file mode 100644 index 8e2eb14..0000000 --- a/src/site/markdown/fetcher/Releases/ROMEFetcher1.0RC2.md +++ /dev/null @@ -1,47 +0,0 @@ -# ROME Fetcher 1.0 RC2 - - -Note that there was no 1.0 RC1 Fetcher release - - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/1.0RC2/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/RomeFetcher0.3.md b/src/site/markdown/fetcher/Releases/RomeFetcher0.3.md deleted file mode 100644 index 4bd9902..0000000 --- a/src/site/markdown/fetcher/Releases/RomeFetcher0.3.md +++ /dev/null @@ -1,47 +0,0 @@ -# Rome Fetcher 0.3 - - -Rome Fetcher version 0.3 is inital release of the Rome Fetcher. It is released as version 0.3 to synchronize with the version number of the core Rome project release. - - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.3/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/RomeFetcher0.4.md b/src/site/markdown/fetcher/Releases/RomeFetcher0.4.md deleted file mode 100644 index c37bab6..0000000 --- a/src/site/markdown/fetcher/Releases/RomeFetcher0.4.md +++ /dev/null @@ -1,43 +0,0 @@ -# Rome Fetcher 0.4 - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.4/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/RomeFetcher0.5.md b/src/site/markdown/fetcher/Releases/RomeFetcher0.5.md deleted file mode 100644 index 7f4fa71..0000000 --- a/src/site/markdown/fetcher/Releases/RomeFetcher0.5.md +++ /dev/null @@ -1,47 +0,0 @@ -# Rome Fetcher 0.5 - - -The ROME Fetcher v 0.6 is now released. This page exists for historical purposes only. - - -## Downloads - - -## Tutorials - - - -* [../BuildingTheRomeFetcher.html](../BuildingTheRomeFetcher.html) - -* [../UsingTheRomeFetcherModuleToRetrieveFeeds.html](../UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [../SampleProgramsIncluded.html](../SampleProgramsIncluded.html) - - -## API Docs - - - -* [Fetcher API Docs](https://rome.dev.java.net/apidocs/subprojects/fetcher/0.5/overview-summary.html) - - -## Todo list - - - -* [../TodoList.html](../TodoList.html) - - -## Issues - - - -* [../KnownIssues.html](../KnownIssues.html) - - -## Change Log - - - -* [../ChangeLog.html](../ChangeLog.html) - diff --git a/src/site/markdown/fetcher/Releases/index.md b/src/site/markdown/fetcher/Releases/index.md deleted file mode 100644 index ac239ca..0000000 --- a/src/site/markdown/fetcher/Releases/index.md +++ /dev/null @@ -1 +0,0 @@ -# Releases diff --git a/src/site/markdown/fetcher/SampleProgramsIncluded.md b/src/site/markdown/fetcher/SampleProgramsIncluded.md deleted file mode 100644 index af1f35f..0000000 --- a/src/site/markdown/fetcher/SampleProgramsIncluded.md +++ /dev/null @@ -1,17 +0,0 @@ -# Sample programs included - - -There are two sample programs included with Rome Fetcher. - - - -[FeedReader](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/samples/FeedReader.java) is a program which demonstrates the use of the Fetcher to retrieve a feed and then to use the conditional get support to retrieve it again only if it has changed. It also shows how to use the event API in the Fetcher. It can be run using the `maven run\-read` target. - - - -[FeedAggregator](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/samples/FeedAggregator.java) is a program which aggregates a number of feeds together into a single feed. It can be run using the `maven run\-aggr` target. - - - -(Note that in verision 0.3 the Maven build does not include Xerces in the classpath \- which is required to use Rome. This is [easy to fix](https://rome.dev.java.net/source/browse/rome/subprojects/fetcher/project.xml?r1=1.1&r2=1.2).) - diff --git a/src/site/markdown/fetcher/TodoList.md b/src/site/markdown/fetcher/TodoList.md deleted file mode 100644 index bf4f3cf..0000000 --- a/src/site/markdown/fetcher/TodoList.md +++ /dev/null @@ -1,19 +0,0 @@ -# Todo list - - -Please discuss items here on the rome dev mailing list - - - -* Automatically update the \-[default User\-Agent version number](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/FeedFetcher.java) via the build\- Done: 23\-June\-2004 - -* Listener Architecture (for URL changes via 3xx redirection etc) Done: 30\-June\-2004 - -* [RSS Redirection](http://radio.userland.com/userGuide/reference/howToRedirectRss) - -* Unit Tests: smart unit tests along the lines of Mark Pilgrim's tests, in his \-[Python Universal Feed Parser](http://diveintomark.org/projects/feed_parser/). He instantiates a web server to a local directory where the samples live, and then fetches the feeds from the server, which allows him to test in depth the behavior of gzip compression and etags handling.\- Done 30\-June\-2004 - -* Better character encoding handling \- See [http://diveintomark.org/archives/2004/02/13/xml\-media\-types](http://diveintomark.org/archives/2004/02/13/xml-media-types) - -* A caching feed fetcher - diff --git a/src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md b/src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md deleted file mode 100644 index f4e2e77..0000000 --- a/src/site/markdown/fetcher/UsingTheRomeFetcherModuleToRetrieveFeeds.md +++ /dev/null @@ -1,42 +0,0 @@ -# Using the Rome Fetcher module to retrieve feeds - - -The HttpURLFeedFetcher class does the actual HTTP request. It relies on the FeedInfoCacheI interface which stores information about each feed required for conditional gets. Currently there is a single implementation of FeedInfoCacheI supplied: `HashMapFeedInfoCache`. - - - -The basic usage of FeedFetcher is as follows: - - - -``` - -FeedFetcherCache feedInfoCache = HashMapFeedInfoCache.getInstance(); -FeedFetcher feedFetcher = new HttpURLFeedFetcher(feedInfoCache); -SyndFeed feed = feedFetcher.retrieveFeed(new URL("http://blogs.sun.com/roller/rss/pat")); -System.out.println(feed); - -``` - - -Any subsequent fetches of [http://blogs.sun.com/roller/rss/pat](http://blogs.sun.com/roller/rss/pat) by any FeedFetcher using feedInfoCache will now only retrieve the feed if it has changed. - - - -FeedFetcher can be used without a cache if required. Simply create it using the zero\-parameter constructor: - - - -``` - -FeedFetcher feedFetcher = new HttpURLFeedFetcher(); - -``` - - -A more complete sample (including the use of listener on Fetcher events) [is included in the Rome Fetcher project](https://rometools.jira.com/source/browse/FETCHER/trunk/src/java/com/sun/syndication/fetcher/samples/FeedReader.java) - - - -Note that there has been considerable discussion on the rome\-dev list about the best way to manage the creation of the feed fetcher. Currently the client code needs to be responsible for creating specific implementations of the FeedFetcherI interface. - diff --git a/src/site/markdown/fetcher/WishList.md b/src/site/markdown/fetcher/WishList.md deleted file mode 100644 index 674715c..0000000 --- a/src/site/markdown/fetcher/WishList.md +++ /dev/null @@ -1,9 +0,0 @@ -# Wish list - - -* [RSS Autodiscovery](http://diveintomark.org/archives/2002/05/31) - -* [Atom Autodiscovery](http://www.intertwingly.net/wiki/pie/PaceAutoDisco) - -* Connection timeout and read settings. - diff --git a/src/site/markdown/fetcher/index.md b/src/site/markdown/fetcher/index.md deleted file mode 100644 index 0c65b29..0000000 --- a/src/site/markdown/fetcher/index.md +++ /dev/null @@ -1,78 +0,0 @@ -# Home - -# Rome Fetcher - - - -The Rome Fetcher (see modules/fetcher) allows the retrieval of feeds via HTTP. It supports [HTTP conditional gets](http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers) (ie: last modified and ETag handling) and GZip encoded feeds. It should enable user to write aggregators that follow the [Atom aggregator behaviour recommendations](http://diveintomark.org/archives/2003/07/21/atom_aggregator_behavior_http_level) - - - -As with the rest of Rome, the Fetcher subproject is ultra\-lean \- it requires [no new dependencies](Dependencies/index.html) over the requirements for Rome. - - -# Tutorials - - - -* [BuildingTheRomeFetcher.html](BuildingTheRomeFetcher.html) - -* [UsingTheRomeFetcherModuleToRetrieveFeeds.html](UsingTheRomeFetcherModuleToRetrieveFeeds.html) - -* [SampleProgramsIncluded.html](SampleProgramsIncluded.html) - - -# Todo list - - - -* [TodoList.html](TodoList.html) - - -# Wish list - - - -* [WishList.html](WishList.html) - - -# Issues - - - -* [KnownIssues.html](KnownIssues.html) - - -# Releases - - - -* [Releases/RomeFetcher0.3.html](Releases/RomeFetcher0.3.html) - -* [Releases/RomeFetcher0.4.html](Releases/RomeFetcher0.4.html) - -* [Releases/RomeFetcher0.5.html](Releases/RomeFetcher0.5.html) - -* [Releases/ROMEFetcher0.6.html](Releases/ROMEFetcher0.6.html) - -* [Releases/ROMEFetcher0.7.html](Releases/ROMEFetcher0.7.html) - -* [Releases/ROMEFetcher0.9.html](Releases/ROMEFetcher0.9.html) - -* [Releases/ROMEFetcher1.0RC2.html](Releases/ROMEFetcher1.0RC2.html) - -* [Releases/ROMEFetcher1.0.html](Releases/ROMEFetcher1.0.html) - - -# Change Log - - - -* [ChangeLog.html](ChangeLog.html) - - - - - - - \ No newline at end of file diff --git a/src/site/markdown/incubator/Certiorem.md b/src/site/markdown/incubator/Certiorem.md deleted file mode 100644 index f5225e2..0000000 --- a/src/site/markdown/incubator/Certiorem.md +++ /dev/null @@ -1,72 +0,0 @@ -# certiorem - - -Certiorem is an implementation of the [PubSubHubub ](http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html)protocol for ROME. - - - -It is dependent on ROME and ROME\-Fetcher for the base implementations, and will provide standard plugins for Propono to allow for publish eventing, where applicable. - - -## Primary Components - - -### Hub Implementation and Scaffolding (Done) - - - -The first part of Certiorem is a basic set of scaffolding classes that can be used to create a PSH notification hub. Initially, this will include a non\-guaranteed delivery hub, with standard implementations suitable for deployment on most JavaEE application servers or Google App Engine. It is intended that there should be at least one simple, drop in WAR file, utilizing JavaEE classes that can work in a default configuration for various standard web containers. Subsequently,  each of the classes in the PSH implementation up through the primary Controller class use constructor\-time composition/configuration so that the user/developer can easily construct a custom configuration of the Hub. - - -### Client Implementation Integrated with ROME\-Fetcher (Done) - - - -For web\-based applications that use ROME\-Fetcher, an extended push\-notified store wrapper that will update based on callbacks from a Hub of change notifications. This will include a highly configurable callback servlet to write into the Fetcher cache as changes are made. Additionally, the system should support (semi\-)real time notifications of changes in the form of a listener that exectutes in a TBD thread state relative to the callback servlet. This should be packaged as a simple JAR with no more deps than fetcher that defines the callback servlet, and automagically does subscribes where link\=rel appropriate. - - -### Notification Implementation for Propono based and JAX\-RS based Servers (In Progress) - - - -This should be a simple API call to notify a Hub of changes to topics. Again, this should provide real\-time notifications either synchronously or asynchronously. Importantly for Asynchronous notifications, they should block subsequent change notifications pending a notification to the Hub. - - - -References:  - - - -[https://github.com/nlothian/RTUpdates/blob/master/src/com/nicklothian/pubsubhub/PubSubHubSubscriptionServlet.java](https://github.com/nlothian/RTUpdates/blob/master/src/com/nicklothian/pubsubhub/PubSubHubSubscriptionServlet.java) - - - -[http://grack.com/blog/2009/09/09/parsing\-the\-pubsubhubbub\-notifications/](http://grack.com/blog/2009/09/09/parsing-the-pubsubhubbub-notifications/) - - -# Notes on the Code - - - -It is still mostly a rough sketch, but the big outlines are there: - - - -There are three main packages: pub, sub and hub. - - - -The pub package is basically just a single utility class for pushing notifications to a hub. - - - -The hub package contains the Hub class. This is a general business controller that is intended to allow you to build a servlet around it with a very, very thin veneer, but you could also use it to drive an XMPP or JMS version too. It is basically built by composition of a number of classes, for which there are some default implementations: A Verifier, which makes the callback to verify new subscriptions, the HubDAO which stores the current subscriptions and subscriber statistics, and a Notifier which actually sends notifications to the subscribers. There are a couple of implementations of each of these (though the JPA HubDAO is still in process). Mostly the implementations for the Verifier and Notifier support threadpooling or no\-threads (for App Engine use). - - - -I have just started sketching out the sub package, but it basically has a "Subscriptions" class that will take in notifications (using the same "thin veneer" pattern that the Hub class uses). It is also constructed with some impls: A SubscriptionDAO that stores you current subscription information, a FeedFetcherCache that holds the received data, and a Requester that makes the subscription requests to hubs. - - - -I am hoping to have a basic end to end example working sometime in the next week or so, but if anyone wants to look over what is there, feel free. - diff --git a/src/site/markdown/incubator/CertioremTutorial.md b/src/site/markdown/incubator/CertioremTutorial.md deleted file mode 100644 index 1b02ac0..0000000 --- a/src/site/markdown/incubator/CertioremTutorial.md +++ /dev/null @@ -1,174 +0,0 @@ -# Certiorem Tutorial - - -Certiorem is a PubSubHubub (PSH) implementation for ROME. It isn't an application, but an API for building each of the three components (Publisher, Subscriber and Hub) into your web apps. - - - -You can see an [example webapp here](https://rometools.jira.com/source/browse/INCUBATOR/trunk/pubsubhubub/webapp). - - -# Creating a Hub - - - -Hubs take notifications, or "Pings" that tell it the content of a feed has been updated, fetch the feed, then notify each of the subscribers of the change. As you will begin to see, Certiorem is very much about "Composition" of classes. The Hub class is a prime example of this. - - - -Looking at the example webapp we see: - - - -``` - -@Provides -@Singleton -public Hub buildHub() { - FeedFetcher fetcher = new HttpURLFeedFetcher(new DeltaFeedInfoCache()); -    Hub hub = new Hub(new InMemoryHubDAO(), new UnthreadedVerifier(), new UnthreadedNotifier(), fetcher); - -    return hub; -} - -``` - - -First we construct an instance of FeedFetcher, from the Fetcher subproject. This will be used to fetch feeds from remote hosts. There are a number of implementations for FeedFetcher and FeedInfoCache in the Fetcher project. Please look there for info on what is what. - - - -Next we need a HubDAO implementation. This is a DAO for managing Subscriber and SubscriptionSummary classes. Here we are using an in\-memory DAO, which like the HashMapFeedInfoCache will evaporate if we restart our web application. A JPA implementation for persistence is also available, but incomplete at time of writing. - - - -Next we need two implementations of network client interfaces: a Verifier, and a Notifier. The Verifier calls back to the Subscribers and verifies their subscribe/unsubscribe operations. A Notifier is used to send updates to to the clients. There are two basic implementations of these provided: A ThreadPool\* and Unthreaded\* version of each. The thread pool version uses a ThreadPoolExecutor to run queues of outbound calls. The Unthreaded version of each, makes the network calls in\-line with the request to the hub. These are suitable for environments like Google App Engine where spawning threads from servlets is absolutely verboten. - - - -There are other constructors that contain lists of restrictions for what the hub will support: acceptable topic feeds, ports, protocols, etc. - - - -The hub here is just a business logic class. In order to have a functioning hub, we need a servlet exposing the Hub. In the "web" package, there is an abstract servlet you can use to do just this. In the Guice wired example, we simply create a servlet with an injected Hub implementation. - - - -``` - -@Singleton -public class HubServlet extends AbstractHubServlet { - - @Inject - public HubServlet(final Hub hub){ - super(hub); - } -} -//... in the ServerModule... - - -serve("/hub*").with(HubServlet.class); - -``` - - -We can now include a \ value in our feeds and publish notifications of changes.  - - -# Publishing Ping Notifications - - - -This is perhaps the easiest thing to do. The Publisher class will take various combinations of URLs and SyndFeeds and send the appropriate notification. If your SyndFeed contains a \ and \ you can just pass the SyndFeed object. Otherwise, you can use the URL strings where appropriate. - - - -The example couldn't be simpler: - - - -``` - -Publisher pub = new Publisher(); -try { - pub.sendUpdateNotification("http://localhost/webapp/hub", "http://localhost/webapp/research-atom.xml"); -} catch (NotificationException ex) { - Logger.getLogger(NotifyTest.class.getName()).log(Level.SEVERE, null, ex); - throw new ServletException(ex); -} - -``` - - -Once this notification is sent, the hub will make a request to the feed and notify the clients of new entries. - - -# Subscribing to Feeds - - - -To set up a feed subscriber, you need to go through a process very much like setting up a Hub. First, create the Subscriptions class by composition: - - - -``` - -@Provides -@Singleton -public Subscriptions buildSubs(){ -    Subscriptions subs = new Subscriptions(new HashMapFeedInfoCache(), new AsyncRequester(), -            "http://localhost/webapp/subscriptions/", new InMemorySubDAO()); -    return subs; -} - -``` - - -First we need a FeedInfoCache implementation. This will be updated as notifications come in, so in your web app, you want to make sure this is shared with the FeedFetcher implementation you are using to read feeds. Next you need a Requester, this is a network class that makes subscription requests to remote hubs. Next, a URL prefix for where the callbacks will live. This really means the URL to the SubServlet that is resolvable externally. Finally, a DAO for storing and retrieving Subscription objects. - - - -As in the Hub, we need a wrapper servlet to call into the Subscriptions class - - - -``` - -@Singleton -public class SubServlet extends AbstractSubServlet { - - @Inject - public SubServlet(final Subscriptions subscriptions){ - super(subscriptions); - } -} - -// In the ServerModule... -serve("/subscriptions/*").with(SubServlet.class) - -``` - - -Now if we want to subscribe to a feed, we get a reference to the Subscriptions object, and pass in either the SyndFeed (with appropriate rel\="hub" and rel\="self" links) or simply a couple of URLs: - - - -``` - - subs.subscribe("http://localhost/webapp/hub", "http://localhost/webapp/research-atom.xml", true, -1, null, new SubscriptionCallback(){ - - public void onFailure(Exception e) { - e.printStackTrace(); - } - - public void onSubscribe(Subscription subscribed) { - System.out.println("Subscribed "+subscribed.getId() +" "+subscribed.getSourceUrl()); - } - - }); - -``` - - -Here we pass in the URL of the Hub, the URL of the feed, a boolean indicating we want to make the subscription request synchronously, the lease seconds we want to keep the subscription for, a null cryptographic secret, and a Callback invoked when the subscribe request completes. - diff --git a/src/site/markdown/incubator/index.md b/src/site/markdown/incubator/index.md deleted file mode 100644 index 792ad65..0000000 --- a/src/site/markdown/incubator/index.md +++ /dev/null @@ -1,19 +0,0 @@ -# Home - - -This is the home of the Incubator space. - - - -To help you on your way, we've inserted some of our favourite macros on this home page. As you start creating pages, blogging and commenting you'll see the macros below fill up with all the activity in your space. - - - -[Certiorem.html](Certiorem.html) The Certiorem project – A PubSubHubub implementation for ROME - - - - - - - Navigate space \ No newline at end of file diff --git a/src/site/markdown/mano/index.md b/src/site/markdown/mano/index.md deleted file mode 100644 index 0c1132c..0000000 --- a/src/site/markdown/mano/index.md +++ /dev/null @@ -1,577 +0,0 @@ -# Home - -# ROME.Mano v0.0 pre\-Alpha - - - -Mano (_to flow_ in Latin) is a pipeline framework for RSS and Atom feeds. - - - -* [The Concept](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_Concept) - -* [Being More Concrete](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Being_More_Concrete) - -* [What Is in the Box?](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#What_Is_in_the_Box) - - * [The FeedHandler Public API](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_FeedHandler_Public_API) - - * [The Mano Servlet](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_Mano_Servlet) - - * [The FeedHandler Deployment Descriptor](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_FeedHandler_Deployment_Descr) - - * [The Handler Toolbox](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#The_Handler_Toolbox) - - * [Fetch Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Fetch_Handler) - - * [Convert Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Convert_Handler) - - * [Branding Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Branding_Handler) - - * [File Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#File_Handler) - - * [Clone Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Clone_Handler) - - * [Paginate Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Paginate_Handler) - - * [Multi Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Multi_Handler) - - * [Tracking Handler & Servlet](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Tracking_Handler_Servlet) - - * [Echo Handler (alias the Uploader)](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Echo_Handler_alias_the_Uploader) - - * [Null Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Null_Handler) - - * [Sort Handler](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Sort_Handler) - - - - - -* [Building ROME.Mano](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Building_ROME_Mano) - -* [Sample ROME.Mano URLs](http://wiki.java.net/bin/view/Javawsxml/RomeMano?skin=print#Sample_ROME_Mano_URLs) - - -## The Concept - - - -Mano has been modeled after a widely accepted pattern, Java servlet filters. - - - -A request for a feed flows out through a chain of handlers until a feed is synthesized then the feed flows back through the chain in reverse order. - - - -As the request flows out handlers can modify the request, and when the request is flowing back with the feed the same handlers can them modify the feed. - - - -``` - -|| Mano framework || -|| || -|| +\-------\-+ +\-------\-+ || -feed URL \--> \|\| \| \| \--> ... \--> \| \| \|\| -|| | handler 1 | | handler N | || -feed <-\- \|\| \| \| <-\- ... <-\- \| \| \|\| -|| +\-------\-+ +\-------\-+ || -|| || - -``` - -## Being More Concrete - - - -The Mano framework is a Java Web Application that has a servlet serving feeds. - - - -Upon an HTTP request for a feed a Mano servlet based on the information in the request builds a handler sequence and invokes it, the response is a feed that is returned by the Mano servlet to the requester user\-agent. - - - -A feed reader user\-agent requests a feed to a server running the Mano framework WebApp. - - - -Based on information in the request the Mano servlet determines that the handlers to invoke are the convert and the fetch handlers and creates the corresponding handler chain. - - - -``` - - public class ManoFeedServlet extends HttpServlet { - - protected void doGet(HttpServletRequest req,HttpServletResponse res) - throws ServletException, IOException { - - FeedHandlerRequest handlerReq = createRequest(req); - FeedHandlerResponseImpl handlerRes = createResponse(req); - List handlerList = createHandlerList(req); - FeedHandlerChainImpl chain = - new FeedHandlerChainImpl(handlerReq, handlerRes, handlerList); - - chain.execute(); - ... - } - -} - -``` - - -When flowing out the convert handler does nothing but chaining the request for the next handler (handlers do not know anything about earlier and later handlers in the chain, that is managed by the Mano framework). - - - -``` - - public class ConvertFeedHandler extends BaseFeedHandler { - - public void handle(FeedHandlerRequest handlerRequest, - FeedHandlerResponse handlerResponse, FeedHandlerChain handlerChain) - throws FeedHandlerException, IOException { - - handlerChain.chain(handlerRequest, handlerResponse); - ... - } - -} - -``` - - -Then fetch handler receives the request, obtains the feed URL from a request parameter and using ROME Fetcher it fetches the feed. The resulting SyndFeed bean is set into the response by the fetch handler. The fetch handler is the end of the chain, it does not chain any further handlers. - - - -``` - - public class FetchFeedHandler extends BaseFeedHandler { - - public void handle(FeedHandlerRequest handlerRequest, - FeedHandlerResponse handlerResponse, FeedHandlerChain handlerChain) - throws FeedHandlerException, IOException { - - String url = handlerRequest.getParameter("fetch.url"); - SyndFeed feed = fetcher.retrieveFeed(new URL(url)); - handlerResponse.setSyndFeed(feed); - } - -} - -``` - - -At this point the Mano framework start the flow back of the request and the convert handler will regain control of the invocation, it will obtain the SyndFeed bean from the response and it will set the feed type of the bean to the type indicated in a request parameter. - - - -``` - - public class ConvertFeedHandler extends BaseFeedHandler { - - public void handle(FeedHandlerRequest handlerRequest, - FeedHandlerResponse handlerResponse, FeedHandlerChain handlerChain) - throws FeedHandlerException, IOException { - - handlerChain.chain(handlerRequest, handlerResponse); - - SyndFeed feed = handlerResponse.getSyndFeed(); - String toType = handlerRequest.getParameter("convert.to"); - feed.setFeedType(toType); - } - -} - -``` - - -The handler chain finishes, the control comes back to the Mano servlet, the Mano servlet gets the feed bean from the response (the handler response autoconverts from SyndFeed to WireFeed). The Mano servlet writes the feed bean to the servlet response. - - - -``` - - public class ManoFeedServlet extends HttpServlet { - - protected void doGet(HttpServletRequest req,HttpServletResponse res) - throws ServletException, IOException { - - ... - chain.execute(); - - WireFeed feed = handlerRes.getWireFeed(); - WireFeedOutput feedOutput = new WireFeedOutput(); - feedOutput.output(feed, res.getWriter()); - } - -} - -``` - - -The conversion from the original feed type to the feed type indicated in the convert.to parameter is done automatically by ROME when converting from SyndFeed to WireFeed just by setting the feed type in the SyndFeed bean. - - -## What Is in the Box? - - - -ROME.Mano includes the handler API, a Mano servlet, a handler manager that uses a handler Deployment Descriptor and a toolbox with handlers (convert, fetch, branding, paginate, multi, clone and file). - - -### The FeedHandler Public API - - - -* FeedHandler, methods: init(), handle() & destroy(). - -* FeedHandlerChain, method: chain(). - -* FeedHandlerConfig, methods: init parameters and context. - -* FeedHandlerRequest, methods: to handle parameters, headers, attributes and principal. - -* FeedHandlerResponse, methods: to set and retrieve WireFeed bean or SyndFeed bean, to set HTTP status, to set HTTP headers. - - - -* BaseFeedHandler, convenience base class implementation of the FeedHandler. - -* FeedHandlerException exception when something goes wrong. - - -### The Mano Servlet - - - -The Mano Servlet must be mapped to a path ending with '/\*'. The handlers and their invocation order must be indicated in the extra path, handler names must be separated by a '/'. - - - -Parameters in the query\-string are passed to the handlers, by convention the parameters should be namespaced with the name of the target handler. For example, for the **fetch** handler the **url** parameter should be named **fetch.url**. - - -### The FeedHandler Deployment Descriptor - - - -The handler deployment descriptor, by default at /WEB\-INF/feedhandler.xml defines all the available handlers. A handler manager controls the lifecycle of the handlers behinds the scenes. For example: - - - -``` - - - - fetch - com.sun.syndication.handler.toolbox.FetchFeedHandler - - - convert - com.sun.syndication.handler.toolbox.ConvertFeedHandler - - to.default - rss_1.0 - - - ... - - -``` - -### The Handler Toolbox - - - -A collection of handlers is provided with the Mano framework. - - -#### Fetch Handler - - - -It fetches a Feed URL. - - - -It fetches the feed URL indicated in the namespaced **url** parameter. It uses ROME Fetcher \=HttpURLFeedFetcher to fetch the feed. This handler stops the handler chain. - - -#### Convert Handler - - - -It converts a feed to the specified feed type. - - - -After invoking the handler chain for further processing it sets the feed type to the value of the namespaced **to** parameter or to a default feed type if the parameter is not specified. - - -#### Branding Handler - - - -It brands the description of the entries with the feed image (or the site favicon if there is not feed image) and the title. - - -#### File Handler - - - -It reads or writes a feed from disk. - - - -If the namespaced **read** parameter is present and there is a file with the value of the parameter (the value of the parameter does not have to be the URL of the feed, it can be any valid file name) the feed is read from the file and the handler stops the chain from continuing further out. If there is not file for the given ID then the handler lets the chain to continue further down. - - - -If the namespaced **write** parameter is present after the filter chain returns the feed is written to a file with the value of the parameter as name. - - - -If both **read** and **write** parameters are specified the handler acts a cache, if the read succeeds then read feed is returned, if the read fails then the chain continues and the obtained feed is written. A subsequent request will return the stored feed. - - -#### Clone Handler - - - -It does a deep clone of the returned feed and sets the clone in the response. - - - -Because feed beans are passed by reference between handlers, if a handler caches or stores feeds to be served to multiple users, it may be necessary to put a clone handler before it so earlier handlers modifying the feed do not affect the cached/stored feed. - - -#### Paginate Handler - - - -It paginates the entries of a feed. - - - -The namespaced **offset** (base 0)and **size** parameters indicate the range of entries to return. If **offset** is not present 0 is used. If **size** is not present a default value of 50 is used. - - -#### Multi Handler - - - -It invokes the handler chain multiple times and consolidates the entries of all invocations into a single feed. - - - -It is useful for merging feeds. For example, fetching N feeds and returning a single feed with all their entries. - - - -The namespaced **param** indicates the name of the multivalue parameter to iterate for the multiple invocations. Each one of the multiple invocations sets the parameter indicated in the **param** parameter to a single value corresponding to the current iteration. For example, the request URL: - - - -**http ://foo.com/mano/feed/multi/fetch?multi.param\=fetch.url&fetch.url\=A&fetch.url\=B&fetch.url\=C** - - - -It will result in 3 forked chain requests each one with a single value for the **fetch.url** parameter. - - - -* fetch.url\=A - -* fetch.url\=B - -* fetch.url\=C - - - -All the entries for the 3 chain requests will be aggregated in the feed bean returned by the MultiFeedHandler. - - - -If the **param** parameter is multivalue then the Multi handler will iterate over all those parameters. For example if **param** values are **fetch.url** and **file.write**: - - - -**http ://foo.com/mano/feed/multi/fetch?multi.param\=fetch.url&multi.param\=file.write&fetch.url\=A&fetch.url\=B&fetch.url\=C&file.write\=X&file.write\=Y&file.write\=Z** - - - -It will result in 3 forked chain request each one with single values for the **fetch.url** and **file.write** parameters: - - - -* fetch.url\=A&file.write\=X - -* fetch.url\=B&file.write\=Y - -* fetch.url\=C&file.write\=Z - - -#### Tracking Handler & Servlet - - - -Together the Tracking handler and servlet enable feed usage tracking, clicked links (feed site and entries) and viewed entries. - - - -The Tracking handler rewriting URLs within the feed to point to the Tracking servlet and adds an image URL (also pointing to the tracking servlet) to the entries descriptions. - - - -The Tracking servlet logs the ID, URL and type of usage (VIEW or CLICK). When a client clicks on a link or displays the description of an entry the Tracking servlet is invoked, it tracks the request using and ID in the URL and redirects to the original request or render a 1 pixel transparent image. - - - -The 'tracking.url' init parameter in the Tracking handler defines the URL of the Tracking servlet. - - - -The createTrackingId() method in the Tracking handler creating a dummy ID. For serious usage this method should be overriden. - - - -The track() method in the Tracking servlet is using a Logger to log tracking information. - - -#### Echo Handler (alias the Uploader) - - - -The Echo handler echoes (returns back) the feed POSTed to the Mano servlet. - - - -This handler, as opposed to the others in the toolbox, it requires running in a servlet container and it has to be fronted by a servlet that supports POST requests as the ManoServlet does. - - - -The POST request must have the handler parameters in the query\-string the content\-type header should be 'application/xml', the payload of the POST request must be a feed XML document and it's charset encoding it is assumed to be same as the one defined in the request. - - - -The curl command can be used to test this handler, for example: - - - -``` - - curl http://localhost:8080/mano/feed/echo \ - --data-binary @~/myfeed.xml --header "content-type: application/xml - -``` - - -An interesting use of the Echo handler is that together with the File handler it can be use o upload and store feeds, for example: - - - -``` - - curl http://localhost:8080/mano/feed/file/echo?file.write=myfeed \ - --data-binary @~/myfeed.xml --header "content-type: application/xml - -``` - -#### Null Handler - - - -The Null handler discards the feed from the response and returns no content. If the response had a feed it is discarded and the repose status code is set to NO CONTENT (204). If the response had an error code the error code is returned. - - -#### Sort Handler - - - -The Sort handler sorts entries by title or published date, in ascendent (default) or descendent order. - - - -The namespaced parameter by must be title (default) or date. The namespaced parameter order must be asc (default) or desc. - - - -NULL values are considered \-infinite for the purposes of ordering. - - -## Building ROME.Mano - - - -ROME.Mano is a ROME sub\-project, rome/subprojects/mano. - - - -It dependencies are ROME v0.8, JDOM v1.0, ROME Fetcher v0.8 and Servlet API v2.3\+. - - - -It uses Maven 1.0.2 to build, maven war. - - -## Sample ROME.Mano URLs - - - -Fetching a feed: - - - -* [http://localhost:8080/mano/feed/fetch?fetch.url\=http://wired.com/rss/index.xml](http://localhost:8080/mano/feed/fetch?fetch.url=http://wired.com/rss/index.xml) - - - -Fetching and converting a feed: - - - -* [http://localhost:8080/mano/feed/convert/fetch?convert.to\=atom\_0.3&fetch.url\=http://wired.com/rss/index.xml](http://localhost:8080/mano/feed/convert/fetch?convert.to=atom_0.3&fetch.url=http://wired.com/rss/index.xml) - - - -Fetching, converting and storing 3 feeds (one at the time): - - - -* [http://localhost:8080/mano/feed/file/convert/fetch?file.write\=a&convert.to\=atom\_1.0&fetch.url\=http://wired.com/rss/index.xml](http://localhost:8080/mano/feed/file/convert/fetch?file.write=a&convert.to=atom_1.0&fetch.url=http://wired.com/rss/index.xml) - -* [http://localhost:8080/mano/feed/file/convert/fetch?file.write\=b&convert.to\=atom\_1.0&fetch.url\=http://www.tbray.org/ongoing/ongoing.rss](http://localhost:8080/mano/feed/file/convert/fetch?file.write=b&convert.to=atom_1.0&fetch.url=http://www.tbray.org/ongoing/ongoing.rss) - -* [http://localhost:8080/mano/feed/file/convert/fetch?file.write\=acconvert.to\=atom\_1.0&fetch.url\=http://hotdeals.apple.com/newarrivals/rss/newarrivals.xml](http://localhost:8080/mano/feed/file/convert/fetch?file.write=acconvert.to=atom_1.0&fetch.url=http://hotdeals.apple.com/newarrivals/rss/newarrivals.xml) - - - -Fetching, converting and storing 3 feeds (all at once) and returning a merged feed with all their entries: - - - -* [http://localhost:8080/mano/feed/multi/file/convert/fetch?multi.param\=file.write&multi.param\=fetch.url&file.write\=wired&fetch.url\=http://wired.com/rss/index.xml&file.write\=cnn\-top&fetch.url\=http://rss.cnn.com/rss/cnn\_topstories.rss&file.write\=cnn\-world&fetch.url\=http://rss.cnn.com/rss/cnn\_world.rss&file.write\=salon\-sports&fetch.url\=http://salon.com/rss/sports.rss&convert.to\=atom\_1.0](http://localhost:8080/mano/feed/multi/file/convert/fetch?multi.param=file.write&multi.param=fetch.url&file.write=wired&fetch.url=http://wired.com/rss/index.xml&file.write=cnn-top&fetch.url=http://rss.cnn.com/rss/cnn_topstories.rss&file.write=cnn-world&fetch.url=http://rss.cnn.com/rss/cnn_world.rss&file.write=salon-sports&fetch.url=http://salon.com/rss/sports.rss&convert.to=atom_1.0) - - - -Reading 3 feeds previously written to disk, merging their entries and paginating the feed: - - - -* [http://localhost:8080/mano/feed/multi/branding/file?&multi.param\=file.read&file.read\=wired&file.read\=cnn\-top&file.read\=cnn\-world&file.read\=salon\-sports](http://localhost:8080/mano/feed/multi/branding/file?&multi.param=file.read&file.read=wired&file.read=cnn-top&file.read=cnn-world&file.read=salon-sports) - - - -Same as previous feed but with tracking, pagination and sorted: - - - -* [http://localhost:8080/mano/feed/tracking/sort/paginate/multi/branding/file?paginate.offset\=10&paginate.size\=20&multi.param\=file.read&file.read\=wired&file.read\=cnn\-top&file.read\=cnn\-world&file.read\=salon\-sports&sort.by\=title&sort.order\=desc](http://localhost:8080/mano/feed/tracking/sort/paginate/multi/branding/file?paginate.offset=10&paginate.size=20&multi.param=file.read&file.read=wired&file.read=cnn-top&file.read=cnn-world&file.read=salon-sports&sort.by=title&sort.order=desc) - - \ No newline at end of file diff --git a/src/site/markdown/modules/A9OpenSearch.md b/src/site/markdown/modules/A9OpenSearch.md deleted file mode 100644 index 00f5516..0000000 --- a/src/site/markdown/modules/A9OpenSearch.md +++ /dev/null @@ -1,55 +0,0 @@ -# A9 OpenSearch - - -This plug in is for use with [OpenSearch.org](http://www.opensearch.org/) results. - - - -The latest version is 0.1 available. - - -## Sample Usage - - - -``` - -SyndFeed feed = new SyndFeedImpl(); -feed.setFeedType(feedType); - -// Add the opensearch module, you would get information like totalResults from the -// return results of your search -List mods = feed.getModules(); -OpenSearchModule osm = new OpenSearchModuleImpl(); -osm.setItemsPerPage(1); -osm.setStartIndex(1); -osm.setTotalResults(1024); -osm.setItemsPerPage(50); - -OSQuery query = new OSQuery(); -query.setRole("superset"); -query.setSearchTerms("Java Syndication"); -query.setStartPage(1); -osm.addQuery(query); - -Link link = new Link(); -link.setHref("http://www.bargainstriker.com/opensearch-description.xml"); -link.setType("application/opensearchdescription+xml"); -osm.setLink(link); - -mods.add(osm); - -feed.setModules(mods); -// end add module - -``` - -## Changes - - -### 0.1 - - - -Initial move to the ROME project. - diff --git a/src/site/markdown/modules/Content.md b/src/site/markdown/modules/Content.md deleted file mode 100644 index c09a740..0000000 --- a/src/site/markdown/modules/Content.md +++ /dev/null @@ -1,36 +0,0 @@ -# Content - - -This plug in is for use content:encoded in feeds. - - - -The latest version is 0.4 available. - - -## Sample Usage - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed syndfeed = input.build(new XmlReader(feed.toURL())); - -Module module = syndfeed.getModule("http://purl.org/rss/1.0/modules/content/"); -ContentModule content = (ContentModule) module; - -Iterator it = content.getEncodeds().iterator(); -System.out.println( it.next() ); - -``` - -## Changes - - -### 0.4 - - - -Initial move to the ROME project. - diff --git a/src/site/markdown/modules/CreativeCommons.md b/src/site/markdown/modules/CreativeCommons.md deleted file mode 100644 index 2773cbb..0000000 --- a/src/site/markdown/modules/CreativeCommons.md +++ /dev/null @@ -1,42 +0,0 @@ -# Creative Commons - - -This plug in is for use with feeds from Creative Commons license. - - - -This module provides a unified rights and license system for both the RSS2/Atom and RSS/RDF namespace. However, if you wish to **generate** RDF/RSS feeds, you need to use a CVS build of ROME (or a version higher than 0.8). - - - -The latest version is 0.2 available. - - -## Sample Usage - - - -``` - -CreativeCommons commons = new CreativeCommonsImpl(); -commons.setLicense( new License[]{ License.NONCOMMERCIAL } ); -// Note, you do not have to setAllLicenses right now. When the RSS1 functionality is -// added, this will be required at the Feed level only. -ArrayList modules = new ArrayList() -modules.add( commons ); -syndEntry.setModules( commons ); - -//Alternately, to get the module: -CreativeCommons commons = (CreativeCommons) syndFeed.getModule( CreativeCommons.URI ); - -``` - -## Changes - - -### 0.2 - - - -Initial release from ROME. - diff --git a/src/site/markdown/modules/GeoRSS.md b/src/site/markdown/modules/GeoRSS.md deleted file mode 100644 index 080e79b..0000000 --- a/src/site/markdown/modules/GeoRSS.md +++ /dev/null @@ -1,52 +0,0 @@ -# GeoRSS - - -This Rome plugin is for adding location information to RSS/Atom. - - - -The latest version is 0.1 available. - - -## Sample Usage - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed feed = input.build(new XmlReader(new URL("http://www.geonames.org/recent-changes.xml"))); - -List; entries = feed.getEntries(); -for (SyndEntry entry : entries) { - GeoRSSModule geoRSSModule = GeoRSSUtils.getGeoRSS(entry); - System.out.println(entry.getTitle() + " : lat=" - + geoRSSModule.getLatitude() + ",lng=" - + geoRSSModule.getLongitude() + ", desc=" - + entry.getDescription().getValue() + "; time=" - + entry.getPublishedDate()); - } - -//to generate a GeoRSS item - -GeoRSSModule geoRSSModule = new W3CGeoModuleImpl(); -//GeoRSSModule geoRSSModule = new SimpleModuleImpl(); -geoRSSModule.setLatitude(47.0); -geoRSSModule.setLongitude(9.0); -entry.getModules().add(geoRSSModule); - -``` - - -More information here: [http://georss.geonames.org/](http://georss.geonames.org/) - - -## Changes - - -### 0.1 - - - -Initial Releas from ROME - diff --git a/src/site/markdown/modules/GoogleBase.md b/src/site/markdown/modules/GoogleBase.md deleted file mode 100644 index 346c936..0000000 --- a/src/site/markdown/modules/GoogleBase.md +++ /dev/null @@ -1,41 +0,0 @@ -# Google Base - - -This plug in is for use with Google Base RSS/Atom Extensions - - - -The latest version is 0.2 available. - - -## Sample Usage - - - -``` - -SyndEntry entry = new SyndEntryImpl(); -// set up the entry... -Vehicle vehicle = new GoogleBaseImpl(); -vehicle.setMake("Honda"); -vehicle.setModel("Insight"); -vehicle.setYear( new Year("2000")); -List modules = new ArrayList(); -modules.add( vehicle ); -entry.setModules( modules ); - -//Optionally, to get Google Base information from a Feed: -Article article = entry.getModule( "http://base.google.com/ns/1.0" ); -System.out.println( article.getPages() ); - -``` - -## Changes - - -### 0.2 - - - -Initial release from ROME project. - diff --git a/src/site/markdown/modules/IPhotoPhotocasting.md b/src/site/markdown/modules/IPhotoPhotocasting.md deleted file mode 100644 index 56867b6..0000000 --- a/src/site/markdown/modules/IPhotoPhotocasting.md +++ /dev/null @@ -1,52 +0,0 @@ -# iPhoto Photocasting - - -This plug in is for use with iPhoto Photocast listings. - - - -This module will read and write photocast feeds "properly". Be advised, however, that an iPhoto photocast feed will not pass a FeedValidator test as they are not properly namespaced. If you are wanting to publish, rather than read, consider using the [MediaRSS.html](MediaRSS.html) plug in instead. iPhoto will also read [MediaRSS.html](MediaRSS.html) (Flickr Photostream) feeds as well. - - - -The latest version is 0.2 available. - - -## Sample Usage - - - -``` - -SyndFeed feed = input.build( new File( "/foo.rss" ) ) ); -List entries = feed.getEntries(); -for( int i =0; i < entries.size() ; i++ ){ - System.out.println( ((SyndEntry)entries.get(i)).getModule( PhotocastModule.URI ) ); -} - -// or to create a photocast module: - -SyndFeed myFeed = new SyndFeedImpl(); -myFeed.getModules().add( new PhotocastModuleImpl() ); -// you need this as a placeholder so the version gets in the feed. - -SyndEntry myEntry = new SyndEntryImpl(); -PhotocastModule pm = new PhotocastModuleImpl(); -pm.setUrl( new URL("http://foo.com/img.jpg" ) ); -pm.setThumnail( new URL("http://foo.com/img-small.jpg" ) ); -pm.setCropDate( new Date() ); -pm.setPhotoDate( new Date() ); -pm.setMetaData( new PhotoDate(), "Some comments that I think always get ignored." ); -myEntry.getModules().add( pm ); - -``` - -## Changes: - - -### 0.2 - - - -Initial move to the ROME project. - diff --git a/src/site/markdown/modules/ITunesPodcasting.md b/src/site/markdown/modules/ITunesPodcasting.md deleted file mode 100644 index 426f2d2..0000000 --- a/src/site/markdown/modules/ITunesPodcasting.md +++ /dev/null @@ -1,53 +0,0 @@ -# iTunes Podcasting - - -This plug in is for use with iTunes Music Service podcast listings. - - - -The latest version is 0.4 available. - - -## Sample Usage - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed syndfeed = input.build(new XmlReader(feed.toURL())); - -Module module = syndfeed.getModule("http://www.itunes.com/dtds/podcast-1.0.dtd"); -FeedInformation feedInfo = (FeedInformation) module; - -System.out.println( feedInfo.getImage() ); -System.out.println( feedInfo.getCategory() ); - -// Or to create a feed.. - -ArrayList modules = new ArrayList(); -EntryInformation e = new EntryInformationImpl(); -e.setDuration( new Duration( 10000 ) ); -modules.add( e ); -syndEntry.setModules( modules ); - -``` - -## Changes - - -### 0.4 - - - -* Corrected some Feed vs Item attribute issue. - -* Keywords now comma separated instead of space. - - -### 0.3 - - - -Added support for the "other" case of podcasts. It will now correctly parse all lowercase URIs as wells as the original mixed case URIs All generated feeds use the lowercase URI. Fixed some entity problems related to the apple summary tag. - diff --git a/src/site/markdown/modules/MediaRSS.md b/src/site/markdown/modules/MediaRSS.md deleted file mode 100644 index f8e1b6a..0000000 --- a/src/site/markdown/modules/MediaRSS.md +++ /dev/null @@ -1,55 +0,0 @@ -# MediaRSS - - -This plugin is for use with Yahoo! MediaRSS/Flickr Photostreams - - - -The latest version is 0.1 available. - - -## Sample Usage - - - -``` - -SyndFeed feed = input.build( myRSSFile ); -List entries = feed.getEntries(); -for( int i = 0; i < entries.size(); i++ ){ - System.out.println( ((SyndEntry) entries.get(i)).getModule( MediaModule.URI ) ); -} - -//Alternatively, to add a media item to an entry: - -MediaContent[] contents = new MediaContent[1]; -MediaContent myItem = new MediaContent( new UrlReference("http://me.com/movie.mpg") ); -contents[0] = myItem(); -Metadata md = new Metadata(); -Thumbnail[] thumbs = new Thumbnail[2]; -thumbs[0] = new Thumbnail( new URL("http://me.com/movie1.jpg") ); -thumbs[1] = new Thumbnail( new URL("http://me.com/movie2.jpg") ); -md.setThumbnail( thumbs ); -myItem.setMetadata( md ); -MediaEntryModuleImpl module = new MediaEntryModuleImpl(); -module.setMediaContents( contents ); -mySyndEntry.getModules().add( module ); - -``` - -## Changes - - -### 0.2.1 - - - -Bugfix for metadata on MediaGroups. - - -### 0.1 - - - -Initial release from ROME. - diff --git a/src/site/markdown/modules/MicrosoftSimpleListExtensions.md b/src/site/markdown/modules/MicrosoftSimpleListExtensions.md deleted file mode 100644 index 1f211ec..0000000 --- a/src/site/markdown/modules/MicrosoftSimpleListExtensions.md +++ /dev/null @@ -1,52 +0,0 @@ -# Microsoft Simple List Extensions - - -This plug in is for use with feeds ith Microsoft Simple List Extensions. - - - -Note you need to use the current CVS version of ROME or 0.9 when available. - - - -The latest version is 0.1 available. - - -## Sample Usage - - - -``` - -SimpleListExtension sle = (SimpleListExtension) feed.getModule( SimpleListExtension.URI ); -System.out.println( sle ); -Group[] groups = sle.getGroupFields(); -System.out.println( groups[0].getLabel() ); - -//You can use the SleUtility class to do sorting and grouping: - -List sortedEntries = SleUtility.sort( feed.getEntries(), sle.getSortFields()[1], true ); -SyndEntry entry = (SyndEntry) sortedEntries.get( 0 ); - -//You can also Group or Sort and Group - -List sortedAndGroupedEntries = SleUtility.sortAndGroup( feed.getEntries, sle.getGroupFields(), sle.getSortFields()[0], false ); - -// If you change, for instance, module values on a feed and want to reinitialize it for -// grouping and sorting... - -SleUtility.initializeForSorting( feed ); - -// Be aware, this is a VERY heavy operation and should not be used frequently. - -``` - -## Changes - - -### 0.1 - - - -Initial release from ROME. - diff --git a/src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md b/src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md deleted file mode 100644 index 50b85a9..0000000 --- a/src/site/markdown/modules/MicrosoftSimpleSharingExtensions.md +++ /dev/null @@ -1,37 +0,0 @@ -# Microsoft Simple Sharing Extensions - - -This ROME module supports Microsoft Simple Sharing Extensions, an RSS and [OPML](../opml/index.html) extension designed to support data synchronization between bi\-directional feeds. - - - -The latest version is 0.1 available. - - -## Sample Usage - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed syndfeed = input.build(new XmlReader(feed.toURL())); - -List entries = syndfeed.getEntries(); -Iterator it = entries.iterator(); - -for (int id = 101; it.hasNext() && id <= 113; id++) { - SyndEntry entry = (SyndEntry) it.next(); - Sync sync = (Sync) entry.getModule(SSEModule.SSE_SCHEMA_URI); - assertEquals(String.valueOf(id), sync.getId()); - - History history = sync.getHistory(); - assertNotNull(history); - - Date when = history.getWhen(); - assertNotNull(when); - Date testDate = DateParser.parseRFC822("Fri, 6 Jan 2006 19:24:09 GMT"); - assertEquals(testDate, when); -} - -``` diff --git a/src/site/markdown/modules/Slash.md b/src/site/markdown/modules/Slash.md deleted file mode 100644 index 761cea3..0000000 --- a/src/site/markdown/modules/Slash.md +++ /dev/null @@ -1,42 +0,0 @@ -# Slash - - -This plug in is for use with feeds from Slash\-based weblogs. - - - -The latest version is 0.2 available. - - -## Sample Usage - - - -``` - -SyndEntry entry = new SyndEntryImpl(); -// set up the entry... -Slash slash = new SlashImpl(); -slash.setComments( new Integer( 12 ) ); -slash.setDepartment( "look-another-rome-plugin" ); -slash.setSection("code"); -slash.setHitParade( new Integer[] { new Integer(12), new Integer(0) } ); -List modules = new ArrayList(); -modules.add( slash ); -entry.setModules( modules ); - -//Optionally, to get Slash information from a Feed: -Slash slash = entry.getModule( Slash.URI ); -System.out.println( slash.getComments() ); - -``` - -## Changes - - -### 0.2 - - - -Initial release from ROME. - diff --git a/src/site/markdown/modules/Weather.md b/src/site/markdown/modules/Weather.md deleted file mode 100644 index 50dc91d..0000000 --- a/src/site/markdown/modules/Weather.md +++ /dev/null @@ -1,40 +0,0 @@ -# Weather - - -This plug in is for use the [Yahoo! Weather service](http://developer.yahoo.com/weather/). - - - -The latest version is 0.1 available. - - -## Sample Usage - - - -``` - -SyndFeed feed = input.build( ... ); -YWeatherFeedModule yfeed = (YWeatherFeedModule) feed.getModule( YWeatherFeedModule.URI ); -System.out.println( yfeed.getLocation().getCity() ); -SyndEntry entry = (SyndEntry) feed.getEntries().get(0); -YWeatherEntryModule yentry = (YWeatherEntryModule) entry.getModule( YWeatherEntryModule.URI ); -System.out.println( yentry.getForecasts()[0].getHigh() ); - -//Optionally, to add Weather information to a feed: -SyndEntry entry = new SyndEntryImpl(); -YWeatherEntryModule yentry = new YWeatherModuleImpl(); -yentry.setCondition( Condition("Partly Cloudy", ConditionCode.PARTLY_CLOUDY, 65, new Date() ) ); -entry.getModules.add(yentry); - -``` - -## Changes - - -### 0.1 - - - -Initial release from ROME. - diff --git a/src/site/markdown/modules/index.md b/src/site/markdown/modules/index.md deleted file mode 100644 index 6b18a9b..0000000 --- a/src/site/markdown/modules/index.md +++ /dev/null @@ -1,92 +0,0 @@ -# Home - -## The ROME Modules Subproject. - - - -The ROME Modules project is an effort to roll up contributed module support into a single distribution for users. - - -## Current modules in the subproject include: - - - -* [ITunesPodcasting.html](ITunesPodcasting.html) – Apples extensions for listing in the iTunes podcast directory. - -* [GeoRSS.html](GeoRSS.html) – For adding location information to RSS/Atom. - -* [Slash.html](Slash.html) – Used by Slash\-based blogs. - -* [GoogleBase.html](GoogleBase.html) – For working with the Google Base types and custom tagsets. - -* [Content.html](Content.html) – For using content:encoded tags. - -* [CreativeCommons.html](CreativeCommons.html) – A unified module for working with the RDF and RSS/Atom Creative Commons License information. - -* [Yahoo! MediaRSS](MediaRSS.html) – For working with Yahoo! MediaRSS feeds (and Flickr Photostreams) - -* [IPhotoPhotocasting.html](IPhotoPhotocasting.html) – For working with Apple iPhoto Photocasts - -* [A9OpenSearch.html](A9OpenSearch.html) – For working with Amazon/OpenSearch.org results. - -* [MicrosoftSimpleListExtensions.html](MicrosoftSimpleListExtensions.html) – for sorting and grouping entries. - -* [MicrosoftSimpleSharingExtensions.html](MicrosoftSimpleSharingExtensions.html) – for synchronizing across bi\-directional RSS and [OPML](index.html) feeds. - -* [Yahoo! Weather](Weather.html) – For use with the Yahoo Weather API - - -## Get it. - - - -The 0.3.2 release of modules.jar (which contains all the above modules) is available. - - -### Downloads - - - -Please don't use modules\-0.3.jar. It had errors in the packaging which have been fixed in modules\-0.3.1.jar and subsequent releases - - - -See individual module sites for information. - - -## Changes - - -### 1.0 \- released 24 February 2011 - - - -Finalized 1.0 release. - - -### 0.3.2 \- released 30 Jan 2009 - - - -* [http://java.net/jira/browse/ROME\-122](http://java.net/jira/browse/ROME-122) - - -## General Guidelines for modules: - - - -This is intended to serve as a guide for contributions as well as a hint for users working with the modules. - - - -* Modules are packaged in com.sun.syndication.feed.module.\[Module Name\]. - -* Modules contain a com.sun.syndication.feed.module.\[Module Name\].Module.URI reference for retrieval from ROME Synd\* classes. - -* Modules contain a com.sun.syndication.feed.module.\[Module Name\].ModuleImpl that is a concrete implementation. - -* Modules contain a com.sun.syndication.feed.module.\[Module Name\].types package that holds any other datatypes needed for the module. Many of these are simple immutable types to simplify clone() and copyFrom() - -* Modules contain a com.sun.syndication.feed.module.\[Module Name\].io package with parsers and generators. - - \ No newline at end of file diff --git a/src/site/markdown/opml/index.md b/src/site/markdown/opml/index.md deleted file mode 100644 index 364ddbc..0000000 --- a/src/site/markdown/opml/index.md +++ /dev/null @@ -1,145 +0,0 @@ -# Home - - -This project provides support for [OPML](http://www.opml.org/) in ROME. - - -## Downloads - - - -* [Binaries](https://rome.dev.java.net/servlets/ProjectDocumentList?folderID=5198) - -* [JavaDocs](https://rome.dev.java.net/nonav/apidocs/subprojects/opml/0.1/apidocs/index.html) - - -## Sample Usage - - - -To use this parser, simply include the jar file in your classpath as you are using ROME. Be sure it exists at the same level as ROME, such that, if ROME is in the common classpath of an application server, don't include this jar in your webapps WEB\-INF/lib. - - - -``` - -WireFeedInput input = new WireFeedInput(); - Opml feed = (Opml) input.build( new File("myOpml.xml") ); - List outlines = (List) feed.getOutlines(); - -``` - -## Hierarchy vs Flat - - - -Since OPML is a hierarchical format, some magic is required to preserve this information when they feed is moved to a Synd\* structure. This is accomplished by adding categories indicating the tree structure to the [SyndEntries](http://wiki.java.net/bin/edit/Javawsxml/SyndEntries?topicparent=Javawsxml.OPML;nowysiwyg=0) ... - - - -For example: - - - -``` - - - - Top Ten Sources for podcasting - Newsilike Media Group - opml@TopTenSources.com - - - - - - - - - - - - - - - - - - - - - -``` - - -... - When converted to RSS2 becomes: - - - -``` - - - Top Ten Sources for podcasting - http://foo.com - - Newsilike Media Group - - TopTenSources: podcasting - http://podcasting.TopTenSources.com/TopTenSources/ - node.-1732517202 - -http://podcasting.TopTenSources.com/TopTenSources/ - http://podcasting.TopTenSources.com/TopTenSources/ - - - CBS Technology News Podcast - Larry Magid' Tech Report - node.1353657827 - - - Larry Magid's Tech Report - http://www.cbsnews.com - node.-4085850 - parent.1353657827 - http://www.cbsnews.com - http://www.cbsnews.com - - - Adam Curry: Daily Source Code - node.835791399 - - - #374 Daily Source Code for Tuesday April 25th 2006 - http://radio.weblogs.com/0001014/2006/04/26.html#a7304 - node.222050897 - parent.835791399 - -http://radio.weblogs.com/0001014/2006/04/26.html#a7304 - http://radio.weblogs.com/0001014/2006/04/26.html#a7304 - - - #373 Daily Source Code for Monday April 24th 2006 - http://radio.weblogs.com/0001014/2006/04/24.html#a7303 - node.2088220478 - parent.835791399 - -http://radio.weblogs.com/0001014/2006/04/24.html#a7303 - http://radio.weblogs.com/0001014/2006/04/24.html#a7303 - - -``` - - -Nodes get categories with the "urn:rome.tree" URI that is used to maintain the tree structure. - - - -The other thing you will notice is the "urn:rome.attribute#url". Since OPML allows you to add arbitrary attributes to each outline element, these are used to preserve these values. - - \ No newline at end of file diff --git a/src/site/markdown/propono/ROMEProponoVersion0.4.md b/src/site/markdown/propono/ROMEProponoVersion0.4.md deleted file mode 100644 index 76fb971..0000000 --- a/src/site/markdown/propono/ROMEProponoVersion0.4.md +++ /dev/null @@ -1,15 +0,0 @@ -# ROME Propono Version 0.4 - - -This is the first release of the [Rome Propono](index.html) publishing library. It's a beta release and will be followed closely by Propono 0.5. - - -## Downloads - - -## API Docs - - - -* [Propono 0.4 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.4/overview-summary.html) - diff --git a/src/site/markdown/propono/ROMEProponoVersion0.5.md b/src/site/markdown/propono/ROMEProponoVersion0.5.md deleted file mode 100644 index d1b3ab1..0000000 --- a/src/site/markdown/propono/ROMEProponoVersion0.5.md +++ /dev/null @@ -1,25 +0,0 @@ -# ROME Propono Version 0.5 - - -This is the second release of the [Rome Propono](index.html) publishing library. It's a bug fix release follow\-on to 0.4. Here are the changes: - - - -* Fixes in Blog Client constructors - -* AtomServlet uses application/atomsvc\+xml for the Service Document - -* Fixed issue #66: don't expect entry to be returned from update - -* Made example builds more configurable - - -## Downloads - - -## API Docs - - - -* [Propono 0.5 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.5/overview-summary.html) - diff --git a/src/site/markdown/propono/ROMEProponoVersion0.6.md b/src/site/markdown/propono/ROMEProponoVersion0.6.md deleted file mode 100644 index 5b2c53e..0000000 --- a/src/site/markdown/propono/ROMEProponoVersion0.6.md +++ /dev/null @@ -1,84 +0,0 @@ -# ROME Propono Version 0.6 - - -September 30, 2007 - - - -This is the third release of the [Rome Propono](index.html) publishing library. It includes major changes to add support for the final Atom Publishing Protocol specification relative URIs and out\-of\-line categories. It's an an interim release it includes a pre\-release version of ROME 0.9.1\-dev. A new version will follow as soon as ROME 0.9.1 (or 1.0) has been finalized. - - -## Downloads - - -## API Docs - - - -* [Propono 0.6 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.6/overview-summary.html) - - -## Changes - - - -* Updated for APP final (draft #17) w/new APP URI "http://www.w3.org/2007/app" - -* Tested file\-based server against Tim Bray's Ape (from CVS September 30, 2007). - -* Now includes pre\-release of ROME 0.9.1 with key Atom parse fixes. - -* Changed arguements in Atom server's AtomHandler interface to accept AtomRequest objects instead of String\[\] pathinfo arrays. - -* Added support for relative URIs in the Service Document - - * Fixes [http://java.net/jira/browse/ROME\-67](http://java.net/jira/browse/ROME-67) - - * Added Collection.getHrefResolved() - - * Added Categories.getHrefResolved() - - - -* Added new options to the file\-based server's propono.properties file so you can turn on/off relative URIs and inline categories. - - * propono.atomserver.filebased.relativeURIs\=true - - * propono.atomserver.filebased.inlineCategories\=true - - - -* Added support for out\-of\-line categories in Atom client classes - - * Added new Categories.href property - - * New ClientCategories classes can fetch remote categories from href URI - - * Fixes [http://java.net/jira/browse/ROME\-68](http://java.net/jira/browse/ROME-68) - - - -* Added support for out\-of\-line categories in Atom server classes - - * New AtomHandler.getCategoriesDocument(String\[\] pathInfo) method - - * New AtomHandler.isCategoriesDocumentURI(String\[\] pathInfo) method - - - -* Renamed Introspection to Service Document - - * AtomHandler.isIntrospectionURI() \-\> AtomHandler.isSerivceDocumentURI() - - * AtomHandler.getIntrospection() \-\> AtomHandler.getServiceDocument() - - * Added String\[\] pathInfo argument to getServiceDocument() - - - -* Renamed PubControlModule to AppModule becuase it also supports app:edited - - * Added rome.properties file to configure AppModule - - - diff --git a/src/site/markdown/propono/ROMEProponoVersion1.0.md b/src/site/markdown/propono/ROMEProponoVersion1.0.md deleted file mode 100644 index 5bba5dd..0000000 --- a/src/site/markdown/propono/ROMEProponoVersion1.0.md +++ /dev/null @@ -1,30 +0,0 @@ -# ROME Propono Version 1.0 - - -April 2009 - - - -ROME Propono 1.0 is coming soon. If you'd like to help out, you can try 1.0 RC1 and provide feedback to us on the ROME dev mail list. - - -## Downloads - - -## API Docs - - - -* [Propono 1.0 API Docs](https://rome.dev.java.net/apidocs/subprojects/propono/1.0/overview-summary.html) - - -## Changes - - - -* Updated to ROME 1.0 - -* Added support for pluggable authentication in the AtomPub client - -* Added support for OAuth in the AtomPub client, see Javadocs for details - diff --git a/src/site/markdown/propono/index.md b/src/site/markdown/propono/index.md deleted file mode 100644 index 2db6755..0000000 --- a/src/site/markdown/propono/index.md +++ /dev/null @@ -1,29 +0,0 @@ -# Home - -# ROME Propono - - - -The ROME Propono subproject is a Java class library that supports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API. - - -# Documentation - - - -* See the [Propono API docs](https://rome.dev.java.net/apidocs/subprojects/propono/0.6/overview-summary.html) for an explanation of Propono usage, diagrams and code examples. - - -# Releases - - - -* [ROMEProponoVersion1.0.html](ROMEProponoVersion1.0.html) \- Release 1.0 coming soon... - -* [ROMEProponoVersion0.6.html](ROMEProponoVersion0.6.html) - -* [ROMEProponoVersion0.5.html](ROMEProponoVersion0.5.html) - -* [ROMEProponoVersion0.4.html](ROMEProponoVersion0.4.html) - - \ No newline at end of file diff --git a/src/site/markdown/rome/ChangeLog.md b/src/site/markdown/rome/ChangeLog.md deleted file mode 100644 index 989f8d2..0000000 --- a/src/site/markdown/rome/ChangeLog.md +++ /dev/null @@ -1,752 +0,0 @@ -# Change Log - -## Changes made since v1.0 - - - -1. [Issue 127](http://java.net/jira/browse/ROME-127): Rome 1.0 not JDK 1.4 compatible - - -## Changes made since v1.0RC2 - - - -1. [Issue 121](http://java.net/jira/browse/ROME-121): RSS item category iteration should try to reflect document order - -1. New property preserveWireFeed available on SyndFeedInput - WireFeeds will be preserved if the property preserveWireFeed is set on the SyndFeedInput object it is built from. Atom/RSS Entry/Item objects are also available from SyndEntry objects if the WireFeed is preserved using the new getWireEntry() method. See [PreservingWireFeeds.html](PreservingWireFeeds.html) for details. - - -## Changes made since v1.0RC1 - - - -1. Fix. Date parsing for Atom10 entry and additional W3C masks - Item date elements were being parsed with the W3C parser instead the lenient one (RFC822 \+ W3C \+ custom masks). - The following masks were added to W3C masks to handle RFC822 timezone (ie '\-800'): - -``` - -yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd't'HH:mm:sszZ - -``` - - -1. Fix. Contributors properties in SyndEntry were not implementing the semantics of list properties. - They were returning NULL instead, now they return an empty list if not values are set. - -1. Fix. Contributors properties in SyndEntry and SyndFeed were not being converted to/from WireFeed - -1. Fix. Syndication Module Generator was failing if some of its values were null. - Checks for nulll have been added it to the generator to prevent NullPointerExceptions - -1. New. Added new constructor to XmlReader - -``` - -public XmlReader(InputStream is, boolean lenient, String defaultEncoding) - -``` - - -1. New. Support atom person construct extensions, using the Extendable interface on SyndPerson: - Patch from James Roper. See [Issue 1101](http://java.net/jira/browse/ROME-110) for details - -1. New. Maven 2 build for main project - ROME can now be built with Maven 2 - -1. New. OSGi support - OSGi headers to MANIFEST.MF so that rome.jar can also be used in an OSGi environment. See [Issue 117](http://java.net/jira/browse/ROME-117) for details. - -1. New. Allow pretty printing to be turned on and off - see [Issue 114](http://java.net/jira/browse/ROME-114) for details. Thanks to Martin Kurz for the patch. - -1. Configurable classloading behavior for OSGi compatibility. - We have received a report of some issues with plugin loading in an OSGi environment ([Issue 118](http://java.net/jira/browse/ROME-118)). The fix appears to be to change Class.forName to classLoader.loadClass, but the semantics for this are subtly different, so we have made this new behavior user selectable. Set the "rome.pluginmanager.useloadclass" system property to "true" to enable it. - -1. More lenient number parsing - There were a number of problems with feeds providing blank or invalid values in fields which would be numbers. ROME will now handles these better. See issues [104](http://java.net/jira/browse/ROME-104), [107](http://java.net/jira/browse/ROME-107) and [108](http://java.net/jira/browse/ROME-108) for details. - - -## Changes made from v0.9 to v1.0RC1 - - - -1. New. XmlReader support for default encoding - The XmlReader can be set with an alternate default encoding in case no encoding has been detected from the transport (HTTP), the stream or the XML prolog. if no value is set the default fallback rules based on the content\-type will be used. The alternate default encoding can be set/viewed via a static methods, **setDefaultEncoding()** and **getDefaultEncoding()**. - -1. Fix. Atom 1.0 links were generated without title and length attributes. - The Atom 1.0 Generator was not generating title and length attributes when values are present. - -1. Fix. XmlReader, multi\-line prolog encoding detection. - XmlReader handles properly xml\-prolog detection when prolog goes over multiple lies (such as G groups feeds). - -1. Fix. Base64 decoding was failing under certain padding conditions. - -1. Fix. XmlReader fixes - Fixed bug that if BOM is UTF8 was not being set to UTF8. Changed logic to use Buffered stream instead pushback stream for all encoding detection. Changed logic of xml prolog detection to avoid having a buffer with half of a unicode character (instead filling up the buffer looking up to first '\>' which means it a valid buffer). - -1. New. XmlReader supports default encoding at instance level. - Via a new constructor is possible to indicate a default encoding different than the default encoding at class level. - -1. Fix. Making the EqualsBean to follow equals contract. - For X.equals(null) it was throwing a NullPointerException, now it returns FALSE. - -1. Fix. Render Atom icon and logo attributes. - AtomGenerator now adds icon and logo elements to xml tree - -1. Fix. Updated AtomPub namespace to its permenent home. - AtomService namespace updated to [http://www.w3.org/2007/app](http://www.w3.org/2007/app) - -1. New. Added support for configuration per classloader level. - The PluginManager (handles Parsers and Generators) now is singleton at classloader level allowing different configurations in different classloaders. - -1. Atom parser: better relative URI handling - Instead of simply resolving each relative URI at runtime and saving only the resolved one, we now save both the relative URI and the resolve one. We introduced the following new methods to provide access to the resolved URI. - - * Link.getLinkResolved() - - * Link.setLinkResolved() - - * Category.getSchemeResolved() - - * Category.setSchemeResolved() - - * Person.getUriResolved() - - * Person.setUriResolved() - - - -1. Utility methods useful in working with Atom protocol feeds - Added a couple of methods to make it easier to deal with Atompub feeds. - - * Entry.isMediaEntry() - - * Atom10Parser.parseEntry() - - * Atom10Generator.serializeEntry() - - - -1. Bugs fixed - Fixed the following bugs: - - * 49 Better content/summary mapping - - * 53 Content.setType not working with subtitles atom 1.0 - - * 56 fix of bug #39 leads to invalid atom feeds - - * 63 Missing link attribute when generating Atom 1.0 - - * 64 ROME's Atom parser doesn't pick up multiple alt links - - * 65 Atom feeds not including logo image - - * 71 encoding problem in XmlReader.getXmlProlog() - - * 79 Feed.setIcon()/setLogo() ignored by Atom10Generator - - * 81 SyndFeedImpl.equals() does not obey equals contract - - - -1. Fix. Parsers where ignoring namespaced prefixed Attributes. - If an XML feed uses a prefix for the Atom elements and the attributes of Atom elements use the prefix the parser was not picking up those attributes. - The fix makes the parser to look for prefixed and non\-prefixed attributes. - -1. Fix. Atom Feed and Entry beans author and category property getters - They were returning NULL when there were not authors or categories, they must return an empty list. - -1. New. Switch to enable/disable relative URI resolution in Atom 1.0 Parser. - The Atom10Parser class has a static method, setResolveURIs(boolean) that enables/disables relative URI resolution. - -1. New. XmlReader handling content\-type charset values has been relaxed. - XmlReader handles content\-type charset encoding value within single quotes and double quotes. - -1. Fix. Links, authors and contributors properties in SyndFeed were not implementing the semantics of list properties. - They were returning NULL instead, now they return an empty list if not values are set. - -1. Fix. RSS conversion of a SyndFeed was losing the link of the feed if the links property was used instead the link property. - Over time the SyndFeed has been modified to support more Atom specific properties and their cardinality, conversion to RSS of these properties was not always taken care. - The RSS converter has been changed so the link from SyndFeed is taken as channel link and if not set the first value of the links property is taken. - -1. Fix. WireFeedInput throws IllegalArgumentException if the feed type is not recognized. - Previously the IllegalArgumentException was wrapped by a ParsingFeedException (Reported by [Issue 91](http://java.net/jira/browse/ROME-91)). - -1. Fix. SyndFeedImpl.equals(other) checks for instance of other before casting. - The underlying ObjectBean does this check, but in this method a cast is done before to obtain the foreign markup, no the instance check is peformed before to avoid a class cast exception. - -1. Fix. Atom content based elements related fixes - - * Atom 0.3 Parser/Generator - - * Changed title to be treated as a Content construct. ([http://www.mnot.net/drafts/draft\-nottingham\-atom\-format\-02.html#rfc.section.4.3](http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.4.3)) - - - - * Atom 1.0 Generator: - - * changed feed title/subtitle and entry title to be treated as Content constructs. (Parser had this implemented already.) - - * added title attribute to links. (Parser had this implemented already.) - - * fixed content parsing for some XML content types. e.g. (application/xhtml\+xml) - - - - - -1. Fix. Atom link and enclosures handling - - * Atom 0.3 Converter - - * fixed link parsing code to parse all links (not just the first alternate link) and added enclosure support via link rel\="enclosure". - - * changed title conversion to use Content instead of plain text. - - - - * Atom 1.0 Converter - - * added SyndEnclosure to atom:link rel\=enclosure conversion. - - - - - -1. Fix. RSS 1.0 URI generation - - * RSS 1.0 Generator - - * channel/items/Seq/li/@resource now get's the item URI instead of the Link. ([http://web.resource.org/rss/1.0/spec#s5.3.5](http://web.resource.org/rss/1.0/spec#s5.3.5)) - - - - - -1. Fix. Javadocs corrections. - - * Fixed some javadoc comments for SyndEntry. - - - -1. Fix. Atom content based elements were not parsed with XML mime types. - If the mime type was and XML mime type the content value was being lost on parsing. - -1. Fix. duplication of content:encoded elements when reading/writing and RSS feed. - content:encoded elements are treated special, without a module, they have to be removed from the foreign markup to avoid duplication in case of read/write. Note that this fix will break if a content module is used. - -1. New. XmlFixerReader converts '&' into '&' when there is no matching entity. - Feeds commonly use '&' instead '&' in their content, this change converts those orphant '&'s into '&'s. - -1. Fix. RSS090Parser does not set the URI property. - The fix honors the documentation "For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 ... the SyndEntry uri property will be set with the value of the link element..." - -1. New. Removal of all unused namespaces from generated feeds. - The generators now remove all unused namespaces from the XML document before generating it. - - -## Changes made from v0.8 to v0.9 - - - -1. Design changes - - * Support Atom feed.title, feed.subtitle and entry.title [Issue 48](http://java.net/jira/browse/ROME-48) - #48 fixed via better support for Atom text constructs title and subtitle. Added get/setTitleEx() and get/setSubtitleEx(), which get get SyndContent objects. Title and subtitle still available from old getters/setters. - - * Support for mapping Atom summary/content to RSS description/content [https://rome.dev.java.net/servlets/ReadMsg?list\=dev&msgNo\=1680](https://rome.dev.java.net/servlets/ReadMsg?list=dev&msgNo=1680) - - * Fixed by introduced Content object in RSS model. ROME now parses as RSS Content. That makes parsing easier and allows us to support a more logical summary/content mapping: - - * RSS to/from Atom - - * RSS to/from Atom - - - - - -1. General parsing fixes - - * XmlReader xml prolog regular expression does not allow for single quotes [Issue 36](http://java.net/jira/browse/ROME-36) - The XmlReader was only parsing prolog encodings within double quotes, the regular expression to detect the encoding has been change to detect single or double quotes. - - * Fix. XML prolog parsing now support whitespaces around '\=' - If the XML prolog contained spaces around the '\=' between the encoding attribute name and the encoding attribute value the encoding was not being detected. The fix accepts all valid whitespace characters (as defined in the XML spec). - - * RSS parser does not recognize version\="2.00" [Issue 33](http://java.net/jira/browse/ROME-33) - - * Atom 1.0 Text Types Not Set Correctly [Issue 39](http://java.net/jira/browse/ROME-39) - - * Security issue [Issue 46](http://java.net/jira/browse/ROME-46) - - * Fix for the potential problem outlined in [http://www.securiteam.com/securitynews/6D0100A5PU.html](http://www.securiteam.com/securitynews/6D0100A5PU.html). Thanks to Nelson Minar for bringing this to our attention. - - * Fix. Wrong default description type for RSS 2.0 Fix for [Issue 26](http://java.net/jira/browse/ROME-26) - - * Change default description type for RSS 2.0 from text/plain to text/html as per RSS 2.0 spec - - * Fix to add all HTML4 entities, according to [http://www.w3.org/TR/REC\-html40/sgml/entities.html](http://www.w3.org/TR/REC-html40/sgml/entities.html) specially for the HTMLsymbol set (Mathematical, Greek and Symbolic characters for HTML) and the HTMLspecial set (Special characters for HTML). - - - -1. Date parsing fixes - - * Additional version and date leniency could extract more information [Issue 24](http://java.net/jira/browse/ROME-24) - - * Non RFC822 Dates not processed in RSS pubDate field [Issue 27](http://java.net/jira/browse/ROME-27) - - * RSS feed parsers were were only parsing RFC822 dates because they were not using the proper date\-time parsing function for the date\-time elements. - - * If a W3C date\-time element had no time component it was being parsed as local time instead of GMT, ROME DateParser class has been modified to use GMT in this situation. - - * Current JDKs do not handle 'UT' timezone indicator, ROME DateParser class has been modified to handle it. - - * Use Atom updated instead of published [Issue 41](http://java.net/jira/browse/ROME-41) - - * Atom 1.0 Date (Updated or Published) Not Set [Issue 42](http://java.net/jira/browse/ROME-42) - - * lastBuildDate does not populate publishedDate [Issue 43](http://java.net/jira/browse/ROME-43) Provides a feed date for RSS 0.91 feeds that specify lastBuildDate but not pubDate. - - - - * Fix. Parsing some numeric elements was failing due to whitespaces The image.width and image.height of RSS091U, the frequency of SyModule and the cloud.port of RSS092 elements are now being trimmed before doing the integer parsing. - - - -1. Atom link and URI fixes - - * Improper relative link resolution in Atom10Parser [Issue 37](http://java.net/jira/browse/ROME-37) - - * ATOM 1.0 Entry links parsing [Issue 38](http://java.net/jira/browse/ROME-38) - - * ConverterForRSS10.java does not set URI for item [Issue 25](http://java.net/jira/browse/ROME-25) - - * Valid IRI href attributes are stripped for atom:link [Issue 34](http://java.net/jira/browse/ROME-34) - - - -1. Module fixes - - * iTunes Module has incorrect author and category support [Issue 35](http://java.net/jira/browse/ROME-35) - - * mediarss.io.MediaModuleParser NumberFormatException [Issue 45](http://java.net/jira/browse/ROME-45) - - * Slash module not serializable for FeedFetcher [Issue 44](http://java.net/jira/browse/ROME-44) - - - - -## Changes made from v0.7 to v0.8 - - - -1. Change. Added enclosure support at Synd\* level - A new bean for handling enclosures at Synd\* level has been created (SyndEnclosure/SyndEnclosureImpl, interface/implementation). - The SyndEntry/SyndEntryImpl bean has a new 'enclosures' property which returns the list of enclosures for that item. - The Wire\* to Synd\* converters for RSS propagate enclosures in both directions. - This enables handling enclosures from RSS 0.92, 0.93, 0.94 and 2.0 at Synd\* level - Test cases have been modified to cover enclosures at Synd\* level. - -1. Change/Fix. Synd\* \- Atom entry dates mapping - - * (Change) Atom entries have 3 dates, 'modified', 'issued' and 'created'. Synd entries have only 1 date property 'publishedDate'. When converting from Atom to Synd the first not null date in the order above will be the one set in the Synd entry bean. - - * (Fix) When converting from Synd to Atom the Synd entries 'publishedDate' property value is set in both 'modified' and 'issued' properties of the Atom entry. - This Change/Fix is to be aligned with the Atom 0.3 spec. - - - -1. Fix. Trim enclosure length attribute - Fix from Trey Drake: At least 1 podcast site (ESPN) occasionally leaves trailing spaces in the enclosure content length attribute. This causes a NumberFormatException. - -1. Fix. Conversion to RSS 1.0 if Channel URI is not specified - Fix for problem converting to RSS 1.0 if not URI is specified at the channel level (it will now attempt to use the Link element) - -1. Changes to support Atom 1.0 - - * In com.sun.syndication.synd, added SyndLink and SyndPerson. - - * In SyndEntry added. In SyndEntry, added summary, updatedDate, links collection and support for multiple authors. - - * In com.sun.syndication.synd.impl, added Atom10Parser.java, Atom10Generator.java and ConverterForAtom10.java. - - - - -## Changes made from v0.6 to v0.7 - - - -1. Fix. RFC\-882 dates parsing and generation were using localized names for day and month names - The date parser and generator were using the JVM default Locale instead forcing an English Locale to use day and month names in English as specified by RFC\-822. Now US Locale is used. - -1. Fix. The 'ttl' element of RSS0.94 and RSS2.0 feeds was not being parsed - The parsers now parse the 'ttl' element and it is available in the resulting Channel bean. Note that 'ttl' info is not available in the SyndFeed bean, thus it's lost when converting from WireFeed to SyndFeed. - -1. Change. RSS enclosures with empty 'length' attributes are accepted - Parsing an RSS feed with an enclosure where the length attribute was an empty String were failing. Now they are parsed and the length is set to 0. - -1. Change. RSS 1.0 feeds use URI/Link for unique ID (rdf:about). - RSS 1.0 specification recommends that the rdf:about attribute URI use the value of the item's link element, though this could be different if the user chooses to override it by specifying their own URI. RSS 1.0 feeds now use the URI if specified, otherwise the link for the item. - -1. Fix. toString() was reporting NullPointerException with List properties - When a List (or Map) property had a NULL element the toString() logic was failing partially due to a NullPointerException. - -1. Fix. DC creator elements were being lost when converting to SyndFeed - DC creator elements were being lost when converting to SyndFeed. This was happening with RSS versions that have native author elements (0.94 and 2.0) and for the managingEditor element at channel level (available in 0.91 Userland and onwards). - -1. Change. Date and enumeration elements are trimmed during parsing - There are some feeds that add whitespaces or carriage return characters before or after the proper date or enumeration value. This was causing ROME to fail processing those elements. This is taken care now as all dates elements in all feed types and Modules and the 'channel.skipHours.hour' and 'channel.skipDays.day' (RSS0.91 \- RSS2.0) are trimmed before parsing and setting their values in the beans. - -1. Fix. SyndFeed description now maps to atom:tagline - Previously, atom:info was being mapped to the feed's description. According to the Atom03 spec atom:info should be ignored by parsers, and the more appropriate element is atom:tagline. - -1. Fix. RSS cloud is now generated/parsed correctly - The 'path' attribute from the cloud was not being generated/parsed. The parser now process all cloud attributes and set the cloud to the channel. - -1. Fix. RFC\-822 2 digit years - Previously RFC\-822 dates did not work correctly with 2 digit years. This is now fixed. - -1. Fix. No alternate link causes IndexOutOfBoundsException - Fix bug where no alternate link causes IndexOutOfBoundsException in ConverterForAtom03 (Thanks to Joseph Van Valen). - -1. Change. Date parsing attemps RFC822 on W3C parsing on all feeds - All feed parsers (RSS and Atom) now attemp both RFC822 and W3C parsing on date values. - -1. Fix. XmlFixerReader removes character from stream when parsing an entity that contains an invalid character - Fix bug in XmlFixerReader where an invalid entity such as "&ent\=", gets put back on the stream without the last character (in this example, "&ent\=" becomes "&ent"). This was most visible when the XmlFixerReader encountered an URL with a query string that has more than one parameter (e.g. [http://www.url.com/index.html?qp1\=1&qp2\=2](http://www.url.com/index.html?qp1=1&qp2=2)) \-\- all "\=" after the first one would disappear. - -1. Change. DateParser can use additional custom datetime masks - Besides attempting to parse datetime values in W3C and RFC822 formats additional datetime masks can be specified in the /rome.properties files using the 'datetime.extra.masks' property. To indicate multiple masks the '|' character must be used, all other characters are considered part of the mask. As with parser/generators/converter plugins the masks are read from all /rome.properties file in the classpath. - - -## Changes made from v0.5 to v0.6 - - - -1. Fix. W3C date\-time parsing now handles date\-time with 'Z' modifier - The W3C date\-time parser was not parsing times using the UTC modifier 'Z'. - -1. Fix. XML prolog encoding parsing was failing when other attributes where present in the prolog - If there was an attribute following the encoding attribute the value of the encoding attribute was misinterpreted. For example, for the XML prolog the detected encoding was **_UTF\-8" standalone\="yes_** instead of **_UTF\-8_**. - -1. Change. XmlReader lenient behavior gives priority to XML prolog encoding over content\-type charset - In ROME 0.5 the XmlReader first attempts to do a strict charset encoding detection. Only if the strict detection fails it attempts a lenient detection. When the HTTP Content\-Type header is of type **_text/\*xml_** and the header does not specify any charset, RFC 3023 mandates that the charset encoding must be **_US\-ASCII_**. It's a common error for sites to use the **_text/\*xml_** MIME type without charset information and indicate the charset encoding in the XML prolog of the document, being the charset encoding in the XML prolog different from **_US\-ASCII_**. The XmlReader lenient behavior has been modified to give precedence to the XML prolog charset encoding, if present, over the HTTP Content\-Type charset encoding. - -1. Addition. XML Healer - ROME parsers, SyndFeedInput and WireFeedInput, have a new feature, XML healing. - The XML healing trims the beginning of the XML text document if there are whitespaces, enters or XML comments before the XML prolog or the root element. It also replaces all HTML literal entities occurrences with coded entities. These changes convert feeds technically invalid (from the XML specification perspective) into valid ones allowing the SAX XML parser to successfully parse the XML if there are not other errors in it. - This behavior is active by default. It can be turned on and off using the new 'xmlHealerOn' property in the SyndFeedInput and WireFeedInput classes. - The idea for this feature was taken from the FeedFilter from Jakarta's commons feedparser. - -1. Addition. The XML prolog of generated feeds contains the feed encoding - ROME generators were creating feeds with the XML prolog encoding always set to 'UTF\-8', if the given Writer had another charset encoding things would break for anybody consuming the feed (a mismatch between the char stream charset and what the XML doc says). - The SyndFeedOutput and WireFeedOutput generators now use the SyndFeed and WireFeed 'encoding' property to set the 'encoding' attribute in the XML prolog of the generated feeds. It is the responsibility of the developer to ensure that if the String is written to a character stream the stream charset is the same as the feed encoding property. - -1. Change. SyndFeed to Atom convertion now uses 'escaped' mode for content elements - SyndFeed to Atom converter was using 'xml' mode for content elements. This was breaking feeds with content that was not propertly escaped as it was assumed to be XML fragments. - -1. Change. RSS 2.0 parser and generator now handles DC Module - ROME configuration has been changed so RSS 2.0 parser and generator handle DC Module elements at channel level and item level. - -1. Fix. RSS0.93, RSS0.94 and RSS2.0 'dc:date' element value was being lost under certain conditions - If a feed had 'dc:date' elements but not 'pubDate' elements, the 'dc:date' elements where lost when converting from Channel to SyndFeed. - This was happening for 'dc:date' elements at channel level and at item level. - -1. Fix. RSS 1.0 'rdf:resource' and 'rdf:about' item linking attributes use a unique ID now - The value for the 'rdf:resource' and 'rdf:about' linking attributes was done using the value of the 'link' element. If there is more than one item with the same link the generated feed will be incorrect. - Instead using the link value now the index of the item is used for the linkage between 'rdf:resource' and 'rdf:about' for items. - -1. Fix/Change. Parsing and setting of enumerated elements is case insentive now - Parsing and bean setting of enumerated values (such as RSS skipDay, Atom content mode, etc) are now case insentive, generation is strict (Postel Law). - -1. Fix. Remove enumeration check on 'rel' attribute of Atom link elements - Because a misunderstanding of Atom 0.3 specification the Atom Link bean was checking the value of the 'rel' property against a set of valid values. The check has been removed. - -1. Fix. DC subjects (in RSS versions with native categories) were being lost on conversion to SyndFeed - All RSS versions with native categories (at both channel and item level) now have the following behavior when converting to SyndFeed. - DC subjects are converted to SyndCategories. Native categories are converted to SyndCategories. They are both aggregated in a Set (to remove duplicates) then added to the SyndFeed. - When doing a SyndFeed to Channel conversion, if the RSS version has native categories and handles DC modules the categories will be duplicated as native and DC ones. - -1. Fix/Change. RSS 1.0 rdf:about attribute in the channel. - RSS 1.0 uses the rdf:about attribute at the channel level as an identifier. This was not being parsed or generated (only supported at the item level). Support for this was added along with test cases. - -1. Fix/Change/Addition. Multivalued Dublin Core element support. - Many feeds are using multiple DC elements to tag metadata, the interface for the DCModule has been changed to support Lists of elements, compatibility has been maintained with the existing interface though as the new methods are plural (creators vs. creator), the single value methods will remain as convenience methods. The implementation now uses the lists to represent all of the elements. The parser/generator modules for DC have been updated to reflect these changes along with a few other code cleanups in the DC\* modules. - -1. Fix. Removed length constraint checks from RSS1.0 generator - RSS1.0 specification does not require, only suggests, maximum length for some of the elements. ROME was enforcing those lenghts when generating RSS1.0 feeds. This enforcement has been removed becuase is not mandatory. - - -## Changes made from v0.4 to v0.5 - - - -1. Change. Got rid of Enum class - All constants in the beans are Strings now, the corresponding property setters check that the value being set is one of the valid constants. Rome has not business defining an Enum class. - -1. Change. Got rid of ToString interface - This is just an implementation convenience, it was polluting Rome API. Modified ToStringBean to work without requiring an interface and method to propagate the prefix to use with properties. - -1. Change. ObjectBean, ToStringBean, EqualsBean are not part of the public API anymore - These are just an implementation convenience, they were polluting Rome API. Rome bean implementations don't extends ObjectBean anymore. Instead they use it in a delegation pattern. While these classes are not public anymore they are part of Rome implementation. - -1. Change. CopyFrom interface moved to com.sun.syndication.feed package - The common package is gone now that the \*Bean classes are not there anymore. No point keeping a package just for an interface. - -1. Fix. PluginManager was not doing plugin lookup in the defined order - PluginManager (manages parsers, generators and convertors for feeds and modules) was not doing the lookup in order the plugins are defined in the rome.properties files. This is needed for parsers where the lookup involves detecting the feed type and the feed type detection goes needs to go from stronger to weaker. - -1. Addition. Rome now recognizes RSS 2.0 feeds with 'http://backend.userland.com/rss2' namespace - These namespace was defined by an RSS 2.0 draft and later was dropped. There are feeds out there using this namespace and Rome was not parsing them. - -1. Change. By default XmlReader does a lenient charset encoding detection. - If the charset encoding cannot be determined per HTTP MIME and XML specifications the following relaxed detection is performed: If the content type is 'text/html' it replaces it with 'text/xml' and tries the per specifications detection again. Else if the XML prolog had a charset encoding that encoding is used. Else if the content type had a charset encoding that encoding is used. Else 'UTF\-8' is used. - There are 2 new constructors that take a lenient flag to allow strict charset encoding detection. If scrict charset encoding detection is performed and it fails an XmlReaderException is thrown by the constructor. The XmlReaderException contains all the charset encoding information gathered from the stream including the unconsumed stream. - - -## Changes made from v0.3 to v0.4 - - - -1. Fix. Date elements on generated feeds use the right format now - There were some Date elements in Atom 0.3, DCModule, SyModule, RSS 0.91 and RSS 0.93 that were incorrectly formating the date \[they were just doing a toString() \]. Now they use the RFC822 and W3C format as indicated in their specs. - -1. Fix. SyndFeed and SyndEntry getModule(DCModule.URI) method always returns a DCModule, never null - This issue is related to Fix #19 in v0.3. The DCModule is 'special' for Synd\*, it must always be there. If it is not, it is created implicitly when needed. This was not happening when asking explicitly for the DCModule through the Synd\* interfaces. - -1. Addition. Added ParseFeedException to the \*Input classes - This new exception report the line and column number in the XML document where the parsing has failed. - -1. Change. Renamed '\*I' interfaces to just '\*' and default implementations to '\*Impl' - The Synd\* and Module interfaces/classes were affected. For example the interface that used to be SyndFeedI is now SyndFeed and the class that used to be SyndFeed is now SyndFeedImpl. - -1. Change. Ant 'build.xml' files have been improved - The build.xml were re\-written instead just using the Maven generated ones. - -1. Fix. DateParser now uses lenient parsing so as to work with JDK 1.5 - DateParser currently setLenient to false. This does not work with JDK 1.5. Changing the DateParser to setLient to true. - -1. Change. SyndCategoryListFacade is not a public class anymore - It's now a package private class (it should have been like that in the first place). - -1. Addition. Added a protected constructor to the Synd\*Impl classes - This constructor takes a Class parameter. It allows implementations extending SyndContentImpl to be able to use the ObjectBean functionality with extended interfaces (additional public properties). Use case: Hibernate beans that have an 'Id' Long property, a new interface HSynd\* (extending Synd\*) and a new implementation HSynd\*Impl (extending Synd\*Impl) where the clone(), equals(), hashCode() and toString() methods take the properties of the extension into account. - -1. Project layout change. Moved samples project to subprojects dir - The 'samples' project was moved from 'rome/modules/samples' to 'rome/subprojects/samples'. The 'rome/modules' project is left for Module subprojects only. - -1. Fix. Plugin manager bug didn't allow custom plugins to replace core plugins - All plugins are in a Map keyed off by its type (parsers, generators, converters) or URI (modules). There is also a helper List containing the plugins, this list is scanned when looking for a plugin (for example when selecting the right parser). Plugins were added to the List without checking if another element in the List was using the same key. Now the List is built using the Map values, thus the overwriting works fine. - -1. Fix. RSS 2.0 Converter (Wire \-\> Synd \- Wire) was not processing modules - The RSS 2.0 Converter now processes feed and entry modules both ways. - -1. Fix. New properties introspection mechanism in common classes - The java.beans.Introspector does not work as expected on interface properties (it doesn't scan properties of the super interfaces). Now, a private implementation of a properties introspector is used by the common bean classes. - -1. Change. Refactored private CopyFrom helper class - It was com.sun.syndication.feed.synd.impl.SyndCopyFrom now it is com.sun.syndication.common.impl.CopyFromHelper. - -1. Fix. RSS2.0 Wire\-Synd converter handles propertly RSS and DC categories - If the RSS2.0 feed had DC Module categories (subjects) this would override the RSS native categories. Now they are aggregated. - -1. Change/Fix. CloneableBean can take an ignore\-properties set - This change is useful for bean that have convenience properties mapping to other properties. SyndFeed and SyndEntry that map some of its properties (ie publishedDate, author, categories) to DC Module properties. There is not point cloning the convenience ones as they are just facades. - This fixes a SyndFeedImpl cloning problem with the categories. There is a package private list for the categories to DC subject mapping. The problem was related to accesibility of this package private list implementation by the CloneableBean. The change enables the blacklisting of certain properties (in this categories) when cloning. - -1. Change. Refactored Parsers/Generator classes - Introduced a base parser and base generator to handle modules. For the feed types that define modules support, the modules have to be defined the rome.properties file. For RSS 1.0 and Atom 0.3 Dublin Core and Syndication modules are defined, the first one at feed and entry level the second one at feed level. Note this was already done but hardwired in the specific feed type parsers and generators, now it is done in the base parser and base generator. Some code clean up and removal of duplicated code was also done. - -1. Change. Defined and implemented precedence order for native and module elements in feeds - For feeds supporting modules, some of the module defines elements collide with the feed native elements (this depends on the feed type, and it may affect the data such as publish\-date, author, copyright, categories). The SyndFeed and SyndEntry properties documented as convenience properties are (can be) affected. The convenience properties map into DC Module properties. - Rome now defines precedence of feed native elements over module elements when converting from WireFeed to SyndFeed. This is, in the situation of a clash, the native element data prevails and the the module element data is lost. - When converting from SyndFeed to WireFeed, if a SyndFeed convenience property has a native mapping in the target feed type it will be in both the native element and the DC Module element if the feed type defines support for the DC module. The data will appear twice in the feed, in the native elements and in the DC module elements. - -1. Change. Module namespaces are defined at root element - Module namespaces are always defined in the root element. The ModuleGenerator interface has a new method that returns all the namespaces used by the module, the generators use the namespaces returned by this method to inject them in the feed root element. - -1. Change/Fix. Test cases refactoring - Some refactoring in the test cases for the Synd\* entities. Some minor bugs (typos in constants) were found and fixed in the parsers. - The Ops and Synd tests are 100% complete. Not that they test 100% of Rome functionality but 100% of what they suppose to test. - -1. Fix. Atom 0.3 content elements with XML mode were not being parsed and converted properly - When mode is XML, free text was not being processed, only sub\-elements were being processed. - The Parser when parsing content with XML mode skips Atom namespace in the output of the processed fragment. - The Converter when going down pushes content data using XML mode, which is Atom's default (it was ESCAPED before). - -1. Addition. Constraints in data length and number of items are observed by RSS generators - As part of the generators refactoring the generators now verify the data in the Rome beans does not generate invalid feeds. - -1. Addition. New XmlReader that detects charset encoding - The XmlReader class handles the charset encoding of XML documents in Files, raw streams and HTTP streams. It following the rules defined by HTTP, MIME types and XML specifications. All this is nicely explained by Mark Pilgrim in his blog, [http://diveintomark.org/archives/2004/02/13/xml\-media\-types](http://diveintomark.org/archives/2004/02/13/xml-media-types) - -1. Rome now uses JDOM 1.0 - Dependencies have been updated to use JDOM 1.0. No code changes were needed because of this. - -1. Change. The length property in the RSS Enclosure bean is now a long - It used to be an int, but as it is meant to specify arbitrary lengths (in could be in the order of several megabytes) it was changed to be a long. - -1. Addition. SyndFeed and SyndEntry beans have a 'uri' property - It is used with RSS0.94 & RSS2.0 guid elements and with Atom0.3 id elements. Refer to [Feed and entry URI Mapping](RomeV0.4FeedAndEntryURIMapping.html) for a full explanation. - -1. Addition. New sample, FeedServlet - Added a new sample, FeedServlet. This servlet creates a feed and returns a feed. - -1. Change. RSS0.91 Userland and RSS0.91 Netscape are handled as different feed types - Instead having a single set of parser/converter/generator implementations there is one set for each one of them. This allows to differenciate incoming RSS0.91 Userland feeds from RSS0.91 Netscape feeds as well as choosing which one to generate. - - -## Changes made from v0.2 to v0.3 - - - -1. Changed loading mechanism for parsers, generators and converters - Previous mechanism was complicated and it wouldn't work in server environments where you cannot alter System properties at will. - Now there are no properties to set. Just including a rome.properties file in the root of a JAR file will make Rome to load any parser, generator or converter defined in the properties file and included in the JAR file (To be documented). - -1. Added Modules support to RSS 2.0 parser and generator - We were only looking for modules in RSS 1.0 and Atom 0.3. Now we also look in RSS 2.0. - -1. Modules parsers and generators are now per feed type - They were global, now each feed type parser and generator has it's own set of modules parsers and generators. They are configurable in the rome.properties file. - -1. All parsers, generators and converters are loaded once per definition - There were some cases we were loading them on every WireFeedParser/WireFeedGenerator instantiation. As they are all thread\-safe we just use one instance. - -1. Changed some implementation (hidden) class names - Some typos corrections and adding consistency to the naming. - -1. Added Fetcher module - Added a HTTP fetcher with conditional get and gzip support (See modules/fetcher) - -1. Modified the samples module build to fix error - Previouly some people were having a maven error trying to run some of the samples. This should now be fixed - -1. Removed methods with byte stream signatures from Rome IO classes - They have no way to know what the encoding is or has to be and they are using the platform default. That does not always work, for example when doing HTTP where the default is ISO\-8859\-1. - Leaving the char streams one and let the developer to do the right thing (Rome cannot do any magic here). - -1. Added getModule(String uri) to SyndFeedI, Atom Feed and RSS Channel - There was not way to obtain a specific module using the module URI, you had to obtain the module list and iterate looking for the module. The getModule(string uri) is a convenience method in all the feed beans to do that. - -1. New. Added 'encoding' property to WireFeed and SyndFeedI/SyndFeed - Impact: It affects RSS, Atom and SyndFeed syndication beans. - It's not being set or use by parsers and generators as they always deal with a char strean where the charset is already set. - The converters, going from Channel/Feed 2 SyndFeed and vice versa are wired to pass the encoding if set. - -1. Fix. CloneableBean array cloning bug - Impact: It affects all Rome beans as they all extend ObjectBean that uses CloneableBean - Arrays were not being cloned but copy by reference. This was affecting all Rome beans as they all extend ObjectBean. - -1. Change. CloneableBean, Basic (primitives & string) types not cloned anymore - Impact: It affects all Rome beans as they all extend ObjectBean that uses CloneableBean - Basic types are inmutable, no need to clone them. As things are done using reflection there were unnecessary objects creation. - -1. Change. CloneableBean, added Date to list of Basic types - Impact: It affects all Rome beans as they all extend ObjectBean that uses CloneableBean - Same reasoning as #12 - -1. Change/Fix. EqualsBeans, works on defined class - Impact: It affects all Rome beans as they all extend ObjectBean, which uses EqualsBean - EqualsBean checks for equality by comparing all properties. Until now it was doing this using all properties of the class implementing the bean. This behavior is not correct as implementations may have other properties than the defined in the public interface (and example is: a SyndFeedI implementation for Hibernate that has to have an ID field, and this would apply to all bean interfaces). - Because of this change, both EqualsBean and ObjectBean take a Class parameter in the constructor. Equals will limit the comparison for equality to the properties of that class. If there is not interface for the bean, just the bean implementation (this is the case of Channel and Feed), the implementation Class is passed - -1. Change/Fix. ToStringBean, works on defined class - Same as #14 but on ToStringBean instead EqualsBean - -1. New. Added copyFrom functionality to synd.\* and module.\* beans - Impact: It affect all synd.\* and module.\* beans and other classes that extend ObjectBean. - A new interface 'CopyFrom' has been added to commons. - synd.\* and module.\* bean interfaces implement this interface and their implementations implement the copyFrom functionality. - The copyFrom functionality allows copying a complete bean feed from one implementation to another. The obvious use case is from the default bean implementation to a persistent aware (ie Hibernate) implementation. - The implementation uses the same pattern used by EqualsBean, ConeableBean, it's in the synd.impl.\* package, the supporting class is call SyndCopyFrom. - Note that SyndCategories does not support the copyFrom functionality as it's just a convenience way of accessing DCModule's subjects (where DCModule supports copyFrom). The short explanation is that categories still work and are there after a copyFrom. - -1. Fix. WireFeed constructor was passing the WireFeed.class to ObjectBean - rss.Channel, atom.Feed & WeatherChannel constructor implementations only, no change to their signatures. - The class is used for property scanning for toString, equals behavior of the ObjectBean. - -1. Fix. copyFrom was failing with Enum properties - It was not possible to do a copyFrom on a feed with SyModule data as it had Enum properties. - Wrong comparison of classes when checking basic types, in the case of enumeration classes has to check it extends Enum not equality. - -1. Fix. SyndFeed and SyndEntry where losing Modules - If they had modules other than DCModule they were being dropped when accessing convenience methods (getCategories, getLanguage, etc). - The Synd\* convenience methods just map to the DCModule properties. If there is no DCModule a new one is created if needed. When this happened instead bean added to the list of current modules a new list with just the DCModule was being set. - -1. New Sample and tutorial for creating a feed - A new sample and tutorial that creates and writes a feed has been added. - -1. New Sample showing how to add a Module bean, parser and generator to Rome - This sample defines a dummy module for use with RSS 1.0 (it can work also with RSS 2.0 and Atom 0.3). Still have to write tutorial - -1. Undoing change #13 as Date is not inmutable - The Date class is not inmutable, CloneableBean now clones Date properties. - - -## Changes made from v0.1 to v0.2 - - - -1. FeedInput, added default constructor. Semantics is 'validation off' - We forgot to added it when it was added to SyndFeed. - NOTE that validation is not implemented yet. We need DTDs/XML\-Schemas for the different feed syndication types. - -1. FeedOutput and SyndOutput outputW3CDom() method typo correction - Fixed typo in outputW3CDom() method, it was ouptutW3CDom(). - -1. AbstractFeed, renamed to WireFeed - Never liked Abstract in the name. From Java inheritance it makes sense, but from the syndication feed perspective doesn't. It's the super class of the 2 wire feed beans Rome has, RSS Channel and Atom Feed. - -1. Renamed SyndFeed createRealFeed(feedType) method to createWireFeed(feedType) - For consistency with change #3 - -1. SyndFeed, added feedType property - Read/write property. It indicates what was the feed type of the WireFeed the SyndFeed was created from. And the feed type a WireFeed created with createWireFeed() will have. - -1. WireFeed, renamed type property to feedType - For consistency with #5. Also it's more clear what the type is about. - -1. Overloaded SyndFeed createRealFeed() with a no parameter signature - -1. FeedOutput, removed feed type from constructor - It now uses the WireFeed feedType property. - -1. SyndOutput, removed feed type from constructor - It now uses the SyndFeed feedType property define in #5. - -1. FeedOutput, removed getType() method - Now FeedOutput uses the WireFeed feedType property. - -1. Removed dependency on Jakarta Commons Codec library - We were using the Codec component to do Base64 encoding/decoding. Based on feedback to reduce component depencies we've removed this one (yes, we implemented a Base64 encoder/decoder). - -1. Removed dependency on Xerces library - This was an unnecessary dependency as Rome requeries JDK 1.4\+ which includes JAXP implementation. JDOM can use that one. - -1. Renamed syndication.io classes/interfaces - Renaming for naming consistency and to reflect on what type of feed they work on. - -``` - -FeedInput --> WireFeedInput -FeedOutput --> WireFeedOutput -FeedParser --> WireFeedParser -FeedGenerator --> WireFeedGenerator -SyndInput --> SyndFeedInput -SyndOutput --> SyndFeedOutputt - -``` - - -1. Removed syndication.util package, PlugableClasses is now private - The PlugableClasses class has no business in Rome public API, it's implementation specific, it has been hidden (it should be replaced later with a micro\-container). - -1. Added samples to the Rome project directory structure - Rome samples are a sub\-project located at rome/modules/sample. - diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md deleted file mode 100644 index b8ca2b4..0000000 --- a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.md +++ /dev/null @@ -1,384 +0,0 @@ -# Rome v0.4 Tutorial, Defining a Custom Module (bean, parser and generator) - - -**Software requirements:** Synd J2SE 1.4\+, JDOM 1.0 and Rome 0.4. - - - -This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). - - - -To understand this tutorial you should be familiar the with Rome API and with the use of modules in syndication feeds. - - - -Out of the box Rome parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. - - - -The complete source for this tutorial is in the Rome samples bundle as well as in SVN. - - -## What is the intended outcome of the tutorial? - - - -The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. - - - -The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: - - - -``` - - - - - RSS 1.0 Feed with Sample Module - http://rome.dev.java.net - This is a feed showing how to use a custom module with Rome - - - - - - - Channel bar - Channel first foo - Channel second foo - - - Title of Item 01 - http://rome.dev.java.net/item01 - Item 01 does not have Sample module data - - - Title of Item 02 - http://rome.dev.java.net/item02 - Item 02 has Sample module data - Item 02 bar - Item 02 only foo - 2004-07-27T00:00+00:00 - - - -``` - -## Sample Module Bean - - - -First we must start with the bean interface, SampleModule. SampleModule must extend Module. The Module interface defines the getUri() method, which will return a URI identifying the module. The Module interface also extends the Cloneable, ToString and CopyFrom interfaces to ensure that the beans provide support for basic features as cloning, equality, toString, etc. (for more details on this check the [Understanding the Rome common classes and interfaces](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common) document). - - - -The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. - - - -Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). - - - -``` - -public interface SampleModule extends Module,CopyFrom { - - public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; - - public String getBar(); - public void setBar(String bar); - - public List getFoos(); - public void setFoos(List foos); - - public Date getDate(); - public void setDate(Date date); -} - -``` - - -Next we have to write the bean implementation, SampleModuleImpl. - - - -SampleModuleImpl extends ModuleImpl. ModuleImpl is the default implementation of the \=\=Module interface. ModuleImpl extends ObjectBean which provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModule). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. - - - -``` - -public class SampleModuleImpl extends ModuleImpl implements SampleModule { - ... - public SampleModule() { - super(SampleModule.class,SampleModule.URI); - } - - public String getBar() { - return _bar; - } - ... - -``` - - -The module properties are just Java Bean properties. The only catch is to follow Rome semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned.. Also, following Rome semantics, all properties are by reference, including mutable ones. - - - -``` - -public class SampleModuleImpl extends ModuleImpl implements SampleModule { - private String _bar; - private List _foos; - private Date _date; - ... - public void setBar(String bar) { - _bar = bar; - } - - public List getFoos() { - return (_foos==null) ? (_foos=new ArrayList()) : _foos; - } - - public void setFoos(List foos) { - _foos = foos; - } - - public Date getDate() { - return _date; - } - - public void setDate(Date date) { - _date = date; - } - -``` - - -Now the weird part: the bits for the CopyFrom logic. The [Understanding the Rome common classes and interfaces](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common) document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. - - - -The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). - - - -The copyFrom() method copies all the properties from the parameter object (which must be a SampleModule implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. - - - -``` - -public class SampleModuleImpl extends ModuleImpl implements SampleModule { - ... - public Class getInterface() { - return SampleModuleI.class; - } - - public void copyFrom(Object obj) { - SampleModule sm = (SampleModule) obj; - setBar(sm.getBar()); - List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) - setFoos(foos); - setDate((Date)sm.getDate().clone()); // because Date is not inmutable. - } - -} - -``` - -## Sample Module Parser - - - -The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. - - - -The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. - - - -In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. - - - -If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. - - - -``` - -public class SampleModuleParser implements ModuleParser { - - private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); - - public String getNamespaceUri() { - return SampleModule.URI; - } - - public Module parse(Element dcRoot) { - boolean foundSomething = false; - SampleModule fm = new SampleModuleImpl(); - - Element e = dcRoot.getChild("bar", SAMPLE_NS); - if (e != null) { - foundSomething = true; - fm.setBar(e.getText()); - } - List eList = dcRoot.getChildren("foo", SAMPLE_NS); - if (eList.size() > 0) { - foundSomething = true; - fm.setFoos(parseFoos(eList)); - } - e = dcRoot.getChild("date", SAMPLE_NS); - if (e != null) { - foundSomething = true; - fm.setDate(DateParser.parseW3CDateTime(e.getText())); - } - return (foundSomething) ? fm : null; - } - - private List parseFoos(List eList) { - List foos = new ArrayList(); - for (int i = 0; i < eList.size(); i++) { - Element e = (Element) eList.get(i); - foos.add(e.getText()); - } - return foos; - } - -} - -``` - -## Sample Module Generator - - - -The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. - - - -The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. The set of namespaces returned by the getNamespaces() method will be used to declare the namespaces used by the module in the feed root element. - - - -If no Sample Module bean is in the feed bean the module generator is not invoked at all. - - - -``` - -public class SampleModuleGenerator implements ModuleGenerator { - private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); - - public String getNamespaceUri() { - return SampleModule.URI; - } - - private static final Set NAMESPACES; - - static { - Set nss = new HashSet(); - nss.add(SAMPLE_NS); - NAMESPACES = Collections.unmodifiableSet(nss); - } - - public Set getNamespaceUris() { - return NAMESPACES; - } - - public void generate(Module module, Element element) { - - // this is not necessary, it is done to avoid the namespace definition in every item. - Element root = element; - while (root.getParent()!=null && root.getParent() instanceof Element) { - root = (Element) element.getParent(); - } - root.addNamespaceDeclaration(SAMPLE_NS); - - SampleModuleI fm = (SampleModule)module; - if (fm.getBar() != null) { - element.addContent(generateSimpleElement("bar", fm.getBar())); - } - List foos = fm.getFoos(); - for (int i = 0; i < foos.size(); i++) { - element.addContent(generateSimpleElement("foo",foos.get(i).toString())); - } - if (fm.getDate() != null) { - element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate()))); - } - } - - protected Element generateSimpleElement(String name, String value) { - Element element = new Element(name, SAMPLE_NS); - element.addContent(value); - return element; - } - -} - -``` - -## Configuration to make Rome process Sample Module in feeds - - - -The last step is to setup the configuration file to indicate to Rome how and when to use the Sample Module parser and generator. - - - -The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. - - - -You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. - - - -Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. - - - -``` - -# Parsers for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser - -# Parsers for RSS 1.0 item modules -# -rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser - -# Generators for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator - -# Generators for RSS_1.0 entry modules -# -rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator - -``` - - -If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. - - -## Using the Sample Module from the SyndFeed beans - - - -They will be there, just use them. You may get the SampleModule bean using the getModule(String Uri) method of the SyndFeed bean and the SyndEntry bean. - - - -Adding or replacing a syndication feed parser, generator or converter goes along the same lines of what it has been explained in the tutorial for modules. This is explained in the [Rome Plugins Mechanism](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Plugins) topic. - diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md deleted file mode 100644 index c4dfdde..0000000 --- a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md +++ /dev/null @@ -1,147 +0,0 @@ -# Rome v0.4 Tutorial, Using Rome to aggregate many syndication feeds into a single one - - -**Software requirements:** J2SE 1.4\+, JDOM 1.0 and Rome 0.4. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed feed = input.build(new XmlReader(feedUrl)); - -``` - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. - - - -Rome also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: - - - -``` - -SyndFeedOutput output = new SyndFeedOutput(); -output.output(feed,new PrintWriter(System.out)); - -``` - - -The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. - - - -SyndFeed instances can also be created and populated within the code. For example: - - - -``` - -SyndFeed aggrFeed = new SyndFeedImpl(); -aggrFeed.setFeedType("rss_1.0"); -aggrFeed.setTitle("Aggregated Feed"); -aggrFeed.setDescription("Anonymous Aggregated Feed"); -aggrFeed.setAuthor("anonymous"); -aggrFeed.setLink("http://www.anonymous.com"); - -``` - - -The snipped of code above creates a SyndFeed instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. - - - -SyndFeed properties can be modified, assigned to other SyndFeed instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeed properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeed property you are altering the SyndFeed. Or, another example, if you assign the list of entries of one SyndFeed instance to another SyndFeed isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeed instances. - - - -The following lines of code show how to copy the entries of a SyndFeed instance being read (inFeed) into a SyndFeed instance being created within the application (feed): - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.util.List; -import java.util.ArrayList; - -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.feed.synd.SyndFeedImpl; -import com.sun.syndication.io.SyndFeedOutput; -import com.sun.syndication.io.SyndFeedInput; -import com.sun.syndication.io.XmlReader; - -/** - * It aggregates a list of RSS/Atom feeds (they can be of different types) - * into a single feed of the specified type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedAggregator { - - public static void main(String[] args) { - boolean ok = false; - if (args.length>=2) { - try { - String outputType = args[0]; - - SyndFeed feed = new SyndFeedImpl(); - feed.setFeedType(outputType); - - feed.setTitle("Aggregated Feed"); - feed.setDescription("Anonymous Aggregated Feed"); - feed.setAuthor("anonymous"); - feed.setLink("http://www.anonymous.com"); - - List entries = new ArrayList(); - feed.setEntries(entries); - - for (int i=1;i - * @author Alejandro Abdelnur - * - */ -public class FeedConverter { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String outputType = args[0]; - - URL feedUrl = new URL(args[1]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeed feed = input.build(new XmlReader(feedUrl)); - feed.setFeedType(outputType); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,new PrintWriter(System.out)); - - ok = true; - } - catch (Exception ex) { - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedConverter converts between syndication feeds types."); - System.out.println("The first parameter must be the feed type to convert to."); - System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); - System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); - System.out.println("The second parameter must be the URL of the feed to convert."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md deleted file mode 100644 index 018553a..0000000 --- a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.md +++ /dev/null @@ -1,205 +0,0 @@ -# Rome v0.4 Tutorial, Using Rome to create and write a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM 1.0 and Rome 0.4. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.feed.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Creating a feed with SyndFeed beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeed bean with 3 entries is created. - - - -First the SyndFeed instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. - - - -``` - - SyndFeed feed = new SyndFeedImpl(); - feed.setFeedType(feedType); - - feed.setTitle("Sample Feed (created with Rome)"); - feed.setLink("http://rome.dev.java.net"); - feed.setDescription("This feed has been created using Rome (Java syndication utilities"); - -``` - - -Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. - - - -``` - - List entries = new ArrayList(); - SyndEntry entry; - SyndContent description; - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v1.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Initial release of Rome"); - entry.setDescription(description); - entries.add(entry); - ... - entry = new SyndEntryImpl(); - entry.setTitle("Rome v3.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); - entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log

"); - entry.setDescription(description); - entries.add(entry); - -``` - - -Finally the list with entries is added to the SyndFeed bean. - - - -``` - - feed.setEntries(entries); - -``` - - -The SyndFeed bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. - - - -Rome includes generators that allow producing syndication feed XML documents from SyndFeed instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeed bean. All it takes to write a syndication feed XML document using Rome \-assuming you have a SyndFeed bean and a Writer instance\- are the following lines of code: - - - -``` - - SyndFeed feed = ...; - Writer writer = ...; - - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,writer); - -``` - - -First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeed bean to the Writer stream. - - - -Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. - - - -``` - -package com.sun.syndication.samples; - -import com.sun.syndication.feed.synd.*; -import com.sun.syndication.io.SyndFeedOutput; - -import java.io.FileWriter; -import java.io.Writer; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -/** - * It creates a feed and writes it to a file. - *

- * - */ -public class FeedWriter { - - private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String feedType = args[0]; - String fileName = args[1]; - - SyndFeed feed = new SyndFeedImpl(); - feed.setFeedType(feedType); - - feed.setTitle("Sample Feed (created with Rome)"); - feed.setLink("http://rome.dev.java.net"); - feed.setDescription("This feed has been created using Rome (Java syndication utilities"); - - List entries = new ArrayList(); - SyndEntry entry; - SyndContent description; - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v1.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Initial release of Rome"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v2.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Bug fixes, minor API changes and some new features"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v3.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); - entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log

"); - entry.setDescription(description); - entries.add(entry); - - feed.setEntries(entries); - - Writer writer = new FileWriter(fileName); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,writer); - writer.close(); - - System.out.println("The feed has been written to the file ["+fileName+"]"); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); - System.out.println("The first parameter must be the syndication format for the feed"); - System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); - System.out.println("The second parameter must be the file name for the feed"); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md b/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md deleted file mode 100644 index 2a4ae9c..0000000 --- a/src/site/markdown/rome/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.md +++ /dev/null @@ -1,90 +0,0 @@ -# Rome v0.4 Tutorial, Using Rome to read a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM 1.0 and Rome 0.4. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed feed = input.build(new XmlReader(feedUrl)); - -``` - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. - - - -The default SyndFeed implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. - - - -``` - -System.out.println(feed); - -``` - - -Following is the full code for a Java application that reads a syndication feed and prints the SyndFeed bean to the application's output. - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.io.InputStreamReader; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.io.SyndFeedInput; -import com.sun.syndication.io.XmlReader; - -/** - * It Reads and prints any RSS/Atom feed type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedReader { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==1) { - try { - URL feedUrl = new URL(args[0]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeed feed = input.build(new XmlReader(feedUrl)); - - System.out.println(feed); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedReader reads and prints any RSS/Atom feed type."); - System.out.println("The first parameter must be the URL of the feed to read."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md b/src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md deleted file mode 100644 index 829630d..0000000 --- a/src/site/markdown/rome/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.md +++ /dev/null @@ -1,374 +0,0 @@ -# Understanding the Rome common classes and interfaces - - -The Rome common package contains a set of Java classes that provide support for all the basic features Java Beans commonly must have: toString, equals, hashcode and cloning. There is also a simple enumeration base class (missing Java 5.0 already). - - - -By implementing or extending the common classes and interfaces Beans don't have to hand code these functions. This greatly simplifies things when Beans have several properties, collection properties and composite properties. - - - -The common classes use Java Bean instrospection on the properties of the classes extending and using them. This is done recursively on all properties. - - - -All Rome Beans (interfaces and default implementations) leverage and use these classes and interfaces defined in the common package. - - - -Ideally all this classes and interface should be part of a general component outside of Rome as they are not syndication specific (something like a commons\-bean component if we use Jakarta Commons naming). They cannot be hidden in an implementation package as Rome public API uses them. - - -## ToString and ToStringBean - - - -Beans implementing the ToString interface must implement the toString(String prefix) method. This method must print the bean properties names and values, one per per line, separating the name and value with an '\=' sign and prefixing the name with the given prefix parameter using the same notation used in the JSP expression language used in JSTL and in JSP 2.0. This must be done recursively for all array, collection and ToString properties. - - - -The ToStringBean class provides an implementation of the ToString interface with the defined behavior. The ToStringBean constructor takes the class definition the ToStringBean class should use for properties scanning \-using instrospection\- for printing, normally it is the class of the Bean using the ToStringBean. Beans leveraging the ToStringBean implementation can do it using two different patterns. - - -### Extending ToStringBean - - - -``` - -public class MyBean extend ToStringBean { - - public MyBean() { - super(MyBean.class); - } - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - } - -``` - -### Using a ToStringBean in delegation mode - - - -``` - -public class MyBean implements ToString { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - - public String toString(String prefix) { - ToStringBean tsBean = new ToStringBean(MyBean.class,this); - return tsBean.toString(prefix); - } - - public String toString() { - return toString("myBean"); - } - } - -``` - -## EqualBean - - - -The EqualsBean class provides a recursive introspetion\-based implementation of the equals() and hashCode() methods working on the Bean properties. The EqualsBean constructor takes the class definition that should be properties scanned (using introspection) by the equals() and thehashCode() methods. The EqualsBean class works on array, collection, bean and basic type properties. Java Beans leveraging the EqualsBean implementation can do it using two different patterns. - - -### Extending EqualsBean - - - -``` - -public class MyBean extend EqualsBean { - - public MyBean() { - super(MyBean.class); - } - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - } - -``` - -### Using a EqualsBean in delegation mode - - - -``` - -public class MyBean implements ToString { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - - public boolean equals(Object obj) { - EqualsBean eBean = new EqualsBean(MyBean.class,this); - return eBean.beanEquals(obj); - } - - public int hashCode() { - EqualsBean equals = new EqualsBean(MyBean.class,this); - return equals.beanHashCode(); - } - } - -``` - -## CloneableBean - - - -The CloneableBean class provides a recursive introspetion\-based implementation of the clone() method working on the Bean properties. The CloneableBean class works on array, collection, bean and basic type properties. Java Beans leveraging the CloneableBean implementation can do it using two different patterns. - - -### Extending CloneableBean - - - -``` - -public class MyBean extend CloneableBean { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - } - -``` - -### Using a CloneableBean in delegation mode - - - -``` - -public class MyBean implements Cloneable { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - - public Object clone() { - CloneableBean cBean = new CloneableBean(this); - return cBean.beanClone(); - } - } - -``` - - -By default, the CloneableBean copies all properties of the given object. It also supports an ignore\-properties set, the property names in this set will not be copied to the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module. - - -## ObjectBean - - - -The ObjectBean is a convenience bean providing ToStringBean, EqualsBean and CloneableBean functionality support. Also, ObjectBeans implements the Serializable interface making the beans serializable if all its properties are. Beans extending ObjectBean get toString(), equals(), hashCode() and clone() support as defined above. - - - -And example of using the ObjectBean class is: - - - -``` - -public class MyBean extends ObjectBean { - - public MyBean() { - super(MyBean.class); - } - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - } - -``` - -## Enum - - - -The Enum is an enumeration base class \[Too bad Java 5.0 is not here yet (Aug/16/2004)\] with equals(), hashCode(), toString(), clone() and serialization support. When used as properties of Beans implementing any of the above function it provides a seamless integration. - - - -And example of using the EnumBean class is: - - - -``` - -public static class Day extends Enum { - private Day(String name) { - super(name); - } - - public static final Day SUNDAY = new Day("sunday"); - public static final Day MONDAY = new Day("monday"); - public static final Day TUESDAY = new Day("tuesday"); - public static final Day WEDNESDAY = new Day("wednesday"); - public static final Day THURSDAY = new Day("thursday"); - public static final Day FRIDAY = new Day("friday"); - public static final Day SATURDAY = new Day("saturday"); - - } - -``` - -## CopyFrom - - - -The CopyFrom interface defines functionality similar to a deep cloning. The difference with the clone() method (besides the deep cloning requirements) is that the object to be the copy of the original one has to be explicitly created and it is this object the one that triggers the deep copying process. Implemetations of the CopyFrom interface should work propertly on arrays, collections, CopyFrom and basic type properties. - - - -Using CopyFrom objects enables copying data between different implementations of a given interface without these implementation having to know about each other. - - - -CopyFrom is unidirectional. A class implementing the CopyFrom knows how to extract properties from the given class (commonly having an interface in common). - - - -A simple example using the CopyFrom interface is: - - - -``` - -public interface Foo extends CopyFrom { - public void setName(String name); - public String getName(); - - public void setValues(Set values); - public Set getValues(); - } - - public class FooImplA implements Foo { - private String _name; - private Set _values; - - public void setName(String name) { - _name = name; - } - - public String getName() { - return _name; - } - - public void setValues(Set values) { - _values = values; - } - - public Set getValues() { - return _values; - } - - public void copyFrom(Object obj) { - Foo other = (Foo) obj; - setName(other.getName()); - setValues(new HashSet(other.getValues()); - } - - public Class getInterface() { - return Foo.class; - } - } - - public class FooImplB implements Foo { - private Map _data; - - public FooImplB() { - _data = new HashMap(); - } - - public void setName(String name) { - _data.put("name",name); - } - - public String getName() { - return (String) _data.get("name"); - } - - public void setValues(Set values) { - _data.put("values",values); - } - - public Set getValues() { - return (Set) _data.get("values"); - } - - public void copyFrom(Object obj) { - Foo other = (Foo) obj; - setName(other.getName()); - setValues(new HashSet(other.getValues()); - } - - public Class getInterface() { - return Foo.class; - } - } - -``` - - -A use case for the CopyFrom functionality is a Java Bean implementation of an interface and a persistency implementation (such as Hibernate) of the the same interface that may add extra persistency related properties to the bean (ie, the 'Id' property as the persistency layer primary key). - - - -For bean, array and collection properties the bean being invoked which copyFrom() method is invoked is responsible for those properties. - - - -For properties implementing the CopyFrom interface, the bean must create a property instance implementing the interface returned by the getInterface() method. This allows the bean doing the copyFrom() to handle specialized subclasses of property elements propertly. This is also applicacle to array and collection properties. The 'modules' property of the SyndFeed and SyndEntry beans is a use case of this feature where the copyFrom() invocation must create different beans subclasses for each type of module, the getInteface() helps to find the right implementation. - diff --git a/src/site/markdown/rome/HowRomeWorks/index.md b/src/site/markdown/rome/HowRomeWorks/index.md deleted file mode 100644 index 1c57398..0000000 --- a/src/site/markdown/rome/HowRomeWorks/index.md +++ /dev/null @@ -1,97 +0,0 @@ -# How Rome works - - -**Dave Johnson (****[The Roller Weblogger](http://www.rollerweblogger.org/)****) has written a very nice blog** **[How Rome Works](http://www.rollerweblogger.org/page/roller/20040808#how_rome_works)** **describing (as the title says) how Rome works. With his permission we are adding it to Rome documentation.** - - - -I spent some time exploring the new [Rome](http://rome.dev.java.net/) feed parser for Java and trying to understand how it works. Along the way, I put together the following class diagram and notes on the parsing process. I provide some pointers into the [Rome 0.4 Javadocs](http://rome.dev.java.net/apidocs/0_4/overview-summary.html). - - - -You don't need to know this stuff to use Rome, but it you are interested in internals you might find it interesting. - - -## Notes on the Rome parsing process - - - -Rome is based around an idealized and abstract model of a Newsfeed or "Syndication Feed." Rome can parse any format of Newsfeed, including RSS variants and Atom, into this model. Rome can convert from model representation to any of the same Newfeed output formats. - - - -Internally, Rome defines intermediate object models for specific Newsfeed formats, or "Wire Feed" formats, including both Atom and all RSS variants. For each format, there is a separate JDOM based parser class that parses XML into an intermediate model. Rome provides "converters" to convert between the intermediate Wire Feed models and the idealized Syndication Feed model. - - - -Rome makes no attempt at [Pilgrim\-style liberal XML parsing](http://www.xml.com/pub/a/2003/01/22/dive-into-xml.html). If a Newsfeed is not valid XML, then Rome will fail. Perhaps, as [Kevin Burton suggests](http://www.peerfear.org/rss/permalink/2003/01/23/1043368363-Smart_Parsing__Not_RSS_Parsing.shtml), parsing errors in Newsfeeds can and should be corrected. Kevin suggests that, when the parse fails, you can correct the problem and parse again. (BTW, I have some sample code that shows how to do this, but it only works with Xerces \- Crimsom's SAXParserException does not have reliable error line and column numbers.) - - - -Here is what happens during Rome Newsfeed parsing: - - - - - - - -1. Your code calls [SyndFeedInput](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/io/SyndFeedInput.html) to parse a Newsfeed, for example (see also [Using Rome to read a syndication feed](RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html)): - -``` -URL feedUrl = new URL("file:blogging-roller.rss"); -SyndFeedInput input = new SyndFeedInput(); -SyndFeed feed = input.build(new InputStreamReader(feedUrl.openStream())); - -``` - - -1. SyndFeedInput delegates to WireFeedInput to do the actual parsing. - -1. [WireFeedInput](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/io/WireFeedInput.html) uses a PluginManager of class FeedParsers to pick the right parser to use to parse the feed and then calls that parser to parse the Newsfeed. - -1. The appropriate parser parses the Newsfeed parses the feed, using [JDom](http://www.jdom.org/), into a [WireFeed](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/WireFeed.html). If the Newsfeed is in an RSS format, the the WireFeed is of class [Channel](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/rss/Channel.html) and contains Items, Clouds, and other RSS things from the [com.sun.syndication.feed.rss](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/rss/package-summary.html) package. Or, on the other hand, if the Newsfeed is in Atom format, then the WireFeed is of class [Feed](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/atom/Feed.html) from the [com.sun.syndication.atom](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/atom/package-summary.html) package. In the end, WireFeedInput returns a WireFeed. - -1. SyndFeedInput uses the returned WireFeedInput to create a SyndFeedImpl. Which implements SyndFeed. SyndFeed is an interface, the root of an abstraction that represents a format independent Newsfeed. - -1. [SyndFeedImpl](http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/synd/SyndFeed.html) uses a Converter to convert between the format specific WireFeed representation and a format\-independent SyndFeed. - -1. SyndFeedInput returns to you a SyndFeed containing the parsed Newsfeed. - - -## Other Rome features - - - -Rome supports Newsfeed extension modules for all formats that also support modules: RSS 1.0, RSS 2.0, and Atom. Standard modules such as Dublic Core and Syndication are supported and you can [define your own custom modules](RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) too. - - - -Rome also supports [Newsfeed output](RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) and for each Newsfeed format provides a "generator" class that can take a Syndication Feed model and produce from it Newsfeed XML. - - -## Learning more - - - -I've linked to a number of the Rome 0.4 Tutorials, here is the full list from the [Rome Wiki](../index.html): - - - -1. [Using Rome to read a syndication feed](RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) - -1. [Using Rome to convert a syndication feed from one type to another](RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - -1. [Using Rome to aggregate many syndication feeds into a single one](RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - -1. [Using Rome to create and write a feed](RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) - -1. [Defining a Custom Module bean, parser and generator](RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) - - -## Conclusion - - - -Overall, Rome looks really good. It is obvious that a lot of thought has gone into design and a lot of work has been done on implementation (and docs). Rome is well on the way to "ending syndication feed confusion by supporting all of 'em" for us Java heads. - diff --git a/src/site/markdown/rome/HowToBuildRome.md b/src/site/markdown/rome/HowToBuildRome.md deleted file mode 100644 index 35ad55e..0000000 --- a/src/site/markdown/rome/HowToBuildRome.md +++ /dev/null @@ -1,101 +0,0 @@ -# How to build Rome? - - -Rome is built using mighty [Maven](http://maven.apache.org/)! This is why these instructions are so short:\-) - - - -If you don't want to build Rome we'd suggest you download a binary build:\-) - - -## Check out from Subversion - - - -See [Version Control](https://rometools.jira.com/source/browse/ROME) for access intructions and to browse the source from your browser. - - - -Check out the tag version\-0\-1 for version 0.1. Else checkout the trunk for the development version. - - -## Setup maven - - - -See [Installing Maven](http://maven.apache.org/run-maven/index.html) for details. - - - -Maven automatically downloads dependencies of a project from an online repository. - - -### Build rome.jar - - - -At the command prompt type: - - - -``` - -> mvn jar:jar - -``` - - -This will build - - - -``` - -rome/target/rome-VERSION.jar - -``` - - -You're good to go. - - -### Build a full binary distribution - - - -``` - -> mvn - -``` - -### Build the project site - - - -``` - -> mvn site - -``` - -## For Rome developers - - -### Work on Rome using Eclipse - - - -``` - -> mvn eclipse:eclipse - -``` - - -will setup the Eclipse project for you. - - - -We don't use the site:deploy or dist:deploy targets yet since java.net is not very maven\-friendly yet:\-) - diff --git a/src/site/markdown/rome/PreservingWireFeeds.md b/src/site/markdown/rome/PreservingWireFeeds.md deleted file mode 100644 index bfdc357..0000000 --- a/src/site/markdown/rome/PreservingWireFeeds.md +++ /dev/null @@ -1,52 +0,0 @@ -# Preserving WireFeeds - - -WireFeeds will be preserved if the property preserveWireFeed is set on the SyndFeedInput object it is built from: - - - -``` - -SyndFeedInput in = new SyndFeedInput(); -in.setPreserveWireFeed(true); -SyndFeed syndFeed = in.build(..); -WireFeed wireFeed = syndFeed.originalWireFeed(); - -``` - - -Atom/RSS Entry/Item objects are also available from SyndEntry objects if the WireFeed is preserved: - - - -``` - -Object obj = syndEntry.getWireEntry(); -if (obj != null && obj instanceof Entry) { - // it is an Atom Entry object - // do Atom specific stuff, eg: - Entry entry = (Entry) o; - System.out.println(entry.getRights()); -} else if (obj != null && obj instanceof Item) { - // it is a RSS Item object - // do RSS specific stuff eg: - Item item = (Item) o; - System.out.println(item.getComments()); -} - -``` - - -The Fetcher can be set to preserve WireFeeds by setting the preserveWireFeed property to true: - - - -``` - -feedFetcher.setPreserveWireFeed(true); - -``` - - -\-\- Main.nicklothian \- 11 Mar 2009 - diff --git a/src/site/markdown/rome/ProductsOrSitesPoweredByROME.md b/src/site/markdown/rome/ProductsOrSitesPoweredByROME.md deleted file mode 100644 index 3240751..0000000 --- a/src/site/markdown/rome/ProductsOrSitesPoweredByROME.md +++ /dev/null @@ -1,198 +0,0 @@ -# Products or sites powered by ROME - - -If your site or project is powered by ROME, please take the time to write a short testimonial on this wiki page, or send a mail to [users@rome.dev.java.net.](mailto:users@rome.dev.java.net.) Feel free to use our "Powered by ROME" badges in your work. (Several badge variations are available at the bottom of this page.) - - - - - - -## Open Source using ROME - - - -* [Firenze](http://firenze.berlios.de/) - Firenze is a free Java based open source command line podcast receiver. It is powered by the ROME syndication framework. With Firenze you can easily subscribe to your favorite Podcast feeds and reveive them. - -* [Feed'n Read](http://fnr.sourceforge.net/) - Feed'n Read (FnR) is a free Java based open source newsfeed reader. It is powered by the ROME syndication framework and therefore supports all current formats (RSS 0.90, 0.91, 0.92, 0.93, 0.94, 1.00, 2.00, ATOM 0.30 and 1.00). It disposes of an intuitive, fast and responsive user interface using the eclipse Rich Client Platform (RCP), i.e. JFace and SWT. Thus it combines the platform independent Java world on one hand with a fast native user interface on the other hand. - -* [Tudu Lists](http://tudu.sourceforge.net/) - An AJAXian Todo Lists manager. We moved from our hand\-made solution to ROME with great pleasure \- it was fast and easy, and the overall performance is very good (11 ms per request in average today). You can try it out on our live site at [http://tudu.ess.ch](http://tudu.ess.ch/). - -* [SnipSnap](http://snipsnap.org/) - -* [Roller Weblogger and Aggregator](http://www.rollerweblogger.org/page/project) - Roller is a weblog server. In Roller 1.1 there is a new aggregator feature, called PlanetRoller, based on ROME and ROME fetcher. Dave Johnson, who created Roller, [created PlanetRoller in a couple of days](http://rollerweblogger.org/page/roller/20050213#rome_texen_planet_roller), leveraging ROME and ROME fetcher to do all the hard work. You can try out at [PlanetRoller](http://www.rollerweblogger.org/planet/roller.html). - -* [ActiveMQ](http://incubator.apache.org/activemq/) - Apache ActiveMQ is a fast open source JMS 1.1 provider and Message Fabric supporting clustering, peer networks, discovery, TCP, SSL, multicast, persistence, XA and integrates seamlessly into J2EE 1.4 containers, light weight containers and any Java application. ActiveMQ is released under the Apache 2.0 License. - Currently ActiveMQ is using Rome to be able to [browse message queues](http://docs.codehaus.org/display/ACTIVEMQ/RSS+and+Atom) (with or without filters applied) as RSS or Atom feeds. - -* [XWiki](http://www.xwiki.org/) - -* [mobibot](http://www.thauvin.net/mobitopia/mobibot/) - -* [stat4j](http://sourceforge.net/projects/stat4j/) - Used ROME to create an RSS/ATOM Log4j Appender. Read more about it [here](http://www.jroller.com/comments/laraDAB?anchor=rss_atom_log4j_appender). - -* [SPOT Manager](http://www.spotdev.net/) - SPOT Manager uses ROME to parse RSS feeds and send them to your MSN Direct wristwatch! Learn about MSN Direct [here.](http://www.msndirect.com/) Download the program from [SPOTDev.net](http://www.spotdev.net/). - -* [LogDistiller](http://logdistiller.sf.net/) - LogDistiller is an extensible tool to merge and sort logs : reports can be stored in a feed file thanks to Rome. - -* [ION Internet Video Console](http://openvision.tv/) - The I/ON Internet Video Console fuses together leading technologies into one simple media player, connecting you directly to the video you want. Avoid the ads, pop\-ups, and spyware that come with watching video in a browser and watch the web. ROME powers our RSS capabilities. Learn more and download [here](http://openvision.tv/). - -* [Blog Mover](http://code.google.com/p/blog-mover) - Blog Mover's goal is allowing your blog moving freely between each BSP(Blog Service Provider). Learn more and try it [here](http://blog-mover.redv.com/). - -* [Scarab](http://scarab.tigris.org/) - The goal of the Scarab project is to build a highly customisable Artifact tracking system. It's distributed under a BSD/Apache style license. - -* [Ozmozr](http://ozmozr.org/) - Ozmozr is a website for online learning communities being developed by the [Center for Open Sustainable Learning](http://www.cosl.usu.edu/) at [Utah State University](http://www.usu.edu/). In ozmozr, users are both content producers and consumers, relying on their social networks to filter and distribute meaningful content. Ozmozr was built to leverage emergent technologies and support social and collaborative information filtering, self\-organization, identity development, and free/open resource\-sharing. - - -## Open Source Research Prototypes using ROME - - - -* [MORSE](http://www.infosys.tuwien.ac.at/prototype/morse/) - The [Model\-Aware Repository and Service Environment](http://www.infosys.tuwien.ac.at/prototype/morse/) (MORSE) is a service\-based environment for the storage and retrieval of models and model\-instances at both design\- and runtime. Models, and model\-elements are identified by Universally Unique Identifiers (UUID) and stored and managed in the MORSE repository. The MORSE repository provides versioning capabilities so that models can be manipulated at runtime and new and old versions of the models can be maintained in parallel. MORSE exposes various services to runtime clients and modeling tools. For instance, a [feed](http://www.infosys.tuwien.ac.at/m2projects/at.ac.tuwien.infosys.tholmes.morse/rs-impl/) reflects the latest changes within the repository. - - -## Free, Based On Open Standards, using ROME - - - -* [ScheduleWorld](http://www.scheduleworld.com/) - -* [FeedPod](http://feedpod.dev.java.net/) - - -## Commercial using ROME - - - -* [Interactive Brokers TraderWorkstation (TWS)](http://interactivebrokers.com/) - Interactive Brokers is leading software based broker. IB offers Universal Direct\-Access Trading and sophisticated trade management tools at highly competitive costs to professional traders and investors worldwide. IB is the gateway to trading a broad array of financial instruments \-\- stocks, options, futures, corporate bonds as well as forex \-\- on over 50 exchanges and marketplaces in 14 countries. TraderWorkstation is java\-based trading platform; ROME library is used to fetch, aggregate and visualize news related to securities listed in the application. - -* [parss](http://weblogs.at/parss/stories/2315/) - From the antville guys, that we met at blogtalk 1.0 2 years ago. - -* [Public Interactive](http://www.publicinteractive.com/) - Public Interactive® is the leading integrated Application Service Provider (ASP) of on\-line collaborative tools, community engagement technologies, content syndication services and member and audience relationship management systems for the public broadcasting industry. Rome is used for syndicating news content and Podcasts local published by stations in the Public Interactive network. - -* [Blog\-City Ltd](http://www.blog-city.com/) - Blog\-City.com has been using ROME for many months now, utilising both the core project and the Fetcher project to allow bloggers to run their own mini\-aggregators within their blog. - -* [Reger.com](http://www.reger.com/) - All blogs running at reger.com include ROME feeds. With the custom ROME module we wrote entry data is included in the RSS feeds. DataBlogging allows people to append activity\-specific data to each of their entries. In addition to the pre\-built log types (Running Log, Biking Log, Movie Log, etc), users can create custom log types with whatever data fields they need. The module outputs those data fields. Users simply customize their log types, adding and removing fields, and then the RSS feed automatically includes it. An RDDL document for the namespace can be found at[http://www.reger.com/about/specs/entrydata.rddl](http://www.reger.com/about/specs/entrydata.rddl) Thanks again for all of the help and for making ROME great! - -* [CNET Networks/TechRepublic.com](http://techrepublic.com.com/) - CNET Networks uses ROME with an application called the RSS Harvester. The purpose of this application is to harvest a list of predefined RSS/ATOM feeds, saving all new items for each feed in a database. In addition, each feed has an associated keyword that allows for easy surfacing of harvested data. - Once the feed data has been collected, internal editors can surface links to the harvested data on the TechRepublic website by including a call to a JSP component. This component passes several parameters including the number of items to return, the number of items from a particular site and an associated keyword. For example, [http://techrepublic.com.com/2001\-10591\-0.html](http://techrepublic.com.com/2001-10591-0.html) (see the section "More on ...") we surface related articles. - We are also using Rome for Re\-Blogging on TechRepublic.com. Users can start their own blogs on the site as well as choose to import an RSS feed from an existing blog such as blogger.com. When the user imports an existing blog we use Rome to parse the RSS/ATOM feed then convert it to a TechRepublic blog. Any new blog posts on the external blog are automatically imported to TechRepublic. - -* [Edmunds.com Inside Line](http://www.edmunds.com/insideline/) - We are currently using ROME as our feed generator and as a feed parser. Currently we publish RSS feeds of our latest articles on www.insideline.com, however, we also use it to provide updates between our sites. For example, our community site [Townhall](http://townhall-talk.edmunds.com/) produces RSS feeds which we then parse using ROME on our [Inside Line](http://www.edmunds.com/insideline) property. Rome has significantly speed up our development times thanks to its clean object model and its ability to generate multiple feed types. - -* [HBO Podcasts](http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewArtist?artistId=118405710) (iTunes Music Store Link) - HoPE (HBO Podcast Engine) powered by ROME and the iTunes Podcast module. To date has served over 15\-million podcasts for HBO podcast content such as The Sopranos, Real Time with Bill Maher, and Rome - -* [DressUpYourWedding](http://www.dressupyourwedding.com/Article.do) - - -## Sites using ROME - - - -* [Yabot](http://www.yabot.net/) - Yabot is a news service currently available in five editions (May 2008). - - Discovering and implementing ROME made Yabot's feed aggregation faster and easier. In previous versions we rendered the XML our selves but with ROME now doing most of this work developers can focus on presentation and integration features. Thanks! - -Mats, co\-founder @ Yabot \-[http://www.yabot.net](http://www.yabot.net/) - -* [WASALive](http://www.wasalive.com/) - Wasalive is a news, blogs and forums search engine. Results are sort by a mix of relevancy and date. Thanks to ROME library, Wasabot fetch and parse more than 70k feeds/days and store 3M posts. Thanks to ROME UTF8 support Wasalive is avalaible in [Russian](http://ru.wasalive.com/), [French](http://fr.wasalive.com/),[Spanish](http://es.wasalive.com/), [English](http://en.wasalive.com/) - -* [http://www.airport\-information.com](http://www.airport-information.com/) - Rome is used to create a RSS feed with news on airports worldwide. The database runs under Tomcat. The Rome library was very helpful and allowed an easy and quick implementation. \-\- Main.airportinformation \- 28 Jan 2008 - -* [http://www.abclinuxu.cz](http://www.abclinuxu.cz/) - I use rome in daily production on www.abclinuxu.cz for watching cca 8 feeds and generating cca 60 feeds. After fixing charset related issues (thanks!) it runs smoothly. I am happy that I could remove my old propietary RSS rw code with Rome ... Leos - -* [http://feeds.my.aol.com](http://feeds.my.aol.com/) - The latest My AOL product, a customizable, feed\-driven web application, uses the Rome library to read, manipulate, and normalize RSS, RDF, and Atom feeds. My AOL was built on a very rapid development schedule, and Rome made much of it a lot easier than it otherwise would have been. \-\-Bill Kocik, Sr. Software Engineer, America Online, Inc. - -* [http://www.backbase.com](http://www.backbase.com/) - Rome is used on our site to provide rss feeds for forum threads. Implementation took me something like few hours (including downloading and installation), so needless to say I am very happy. Thanks. m.j.milicevic - -* [The Open Source Zone](http://oszone.org/) - Rome is used to power the [Planet](http://oszone.org/channels) section of The Open Source Zone, where we aggregate the most interesting feeds concerning Open Source. Took very little to implement, thanks to Rome. Rome Fetcher is used too, which is great. - -* [rel8r.com](http://www.rel8r.com/) - rel8r is a tag search and feed aggregator. Rome is used extensively for collecting feeds as well as for publishing all of the aggregated feeds. We love it. \- Travis - -* [NewsRack](http://newsrack.in/) - Several organizations in the social development sector monitor news that is relevant to their work. This is a time\-consuming and laborious process for some groups, especially when the news is monitored, marked, cut, and filed using hard copies of newspapers and magazines. This process is very much the case in India. However, much of this work can be automated using web versions of newspapers and magazines. In this context, the broad goal of this project is to automate news monitoring. - NewsRack is a tool/service for classifying, filing, and long\-term archiving of news. Users specify filtering rules which are used to select relevant articles from incoming news feeds. The selected articles are then classified into various categories. This process is similar to the process of specifying email filters to pre\-sort incoming mail into various folders. - NewsRack is currently using Rome. I am looking for developers, so, if this project tickles you, please get in touch! \- Subramanya Sastry - -* [http://www.rsspress.it](http://www.rsspress.it/) - An Italian Rss Aggregator, with a very nice design and layout, very simple to use, with a lot of rss feeds not only in italian language. You can register it and have your personalized homepage with your preferred news. - -* [Geonames RSS to GeoRSS](http://www.geonames.org/rss-to-georss-converter.html) - The Geonames "RSS to GeoRSS Converter" reads the entries of an RSS feed and searches the Geonames Database to find a location for the entry text. If a relevant location is found, its latitude and longitude are added to the RSS feed using the GeoRSS encoding. - -* [feedarea.de](http://www.feedarea.de/) - FeedArea.de is a RSS, Atom and Podcast portal using Rome for handling the feed submissions. - -* [podblock.de](http://www.podblock.de/) / [podblock.com](http://www.podblock.com/) - PodBlock is a podcast portal using Rome for handling the feed submissions. - -* [javaMix.co.uk](http://www.javamix.co.uk/) - javaMix is a java news aggregation website using Rome to find the news. - -* [JavaMix](http://www.javamix.co.uk/) - the latest java news, articles and resources - -* [Wirecatch](http://wirecatch.com/) - Wirecatch is a semantic news aggregator and visualization tool. It uses Rome to grab several news feeds and show connections and relationships between names, concepts and documents. - -* [Swift](http://swiftmob.com/) - Swift imports rss feeds and formats them for mobile devices. Swift also include many other tools for building mobile friendly webpages that will reshape themselves for each phone so the experience for the end user is as good as possible. - -* [DevMeat](http://devmeat.com/) - DevMeat deliver fresh meat for software developers and Rome is TOP cook ! - -* [Folder2Feed](http://folder2feed.nogoodatcoding.com/) - Folder2Feed allows users to generate feeds from the contents of local and network folders; providing an easy way to monitor updates to folders of interest for a large audience. - -* [podcast.tv](http://www.podcast.tv/) - -* [podcast.it](http://www.podcast.it/) - -* [podcast.at](http://www.podcast.at/) - Podcast.tv, podcast.it and podcast.at are podcast directories using Rome for handling the feed submissions and parsing. - -* [CollaborationToday.info](http://collaborationtoday.info/) -Collaboration Today is a news aggregator, also an open source software developed by OpenNTF. This site is for IBM Collaboration Solutions professionals covering news about various IBM products like IBM Connections, IBM Notes/ Domino, IBM WebSphere Portal etc. and cross product topics like mobile, cloud and analytics. Rome is running on background and fetching stories from various sites. - - -## Powered By ROME Badges Here are badges for use with your ROME\-powered site or software: - - - -* **Static:** - -* **Animated:** - - - -Please copy the image to your own server rather than link to the image on its current host. - diff --git a/src/site/markdown/rome/ROMEAndMaven2.md b/src/site/markdown/rome/ROMEAndMaven2.md deleted file mode 100644 index b585245..0000000 --- a/src/site/markdown/rome/ROMEAndMaven2.md +++ /dev/null @@ -1,56 +0,0 @@ -# ROME and Maven 2 - - -this page is not up to date - - - -Starting with ROME 1.0 RC2, rome jars are deployed on the [java.net maven repository](http://download.java.net/maven/2/). - - - -In your project you can add this repository by putting the following XML into your pom.xml - - - -``` - - - maven2-repository.dev.java.net - Java.net Repository for Maven - http://download.java.net/maven/2/ - default - - -``` - - -As of 22, April 2009, the jars are deployed for the following releases: - - - -* ROME 1.0 - -* ROME Fetcher 1.0 - -* ROME Modules 0.3.2 - - - -To include the Rome 1.0 in your maven2 project: - - - -``` - - - rome - rome - 1.0 - - -``` - - -\-\- Main.mj\_ \- 22 Apr 2009 - diff --git a/src/site/markdown/rome/ROMEAndOSGI.md b/src/site/markdown/rome/ROMEAndOSGI.md deleted file mode 100644 index d2c3872..0000000 --- a/src/site/markdown/rome/ROMEAndOSGI.md +++ /dev/null @@ -1,13 +0,0 @@ -# ROME and OSGI - - -From ROME 1.0 RC2 onwards, the ROME jar includes OSGi information in its manifest. - - - -Note that we have received some reports that ROME plugin classloading may cause problems with OSGi. Setting the system property "rome.pluginmanager.useloadclass" to "true" may help avoid this. See [Issue 118](http://java.net/jira/browse/ROME-118) for further information. - - - -\-\- Main.nicklothian \- 08 Jan 2009 - diff --git a/src/site/markdown/rome/ROMEDevelopmentProcess.md b/src/site/markdown/rome/ROMEDevelopmentProcess.md deleted file mode 100644 index b2e0bf9..0000000 --- a/src/site/markdown/rome/ROMEDevelopmentProcess.md +++ /dev/null @@ -1,21 +0,0 @@ -# ROME Development Process - - -We're welcoming our first external developer, [Nick Lothian](http://www.mackmo.com/nick/blog/) today, so we thought it would be good to set a few basic rules for this project. We don't want to be too formal, since we're still alpha, and trust our developer's common sense to "do the right thing". - - - -* Please before commiting anything send an email in the rome developer lists to explain what you want to do - -* When you create some new code, please javadoc it, and unit tests are welcome - -* If your code involves new functionality for end users, please document it on the wiki. - -* and update the [RomeChangesLog](ChangeLog.html) - -* I think that's it: Welcome to Rome - - - -\-\- [PatrickChanezon](http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon) \- 17 Jun 2004 - diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md b/src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md deleted file mode 100644 index 862e5fc..0000000 --- a/src/site/markdown/rome/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.md +++ /dev/null @@ -1,428 +0,0 @@ -# ROME2 1st Proposal (June 10th 2006) NOT CURRENT - - -It has been 2 years since ROME started and along the way we've fixed, improved, enhanced and changed the API and the implementation. We've had to address things we did not think at first, we have to add support for specifications that were not around when ROME started, doing that has not being a hard task. The best indicator we've done a fair job with ROME is adoption. - - - -Some cracks are starting to appear, mistakes in the design (such as overloading the use of DCModule), a bit of implementation over\-engineering (such as the home grown bean\-introspector and the **smart** ObjectBean & co classes), a more complex than needed API (the existence of 2 abstraction levels for feed, Synd and Wire beans). - - - -This proposal attempts to address the problems and limitations we currently have with ROME. - - -## Backwards Compatibility, Support and Upgrade - - - -ROME2 will change the API breaking backwards compatibility (after all we are an Open Source Project and that is what they do best). - - - -We will maintain ROME 1.0 (bugfixing only) for 1 year to allow a smooth transition for all ROME users. We will also prepare migration/upgrade tips (based on our own experience) for the ROME community. - - -## Leveraging New Language Features - - - -ROME2 will make use of Generics to type collections in its beans. It will also use the **enum** construct when applicable. - - -## Minimum Number of Dependencies - - - -ROME2 will implement its core competency (Atom and RSS parsing, generation and manipulation), it will leverage other components as much as possible but it will focus, as ROME, in being as lean as possible not only in its code by in its dependencies (keeping them down to a reasonable minimum). - - -## One Abstraction Level, 2 Models - - - -ROME2 will not have an abstract representation of feeds (the Synd beans). It will have 2 distinct models, Atom and RSS, both of them first citizens. - - - -ROME2 users will use the model that fits more their needs. - - - -Conversion (automatic and implicit) between the 2 models will be part of ROME2. - - -## No Interfaces, Pluggable Beans - - - -Interfaces are good, in fact they are great. However, when using them with beans that have to be created by the developer it ads noise to the code. Interfaces are used for all parameters and variables but implementations must be used to create the bean instances thus hard\-coding areas of the application to a specific implementation. Or a factory pattern has to be use throughout the code to hide the implementation, with a side effect of removing clarity from the code. - - - -ROME2 will bring the best of both worlds, it will allow coding such as - - - -``` - -Feed feed = new Feed(); -Entry entry1 = new Entry(); -Entry entry2 = new Entry(); -feed.getEntries().add(entry1); -feed.getEntries().add(entry2); - -``` - - -While allowing pluggability of the beans implementation. The pluggability will be achieved using a combination of a factory pattern and a self\-proxy patterns, both of them transparent to the ROME2 user. - - - -For example the ROME2 API bean for the Atom feed would be something like: - - - -``` - -public class Feed { - private Feed feed; - - public Feed() { - if (this.getClass() == Feed.class) { - feed = BeanFactory.getFactory().create(Feed.class); - } - } - - public final Feed getImplementation() { - return feed; - } - - public Text getTitle() { - return feed.getTitle(); - } - - public void setTitle(Text title) { - feed.setTitle(title); - } - -... -} - -``` - - -The ROME2 (default/provided) implementation bean for the Atom feed would be something like: - - - -``` - -public class FeedBean extends Feed { - private Text title; - - public Text getTitle() { - return title; - } - - public void setTitle(Text title) { - this.title = title; - } - -... -} - -``` - - -ROME2 users will use the ROME2 API bean as plain objects that they are. The ROME2 API beans will delegate all their properties to an instance implementing their corresponding class. This instance will be the implementation bean which is created by the BeanFactory. - - - -To provide alternate implementation beans an alternate BeanFactory has to be provided. - - - -To write an alternate implementation beans the ROME2 API bean has be used as an interface, all property methods have to be overridden, nothing else. - - - -When extending ROME2 API beans, for example providing a new module bean, it is left to the implementor to follow this pattern or to use plain beans for the the additional module. - - - -For cases (they shouldn't be many) that a ROME2 user needs to manipulate the implementation bean, all ROME2 API beans will give access to it via the getImplementation() method. - - -## Using multiple Bean implementations simultaneously - - - -ROME2 will support the use of multiple implementation beans simultaneously. - - - -A use case could be retrieving a feed from a persistent store (which uses its own implementation beans), retrieving a feed from the internet (using the default implementation beans), merging their entries and producing an output feed, into the persistent store or out to the internet. - - - -ROME2 public API will include the following classes for this purpose: - - - -``` - -public abstract class BeanFactory { - public abstract T create(Class beanClass); -} - -public class BeanFactoryInjector { - public static void execute(BeanFactory factory, Runnable runnable) { .. } -} - -``` - - -When these two classes are not used explicitly ROME2 will use the default BeanFactory that creates default implementation beans. - - - -For alternate implementation beans a BeanFactory has to be provided. This factory will be responsible for creating a complete ROME2 bean family. - - - -The code to create ROME2 beans with an alternate factory will have to be written in the run() method of a Runnable object and it will have to be executed via the BeanFactoryInjector.execute() method. - - - -The created ROME2 beans could be used outside of the Runnable.run() method, because of this ROME2 users have to be aware that it is possible to mix and match implementation beans and that may not always have a happy ending if not thought properly. - - -## Collection Elements - - - -All collection properties (such as the authors, categories, contributors, links and entries of an Atom feed bean) will only have getter methods in the ROME2 API beans, no setter methods. For example: - - - -``` - -public class Feed { - public List getAuthors() { ... } - public List getCategories() { ... } - ... -} - -``` - - -This will ensure that the implementation bean has control on the implementation of the collection being used. This is particularly important to enable alternate implementation beans to fetch data from a repository as the collection is iterated over. - - - -Persistent experts we need your input here. - - -## Modules - - - -Feeds, both RSS and Atom, are extensible via namespaced elements at feed/channel and entry/item level, these namespace elements are known as modules. Beans supporting modules (feed, channel, entry and item) will all have the following method to support modules. - - - -``` - -public Map getModules() { ... } - -``` - - -Because modules are uniquely identified by their URI, a Map will be used, the key will be the URI of the module and the value the module itself. As with other ROME2 API bean collection properties, the getModules() property has a getter only, the Map implementation is controlled by the implementation bean. - - - -Module URIs in ROME2, as all the links URLs in the beans, will be Strings thus reducing object creation explosion a bit. For cases that some URI manipulation is required, the JDK URI class should be used. - - -## Dynamic Modules Support - - - -ROME2 modules design has to ensure it provides simple and comprehensive support for dynamic modules such as SLE and GData. - - -## Unknown Modules - - - -A special Module subclass, UnknownModule, will serve as placeholder for module data not explicitly processed by ROME2 available parsers/generators. This will allow to consume and re\-export a feed without losing unknown (to ROME2) modules. Each unknown module will be keyed off with its URI in the map of the associated feed, channel, entry or item. - - - -The data of the unknown module will be available as a String. ROME2 users should not use \=UnknownModule\='s data directly, if they need to manipulate that data they should find or implement bean/parser/generator for the module they need to manipulate. - - - -Because unknown modules brings some extra overhead in the parsing and generating process ROME2 will have a property to enable/disable processing of unknown modules. - - -## The xml:lang Attributes - - - -All ROME2 API beans will have xml:lang attributes, String and enum and primitive types properties won't. - - -## The xml:base Attributes - - - -The xml:base attribute will not be present in any ROME2 API bean. - - - -It will be the responsibility of the parsers to resolve any relative URL present in the feed at parsing time. Similarly, generators may relativize URLs as a size optimization (for God's sake we are doing XML). - - -## Conversion between Feed Types - - - -A FeedConverter class will provide conversion from Atom to RSS beans and vice versa, both at feed/channel and entry/item level. All properties, including modules data will be copied, after an conversion the state of the beans will be completely independent. - - -## Object Class Methods in ROME2 Beans - - - -The equals() and hashCode() methods will not be overridden. All ROME2 beans are mutable, it is not safe to use them as keys of hash structures. - - - -Cloning will not be supported by ROME2 beans, instead they will have a copyFrom() method which is type safe and does a deep copy. Cloning a ROME2 bean will be a two step process, for example: - - - -``` - -Feed feed1 = new Feed(); -... -Feed feed2 = new Feed(); -feed2.copyFrom(feed1); - -``` - - -The toString() method in the beans will print the property that most likely identifies the bean plus the class name of the implementation bean. For example for a Feed bean the output of toString() would be: - - - -``` - -[http://foo.com/atom.xml - xxx.rome2.impl.pojo.atom.FeedBean] - -``` - - -\-\-\+\+ Plugins ClassLoading - - - -Bean implementations, parsers, generators, converters and all pluggable ROME2 components will be loaded using the same classLoader ROME2 core classes are loaded from. - - - -This is to keep simple the handling of them via singletons and their instantiation. Supporting different classLoaders would require complex handling for instantiation, to avoid missing classes and class mismatches. - - - -As an example of how easy things can go sour, imagine ROME2 core classes in the common path of a web\-container and 2 web\-apps adding their own beans/parsers/generators/modules, the singletons managing them are in ROME2 core, managed by the common classLoader, a simple singleton won't cut it. ROME2 core will be small enough that it will not be a memory consumption issue if it is once in each web\-app. - - -## Parsers and Generators - - - -XML parsing and generation will support stream mode. We may even consider using streaming as the underlaying default implementation even if manipulating a feed bean on its whole in memory. We have to see if how this could be done leveraging Abdera, else using StAX API directly. This also means we may get rid of the JDom dependency. - - - -For example, the streaming version of an Atom parser and generator would be something like: - - - -``` - -public interface AtomReader { - - // repeatable operation, returns was has been read from the header so far - Feed readFeed() throws FeedException; - - // returns null when reaches the end of the feed - Entry readEntry() throws FeedException; - - void close() throws FeedException; - } - -public interface AtomWriter { - - // if called must be called once and before a write(Entry) - void write(Feed feed) throws FeedException; - - // if the first write is for an entry, then the output is an entry document - abstract void write(Entry entry) throws FeedException; - - void close() throws FeedException; - } - -``` - - -As with ROME, in ROME2 Parsers will be as lenient as possible. Generators will be strict. - - -## Feed Validators - - - -A bean FeedValidator class will verify that a feed or entry bean is valid for a given feed type. Feed generators would use this class to ensure feed correctness. - - -## Feed Conversion - - - -Conversion from Atom beans to RSS beans and vice versa will be done by a FeedConverter class that would have the following signature: - - - -``` - -public class FeedConverter { - public Feed convertToFeed(Channel channel, boolean processItems) { ... } - public Entry convertToEntry(Item item) { ... } - public Channel convertToChannel(Feed feed, boolean processEntries) { ... } - public Item convertToItem(Entry entry) { ... } -} - -``` - - -Because the mapping from Atom to RSS elements is sometimes subject do discussion and different requirements the FeedConverter class will be pluggable. It will implement the self\-proxy pattern ROME2 API beans implement. - - -## Parser and Generator Filters - - - -Manipulation of feeds during parsing and generation at feed/channel and entry/item level will be possible by implementing readers and writers wrappers that work on top of the original reader and writer instances. - - - -This filtering/wrapping could be automated via configuration. - - -## Sources - diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md b/src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md deleted file mode 100644 index 8487913..0000000 --- a/src/site/markdown/rome/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.md +++ /dev/null @@ -1,434 +0,0 @@ -# ROME2 2nd Proposal (July 18th 2006) CURRENT - - -It has been 2 years since ROME started and along the way we've fixed, improved, enhanced and changed the API and the implementation. We've had to address things we did not think at first, we have to add support for specifications that were not around when ROME started, doing that has not being a hard task. The best indicator we've done a fair job with ROME is adoption. - - - -Some cracks are starting to appear, mistakes in the design (such as overloading the use of DCModule), a bit of implementation over\-engineering (such as the home grown bean\-introspector and the **smart** ObjectBean & co classes), a more complex than needed API (the existence of 2 abstraction levels for feed, Synd and Wire beans). - - - -This proposal attempts to address the problems and limitations we currently have with ROME. - - -## Backwards Compatibility, Support and Upgrade - - - -ROME2 will change the API breaking backwards compatibility (after all we are an Open Source Project and that is what they do best). - - - -We will maintain ROME 1.0 (bugfixing only) for 1 year to allow a smooth transition for all ROME users. We will also prepare migration/upgrade tips (based on our own experience) for the ROME community. - - -## Leveraging New Language Features - - - -ROME2 will make use of Generics to type collections in its beans. It will also use the **enum** construct when applicable. - - -## Minimum Number of Dependencies - - - -ROME2 will implement its core competency (Atom and RSS parsing, generation and manipulation), it will leverage other components as much as possible but it will, as ROME, be as lean as possible not only in its code but in its dependencies (keeping them down to a reasonable minimum). - - -## One Abstraction Level, 2 Models - - - -ROME2 will not have an abstract representation of feeds (the Synd beans). It will have 2 distinct models, Atom and RSS, both of them first citizens. - - - -ROME2 users will use the model that fits more their needs. - - - -Conversion (automatic and programmatic) between the 2 models will be part of ROME2. - - -## Bean Interfaces - - - -After some discussions on the first ROME2 proposal we are going back to the interface model. The self proxy pattern proposed in the first proposal (to be able use arbitrary implementations) adds a bit of complexity into understanding what is going one plus it does not address in a clean way the needs for persistency (such as Hibernate or JPA). - - - -All ROME2 beans will interfaces. Different from ROME, the implementation classes for the ROME2 beans will not be part of the public API. Instead using directly constructors to create ROME2 beans, a factory pattern will be used. A Convenience class, Rome, will wrap the factory class providing a concise way of creating a ROME2 bean. - - - -For example, creating ROME2 beans using the Rome class convenience class will be something like: - - - -``` - -Feed feed = Rome.create(Feed.class); -Entry entry1 = Rome.create(Entry.class)); -Entry entry2 = Rome.create(Entry); -feed.getEntries().add(entry1); -feed.getEntries().add(entry2); - -``` - - -Which is equivalent to (using the Rome Bean factory class): - - - -``` - -Feed feed = BeanFactory.getFactory().create(Feed.class); -Entry entry1 = BeanFactory.getFactory().create(Entry.class)); -Entry entry2 = BeanFactory.getFactory().create(Entry); -feed.getEntries().add(entry1); -feed.getEntries().add(entry2); - -``` - - -To provide an alternate implementation beans an alternate set of beans will have to be provided. In addition, if necessary, an alternate bean factory could be used. - - - -To write an alternate implementation the bean classes will have to implement the ROME2 interface beans. - - -## Using multiple Bean implementations simultaneously - - - -ROME2 will support the use of multiple implementation beans simultaneously by changing the bean factory at anytime. - - - -A use case could be retrieving a feed from a persistent store (which uses its own implementation beans), retrieving a feed from the internet (using the default implementation beans), merging their entries and producing an output feed, into the persistent store or out to the internet. - - -## Bean Factory Scopes - - - -The bean factory will support a default factory and a context factory. The default factory is used if no context factory is available. The context factory uses a InheritableThreadLocal to store the factory in context, this is useful for use in dependency injection containers (Servlet, Spring, etc). - - -## Collection Elements - - - -All collection properties (such as the authors, categories, contributors, links and entries of an Atom feed bean) will only have getter methods in the ROME2 API beans, no setter methods. For example: - - - -``` - -public class Feed { - public List getAuthors() { ... } - public List getCategories() { ... } - ... -} - -``` - - -This will ensure that the implementation bean has control on the implementation of the collection being used. This is particularly important to enable alternate implementation beans to fetch data from a repository as the collection is iterated over. - - -## Modules - - - -Feeds, both RSS and Atom, are extensible via namespaced elements at feed/channel and entry/item level, these namespace elements are known as modules. Beans supporting modules (feed, channel, entry and item) will all have the following method to support modules. - - - -``` - -public Map getModules() { ... } - -``` - - -Because modules are uniquely identified by their URI, a Map will be used, the key will be the URI of the module and the value the module itself. As with other ROME2 API bean collection properties, the getModules() property has a getter only, the Map implementation is controlled by the implementation bean. - - - -Module URIs in ROME2, as all the links URLs in the beans, will be Strings thus reducing object creation explosion a bit. For cases that some URI manipulation is required, the JDK URI class should be used. - - -## Dynamic Modules Support - - - -ROME2 modules design has to ensure it provides simple and comprehensive support for dynamic modules such as SLE and GData. - - -## Unknown Modules - - - -A special Module subclass, UnknownModule, will serve as placeholder for module data not explicitly processed by ROME2 available parsers/generators. This will allow to consume and re\-export a feed without losing unknown (to ROME2) modules. Each unknown module will be keyed off with its URI in the map of the associated feed, channel, entry or item. - - - -The data of the unknown module will be available as a String. ROME2 users should not use \=UnknownModule\='s data directly, if they need to manipulate that data they should find or implement bean/parser/generator for the module they need to manipulate. - - - -Because unknown modules brings some extra overhead in the parsing and generating process ROME2 will have a property to enable/disable processing of unknown modules. - - -## The xml:lang Attributes - - - -All ROME2 API beans will have xml:lang attributes, String and enum and primitive types properties won't. - - -## The xml:base Attributes - - - -The xml:base attribute will not be present in any ROME2 API bean. - - - -It will be the responsibility of the parsers to resolve any relative URL present in the feed at parsing time. Similarly, generators may relativize URLs as a size optimization (for God's sake we are doing XML). - - -## Object Class Methods in ROME2 Beans - - - -The equals() and hashCode() methods will not be overridden. As all ROME2 beans are mutable, it is not safe to use them as keys of hash structures. - - - -Cloning will not be directly defined by ROME2 interface beans, instead they will have a copyFrom() method which is type safe and does a deep copy. Cloning a ROME2 bean will be a two step process, for example: - - - -``` - -Feed feed1 = Rome.create(Feed.class); -... -Feed feed2 = Rome.create(Feed.class); -feed2.copyFrom(feed1); - -``` - - -The toString() method in the beans will print the property that most likely identifies the bean plus the class name of the implementation bean. For example for a Feed bean the output of toString() would be: - - - -``` - -[xxx.rome2.impl.pojo.atom.FeedBean - http://foo.com/atom.xml] - -``` - - -\-\-\+\+ Plugins ClassLoading - - - -Bean implementations, parsers, generators, converters and all pluggable ROME2 components will be loaded using the same classLoader ROME2 core classes are loaded from. - - - -This is to keep simple the handling of them via singletons and their instantiation. Supporting different classLoaders would require complex handling for instantiation, to avoid missing classes and class mismatches. - - - -NOTE: As an example of how easy things can go sour, imagine ROME2 core classes in the common path of a web\-container and 2 web\-apps adding their own beans/parsers/generators/modules, the singletons managing them are in ROME2 core, managed by the common classLoader, a simple singleton won't cut it. ROME2 core will be small enough that it will not be a memory consumption issue if it is once in each web\-app. - - -## Parsers and Generators - - - -To support large feeds (several megabytes or even gigabytes) ROME2 will support stream parsing. We have to see if how this could be done leveraging Abdera, else using StAX API directly. - - - -Using XML stream parsers/generators is more complicated than using a DOM ones, to make easier for developers to implement parsers and generators ROME2 will take care of the details of the XML streaming API and it will expose feed fragments (the feed header and entries) via the JDom API, as JDom Elements. For example, the streaming version of an Atom parser and generator would be something like: - - - -``` - -public interface AtomParser { - // A JDom Document with just the root element, its attributes and namespaces in it. - boolean canParseFeed(Document jdomDoc); - - // repeatable operation, returns was has been read from the header so far - // feed parameter has whatever is has been readed from the feed header so far. - // If the given feed parameter is not null data from the jdom element is injected in it. - Feed parseFeed(Element jdomFeedElement, Feed feed) throws FeedException; - - - // the jdomFeedElement allows the parser to get context (such as base URL, namespaces) - // for the entry being parsed. - Entry parseEntry(Element jdomFeedElement, Element jdomEntryElement) throws FeedException; - } - - public interface AtomGenerator { - String getFeedType(); - - // if called must be called once and before a generateEntry(Entry) - Element generateFeed(Feed feed) throws FeedException; - - Element generateEntry(Entry entry) throws FeedException; - } - -``` - - -For Modules the parser and generator interface would be something like: - - - -``` - -public interface ModuleParser { - String getUri(); - - M parseModule(Element jdomFeedElement); - - M parseModule(Element jdomFeedElement, Element jdomEntryElement); - } - public interface ModuleGenerator { - String getUri(); - - Element generateModule(M module); - } - -``` - - -Parsers and Generators for modules will follow the same principle. - - - -As with ROME, in ROME2 Parsers will be as lenient as possible. Generators will be strict. - - -## ROME2 IO classes - - - -Feed parsers and generators will not be directly accessed by the ROME2 user, they are used by ROME2 to expose a more convenient API in the form of streaming API and builder API. For example: - - - -``` - -public class RomeIO { - - // streaming API - - public static AtomReader createAtomReader(Reader reader, boolean xmlHealing) { }; - public static RssReader createRssReader(Reader reader, boolean xmlHealing) { }; - - public static AtomWriter createAtomWriter(Writer writer, String feedType) { }; - public static RssWriter createRssWriter(Writer writer, String feedType) { }; - - - // builder API - - public Feed parseAsFeed(Reader reader) { }; - public Channel parseAsChannel(Reader reader) { }; - - public void generate(Writer writer, Feed feed, String feedType) { }; - public void generate(Writer writer, Channel channel, String feedType) { }; - } - public interface AtomReader { - - String getFeedType(); - - // repeatable read, returns the current parsed state of the feed header - Feed readFeed() throws FeedException; - - // returns a feed entry while there are more, NULL when done - Entry readEntry() throws FeedException; - - // closes the feed reader - void close() throws FeedException; - } - public interface AtomWriter { - - String getFeedType(); - - // if called must be called once and before a write(Entry) - void writeFeed(Feed feed) throws FeedException; - - // if the first write is for an Entry, then the output is an item document - void writeEntry(Entry entry) throws FeedException; - - void close() throws FeedException; - } - -``` - -## Feed Validators - - - -A bean FeedValidator class will verify that a feed or entry bean is valid for a given feed type. Feed generators would use this class to ensure feed correctness. - - -## Feed Conversion - - - -Conversion from Atom to RSS beans and vice versa will be done by an implementation of the FeedConverter interface. Conversion will be supported at both feed/channel and entry/item level. All properties, including modules data will be copied, after an conversion the state of the beans will be completely independent. - - - -The converter implementation will be pluggable, the implementation will be obtained from the bean factory and the Rome convenience class. - - - -Conversion from Atom beans to RSS beans and vice versa will be done by a FeedConverter class that would have the following signature: - - - -``` - -public interface FeedConverter { - public Feed convertToFeed(Channel channel); - public Feed convertToFeed(Channel channel, boolean processItems); - public Entry convertToEntry(Item item); - - public Channel convertToChannel(Feed feed); - public Channel convertToChannel(Feed feed, boolean processEntries); - public Item convertToItem(Entry entry); -} - -``` - -## Parser and Generator Filters - - - -Manipulation of feeds during parsing and generation at feed/channel and entry/item level would be possible by implementing readers and writers wrappers that work on top of the original reader and writer instances. - - - -This filtering/wrapping could be automated via configuration. - - -## Sources - - - -The following ZIP file only includes the ROME2 beans as described in this proposal, it does not include any of the parser, generator or IO API. - diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md b/src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md deleted file mode 100644 index fc4a68d..0000000 --- a/src/site/markdown/rome/ROMEDevelopmentProposals/ROMEFeatureRequests.md +++ /dev/null @@ -1,54 +0,0 @@ -# ROME Feature Requests - - -* **BUG:** com.sun.syndication.io.impl.DateParser:Date parseW3CDateTime(String) incorrectly uses a comma (",") rather than a decimal (".") to delimit the seconds from miliseconds. The correct format can be found on [http://www.w3.org/TR/NOTE\-datetime](http://www.w3.org/TR/NOTE-datetime). The bug is on line 170 (version 0.8). The fix is to replace the line with this: `int secFraction \= pre.indexOf(".");` \-\- JLP 9/4/2006 - -* **BUG:** Atom 1.0 parsing uses wrong Content types. "text", "html", "xhtml" do not match what is parse from the content elements. Subsequently, the content elements always have a null value \- no way to get content. - -* **BUG:** Link in description is not parsed - Try to parse [http://jakarta.apache.org/site/rss.xml](http://jakarta.apache.org/site/rss.xml), look at entry [http://jakarta.apache.org/site/news/news\-2006\-q1.html#20060107.1](http://jakarta.apache.org/site/news/news-2006-q1.html#20060107.1) This entry has an "\Quatre pi&#232;ces - -``` - In the hope of gettin "Quatre pièces" in your html feed. You get from the SynFeedOutput.output() this: - -``` - -&lt;FONT size="2"&gt;Quatre pi&amp;#232;ces&lt;/FONT&gt; - -``` - Which ends up with "Quatre pièces" being displayed in the RSS Reader that is taking your feed. To get the correct ouput I have had to resort to outputString.replaceAll("&#","&#"); OK as a a workaround but not very elegant or performant! \-\- Main.rjwallis \- 19 Mar 2005 - -* From that what i know about Rome it's impossible to use "\<\[!CDDATA \[" entities in content of feed's tags. i know this isn't essential, but it would a very nice feature. - -* Provide support for lastBuildDate in RSS, many news provider, including Yahoo News and BBC use lastBuildDate instead of lastPublishDate. - diff --git a/src/site/markdown/rome/ROMEDevelopmentProposals/index.md b/src/site/markdown/rome/ROMEDevelopmentProposals/index.md deleted file mode 100644 index b8ced06..0000000 --- a/src/site/markdown/rome/ROMEDevelopmentProposals/index.md +++ /dev/null @@ -1,28 +0,0 @@ -# ROME Development Proposals - -## ROME Development Proposals - - - -Link to new ROME feature and release proposals here. - - -## ROME2 Proposal - - - -* [../ROMEROADMAPProposed.html](../ROMEROADMAPProposed.html) - -* [ROME2 first proposal ](ROME21stProposalJune10th2006NOTCURRENT.html) (Jun/10/2006). - -* [ROME2 second proposal ](ROME22ndProposalJuly18th2006CURRENT.html) (Jul/18/2006). - - -## Requests for Enhancement (RFEs) - - - -* [Issue tracking system](https://rometools.jira.com/browse/ROME) \- file RFEs here - -* [Feature Requests](ROMEFeatureRequests.html) \- old feature request page - diff --git a/src/site/markdown/rome/ROMEROADMAPProposed.md b/src/site/markdown/rome/ROMEROADMAPProposed.md deleted file mode 100644 index 1c7e2fc..0000000 --- a/src/site/markdown/rome/ROMEROADMAPProposed.md +++ /dev/null @@ -1,84 +0,0 @@ -# ROME ROADMAP (Proposed) - - - - - - - - - - - - - - - - - -
- -version - - - -changes - -
- -1.1 - - - -Omnibus release with ROME patches \+ JDK 1.5 changes. - -
- -1.5 - - - -Migration to org.rometools (light break compat) - -
- -1.6 - - - -Elimination of Synd\* interfaces and Synd\*Impl in favor of base objects (break compat) - -
- -1.7 - - - -Introduction of "Rome" class with pass\-by\-ref context for modules - -
- -1.8 - - - -Addition of a factory by package for the Rome class. - -
- -1.9 - - - -JSR\-330   remix of the Rome class and all deps. - -
- -## Old Development Proposals - - - -* [ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html](ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html) - -* [ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html](ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html) - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md deleted file mode 100644 index b00c196..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.md +++ /dev/null @@ -1,81 +0,0 @@ -# Rome v0.1, How to build and run the tutorials sample code - -## Building the samples with Maven - - - -This is, as usual, the easiest way. - - - -There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. - - - -If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. - - - -If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be cp rome\-0.1/rome\-0.1.jar   \~/.maven/repository/rome/jars/). - - - -Then building the samples it's easy as a pie, just run maven jar in the rome\-samples project and you are all set. - - -## Building the samples with Ant - - - -Hopefully maven is helpful in supporting poor ant users who did not make the switch yet:\-) We generated an Ant build.xml file in order for you to be able to build rome\-samples with Ant. (Actually, Maven did it for us, the maven ant goal). - - - -The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. - - - -The only thing that will be left out is Rome's jar file itself: you'll need to copy it to the rome\-samples/target/lib directory (For example in UNIX would be cp rome\-0.1/rome\-0.1.jar  rome\-samples/target/lib, where rome\-0.1 is the binary distribution). - - - -To build rome\-samples just run ant jar. - - -## Running the samples with Maven - - - -The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. - - - -maven run\-agr runs the FeedAggregator sample - - - -maven run\-conv runs the FeedConverter sample - - - -maven run\-read runs the FeedReader sample - - -## Running the samples with Ant - - - -All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. - - - -ant run\-aggr runs the FeedAggregator sample - - - -ant run\-conv runs the FeedConverter sample - - - -ant run\-read runs the FeedReader sample - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md deleted file mode 100644 index d9d2aaa..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md +++ /dev/null @@ -1,158 +0,0 @@ -# Rome v0.1 Tutorial, Using Rome to aggregate many syndication feeds into a single one - - -**Software requirements:** J2SE 1.4\+, Xerces 2.4.0, JDOM B10, Commons Codec 1.2 and Rome 0.1. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: - - - -``` - -SyndInput input = new SyndInput(); -SyndFeedI feed = input.build(feedUrl.openStream()); - -``` - - -The first line creates a SyndInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndInput.build() method returns a SyndFeedI instance that can be easily processed. - - - -Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndOutput class does this generation. When creating a syndication feed output, the developer has to indicate the syndication feed type for the ouput, and the SyndOutput will use the right generator for it. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: - - - -``` - -SyndOutput output = new SyndOutput(outputType); -output.output(feed,System.out); - -``` - - -The first line creates a SyndOutput instance that will produce syndication feeds of the type indicated by the outputType parameter. The outputType parameter can be any of the following values: rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3. The second line writes the SyndFeedI as a syndication feed into the application's output. - - - -SyndFeedI can also be created and populated within the code. For example: - - - -``` - -SyndFeedI aggrFeed = new SyndFeed(); -aggrFeed.setTitle("Aggregated Feed"); -aggrFeed.setDescription("Anonymous Aggregated Feed"); -aggrFeed.setAuthor("anonymous"); -aggrFeed.setLink("http://www.anonymous.com"); - -``` - - -The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome and sets the title, description, author and link properties of the feed. - - - -SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. - - - -The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): - - - -``` - -SyndFeedI feed = new SyndFeed(); -... -List entries = new ArrayList(); -feed.setEntries(entries); -... -SyndInput input = new SyndInput(false); -SyndFeedI inFeed = input.build(inputUrl.openStream()); - -entries.addAll(inFeed.getEntries()); - -``` - - -Note that it's OK to assign the entries list to the feed and later add entries to it as all SyndFeedI getters/setters do copy by reference. - - - -Following is the full code for a Java application that reads a list of syndication feed, aggregates their items into a single feed, and writes the aggregated feed to the application's output. - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.util.List; -import java.util.ArrayList; - -import com.sun.syndication.feed.synd.SyndFeedI; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.feed.synd.SyndEntryI; -import com.sun.syndication.io.SyndInput; -import com.sun.syndication.io.SyndOutput; - -public class FeedAggregator { - - public static void main(String[] args) { - boolean ok = false; - if (args.length>=2) { - try { - String outputType = args[0]; - - SyndFeedI feed = new SyndFeed(); - feed.setTitle("Aggregated Feed"); - feed.setDescription("Anonymous Aggregated Feed"); - feed.setAuthor("anonymous"); - feed.setLink("http://www.anonymous.com"); - - List entries = new ArrayList(); - feed.setEntries(entries); - - for (int i=1;i - * @author Alejandro Abdelnur - * - */ -public class FeedAggregator { - - public static void main(String[] args) { - boolean ok = false; - if (args.length>=2) { - try { - String outputType = args[0]; - - SyndFeedI feed = new SyndFeed(); - feed.setFeedType(outputType); - - feed.setTitle("Aggregated Feed"); - feed.setDescription("Anonymous Aggregated Feed"); - feed.setAuthor("anonymous"); - feed.setLink("http://www.anonymous.com"); - - List entries = new ArrayList(); - feed.setEntries(entries); - - for (int i=1;i - * @author Alejandro Abdelnur - * - */ -public class FeedConverter { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String outputType = args[0]; - - URL feedUrl = new URL(args[1]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeedI feed = input.build(feedUrl.openStream()); - feed.setFeedType(outputType); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,System.out); - - ok = true; - } - catch (Exception ex) { - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedConverter converts between syndication feeds types."); - System.out.println("The first parameter must be the feed type to convert to."); - System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); - System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); - System.out.println("The second parameter must be the URL of the feed to convert."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md deleted file mode 100644 index 475303d..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.md +++ /dev/null @@ -1,88 +0,0 @@ -# Rome v0.2 Tutorial, Using Rome to read a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.2. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeedI feed = input.build(feedUrl.openStream()); - -``` - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. - - - -The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. - - - -``` - -System.out.println(feed); - -``` - - -Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import com.sun.syndication.feed.synd.SyndFeedI; -import com.sun.syndication.io.SyndFeedInput; - -/** - * It Reads and prints any RSS/Atom feed type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedReader { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==1) { - try { - URL feedUrl = new URL(args[0]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeedI feed = input.build(feedUrl.openStream()); - - System.out.println(feed); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedReader reads and prints any RSS/Atom feed type."); - System.out.println("The first parameter must be the URL of the feed to read."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md deleted file mode 100644 index 1ae0014..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.md +++ /dev/null @@ -1,17 +0,0 @@ -# Rome v0.2 Tutorials - - -The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. - - - -1. [Using Rome to read a syndication feed](RomeV0.2TutorialUsingRomeToReadASyndicationFeed.html) - -1. [Using Rome to convert a syndication feed from one type to another](RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - -1. [Using Rome to aggregate many syndication feeds into a single one](RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - - - -The instructions for building and running the samples are identical to the [instructions for Rome v0.1](../../ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html). - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md deleted file mode 100644 index ac4a473..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.2Beta/index.md +++ /dev/null @@ -1,29 +0,0 @@ -# ROME 0.2 Beta - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM Beta 10](http://www.jdom.org/) - - -## Downloads - - -## Aditional Information - - - -* [Tutorials](RomeV0.2Tutorials/index.html) - -* Changes Log - - -## Known Issues - - - -* Same issues as Rome v0.1 - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md deleted file mode 100644 index a5ef3cc..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.md +++ /dev/null @@ -1,81 +0,0 @@ -# Rome v0.3, How to build and run the tutorials sample code - -## Building the samples with Maven - - - -This is, as usual, the easiest way. - - - -There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in `\~/.maven/repository`). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. - - - -If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. - - - -If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be `cp rome\-0.3/rome\-0.3.jar   \~/.maven/repository/rome/jars/`). - - - -Then building the samples it's easy as a pie, just run maven jar in the rome\-samples project and you are all set. - - -## Building the samples with Ant - - - -Hopefully maven is helpful in supporting poor ant users who did not make the switch yet We generated an Ant build.xml file in order for you to be able to build rome\-samples with Ant. (Actually, Maven did it for us, the maven ant goal). - - - -The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. - - - -The only thing that will be left out is Rome's jar file itself: you'll need to copy it to the rome\-samples/target/lib directory (For example in UNIX would be `cp rome\-0.3/rome\-0.3.jar  rome\-samples/target/lib`, where rome\-0.3 is the binary distribution). - - - -To build rome\-samples just run `ant jar`. - - -## Running the samples with Maven - - - -The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. - - - -* `maven run\-agr` runs the FeedAggregator sample - -* `maven run\-conv` runs the FeedConverter sample - -* `maven run\-read` runs the FeedReader sample - -* `maven run\-write` runs the FeedWriter sample - -* `maven run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) - - -## Running the samples with Ant - - - -All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. - - - -* `ant run\-aggr` runs the FeedAggregator sample - -* `ant run\-conv` runs the FeedConverter sample - -* `ant run\-read` runs the FeedReader sample - -* `ant run\-write` runs the FeedWriter sample - -* `ant run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md deleted file mode 100644 index 3f0e773..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.md +++ /dev/null @@ -1,368 +0,0 @@ -# Rome v0.3 Tutorial, Defining a Custom Module (bean, parser and generator) - - -This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). - - - -To understand this tutorial you should be familiar the with Rome API and with the use of modules in syndication feeds. - - - -Out of the box Rome parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. - - - -The complete source for this tutorial is in the Rome samples bundle as well as in CVS. - - -## What is the intended outcome of the tutorial? - - - -The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. - - - -The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: - - - -``` - - - - - RSS 1.0 Feed with Sample Module - http://rome.dev.java.net - This is a feed showing how to use a custom module with Rome - - - - - - - Channel bar - Channel first foo - Channel second foo - - - Title of Item 01 - http://rome.dev.java.net/item01 - Item 01 does not have Sample module data - - - Title of Item 02 - http://rome.dev.java.net/item02 - Item 02 has Sample module data - Item 02 bar - Item 02 only foo - 2004-07-27T00:00+00:00 - - - -``` - -## Sample Module Bean - - - -First we must start with the bean interface, SampleModuleI. SampleModuleI must extend ModuleI. The ModuleI interface defines the getUri() method, which will return a URI identifying the module. The ModuleI interface also extends the Cloneable, ToString and CopyFrom interfaces to ensure that the beans provide support for basic features as cloning, equality, toString, etc. (for more details on this check the Understanding the Rome common classes and interfaces document). - - - -The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. - - - -Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). - - - -``` - -public interface SampleModuleI extends ModuleI,CopyFrom { - - public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; - - public String getBar(); - public void setBar(String bar); - - public List getFoos(); - public void setFoos(List foos); - - public Date getDate(); - public void setDate(Date date); -} - -``` - - -Next we have to write the bean implementation, SampleModule. - - - -SampleModule extends Module (the implementation counterpart of ModuleI). Module extends ObjectBean which provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModuleI). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. - - - -``` - -public class SampleModule extends Module implements SampleModuleI { - ... - public SampleModule() { - super(SampleModuleI.class,SampleModuleI.URI); - } - - public String getBar() { - return _bar; - } - ... - -``` - - -The module properties are just Java Bean properties. The only catch is to follow Rome semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned.. Also, following Rome semantics, all properties are by reference, including mutable ones. - - - -``` - -public class SampleModule extends Module implements SampleModuleI { - private String _bar; - private List _foos; - private Date _date; - ... - public void setBar(String bar) { - _bar = bar; - } - - public List getFoos() { - return (_foos==null) ? (_foos=new ArrayList()) : _foos; - } - - public void setFoos(List foos) { - _foos = foos; - } - - public Date getDate() { - return _date; - } - - public void setDate(Date date) { - _date = date; - } - -``` - - -Now the weird part: the bits for the CopyFrom logic. The Understanding the Rome common classes and interfaces document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. - - - -The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). - - - -The copyFrom() method copies all the properties from the parameter object (which must be a SampleModuleI implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. - - - -``` - -public class SampleModule extends Module implements SampleModuleI { - ... - public Class getInterface() { - return SampleModuleI.class; - } - - public void copyFrom(Object obj) { - SampleModuleI sm = (SampleModuleI) obj; - setBar(sm.getBar()); - List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) - setFoos(foos); - setDate((Date)sm.getDate().clone()); // because Date is not inmutable. - } - -} - -``` - -## Sample Module Parser - - - -The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. - - - -The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. - - - -In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. - - - -If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. - - - -``` - -public class SampleModuleParser implements ModuleParser { - - private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModuleI.URI); - - public String getNamespaceUri() { - return SampleModuleI.URI; - } - - public ModuleI parse(Element dcRoot) { - boolean foundSomething = false; - SampleModuleI fm = new SampleModule(); - - Element e = dcRoot.getChild("bar", SAMPLE_NS); - if (e != null) { - foundSomething = true; - fm.setBar(e.getText()); - } - List eList = dcRoot.getChildren("foo", SAMPLE_NS); - if (eList.size() > 0) { - foundSomething = true; - fm.setFoos(parseFoos(eList)); - } - e = dcRoot.getChild("date", SAMPLE_NS); - if (e != null) { - foundSomething = true; - fm.setDate(DateParser.parseW3CDateTime(e.getText())); - } - return (foundSomething) ? fm : null; - } - - private List parseFoos(List eList) { - List foos = new ArrayList(); - for (int i = 0; i < eList.size(); i++) { - Element e = (Element) eList.get(i); - foos.add(e.getText()); - } - return foos; - } - -} - -``` - -## Sample Module Generator - - - -The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. - - - -The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. - - - -If no Sample Module bean is in the feed bean the module generator is not invoked at all. - - - -``` - -public class SampleModuleGenerator implements ModuleGenerator { - private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModuleI.URI); - - public String getNamespaceUri() { - return SampleModuleI.URI; - } - - public void generate(ModuleI module, Element element) { - - // this is not necessary, it is done to avoid the namespace definition in every item. - Element root = element; - while (root.getParent()!=null && root.getParent() instanceof Element) { - root = (Element) element.getParent(); - } - root.addNamespaceDeclaration(SAMPLE_NS); - - SampleModuleI fm = (SampleModuleI)module; - if (fm.getBar() != null) { - element.addContent(generateSimpleElement("bar", fm.getBar())); - } - List foos = fm.getFoos(); - for (int i = 0; i < foos.size(); i++) { - element.addContent(generateSimpleElement("foo",foos.get(i).toString())); - } - if (fm.getDate() != null) { - element.addContent(generateSimpleElement("date", DateParser.parseW3CDateTime(fm.getDate()))); - } - } - - protected Element generateSimpleElement(String name, String value) { - Element element = new Element(name, SAMPLE_NS); - element.addContent(value); - return element; - } - -} - -``` - -## Configuration to make Rome process Sample Module in feeds - - - -The last step is to setup the configuration file to indicate to Rome how and when to use the Sample Module parser and generator. - - - -The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. - - - -You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. - - - -Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. - - - -``` - -# Parsers for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser - -# Parsers for RSS 1.0 item modules -# -rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser - -# Generators for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator - -# Generators for RSS_1.0 entry modules -# -rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator - -``` - - -If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. - - -## Using the Sample Module from the SyndFeedI beans - - - -They will be there, just use them. You may get the SampleModuleI bean using the getModule(String Uri) method of the SyndFeedI bean and the SyndEntryI bean. - - - -Adding or replacing a syndication feed parser, generator or converter is along the same lines of what it has been explained in the tutorial for modules. Eventually we'll have a doc on that too - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md deleted file mode 100644 index 62b5315..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.md +++ /dev/null @@ -1,150 +0,0 @@ -# Rome v0.3 Tutorial, Using Rome to aggregate many syndication feeds into a single one - - -**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.3. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); - -``` - - -Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. - - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. - - - -Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeedI object being output. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: - - - -``` - -SyndFeedOutput output = new SyndFeedOutput(); -output.output(feed,new PrintWriter(System.out)); - -``` - - -The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3), the SyndFeedI feedType property indicates the type. The second line writes the SyndFeedI as a syndication feed into the application's output. - - - -SyndFeedI can also be created and populated within the code. For example: - - - -``` - -SyndFeedI aggrFeed = new SyndFeed(); -aggrFeed.setFeedType("rss_1.0"); -aggrFeed.setTitle("Aggregated Feed"); -aggrFeed.setDescription("Anonymous Aggregated Feed"); -aggrFeed.setAuthor("anonymous"); -aggrFeed.setLink("http://www.anonymous.com"); - -``` - - -The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. - - - -SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. - - - -The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.util.List; -import java.util.ArrayList; - -import com.sun.syndication.feed.synd.SyndFeedI; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.io.SyndFeedOutput; -import com.sun.syndication.io.SyndFeedInput; - -/** - * It aggregates a list of RSS/Atom feeds (they can be of different types) - * into a single feed of the specified type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedAggregator { - - public static void main(String[] args) { - boolean ok = false; - if (args.length>=2) { - try { - String outputType = args[0]; - - SyndFeedI feed = new SyndFeed(); - feed.setFeedType(outputType); - - feed.setTitle("Aggregated Feed"); - feed.setDescription("Anonymous Aggregated Feed"); - feed.setAuthor("anonymous"); - feed.setLink("http://www.anonymous.com"); - - List entries = new ArrayList(); - feed.setEntries(entries); - - for (int i=1;i - * @author Alejandro Abdelnur - * - */ -public class FeedConverter { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String outputType = args[0]; - - URL feedUrl = new URL(args[1]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); - feed.setFeedType(outputType); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,new PrintWriter(System.out)); - - ok = true; - } - catch (Exception ex) { - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedConverter converts between syndication feeds types."); - System.out.println("The first parameter must be the feed type to convert to."); - System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); - System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); - System.out.println("The second parameter must be the URL of the feed to convert."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md deleted file mode 100644 index aec5aba..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.md +++ /dev/null @@ -1,205 +0,0 @@ -# Rome v0.3 Tutorial, Using Rome to create and write a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.3. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Creating a feed with SyndFeedI beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeedI bean with 3 entries is created. - - - -First the SyndFeedI instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. - - - -``` - -SyndFeedI feed = new SyndFeed(); -feed.setFeedType(feedType); - -feed.setTitle("Sample Feed (created with Rome)"); -feed.setLink("http://rome.dev.java.net"); -feed.setDescription("This feed has been created using Rome (Java syndication utilities"); - -``` - - -Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. - - - -``` - -List entries = new ArrayList(); -SyndEntryI entry; -SyndContentI description; - -entry = new SyndEntry(); -entry.setTitle("Rome v1.0"); -entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); -entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); -description = new SyndContent(); -description.setType("text/plain"); -description.setValue("Initial release of Rome"); -entry.setDescription(description); -entries.add(entry); -... -entry = new SyndEntry(); -entry.setTitle("Rome v3.0"); -entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); -entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); -description = new SyndContent(); -description.setType("text/html"); -description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log

"); -entry.setDescription(description); -entries.add(entry); - -``` - - -Finally the list with entries is added to the SyndFeedI bean. - - - -``` - -feed.setEntries(entries); - -``` - - -The SyndFeedI bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. - - - -Rome includes generators that allow producing syndication feed XML documents from SyndFeedI instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeedI bean. All it takes to write a syndication feed XML document using Rome \-assuming you have a SyndFeedI bean and a Writer instance\- are the following lines of code: - - - -``` - -SyndFeedI feed = ...; -Writer writer = ...; - -SyndFeedOutput output = new SyndFeedOutput(); -output.output(feed,writer); - -``` - - -First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeedI bean to the Writer stream. - - - -Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. - - - -``` - -package com.sun.syndication.samples; - -import com.sun.syndication.feed.synd.*; -import com.sun.syndication.io.SyndFeedOutput; - -import java.io.FileWriter; -import java.io.Writer; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -/** - * It creates a feed and writes it to a file. - *

- * - */ -public class FeedWriter { - - private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String feedType = args[0]; - String fileName = args[1]; - - SyndFeedI feed = new SyndFeed(); - feed.setFeedType(feedType); - - feed.setTitle("Sample Feed (created with Rome)"); - feed.setLink("http://rome.dev.java.net"); - feed.setDescription("This feed has been created using Rome (Java syndication utilities"); - - List entries = new ArrayList(); - SyndEntryI entry; - SyndContentI description; - - entry = new SyndEntry(); - entry.setTitle("Rome v1.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); - description = new SyndContent(); - description.setType("text/plain"); - description.setValue("Initial release of Rome"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntry(); - entry.setTitle("Rome v2.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); - description = new SyndContent(); - description.setType("text/plain"); - description.setValue("Bug fixes, minor API changes and some new features"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntry(); - entry.setTitle("Rome v3.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); - entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); - description = new SyndContent(); - description.setType("text/html"); - description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log

"); - entry.setDescription(description); - entries.add(entry); - - feed.setEntries(entries); - - Writer writer = new FileWriter(fileName); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,writer); - writer.close(); - - System.out.println("The feed has been written to the file ["+fileName+"]"); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); - System.out.println("The first parameter must be the syndication format for the feed"); - System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); - System.out.println("The second parameter must be the file name for the feed"); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md deleted file mode 100644 index 7ec5175..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.md +++ /dev/null @@ -1,93 +0,0 @@ -# Rome v0.3 Tutorial, Using Rome to read a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM B10 and Rome 0.3. - - - -Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. - - - -Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); - -``` - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. - - - -Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. - - - -The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. - - - -``` - -System.out.println(feed); - -``` - - -Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.io.InputStreamReader; -import com.sun.syndication.feed.synd.SyndFeedI; -import com.sun.syndication.io.SyndFeedInput; - -/** - * It Reads and prints any RSS/Atom feed type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedReader { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==1) { - try { - URL feedUrl = new URL(args[0]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); - - System.out.println(feed); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedReader reads and prints any RSS/Atom feed type."); - System.out.println("The first parameter must be the URL of the feed to read."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md deleted file mode 100644 index 4e1b95b..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.md +++ /dev/null @@ -1,21 +0,0 @@ -# Rome v0.3 Tutorials - - -The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. - - - -1. [Using Rome to read a syndication feed](RomeV0.3TutorialUsingRomeToReadASyndicationFeed.html) - -1. [Using Rome to convert a syndication feed from one type to another](RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - -1. [Using Rome to aggregate many syndication feeds into a single one](RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - -1. [Using Rome to create and write a feed](RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) **_(New)_** - -1. [Defining a Custom Module bean, parser and generator](RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.html) **_(New)_** - - - -For instructions on how to build and run the samples used in the tutorials [click here](RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.html). - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md deleted file mode 100644 index af43257..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.3Beta/index.md +++ /dev/null @@ -1,33 +0,0 @@ -# ROME 0.3 Beta - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM Beta 10](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](RomeV0.3Tutorials/index.html) (2 New ones) - -* Changes Log - - -## Known Issues - - - -* Same issues as Rome v0.1 - -* When processing XML documents with DTD (ie: Netscape RSS 0.91) if the XML parser implementation is not Xerces and the system does not have access ot the internet, the XML parser will fail. - -* If the feed starts with a [BOM](http://www.unicode.org/faq/utf_bom.html#BOM) the JAXP SAX parser may fail, using [Xerces 2.6.2](http://xml.apache.org/xerces2-j) addresses the problem. - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md deleted file mode 100644 index 1a15847..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.md +++ /dev/null @@ -1,85 +0,0 @@ -# Rome v0.4, How to build and run the tutorials sample code - -## Building the samples with Maven - - - -This is, as usual, the easiest way. - - - -There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. - - - -If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. - - - -If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be `cp rome\-0.4/rome\-0.4.jar   \~/.maven/repository/rome/jars/`). - - - -Then building the samples it's easy as a pie, just run maven jar in the samples sub\-project and you are all set. - - - -To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. - - -## Building the samples with Ant - - - -The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. - - - -In order to build the samples (or any subprojects), you'll need to first ensure that rome itself is built. You can do this simply by running ant in the project root directory. - - - -Once this is done, change to the samples directory, and just run ant. This will produce two files, rome\-samples.jar which contains the sample applications, and rome\-samples.war which will contain a deployable web application war file for the FeedServlet sample. - - -## Running the samples with Maven - - - -The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. - - - -* `maven run\-agr` runs the FeedAggregator sample - -* `maven run\-conv` runs the FeedConverter sample - -* `maven run\-read` runs the FeedReader sample - -* `maven run\-write` runs the FeedWriter sample - -* `maven run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) - - - -To run the sample Web Application you'll need to deploy the WAR file into your servlet container. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. - - -## Running the samples with Ant - - - -All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. - - - -* `ant run\-aggr` runs the FeedAggregator sample - -* `ant run\-conv` runs the FeedConverter sample - -* `ant run\-read` runs the FeedReader sample - -* `ant run\-write` runs the FeedWriter sample - -* `ant run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md deleted file mode 100644 index eb10ace..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.md +++ /dev/null @@ -1,243 +0,0 @@ -# Rome v0.4 Tutorial, Using Rome within a Servlet to create and return a feed - - -**Software requirements:** J2SE 1.4\+, Servlet Container 2.3\+, JDOM 1.0 and Rome 0.4. - - - -This sample consists of a servlet that serves a feed as response. The feed type (RSS in any of its variants or Atom) can be specified as a URL parameter when requesting the feed. The returned feed is hardwired in the sample and it would be straight forward to modify the sample to generate the feed dynamically (i.e. from data stored in a database). - - - -The core logic of the **_FeedServlet_** is in the following fragment of code: - - - -``` - -public class FeedServlet extends HttpServlet { - ... - - public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { - ... - SyndFeed feed = getFeed(req); - - String feedType = req.getParameter(FEED_TYPE); - feedType = (feedType!=null) ? feedType : _defaultFeedType; - feed.setFeedType(feedType); - - res.setContentType(MIME_TYPE); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,res.getWriter()); - ... - } - - protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { - SyndFeed feed = new SyndFeedImpl(); - feed = ... - return feed; - } - -} - -``` - - -The servlet returns a feed upon HTTP GET requests with the **_doGet()_** method. - - - -First the **_SyndFeed_** bean is obtained by invoking the **_getFeed()_** method, the request object is passed as it could be used to obtain request contextual information to create the feed. How to create a feed using SyndFeed bean is explained in detail in the [Using Rome to create and write a feed](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) Tutorial. - - - -Then the feed type of the response is determined, first looking at the request parameters and falling back to a default feed type (specified by a servlet init parameter) if the type is not indicated in the request parameters. Setting the feed type in the feed bean will indicate the **_SyndFeedOutput_** the feed type to output. - - - -Finally, the response is set with the proper content type (the MIME\_TYPE constant is 'application/xml; charset\=UTF\-8') and the feed is written to response writer using the **_SyndFeedOutput_** output classes. - - - -Following is the full code for the servlet. - - - -``` - -package com.sun.syndication.samples.servlet; - -import com.sun.syndication.feed.synd.*; -import com.sun.syndication.io.FeedException; -import com.sun.syndication.io.SyndFeedOutput; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -/** - * Sample Servlet that serves a feed created with Rome. - *

- * The feed type is determined by the 'type' request parameter, if the parameter is missing it defaults - * to the 'default.feed.type' servlet init parameter, if the init parameter is missing it defaults to 'atom_0.3' - *

- * @author Alejandro Abdelnur - * - */ -public class FeedServlet extends HttpServlet { - private static final String DEFAULT_FEED_TYPE = "default.feed.type"; - private static final String FEED_TYPE = "type"; - private static final String MIME_TYPE = "application/xml; charset=UTF-8"; - private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed"; - - private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); - - private String _defaultFeedType; - - public void init() { - _defaultFeedType = getServletConfig().getInitParameter(DEFAULT_FEED_TYPE); - _defaultFeedType = (_defaultFeedType!=null) ? _defaultFeedType : "atom_0.3"; - } - - public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { - try { - SyndFeed feed = getFeed(req); - - String feedType = req.getParameter(FEED_TYPE); - feedType = (feedType!=null) ? feedType : _defaultFeedType; - feed.setFeedType(feedType); - - res.setContentType(MIME_TYPE); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,res.getWriter()); - } - catch (FeedException ex) { - String msg = COULD_NOT_GENERATE_FEED_ERROR; - log(msg,ex); - res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg); - } - } - - protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { - SyndFeed feed = new SyndFeedImpl(); - - feed.setTitle("Sample Feed (created with Rome)"); - feed.setLink("http://rome.dev.java.net"); - feed.setDescription("This feed has been created using Rome (Java syndication utilities"); - - List entries = new ArrayList(); - SyndEntry entry; - SyndContent description; - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v0.1"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Initial release of Rome"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v0.2"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Bug fixes, minor API changes and some new features"+ - "

For details check the Changes Log for 0.2

"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v0.3"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

Bug fixes, API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log for 0.3

"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v0.4"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome04"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-09-24")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

Bug fixes, API changes, some new features, Unit testing completed

"+ - "

For details check the Changes Log for 0.4

"); - entry.setDescription(description); - entries.add(entry); - - feed.setEntries(entries); - - return feed; - } - -} - -``` - - -To use the **_FeedServlet_** we need to create a Web Application. For the Web Application we need a deployment descriptor, the **_web.xml_** file: - - - -``` - - - - - - Rome Samples - - - FeedServlet - com.sun.syndication.samples.servlet.FeedServlet - - default.feed.type - rss_2.0 - - - - - FeedServlet - /feed - - - - -``` - - -To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. Deploy the WAR in a servlet container and the **_FeedServlet_** should be up an running. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md deleted file mode 100644 index 0e26e00..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.md +++ /dev/null @@ -1,23 +0,0 @@ -# Rome v0.4 Tutorials - - -The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. - - - -1. [Using Rome to read a syndication feed](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) - -1. [Using Rome to convert a syndication feed from one type to another](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - -1. [Using Rome to aggregate many syndication feeds into a single one](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - -1. [Using Rome to create and write a feed](../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) - -1. [Defining a Custom Module bean, parser and generator](../../../HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) - -1. [Using Rome within a Servlet to create and return a feed](RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.html) **_(NEW)_** - - - -For instructions on how to build and run the samples used in the tutorials [click here](RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.html). - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md deleted file mode 100644 index dab1c27..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.4Beta/index.md +++ /dev/null @@ -1,68 +0,0 @@ -# ROME 0.4 Beta - -## What is New, Highlights - - - -* Changed naming convention of bean interfaces and implementations (i.e.: SyndFeedI/SyndFeed are now SyndFeed/SyndFeedImpl) - -* New XmlReader that handles charset encoding as defined by the XML 1.0 specification and RFC 3023 - -* Support of RSS 0.91 Netscape and RSS 0.91 Userland as distinct feed types - -* All feed types have Modules support - -* Added checks to generators reducing the chances of generating invalid feeds - -* Comprehensive Unit testing - -* Bug fixes - -* More documentation and samples - -* Dependencies, upgraded to JDom 1.0 and removed Xerces - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](RomeV0.4Tutorials/index.html) - -* [Changes Log](../../ChangeLog.html) - -* Inside ROME, How Things Work - - * [How ROME Works](../../HowRomeWorks/index.html), Understanding Rome (a detailed overview by Dave Johnson) - - * [Rome common Package](../../HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html), bean utilities, enums, copying and clonning - - * [ROME Plugins Mechanism](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how Rome helps getting the right charset encoding - - - - -## Known Issues - - - -None. - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md b/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md deleted file mode 100644 index 82c93c6..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/ROMET-Shirt.md +++ /dev/null @@ -1,21 +0,0 @@ -# ROME T-Shirt - - -I made it quickly before taking a plane, and ruined my iron when trying to press it myself on a T\-shirt, but it's better than nothing and a T\-shirt is vital to an open source project! - - - -It's at [http://www.cafepress.com/chanezon.13794826](http://www.cafepress.com/chanezon.13794826) - - - -Else just print the design yourself and iron it on a T\-shirt (advice from P@ the practical guy: don't try to iron glossy paper photo on a T\-shirt - - - - - - - -\-\- [PatrickChanezon](http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon) \- 10 Jan 2005 - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md b/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md deleted file mode 100644 index 4501e2b..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.5Beta/index.md +++ /dev/null @@ -1,68 +0,0 @@ -# ROME 0.5 Beta - -## What is New, Highlights - - - -* Removed common package and classes from the public API - -* Removed Enum class, using constants now - -* XmlReader now has a lenient behavior for charset encoding detection - -* Bug fixes - -* [ROMET-Shirt.html](ROMET-Shirt.html) - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - -* [Changes Log](../../ChangeLog.html) - -* Inside ROME, How Things Work - - * [How ROME Works](../../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) - - * [ROME Plugins Mechanism](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding - - * [Creating a custom Module](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator - - * [The CopyFrom interface](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - - - -* Implementation documents - - * [ROME bean utilities, equals, toString and clonning](../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - - - - -## Known Issues - - - -None. - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md deleted file mode 100644 index d0ce663..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.6Beta.md +++ /dev/null @@ -1,64 +0,0 @@ -# ROME 0.6 Beta - - -Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.6 is reusing ROME 0.5 Wiki pages as most of the changes are internal and the documentation has not changed. - - -## What is New, Highlights - - - -* Bug fixes - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - -* [Changes Log](../ChangeLog.html) - -* Inside ROME, How Things Work - - * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) - - * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding - - * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator - - * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - - - -* Implementation documents - - * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - - - - -## Known Issues - - - -None. - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md deleted file mode 100644 index 5bb5e4b..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.7Beta.md +++ /dev/null @@ -1,66 +0,0 @@ -# ROME 0.7 Beta - - -Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.7 is reusing ROME 0.5 Wiki pages as most of the changes are internal. - - -## What is New, Highlights - - - -* We got a cool logo - -* Bug fixes - -* Several Date and time parsing improvements including support for custom parsing masks - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - -* [Changes Log](../ChangeLog.html) - -* Inside ROME, How Things Work - - * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) - - * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding - - * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator - - * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - - * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - - * [Customizing Date and time parsing](../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file **NEW** - - - - -## Known Issues - - - -None. - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md deleted file mode 100644 index 4b80afe..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.8Beta.md +++ /dev/null @@ -1,74 +0,0 @@ -# ROME 0.8 Beta - - -Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.8 is reusing ROME 0.7 Wiki pages as much as possible. - - -## What is New, Highlights - - - -* ROME now supports the final version of the Atom Syndication Format [RFC 4287](http://www.ietf.org/rfc/rfc4287): let's Nuke all these feeds! **NEW** - -* Enclosure support at the Synd level, for all our podcaster friends - -* Bug fixes - -* details in the ChangeList - -* Modules galore: Content, iTunes Podcast, Slash, Google Base, Creative Commons, MediaRSS - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - -* [Changes Log](../ChangeLog.html) - -* Inside ROME, How Things Work - - * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) - - * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding - - * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator - - * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - - * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - - * [Customizing Date and time parsing](../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file **NEW** - - - - -## Known Issues - - - -None. - - - -\-\- [PatrickChanezon](http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon) \- 02 Feb 2006 - diff --git a/src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md b/src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md deleted file mode 100644 index 4e64d08..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME0.9Beta.md +++ /dev/null @@ -1,72 +0,0 @@ -# ROME 0.9 Beta - - -Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.9 is reusing ROME 0.8 Wiki pages as much as possible. - - -## What is New, Highlights - - - -* Better support for RSS feeds that use - -* Better mapping for RSS description/content and Atom summary/content - -* Numerous bug fixes - -* Details in the ChangeList - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Additional Information - - - -* [Tutorials](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - -* [Changes Log](../ChangeLog.html) - -* Inside ROME, How Things Work - - * [How ROME Works](../HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) - - * [ROME Plugins Mechanism](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding - - * [Creating a custom Module](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator - - * [The CopyFrom interface](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - - * [ROME bean utilities, equals, toString and clonning](../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - - * [Customizing Date and time parsing](../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file **NEW** - - - - -## Known Issues - - - -None. - - - -\-\- Main.snoopdave \- 06 Dec 2006 - diff --git a/src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md b/src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md deleted file mode 100644 index e516f41..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME1.0RC1.md +++ /dev/null @@ -1,42 +0,0 @@ -# ROME 1.0 RC1 - -## Rss and atOM utiliEs (ROME) v1.0 RC1 (16 Jul 2008) - - - -Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 1.0 is reusing wikis from previous versions as there are not significant changes. - - -## What is New, Highlights - - - -* Several XmlReader fixes - -* Several Atom 1.0 bean, parser and generator fixes - -* Some RSS fixes - -* Removal of unused namespaces - -* Details in the [change log](../ChangeLog.html) - - -## Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -### Documentation - - - -* [Javadocs](http://rome.dev.java.net/apidocs/1_0RC1/overview-summary.html) - diff --git a/src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md b/src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md deleted file mode 100644 index 40a0a57..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME1.0RC2.md +++ /dev/null @@ -1,35 +0,0 @@ -# ROME 1.0 RC2 - -## What is New, Highlights - - - -* ROME is now [built using Maven 2](../HowToBuildRome.html) - -* ROME jars are now available in the [java.net Maven repository](../ROMEAndMaven2.html) - -* More lenient handling of Number formats during parsing - -* Better date parsing for Atom dates - -* Complete details in the [change log](../ChangeLog.html) - - -## Dependencies - - - -* [J2SE](http://wiki.java.net/twiki/bin/view/Javawsxml/J2SE) 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - -## Downloads - - -## Documentation - - - -* [Javadocs](http://rome.dev.java.net/apidocs/1_0RC2/overview-summary.html) - diff --git a/src/site/markdown/rome/ROMEReleases/ROME1.0Release.md b/src/site/markdown/rome/ROMEReleases/ROME1.0Release.md deleted file mode 100644 index a0b7e87..0000000 --- a/src/site/markdown/rome/ROMEReleases/ROME1.0Release.md +++ /dev/null @@ -1,40 +0,0 @@ -# ROME 1.0 Release - - -_ROME 1.0 was released on March 12, 2009_ - - -### What is New / Highlights - - - -Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 1.0 is reusing wikis from previous versions as there are not significant changes. - - - -* ROME can now optionally preserve WireFeed (ie, Atom/RSS specific) data and make it available via the SyndFeed data model. See [PreservingWireFeeds](../PreservingWireFeeds.html) for further details - - - -* Complete details in the [change log](../ChangeLog.html) - - -### Downloads - - -### Dependencies - - - -* J2SE 1.4\+ - -* [JDOM 1.0](http://www.jdom.org/) - - - -### Documentation - - - -* [Javadocs](http://rome.dev.java.net/apidocs/1_0/overview-summary.html) - diff --git a/src/site/markdown/rome/ROMEReleases/index.md b/src/site/markdown/rome/ROMEReleases/index.md deleted file mode 100644 index dad2e3a..0000000 --- a/src/site/markdown/rome/ROMEReleases/index.md +++ /dev/null @@ -1,135 +0,0 @@ -# ROME Releases - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Version - - - - Release Date - -
- - [ROME 1.0](ROME1.0Release.html) - - - - March 12, 2009 - -
- - [Rome v1.0 RC2](ROME1.0RC2.html) - - - - Jan 9, 2009 - -
- - [Rome v1.0 RC1](ROME1.0RC1.html) - - - - Jul 16, 2007 - -
- - [Rome v0.9 Beta](ROME0.9Beta.html) - - - - Dec 11, 2006 - -
- - [Rome v0.8 Beta](ROME0.8Beta.html) - - - - Feb 01, 2006 - -
- - [Rome v0.7 Beta](ROME0.7Beta.html) - - - - Sep 09, 2005 - -
- - [Rome v0.6 Beta](ROME0.6Beta.html) - - - - Apr 01, 2005 - -
- - [Rome v0.5 Beta](ROME0.5Beta/index.html) - - - - Jan 10, 2005 - -
- - [Rome v0.4 Beta](ROME0.4Beta/index.html) - - - - Sep 27, 2004 - -
- - [Rome v0.3 Beta](ROME0.3Beta/index.html) - - - - Jul 28, 2004 - -
- - [Rome v0.2 Beta](ROME0.2Beta/index.html) - - - - Jun 16, 2004 - -
- - [Rome v0.1 Beta](ROME0.1Beta/index.html) - - - - Jun 08, 2004 - -
diff --git a/src/site/markdown/rome/RomeAPIFAQ.md b/src/site/markdown/rome/RomeAPIFAQ.md deleted file mode 100644 index 67b8a78..0000000 --- a/src/site/markdown/rome/RomeAPIFAQ.md +++ /dev/null @@ -1,142 +0,0 @@ -# Rome API FAQ - - -As we were designing and implementing Rome we had discusssions, brainstorming and code reviews on the API. We've captured them in this document. - - -## Do SyndFeed support arbitrary Metadata? - - - -Yes, using what we call Modules. Currently we support the 2 modules defined in RSS 1.0, [Dublin Core](http://purl.org/rss/1.0/modules/dc/) and [Syndication](http://purl.org/rss/1.0/modules/syndication/). They are wired when converting from SyndFeed beans to RSS/Atom feeds beans and vice versa. We use the RSS 1.0 terminology of Modules because RSS 1.0 is the specification that defined and used extensibility the most. RSS 2.0 and Atom use XML namespaces to extend the feed. - - - -However we will develop, and encourage developers to develop Rome specific Modules to handle future RSS 2.0 and Atom extensions. - - - -If additional modules are defined to express metadata the converters should be modified to handle them. And the same goes for the parsers and generators or RSS/Atom feeds. - - -## Why those package, interfaces, classes and method names? - - - -We've struggled (and still are struggling) with names. We renamed and moved things around until we got dizzy. If you have suggestions please let us know. - - -## Where are the parser, generator and converter implementations? - - - -They are in hidden (not javadoc\-ed) packages within the Rome jar file. Their classes are loaded using declarations in a properties file. It is possible for developers to add or replace implementations of these components without modifying Rome source code, just by indicating an addition properties file to look for extra implementation classes. - - -## What are the interfaces and classes in the syndication.common package for? And why most bean (or interface) extend/implement them? - - - -At first we got tired of modifying the toString() methods every time we were adding/removing a property. As we were strictly following the Bean patterns we wrote a toString() method that would traverse the properties and print them. Then we went recursively. Then we refactor that into an interface and provided an adapter. - - - -Later we did the same to handle equals/hashcode, which is very useful when using Maps. - - - -To complete the task we did the same for cloning, providing deep cloning support. - - - -The ObjectBean is a base class that implements all these features. All Rome beans extend ObjectBean getting a toString, equals, hashcode and clone support for free. - - -## What are the property values when not set? - - - -For Boolean is **false**. For numbers is 1. For String is null. For collections is an empty collection (even if you set it to null you get an empty collection). For all other objects is null. - - -## Are properties copied by value or by reference when set or gotten? - - - -All properties as always handled by reference (except primitive types). If they are not immutable and you modify them you are affecting the bean/s that reference them too. - - -## What is with the interface and implementation names in the synd and module packages? - - - -Interfaces have the following naming pattern: \I. Default implementations provided with Rome are named just \. For example, SyndFeedI is the interface and SyndFeed is the default implementation. - - - -We decided to use \ for the default implementation classes as we think they'll be the implementation of choice most of the time. - - -## Why the beans in the synd and module packages have interface and implementation versions of them? - - - -We added interfaces only for the higher abstraction layer of Rome, SyndFeed (and Modules as they are used to express extensible metadata for SyndFeed instances). The reasoning behind such decoupling was to allow facading existing classes as SyndFeed beans. For example some persistent classes. This would allow to process them through components that work with SyndFeedI. - - -## Why the RSS and Atom beans don't have interface and implementation versions of it? - - - -We thought about this, we dismissed the idea. The reasoning was that we expect to work with the SyndFeed and Module beans all the time and the convenience of using interface should be at that level only. We have RSS and Atom only because we have folks going and making up things without talking to each other. In short, we expect all our application processing to be done in a feed agnostic way in Java using SyndFeed and Module beans. - - -## How all the escaping for the description elements is handled for the different feed types as they keep changing their mind version after version? - - - -Item description MIME type, depending on the RSS version is text/plain (0.91), text/html (0.92, 0.93, 2.0) or configurable (0.94). The thing is that when you get the value out of JDOM Element it's always XML unescaped. When putting data into a JDOM Element the data is XML escaped. This is not 100% correct but it will work in most of the cases. - - - -Note that type in feed beans indicate what was the escaping type of the underlying feed, but if you get the value is already unescaped. - - -## How does Rome handle Atom content elements that support encoding (Base64, XML, plain) using the mode attribute? - - - -The mode in feed in content indicates what was the encoding of the element in the feed, but when you get the value is already unencoded. - - -## What kind of input and output Rome supports? - - - -Rome implementation currently uses JDOM for parsing and generating syndication feeds. As people tend to use the XML libraries they feel more comfortable with we have built in support for SAX, DOM, JDOM, byte streams, character streams and strings. - - -## What is the SyndFeedI.getSupportedFeedTypes() method for? - - - -This method was originally a static method in the SyndFeed class. We've moved ot the SyndFeedI interface as we thought it would be useful to be able to ask a SyndFeedI instance the feed converters it handles. - - -## Are Rome beans Serializable? Why? - - - -Yes, the default bean implementations of SyndFeedI provided with Rome are Serializable. - - - -However, the \*I interfaces are not. We made that decision consciously and the reason behind it is closely related to the reason we introduced the \*I interfaces. You may want to extend some existing classes to implement SyndFeedI, and these classes you are extending may not be Serializable and cannot be (for example, they are tied to a live InputStream). - - -## Why all those packages? - - - -TBD - diff --git a/src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md b/src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md deleted file mode 100644 index d37a2ba..0000000 --- a/src/site/markdown/rome/RomeV0.4FeedAndEntryURIMapping.md +++ /dev/null @@ -1,112 +0,0 @@ -# Rome v0.4, Feed and Entry URI Mapping - - -Rome Synd beans define the concept of URI at both feed and entry levels. The purpose of this URI is to help uniquely identifying feeds and entries when processed with Rome. This is particularly useful when a system is persisting feeds and when doing data manipulation where a primary key for the feeds or the entries is needed. - - -## The Problem - - - -RSS 0.90, 0.91, 0.92, 0.93 and 1.0 do not define any special element for the purposes of identifying the feed or the items other than the items link element. The channel link element cannot be used to identify the feed as its semantics is to refer to the web site that has the information being published through the feed and, if web site offers more than one feed most likely both of them will have the same feed link value. - - - -RSS 0.94 and RSS 2.0 define the guid element at item level. The guid element has an overloaded meaning. If the isPermalink attribute is true, the guid value can be used also as the URL for the item instead of the link element as well as a unique ID for the item. If the isPermalink attribute is false, the guid value can be used as a unique ID for the item. However, RSS 0.94 or RSS 2.0, do not define that the value of the guid element must be an URI. - - - -Atom 0.3 defines an id element at feed and entry levels. The id element is defined as an URI. The Atom specification being currently designed requires the id element to contain a normalized URI as defined by RFC 2396bis. - - - -The RSS0.94 and RSS 2.0 guid element and the Atom 0.3 id element are optional elements. Because of this, they may not be present at all in feeds. - - -## Rome's Solution - - - -Because the concept of a URI it is not defined in all the feed formats, Rome makes an arbitrary design decision to provide the URI functionality regardless of the original (or target) feed type. The following behavior as been chosen based on expected and assumed usage pattern of feed and entry data. - - -### URI Normalization - - - -If the uri property of a SyndFeed or SyndEntry bean is not NULL, the getter method must return a normalized URI following the rules defined in RFC2396bis. - - -### Converting from WireFeed (RSS or Atom) to SyndFeed - - - -The common use case for this scenario is when consuming a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. - - -#### SyndFeed - - - -None of the RSS versions define an ID at channel level. In addition to this, Rome input classes (WireFeedInput and SyndFeedInput) do not have access to the URL (if any) used to fetch the feed. Because of this Rome does not set in the SyndFeed uri property , it is left to developer to set (if needed) a URI in the feed bean. - - - -In the case of Atom 0.3, if the id element is present in the feed, the SyndFeed uri property will be set with the value of the id element. If it is not present, the developer must set (if needed) a URI manually. - - -#### SyndEntry - - - -For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 if the link element is present in the item, the SyndEntry uri property will be set with the value of the link element. Otherwise the SyndEntry uri property is left as NULL and the developer must set it (if needed). - - - -For RSS 0.94 & RSS 2.0 if the guid property is present in the item, the SyndEntry uri property will be set with the value of the guid element. If the guid element is not present, the SyndEntry uri property will be set with the value of the link element. If the link element is missing but the guid is present and it is flagged as a permalink, Rome will set set the SyndEntry link property with the value of the guid element (Rome is doing this because is a common practice to generated RSS 2.0 fees with guid elements marked as permalinks and without a link element). - - - -For Atom 0.3 if the id element is present, the SyndEntry uri property is set with the value of the id element. If the id element is not present, the SyndEntry uri property is set with the value of the alternate link element. - - -### Converting from SyndFeed to WireFeed (RSS or Atom) - - - -The common use case for this scenario is when generating a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. - - -#### SyndFeed - - - -For RSS 0.91, RSS 0.92, RSS 0.93, RSS 1.0 & RSS 2.0 the SyndFeed uri property is lost as there is not possible representation in the channel element for it. - - - -For Atom 0.3 set the SyndFeed uri property is set as the value for the id element. - - -#### SyndEntry - - - -For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 the SyndEntry uri property is lost as there is not possible representation in the item element for it. - - - -For RSS 0.94 & RSS 2.0 the SyndEntry uri property is set as the value of the guid element with permalink set to false. If the SyndEntry uri property is not set, the SyndEntry link property is set as the value of the guid element with permalink set to true. Note that if the SyndFEntry linkproperty is missing the SyndEntry uri cannot be set as the value of the link element because it cannot be assumed that the uri property is an URL. - - - -Because SyndEntry instances always return a normalized URI the value of the guid elements of a generated RSS 0.94 or RSS 2.0 may differ from the values of the guid elements of the original feed. - - - -For Atom 0.3 the SyndEntry uri property is set as the id element. - - - -Mosh... - diff --git a/src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md b/src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md deleted file mode 100644 index 65b1adb..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.md +++ /dev/null @@ -1,40 +0,0 @@ -# Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing - - -Date and time elements seem to be error prone. RSS feeds use RFC822 datetime formats and Atom feeds use W3C datetime formats. Both RFC822 and W3C support quite a few flavors for specifying date and time. Some feeds use the wrong standard (such as some RSS feeds using W3C dates). Other feeds have an ENTER before or after the date. And another feeds use an arbitrary format altogether. - - - -To help cope with this ROME makes a few tricks: - - - -* It trims datetime elements before parsing them. - -* It tries both RFC822 and W3C formats in all feeds. - -* It uses custom format masks (if provided) when the previous steps fail. - - -## Using Custom Format Masks - - - -Custom format masks can be specified in the _/rome.properties_ file in any of the classpath elements. - - - -The masks must be specified in the _datetime.extra.masks_ property. - - - -If more than one mask is to be specified they must be separated with '|' characters. - - - -The syntax for the masks is the one use by by the _java.text.SimpleDateFormat_ class. Always US Locale is assumed for the masks. - - - -If datetime masks are specified in more than one _/rome.properties_ file in teh classpath, they are all aggregated. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md deleted file mode 100644 index a07bcc3..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.md +++ /dev/null @@ -1,108 +0,0 @@ -# Feed and Entry URI Mapping, how SyndFeed and SyndEntry 'uri' properties map to RSS and Atom elements - - -Rss and atOM utilitiEs (ROME) Synd\* beans define the concept of URI at both feed and entry levels. The purpose of this URI is to help uniquely identifying feeds and entries when processed with ROME. This is particularly useful when a system is persisting feeds and when doing data manipulation where a primary key for the feeds or the entries is needed. - - -## The Problem - - - -RSS 0.90, 0.91, 0.92, 0.93 and 1.0 do not define any special element for the purposes of identifying the feed or the items other than the items link element. The channel link element cannot be used to identify the feed as its semantics is to refer to the web site that has the information being published through the feed and, if web site offers more than one feed most likely both of them will have the same feed link value. - - - -RSS 0.94 and RSS 2.0 define the guid element at item level. The guid element has an overloaded meaning. If the isPermalink attribute is true, the guid value can be used also as the URL for the item instead of the link element as well as a unique ID for the item. If the isPermalink attribute is false, the guid value can be used as a unique ID for the item. However, RSS 0.94 or RSS 2.0, do not define that the value of the guid element must be an URI. - - - -Atom 0.3 defines an id element at feed and entry levels. The id element is defined as an URI. The Atom specification being currently designed requires the id element to contain a normalized URI as defined by RFC 2396bis. - - - -The RSS0.94 and RSS 2.0 guid element and the Atom 0.3 id element are optional elements. Because of this, they may not be present at all in feeds. - - -## ROME's Solution - - - -Because the concept of a URI it is not defined in all the feed formats, ROME makes an arbitrary design decision to provide the URI functionality regardless of the original (or target) feed type. The following behavior as been chosen based on expected and assumed usage pattern of feed and entry data. - - -### URI Normalization - - - -If the uri property of a SyndFeed or SyndEntry bean is not NULL, the getter method must return a normalized URI following the rules defined in RFC2396bis. - - -### Converting from WireFeed (RSS or Atom) to SyndFeed - - - -The common use case for this scenario is when consuming a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. - - -#### SyndFeed - - - -None of the RSS versions define an ID at channel level. In addition to this, ROME input classes (WireFeedInput and SyndFeedInput) do not have access to the URL (if any) used to fetch the feed. Because of this ROME does not set in the SyndFeed uri property , it is left to developer to set (if needed) a URI in the feed bean. - - - -In the case of Atom 0.3, if the id element is present in the feed, the SyndFeed uri property will be set with the value of the id element. If it is not present, the developer must set (if needed) a URI manually. - - -#### SyndEntry - - - -For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 if the link element is present in the item, the SyndEntry uri property will be set with the value of the link element. Otherwise the SyndEntry uri property is left as NULL and the developer must set it (if needed). - - - -For RSS 0.94 & RSS 2.0 if the guid property is present in the item, the SyndEntry uri property will be set with the value of the guid element. If the guid element is not present, the SyndEntry uri property will be set with the value of the link element. If the link element is missing but the guid is present and it is flagged as a permalink, ROME will set set the SyndEntry link property with the value of the guid element (ROME is doing this because is a common practice to generated RSS 2.0 fees with guid elements marked as permalinks and without a link element). - - - -For Atom 0.3 if the id element is present, the SyndEntry uri property is set with the value of the id element. If the id element is not present, the SyndEntry uri property is set with the value of the lternate link element. - - -### Converting from SyndFeed to WireFeed (RSS or Atom) - - - -The common use case for this scenario is when generating a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. - - -#### SyndFeed - - - -For RSS 0.91, RSS 0.92, RSS 0.93, RSS 1.0 & RSS 2.0 the SyndFeed uri property is lost as there is not possible representation in the channel element for it. - - - -For Atom 0.3 set the SyndFeed uri property is set as the value for the id element. - - -#### SyndEntry - - - -For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 the SyndEntry uri property is lost as there is not possible representation in the item element for it. - - - -For RSS 0.94 & RSS 2.0 the SyndEntry uri property is set as the value of the guid element with permalink set to false. If the SyndEntry uri property is not set, the SyndEntry link property is set as the value of the guid element with permalink set to true. Note that if the SyndFEntry linkproperty is missing the SyndEntry uri cannot be set as the value of the link element because it cannot be assumed that the uri property is an URL. - - - -Because SyndEntry instances always return a normalized URI the value of the guid elements of a generated RSS 0.94 or RSS 2.0 may differ from the values of the guid elements of the original feed. - - - -For Atom 0.3 the SyndEntry uri property is set as the id element. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md deleted file mode 100644 index 55f734f..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.md +++ /dev/null @@ -1,99 +0,0 @@ -# Feeds Date Elements Mapping to SyndFeed and SyndEntry - - -The different RSS versions and Atom define different date elements at feed and entry level. Some of them also define syndication information indicating when (and when not) and how often to fetch feeds for updates. There is not always a possible mapping or conversion of this information when going from one format to another. - - - -As this is still subject of debate ([How About a Date](http://www.tbray.org/ongoing/When/200x/2004/07/30/Dates) and [Date Survey](http://www.intertwingly.net/wiki/pie/DateSurvey)), for now, in Rss and atOM utilitiEs (ROME) we've taken a simplistic approach. - - - -When handling feeds at WireFeed level, **_rss.Channel_** or **_atom.Feed_**, it is possible to access all the date elements and syndication information available in the feed. - - - -When handling feeds at SyndFeed level, **_synd.SyndFeed_**, there is only one date element available, the **_publishedDate_**. Both, **_SyndFeed_** and **_SyndEntry_** have the **_publisheDate_** property. In addition, it is possible to use the Syndication Module. - - - -The mapping of the date elements from the different feed formats to SyndFeed is as follows. - - -## For RSS 0.90 - - - -RSS 0.90 does not define date elements. - - - -There is no mapping to **_SyndFeed_** and **_SyndEntry_** date properties. - - -## For RSS 0.91, 0.92 - - - -RSS 0.91 and 0.92 define **_pubDate_** and **_lastBuildDate_** at feed level. - - - -The feed **_pubDate_** element is mapped to the **_SyndFeed_** **_publishedDate_** property. The **_lastBuildDate_** element is lost. - - -## For RSS 0.93, 0.94 and 2.0 - - - -RSS 0.93, 0.94 and 2.0 define **_pubDate_** and **_lastBuildDate_** at feed level. They also define **_pubDate_** and **_expirationDate_** at item level. - - - -The feed **_pubDate_** element is mapped to the **_SyndFeed_** **_publishedDate_** property. The **_lastBuildDate_** element is lost. - - - -The item **_pubDate_** element is mapped to the **_SyndEntry_** **_publishedDate_** property. The **_expirationDate_** element is lost. - - -## For RSS 1.0 - - - -RSS 1.0 use DC Module data at feed an item level to indicate date information about the feed and the items. - - - -**_SyndFeed_** and **_SyndEntry_** use the DC Module **_date_** element for the **_publishedDate_** property. - - -## For Atom 0.3 - - - -Atom 0.3 defines a **_modified_** element at feed level and the **_modified_**, **_created_** & **_issued_** elements at entry level. - - - -The feed **_modified_** element is mapped to the **_SyndFeed_** **_publishedDate_** property. - - - -The item **_modified_** element is mapped to the **_SyndEntry_** **_publishedDate_** property. The entry elements, **_created_** and **_issued_**, are lost. - - -## For Atom 1.0 - - - -(Atom 1.0 supported in ROME since v0.8) - - - -Atom 1.0 defines an **_updated_** element at the feed level, which ROME maps to **_SyndFeed.publishedDate_**. - - - -Atom 1.0 defines **_updated_** and **_published_** elements at the entry level, which ROME maps to **_SyndEntry.updatedDate_** and **_SyndEntry.publishedDate_** respectively. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md deleted file mode 100644 index bbf04ac..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.md +++ /dev/null @@ -1,222 +0,0 @@ -# Rss and atOM utilitiEs (ROME) Plugins Mechanism - - -ROME has been designed around a plugin mechanism. All the supported feed types (RSSs and Atom) is done by plugins included in the distribution. - - - -Parsing feeds, generating feeds, converting feeds from a concrete feed to a SyndFeed and vice versa, parsing modules and generating modules is done using plugins. - - - -Plugins for new functionality can be added and default plugins can be easily replaced with alternate plugins. - - -## Plugins definition files - - - -Plugins are defined in a properties file, the **_rome.properties_** file. - - - -The default plugins definition file is included in the ROME JAR file, **_com/sun/syndication/rome.properties_**, this is the first plugins definition file to be processed. It defines the default parsers, generators and converters for feeds and modules ROME provides. - - - -After loading the default plugins definition file, ROME looks for additional plugins definition files in all the CLASSPATH entries, this time at root level, **_/rome.properties_**. And appends the plugins definitions to the existing ones. Note that if there are several **_/rome.properties_** files in the different CLASSPATH entries all of them are processed. The order of processing depends on how the **_ClassLoader_** processes the CLASSPATH entries, this is normally done in the order of appearance \-of the entry\- in the CLASSPATH. - - - -For each type of plugin (parser, generator, converter, ect) a list of available plugins is built following the read order just described. The plugins classes are then loaded and instantiated. All plugins have some kind of primary key. In the case or parsers, generators and converters the primary key is the type of feed they handle. In the case of modules, the primary key is the module URI. If a plugin list definition (the aggregation of all the plugins of the same time from all the **_rome.properties_**) contains more than one plugin with the same primary key, the latter one is the one that will be used(this enables replacing default plugins with custom ones). - - - -The plugins are read, loaded and managed by the implementation class **_com.sun.syndication.io.impl.PluginManager_**. This class is an abstract class and it is extended to provide support for each type of plugin. - - -## Parser Plugins - - - -Parser plugins are managed by the **_com.sun.syndication.io.impl.FeedParsers_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_WireFeedParser.classes_** property in all the **_rome.properties_** files. The fully qualified names of the parser classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file parser plugins definition is as follows: - - - -``` - -# Feed Parser implementation classes -# -WireFeedParser.classes=com.sun.syndication.io.impl.RSS090Parser \ - com.sun.syndication.io.impl.RSS091NetscapeParser \ - com.sun.syndication.io.impl.RSS091UserlandParser \ - com.sun.syndication.io.impl.RSS092Parser \ - com.sun.syndication.io.impl.RSS093Parser \ - com.sun.syndication.io.impl.RSS094Parser \ - com.sun.syndication.io.impl.RSS10Parser \ - com.sun.syndication.io.impl.RSS20wNSParser \ - com.sun.syndication.io.impl.RSS20Parser \ - com.sun.syndication.io.impl.Atom03Parser - -``` - - -All the classes defined in this property have to implement the **_com.sun.syndication.io.WireFeedParser_** interface. Parser instances must be thread safe. The return value of the **_getType()_** method is used as the primary key. If more than one parser returns the same type, the latter one prevails. - - -## Generator Plugins - - - -Generator plugins are managed by the **_com.sun.syndication.io.impl.FeedGenerators_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_WireFeedGenerator.classes_** property in all the **_rome.properties_** files. The fully qualified names of the generator classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file generator plugins definition is as follows: - - - -``` - -# Feed Generator implementation classes -# -WireFeedGenerator.classes=com.sun.syndication.io.impl.RSS090Generator \ - com.sun.syndication.io.impl.RSS091NetscapeGenerator \ - com.sun.syndication.io.impl.RSS091UserlandGenerator \ - com.sun.syndication.io.impl.RSS092Generator \ - com.sun.syndication.io.impl.RSS093Generator \ - com.sun.syndication.io.impl.RSS094Generator \ - com.sun.syndication.io.impl.RSS10Generator \ - com.sun.syndication.io.impl.RSS20Generator \ - com.sun.syndication.io.impl.Atom03Generator - -``` - - -All the classes defined in this property have to implement the **_com.sun.syndication.io.WireFeedGenerator_** interface. Generator instances must be thread safe. The return value of the **_getType()_** method is used as the primary key. If more than one generator returns the same type, the latter one prevails. - - -## Converter Plugins - - - -Converter plugins are managed by the **_com.sun.syndication.synd.impl.Converters_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_Converter.classes_** property in all the **_rome.properties_** files. The fully qualified names of the converter classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file converter plugins definition is as follows: - - - -``` - -# Feed Conversor implementation classes -# -Converter.classes=com.sun.syndication.feed.synd.impl.ConverterForAtom03 \ - com.sun.syndication.feed.synd.impl.ConverterForRSS090 \ - com.sun.syndication.feed.synd.impl.ConverterForRSS091Netscape \ - com.sun.syndication.feed.synd.impl.ConverterForRSS091Userland \ - com.sun.syndication.feed.synd.impl.ConverterForRSS092 \ - com.sun.syndication.feed.synd.impl.ConverterForRSS093 \ - com.sun.syndication.feed.synd.impl.ConverterForRSS094 \ - com.sun.syndication.feed.synd.impl.ConverterForRSS10 \ - com.sun.syndication.feed.synd.impl.ConverterForRSS20 - -``` - - -All the classes defined in this property have to implement the **_com.sun.syndication.synd.Converter_** interface. Converter instances must be thread safe. The return value of the **_getType()_** method is used as the primary key. If more than one converter returns the same type, the latter one prevails. - - -## Module Plugins - - - -There are 2 types of module plugins, module parser plugins and module generator plugins. They use a same pattern feed parsers and generators use. - - - -The main difference is that support for module plugins has to be wired in the feed parser and generator plugins. The default feed parser and generator plugins supporting module plugins are: RSS 1.0, RSS 2.0 and Atom 0.3. - - - -It is important to understand that this wiring is for modules support. Once a feed parser or generator has modules support, new modules can be used just by adding them to right property in the **_rome.properties_** file. No code changes are required. - - - -Module parsers and generators are defined at feed and item level. This allow selective handling of modules, for example handling Syndication module at feed level only. - - - -Module parser plugins are managed by the **_com.sun.syndication.io.impl.ModuleParsers_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_.feed.ModuleParser.classes_** and the **_.item.ModuleParser.classes_** properties in all the **_rome.properties_** files. must be the type defined by the parser (ie: rss\_1.0, atom\_0.3). The fully qualified names of the module parser classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file modules parser plugins definition is as follows: - - - -``` - -# Parsers for Atom 0.3 feed modules -# -atom_0.3.feed.ModuleParser.classes=com.sun.syndication.io.impl.SyModuleParser \ - com.sun.syndication.io.impl.DCModuleParser - -# Parsers for Atom 0.3 entry modules -# -atom_0.3.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser - -# Parsers for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleParser.classes=com.sun.syndication.io.impl.SyModuleParser \ - com.sun.syndication.io.impl.DCModuleParser - -# Parsers for RSS 1.0 item modules -# -rss_1.0.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser - -# Parsers for RSS 2.0 feed modules -# -rss_2.0.feed.ModuleParser.classes= - -# Parsers for RSS 2.0 item modules -# -rss_2.0.item.ModuleParser.classes= - -``` - - -All the classes defined in this property have to implement the **_com.sun.syndication.io.ModuleParser_** interface. ModuleParser instances must be thread safe. The return value of the **_getNamesapceUri()_** method is used as the primary key. If more than one module parser returns the same URI, the latter one prevails. - - - -Module generator plugins are managed by the **_com.sun.syndication.io.impl.GeneratorParsers_** class (subclass of the **_PluginManager_**). This plugin manager looks for the **_.feed.ModuleGenerator.classes_** and the **_.item.ModuleGenerator.classes_** properties in all the **_rome.properties_** files. must be the type defined by the generator (ie: rss\_1.0, atom\_0.3). The fully qualified names of the module generator classes must be separated by whitespaces or commas. For example, the default **_rome.properties_** file modules generator plugins definition is as follows: - - - -``` - -# Generators for Atom 0.3 feed modules -# -atom_0.3.feed.ModuleGenerator.classes=com.sun.syndication.io.impl.SyModuleGenerator \ - com.sun.syndication.io.impl.DCModuleGenerator - -# Generators for Atom 0.3 entry modules -# -atom_0.3.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator - -# Generators for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.io.impl.SyModuleGenerator \ - com.sun.syndication.io.impl.DCModuleGenerator - -# Generators for RSS_1.0 entry modules -# -rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator - -# Generators for RSS 2.0 feed modules -# -rss_2.0.feed.ModuleGenerator.classes= - -# Generators for RSS_2.0 entry modules -# -rss_2.0.item.ModuleGenerator.classes= - -``` - - -All the classes defined in this property have to implement the **_com.sun.syndication.io.ModuleGenerator_** interface. ModuleGenerator instances must be thread safe. The return value of the **_getNamesapceUri()_** method is used as the primary key. If more than one module generator returns the same URI, the latter one prevails. - - - -See also: a step\-by\-step [tutorial for implementing a custom module](RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html). - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md deleted file mode 100644 index 08a0bb0..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.md +++ /dev/null @@ -1,89 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code - - -These instructions are outdated - - -## Building the samples with Maven - - - -This is, as usual, the easiest way. - - - -There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. - - - -If you built ROME run maven jar:install in the rome project to install ROME's jar in your Maven repository. - - - -If you got ROME binary distribution copy the ROME's jar file to your Maven repository (on UNIX that would be `cp rome\-0.5/rome\-0.5.jar \~/.maven/repository/rome/jars/`). - - - -Then building the samples it's easy as a pie, just run maven jar in the samples sub\-project and you are all set. - - - -To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. - - -## Building the samples with Ant - - - -The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files ROME depends on and are needed for building an application using Rome. - - - -In order to build the samples (or any subprojects), you'll need to first ensure that rome itself is built. You can do this simply by running ant in the project root directory. - - - -Once this is done, change to the samples directory, and just run ant. This will produce two files, rome\-samples.jar which contains the sample applications, and rome\-samples.war which will contain a deployable web application war file for the FeedServlet sample. - - -## Running the samples with Maven - - - -The Maven goals for running the samples are defined in maven.xml. - - - -* `maven run\-agr` runs the FeedAggregator sample - -* `maven run\-conv` runs the FeedConverter sample - -* `maven run\-read` runs the FeedReader sample - -* `maven run\-write` runs the FeedWriter sample - -* `maven run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) - - - -To run the sample Web Application you'll need to deploy the WAR file into your servlet container. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. - - -## Running the samples with Ant - - - -All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. - - - -* `ant run\-aggr` runs the FeedAggregator sample - -* `ant run\-conv` runs the FeedConverter sample - -* `ant run\-read` runs the FeedReader sample - -* `ant run\-write` runs the FeedWriter sample - -* `ant run\-sampleModule` runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md deleted file mode 100644 index d43dad1..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.md +++ /dev/null @@ -1,391 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator) - - -**Software requirements:** Synd J2SE 1.4\+, JDOM 1.0 and ROME 0.5. - - - -This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). - - - -To understand this tutorial you should be familiar the with ROME API and with the use of modules in syndication feeds. - - - -Out of the box ROME parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. - - - -The complete source for this tutorial is in the ROME samples bundle as well as in CVS. - - -## What is the intended outcome of the tutorial? - - - -The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. - - - -The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: - - - -``` - - - - - RSS 1.0 Feed with Sample Module - http://rome.dev.java.net - This is a feed showing how to use a custom module with ROME - - - - - - - Channel bar - Channel first foo - Channel second foo - - - Title of Item 01 - http://rome.dev.java.net/item01 - Item 01 does not have Sample module data - - - Title of Item 02 - http://rome.dev.java.net/item02 - Item 02 has Sample module data - Item 02 bar - Item 02 only foo - 2004-07-27T00:00+00:00 - - - -``` - -## Sample Module Bean - - - -First we must start with the bean interface, SampleModule. SampleModule must extend Module. The Module interface defines the getUri() method, which will return a URI identifying the module. - - - -The Module interface also extends the CopyFrom interface to enable copying properties from alternate implementations of the concrete Module interface. More on this later in this page. - - - -The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. - - - -Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). - - - -``` - -public interface SampleModule extends Module { - - public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; - - public String getBar(); - public void setBar(String bar); - - public List getFoos(); - public void setFoos(List foos); - - public Date getDate(); - public void setDate(Date date); -} - -``` - - -Next we have to write the bean implementation, SampleModuleImpl. - - - -SampleModuleImpl extends ModuleImpl. ModuleImpl is the default implementation of the \=\=Module interface. ModuleImpl automatically provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModule). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. - - - -``` - -public class SampleModuleImpl extends ModuleImpl implements SampleModule { - ... - public SampleModuleImpl() { - super(SampleModule.class,SampleModule.URI); - } - - public String getBar() { - return _bar; - } - [...] - -``` - - -The module properties are just Java Bean properties. The only catch is to follow ROME semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned. Also, following ROME semantics, all properties are by reference, including mutable ones. - - - -``` - -public class SampleModuleImpl extends ModuleImpl implements SampleModule { - private String _bar; - private List _foos; - private Date _date; - ... - public void setBar(String bar) { - _bar = bar; - } - - public List getFoos() { - return (_foos==null) ? (_foos=new ArrayList()) : _foos; - } - - public void setFoos(List foos) { - _foos = foos; - } - - public Date getDate() { - return _date; - } - - public void setDate(Date date) { - _date = date; - } - -``` - -## The CopyFrom interface - - - -Now the weird part, the bits for the CopyFrom logic. The [TheCopyFromInterface.html](TheCopyFromInterface.html) document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. - - - -The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). - - - -The copyFrom() method copies all the properties from the parameter object (which must be a SampleModule implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. - - - -``` - -public class SampleModuleImpl extends ModuleImpl implements SampleModule { - ... - public Class getInterface() { - return SampleModule.class; - } - - public void copyFrom(Object obj) { - SampleModule sm = (SampleModule) obj; - setBar(sm.getBar()); - List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) - setFoos(foos); - setDate((Date)sm.getDate().clone()); // because Date is not inmutable. - } - -} - -``` - -## Sample Module Parser - - - -The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. - - - -The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. - - - -In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. - - - -If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. - - - -``` - -public class SampleModuleParser implements ModuleParser { - - private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); - - public String getNamespaceUri() { - return SampleModule.URI; - } - - public Module parse(Element dcRoot) { - boolean foundSomething = false; - SampleModule fm = new SampleModuleImpl(); - - Element e = dcRoot.getChild("bar", SAMPLE_NS); - if (e != null) { - foundSomething = true; - fm.setBar(e.getText()); - } - List eList = dcRoot.getChildren("foo", SAMPLE_NS); - if (eList.size() > 0) { - foundSomething = true; - fm.setFoos(parseFoos(eList)); - } - e = dcRoot.getChild("date", SAMPLE_NS); - if (e != null) { - foundSomething = true; - fm.setDate(DateParser.parseW3CDateTime(e.getText())); - } - return (foundSomething) ? fm : null; - } - - private List parseFoos(List eList) { - List foos = new ArrayList(); - for (int i = 0; i < eList.size(); i++) { - Element e = (Element) eList.get(i); - foos.add(e.getText()); - } - return foos; - } - -} - -``` - -## Sample Module Generator - - - -The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. - - - -The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. The set of namespaces returned by the getNamespaces() method will be used to declare the namespaces used by the module in the feed root element. - - - -If no Sample Module bean is in the feed bean the module generator is not invoked at all. - - - -``` - -public class SampleModuleGenerator implements ModuleGenerator { - private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); - - public String getNamespaceUri() { - return SampleModule.URI; - } - - private static final Set NAMESPACES; - - static { - Set nss = new HashSet(); - nss.add(SAMPLE_NS); - NAMESPACES = Collections.unmodifiableSet(nss); - } - - public Set getNamespaces() { - return NAMESPACES; - } - - public void generate(Module module, Element element) { - - // this is not necessary, it is done to avoid the namespace definition in every item. - Element root = element; - while (root.getParent()!=null && root.getParent() instanceof Element) { - root = (Element) element.getParent(); - } - root.addNamespaceDeclaration(SAMPLE_NS); - - SampleModuleI fm = (SampleModule)module; - if (fm.getBar() != null) { - element.addContent(generateSimpleElement("bar", fm.getBar())); - } - List foos = fm.getFoos(); - for (int i = 0; i < foos.size(); i++) { - element.addContent(generateSimpleElement("foo",foos.get(i).toString())); - } - if (fm.getDate() != null) { - element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate()))); - } - } - - protected Element generateSimpleElement(String name, String value) { - Element element = new Element(name, SAMPLE_NS); - element.addContent(value); - return element; - } - -} - -``` - -## Configuration to make ROME process Sample Module in feeds - - - -The last step is to setup the configuration file to indicate to ROME how and when to use the Sample Module parser and generator. - - - -The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. - - - -You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. - - - -Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. - - - -``` - -# Parsers for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser - -# Parsers for RSS 1.0 item modules -# -rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser - -# Generators for RSS 1.0 feed modules -# -rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator - -# Generators for RSS_1.0 entry modules -# -rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator - -``` - - -If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. - - -## Using the Sample Module from the SyndFeed beans - - - -They will be there, just use them. You may get the SampleModule bean using the getModule(String Uri) method of the SyndFeed bean and the SyndEntry bean. - - - -Adding or replacing a syndication feed parser, generator or converter goes along the same lines of what it has been explained in the tutorial for modules. This is explained in the [ROME Plugins Mechanism](RssAndAtOMUtilitiEsROMEPluginsMechanism.html) topic. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md deleted file mode 100644 index 989708a..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.md +++ /dev/null @@ -1,147 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one - - -**Software requirements:** J2SE 1.4\+, JDOM 1.0 and ROME 0.5. - - - -ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. - - - -ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed feed = input.build(new XmlReader(feedUrl)); - -``` - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. - - - -ROME also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: - - - -``` - -SyndFeedOutput output = new SyndFeedOutput(); -output.output(feed,new PrintWriter(System.out)); - -``` - - -The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss\_0.9, rss\_0.91, rss\_0.92, rss\_0.93, rss\_0.94, rss\_1.0, rss\_2.0 & atom\_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. - - - -SyndFeed instances can also be created and populated within the code. For example: - - - -``` - -SyndFeed aggrFeed = new SyndFeedImpl(); -aggrFeed.setFeedType("rss_1.0"); -aggrFeed.setTitle("Aggregated Feed"); -aggrFeed.setDescription("Anonymous Aggregated Feed"); -aggrFeed.setAuthor("anonymous"); -aggrFeed.setLink("http://www.anonymous.com"); - -``` - - -The snipped of code above creates a SyndFeed instance using the default implementation provided by ROME, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. - - - -SyndFeed properties can be modified, assigned to other SyndFeed instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeed properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeed property you are altering the SyndFeed. Or, another example, if you assign the list of entries of one SyndFeed instance to another SyndFeed isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeed instances. - - - -The following lines of code show how to copy the entries of a SyndFeed instance being read (inFeed) into a SyndFeed instance being created within the application (feed): - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.util.List; -import java.util.ArrayList; - -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.feed.synd.SyndFeedImpl; -import com.sun.syndication.io.SyndFeedOutput; -import com.sun.syndication.io.SyndFeedInput; -import com.sun.syndication.io.XmlReader; - -/** - * It aggregates a list of RSS/Atom feeds (they can be of different types) - * into a single feed of the specified type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedAggregator { - - public static void main(String[] args) { - boolean ok = false; - if (args.length>=2) { - try { - String outputType = args[0]; - - SyndFeed feed = new SyndFeedImpl(); - feed.setFeedType(outputType); - - feed.setTitle("Aggregated Feed"); - feed.setDescription("Anonymous Aggregated Feed"); - feed.setAuthor("anonymous"); - feed.setLink("http://www.anonymous.com"); - - List entries = new ArrayList(); - feed.setEntries(entries); - - for (int i=1;i - * @author Alejandro Abdelnur - * - */ -public class FeedConverter { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String outputType = args[0]; - - URL feedUrl = new URL(args[1]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeed feed = input.build(new XmlReader(feedUrl)); - feed.setFeedType(outputType); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,new PrintWriter(System.out)); - - ok = true; - } - catch (Exception ex) { - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedConverter converts between syndication feeds types."); - System.out.println("The first parameter must be the feed type to convert to."); - System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); - System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); - System.out.println("The second parameter must be the URL of the feed to convert."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md deleted file mode 100644 index 05b9e30..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.md +++ /dev/null @@ -1,205 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM 1.0 and ROME 0.5. - - - -ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. - - - -Creating a feed with SyndFeed beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeed bean with 3 entries is created. - - - -First the SyndFeed instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. - - - -``` - -SyndFeed feed = new SyndFeedImpl(); -feed.setFeedType(feedType); - -feed.setTitle("Sample Feed (created with ROME)"); -feed.setLink("http://rome.dev.java.net"); -feed.setDescription("This feed has been created using ROME (Java syndication utilities"); - -``` - - -Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. - - - -``` - -List entries = new ArrayList(); -SyndEntry entry; -SyndContent description; - -entry = new SyndEntryImpl(); -entry.setTitle("ROME v1.0"); -entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); -entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); -description = new SyndContentImpl(); -description.setType("text/plain"); -description.setValue("Initial release of ROME"); -entry.setDescription(description); -entries.add(entry); -[...] -entry = new SyndEntryImpl(); -entry.setTitle("ROME v3.0"); -entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); -entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); -description = new SyndContentImpl(); -description.setType("text/html"); -description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log

"); -entry.setDescription(description); -entries.add(entry); - -``` - - -Finally the list with entries is added to the SyndFeed bean. - - - -``` - -feed.setEntries(entries); - -``` - - -The SyndFeed bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. - - - -ROME includes generators that allow producing syndication feed XML documents from SyndFeed instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeed bean. All it takes to write a syndication feed XML document using ROME \-assuming you have a SyndFeed bean and a Writer instance\- are the following lines of code: - - - -``` - -SyndFeed feed = ...; -Writer writer = ...; - -SyndFeedOutput output = new SyndFeedOutput(); -output.output(feed,writer); - -``` - - -First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeed bean to the Writer stream. - - - -Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. - - - -``` - -package com.sun.syndication.samples; - -import com.sun.syndication.feed.synd.*; -import com.sun.syndication.io.SyndFeedOutput; - -import java.io.FileWriter; -import java.io.Writer; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -/** - * It creates a feed and writes it to a file. - *

- * - */ -public class FeedWriter { - - private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); - - public static void main(String[] args) { - boolean ok = false; - if (args.length==2) { - try { - String feedType = args[0]; - String fileName = args[1]; - - SyndFeed feed = new SyndFeedImpl(); - feed.setFeedType(feedType); - - feed.setTitle("Sample Feed (created with ROME)"); - feed.setLink("http://rome.dev.java.net"); - feed.setDescription("This feed has been created using ROME (Java syndication utilities"); - - List entries = new ArrayList(); - SyndEntry entry; - SyndContent description; - - entry = new SyndEntryImpl(); - entry.setTitle("ROME v1.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Initial release of ROME"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("ROME v2.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); - entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Bug fixes, minor API changes and some new features"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("ROME v3.0"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); - entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log

"); - entry.setDescription(description); - entries.add(entry); - - feed.setEntries(entries); - - Writer writer = new FileWriter(fileName); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,writer); - writer.close(); - - System.out.println("The feed has been written to the file ["+fileName+"]"); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); - System.out.println("The first parameter must be the syndication format for the feed"); - System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); - System.out.println("The second parameter must be the file name for the feed"); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md deleted file mode 100644 index 07130c1..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.md +++ /dev/null @@ -1,90 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed - - -**Software requirements:** J2SE 1.4\+, JDOM 1.0 and ROME 0.5. - - - -ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. - - - -ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: - - - -``` - -SyndFeedInput input = new SyndFeedInput(); -SyndFeed feed = input.build(new XmlReader(feedUrl)); - -``` - - -The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. - - - -The default SyndFeed implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. - - - -``` - - System.out.println(feed); - -``` - - -Following is the full code for a Java application that reads a syndication feed and prints the SyndFeed bean to the application's output. - - - -``` - -package com.sun.syndication.samples; - -import java.net.URL; -import java.io.InputStreamReader; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.io.SyndFeedInput; -import com.sun.syndication.io.XmlReader; - -/** - * It Reads and prints any RSS/Atom feed type. - *

- * @author Alejandro Abdelnur - * - */ -public class FeedReader { - - public static void main(String[] args) { - boolean ok = false; - if (args.length==1) { - try { - URL feedUrl = new URL(args[0]); - - SyndFeedInput input = new SyndFeedInput(); - SyndFeed feed = input.build(new XmlReader(feedUrl)); - - System.out.println(feed); - - ok = true; - } - catch (Exception ex) { - ex.printStackTrace(); - System.out.println("ERROR: "+ex.getMessage()); - } - } - - if (!ok) { - System.out.println(); - System.out.println("FeedReader reads and prints any RSS/Atom feed type."); - System.out.println("The first parameter must be the URL of the feed to read."); - System.out.println(); - } - } - -} - -``` diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md deleted file mode 100644 index cbe3394..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.md +++ /dev/null @@ -1,243 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed - - -**Software requirements:** J2SE 1.4\+, Servlet Container 2.3\+, JDOM 1.0 and ROME 0.5. - - - -This sample consists of a servlet that serves a feed as response. The feed type (RSS in any of its variants or Atom) can be specified as a URL parameter when requesting the feed. The returned feed is hardwired in the sample and it would be straight forward to modify the sample to generate the feed dynamically (i.e. from data stored in a database). - - - -The core logic of the **_FeedServlet_** is in the following fragment of code: - - - -``` - -public class FeedServlet extends HttpServlet { - ... - - public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { - ... - SyndFeed feed = getFeed(req); - - String feedType = req.getParameter(FEED_TYPE); - feedType = (feedType!=null) ? feedType : _defaultFeedType; - feed.setFeedType(feedType); - - res.setContentType(MIME_TYPE); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,res.getWriter()); - ... - } - - protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { - SyndFeed feed = new SyndFeedImpl(); - feed = ... - return feed; - } - -} - -``` - - -The servlet returns a feed upon HTTP GET requests with the **_doGet()_** method. - - - -First the **_SyndFeed_** bean is obtained by invoking the **_getFeed()_** method, the request object is passed as it could be used to obtain request contextual information to create the feed. How to create a feed using SyndFeed bean is explained in detail in the [Using ROME to create and write a feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) Tutorial. - - - -Then the feed type of the response is determined, first looking at the request parameters and falling back to a default feed type (specified by a servlet init parameter) if the type is not indicated in the request parameters. Setting the feed type in the feed bean will indicate the **_SyndFeedOutput_** the feed type to output. - - - -Finally, the response is set with the proper content type (the MIME\_TYPE constant is 'application/xml; charset\=UTF\-8') and the feed is written to response writer using the **_SyndFeedOutput_** output classes. - - - -Following is the full code for the servlet. - - - -``` - -package com.sun.syndication.samples.servlet; - -import com.sun.syndication.feed.synd.*; -import com.sun.syndication.io.FeedException; -import com.sun.syndication.io.SyndFeedOutput; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -/** - * Sample Servlet that serves a feed created with ROME. - *

- * The feed type is determined by the 'type' request parameter, if the parameter is missing it defaults - * to the 'default.feed.type' servlet init parameter, if the init parameter is missing it defaults to 'atom_0.3' - *

- * @author Alejandro Abdelnur - * - */ -public class FeedServlet extends HttpServlet { - private static final String DEFAULT_FEED_TYPE = "default.feed.type"; - private static final String FEED_TYPE = "type"; - private static final String MIME_TYPE = "application/xml; charset=UTF-8"; - private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed"; - - private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); - - private String _defaultFeedType; - - public void init() { - _defaultFeedType = getServletConfig().getInitParameter(DEFAULT_FEED_TYPE); - _defaultFeedType = (_defaultFeedType!=null) ? _defaultFeedType : "atom_0.3"; - } - - public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { - try { - SyndFeed feed = getFeed(req); - - String feedType = req.getParameter(FEED_TYPE); - feedType = (feedType!=null) ? feedType : _defaultFeedType; - feed.setFeedType(feedType); - - res.setContentType(MIME_TYPE); - SyndFeedOutput output = new SyndFeedOutput(); - output.output(feed,res.getWriter()); - } - catch (FeedException ex) { - String msg = COULD_NOT_GENERATE_FEED_ERROR; - log(msg,ex); - res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg); - } - } - - protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { - SyndFeed feed = new SyndFeedImpl(); - - feed.setTitle("Sample Feed (created with ROME)"); - feed.setLink("http://rome.dev.java.net"); - feed.setDescription("This feed has been created using ROME (Java syndication utilities"); - - List entries = new ArrayList(); - SyndEntry entry; - SyndContent description; - - entry = new SyndEntryImpl(); - entry.setTitle("ROME v0.1"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome01"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Initial release of ROME"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("Rome v0.2"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome02"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/plain"); - description.setValue("Bug fixes, minor API changes and some new features"+ - "

For details check the Changes Log for 0.2

"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("ROME v0.3"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome03"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

Bug fixes, API changes, some new features and some Unit testing

"+ - "

For details check the Changes Log for 0.3

"); - entry.setDescription(description); - entries.add(entry); - - entry = new SyndEntryImpl(); - entry.setTitle("ROME v0.4"); - entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome04"); - try { - entry.setPublishedDate(DATE_PARSER.parse("2004-09-24")); - } - catch (ParseException ex) { - // IT CANNOT HAPPEN WITH THIS SAMPLE - } - description = new SyndContentImpl(); - description.setType("text/html"); - description.setValue("

Bug fixes, API changes, some new features, Unit testing completed

"+ - "

For details check the Changes Log for 0.4

"); - entry.setDescription(description); - entries.add(entry); - - feed.setEntries(entries); - - return feed; - } - -} - -``` - - -To use the **_FeedServlet_** we need to create a Web Application. For the Web Application we need a deployment descriptor, the **_web.xml_** file: - - - -``` - - - - - - ROME Samples - - - FeedServlet - com.sun.syndication.samples.servlet.FeedServlet - - default.feed.type - rss_2.0 - - - - - FeedServlet - /feed - - - - -``` - - -To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, **_rome\-samples.war_**, will be created under the **_target_** directory. Deploy the WAR in a servlet container and the **_FeedServlet_** should be up an running. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the **_$\{TOMCAT\}/webapps_** directory the URL for the **_FeedServlet_** would be [http://localhost:8080/rome\-samples/feed](http://localhost:8080/rome-samples/feed) in a default localhost Tomcat installation. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md deleted file mode 100644 index 1ff0297..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.md +++ /dev/null @@ -1,107 +0,0 @@ -# The CopyFrom interface - - -The CopyFrom interface defines functionality similar to a deep cloning. The difference with the clone() method (besides the deep cloning requirements) is that the object to be the copy of the original one has to be explicitly created and it is this object the one that triggers the deep copying process. Implemetations of the CopyFrom interface should work propertly on arrays, collections, CopyFrom and basic type properties. - - - -Using CopyFrom objects enables copying data between different implementations of a given interface without these implementation having to know about each other. - - - -CopyFrom is unidirectional. A class implementing the CopyFrom knows how to extract properties from the given class (commonly having an interface in common). - - - -A simple example using the CopyFrom interface is: - - - -``` - - public interface Foo extends CopyFrom { - public void setName(String name); - public String getName(); - - public void setValues(Set values); - public Set getValues(); - } - - public class FooImplA implements Foo { - private String _name; - private Set _values; - - public void setName(String name) { - _name = name; - } - - public String getName() { - return _name; - } - - public void setValues(Set values) { - _values = values; - } - - public Set getValues() { - return _values; - } - - public void copyFrom(Object obj) { - Foo other = (Foo) obj; - setName(other.getName()); - setValues(new HashSet(other.getValues()); - } - - public Class getInterface() { - return Foo.class; - } - } - - public class FooImplB implements Foo { - private Map _data; - - public FooImplB() { - _data = new HashMap(); - } - - public void setName(String name) { - _data.put("name",name); - } - - public String getName() { - return (String) _data.get("name"); - } - - public void setValues(Set values) { - _data.put("values",values); - } - - public Set getValues() { - return (Set) _data.get("values"); - } - - public void copyFrom(Object obj) { - Foo other = (Foo) obj; - setName(other.getName()); - setValues(new HashSet(other.getValues()); - } - - public Class getInterface() { - return Foo.class; - } - } - -``` - - -A use case for the CopyFrom functionality is a Java Bean implementation of an interface and a persistency implementation (such as Hibernate) of the the same interface that may add extra persistency related properties to the bean (ie, the 'Id' property as the persistency layer primary key). - - - -For bean, array and collection properties the bean being invoked which copyFrom() method is invoked is responsible for those properties. - - - -For properties implementing the CopyFrom interface, the bean must create a property instance implementing the interface returned by the getInterface() method. This allows the bean doing the copyFrom() to handle specialized subclasses of property elements propertly. This is also applicacle to array and collection properties. The 'modules' property of the SyndFeed and SyndEntry beans is a use case of this feature where the copyFrom() invocation must create different beans subclasses for each type of module, the getInteface() helps to find the right implementation. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md deleted file mode 100644 index 71cd4c2..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.md +++ /dev/null @@ -1,166 +0,0 @@ -# Understanding Rss and atOM utilitiEs (ROME) Bean Utilities - - -ROME bean utilities are not part of ROME public API. They are used by the default implementation of ROME beans and it may be useful for alternate implementations as well. It is important to keep in mind that these APIs are not public and they are subject to change breaking backward compatibility. - - - -Rome _com.sun.syndication.feed.impl_ package contains a set of Java classes that provide support for all the basic features Java Beans commonly must have: toString, equals, hashcode and cloning. - - - -By using these classes Beans don't have to hand code these functions. This greatly simplifies things when Beans have several properties, collection properties and composite properties. - - - -The _CloneableBean_, _EqualsBean_, _ToStringBean_ and _ObjectBean_ classes use instrospection on the properties of the classes using them. This is done recursively on all properties. All ROME Beans default implementations leverage these classes. - - -## ToStringBean - - - -Beans implementing the ToString interface must implement the toString(String prefix) method. This method must print the bean properties names and values, one per per line, separating the name and value with an '\=' sign and prefixing the name with the given prefix parameter using the same notation used in the JSP expression language used in JSTL and in JSP 2.0. This must be done recursively for all array, collection and ToString properties. - - - -The ToStringBean class provides an implementation of the toString() method producing a detailed output of all the properties of the Bean being processed. The ToStringBean constructor takes the class definition the ToStringBean class should use for properties scanning \-using instrospection\- for printing, normally it is the class of the Bean using the ToStringBean. - - -### Using the ToStringBean class - - - -``` - - public class MyBean { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - - public String toString(String prefix) { - ToStringBean tsBean = new ToStringBean(MyBean.class,this); - return tsBean.toString(prefix); - } - - public String toString() { - return toString("myBean"); - } - } - -``` - -## EqualBean - - - -The EqualsBean class provides a recursive introspetion\-based implementation of the equals() and hashCode() methods working on the Bean properties. The EqualsBean constructor takes the class definition that should be properties scanned (using introspection) by the equals() and thehashCode() methods. The EqualsBean class works on array, collection, bean and basic type properties. - - -### Using the EqualsBean class - - - -``` - - public class MyBean { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - - public boolean equals(Object obj) { - EqualsBean eBean = new EqualsBean(MyBean.class,this); - return eBean.beanEquals(obj); - } - - public int hashCode() { - EqualsBean equals = new EqualsBean(MyBean.class,this); - return equals.beanHashCode(); - } - } - -``` - -## CloneableBean - - - -The CloneableBean class provides a recursive introspetion\-based implementation of the clone() method working on the Bean properties. The CloneableBean class works on array, collection, bean and basic type properties. - - -### Using the CloneableBean class - - - -``` - - public class MyBean implements Cloneable { - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - - public Object clone() { - CloneableBean cBean = new CloneableBean(this); - return cBean.beanClone(); - } - } - -``` - - -By default, the CloneableBean copies all properties of the given object. It also supports an ignore\-properties set, the property names in this set will not be copied to the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module. - - -## ObjectBean - - - -The ObjectBean is a convenience bean providing ToStringBean, EqualsBean and CloneableBean functionality support. Also, ObjectBeans implements the Serializable interface making the beans serializable if all its properties are. Beans extending ObjectBean get toString(), equals(),hashCode() and clone() support as defined above. - - - -And example of using the ObjectBean class is: - - - -``` - - public class MyBean extends ObjectBean { - - public MyBean() { - super(MyBean.class); - } - - public Foo getFoo() { ... } - public void setFoo(Foo foo) { ... } - - public String getName() { ... } - public void setName(String name) { ... } - - public List getValues() { ... } - public void setValues(List values) { ... } - } - -``` - - -It can also be used in delegation mode instead as some of the previous examples. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md deleted file mode 100644 index f1b3a0b..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.md +++ /dev/null @@ -1,172 +0,0 @@ -# XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding - - -Determining the charset set encoding of an XML document it may prove not as easy as it seems, and when the XML document is served over HTTP things get a little more hairy. - - - -Current Java libraries or utilities don't do this by default, A JAXP SAX parser may detect the charset encoding of a XML document looking at the first bytes of the stream as defined Section 4.3.3 and Appendix F.1 of the in [XML 1.0 (Third Edition)](http://www.w3.org/TR/2004/REC-xml-20040204/) specification. But Appendix F.1 is non\-normative and not all Java XML parsers do it right now. For example the JAXP SAX parser implementation in [J2SE 1.4.2](http://java.sun.com/j2se/1.4.2) does not handle Appendix F.1 and [Xerces 2.6.2](http://xml.apache.org/xerces2-j/) just added support for it. But still this does not solve the whole problem. JAXP SAX parsers are not aware of the HTTP transport rules for charset encoding resolution as defined by [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt). They are not because they operate on a byte stream or a char stream without any knowledge of the stream transport protocol, HTTP in this case. - - - -[Mark Pilgrim](http://diveintomark.org/) did a very good job explaining how the charset encoding should be determined, [Determining the character encoding of a feed](http://diveintomark.org/archives/2004/02/13/xml-media-types) and [XML on the Web Has Failed](http://www.xml.com/pub/a/2004/07/21/dive.html). - - - -To isolate developers from this issue ROME has a special character stream class, the _XmlReader_. The _XmlReader_ class is a subclass of the _java.io.Reader_ that detects the charset encoding of XML documents read from files, input streams, URLs and input streams obtained over HTTP. Ideally this should be built into the JAXP SAX classes, most likely in the InputSource class. - - -## Default Lenient Behavior - - - -It is very common for many sites, due to improper configuration or lack of knowledge, to declare an invalid charset encoding. Invalid according to the XML 1.0 specification and the RFC 3023. For example a mismatch between the implicit charset encoding in the HTTP content\-type and the explicit charset encoding in the XML prolog. - - - -Because of this, ROME XmlReader by default has a lenient detection. This lenient detection works in the following order: - - - -* A strict charset encoding detection, as specified by the Algorithms below is attempted - -* If the content type was 'text/html' it replaces it with 'text/xml' and tries strict charset encoding detection again - -* If the XML prolog had a charset encoding that encoding is used - -* If the content type had a charset encoding that encoding is used - -* 'UTF\-8' is used - - - -The XmlReader class has 2 constructors that allow a strict (non\-lenient) charset encoding detection to be performed. This constructors take a lenient boolean flag, the flag should be set to _false_ for a strict detection. - - -## The Algorithms per XML 1.0 and RFC 3023 specifications - - - -Following it's a detailed explanation on the algorithms the _XmlReader_ uses to determine the charset encoding. These algorithms first appeared in [Tucu's Weblog](http://blogs.sun.com/roller/page/tucu/Weblog). - - -### Raw XML charset encoding detection - - - -Detection of the charset encoding of a XML document without external information (i.e. reading a XML document from a file). Following [Section 4.3.3](http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding) and [Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info) of the XML 1.0 specification the charset encoding of an XML document is determined as follows: - - - -``` - -BOMEnc : byte order mark. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL -XMLGuessEnc: best guess using the byte representation of the first bytes of XML declaration - ('') if present. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL -XMLEnc : encoding in the XML declaration (''). Possible values: anything or NULL - -if BOMEnc is NULL - if XMLGuessEnc is NULL or XMLEnc is NULL - encoding is 'UTF-8' [1.0] - else - if XMLEnc is 'UTF-16' and (XMLGuessEnc is 'UTF-16BE' or XMLGuessEnc is 'UTF-16LE') - encoding is XMLGuessEnc [1.1] - else - encoding is XMLEnc [1.2] -else -if BOMEnc is 'UTF-8' - if XMLGuessEnc is not NULL and XMLGuessEnc is not 'UTF-8' - ERROR, encoding mismatch [1.3] - if XMLEnc is not NULL and XMLEnc is not 'UTF-8' - ERROR, encoding mismatch [1.4] - encoding is 'UTF-8' -else -if BOMEnc is 'UTF-16BE' or BOMEnc is 'UTF-16LE' - if XMLGuessEnc is not NULL and XMLGuessEnc is not BOMEnc - ERROR, encoding mismatch [1.5] - if XMLEnc is not NULL and XMLEnc is not 'UTF-16' and XMLEnc is not BOMEnc - ERROR, encoding mismatch [1.6] - encoding is BOMEnc -else - ERROR, cannot happen given BOMEnc possible values (see above) [1.7] - -``` - - -Byte Order Mark encoding and XML guessed encoding detection rules are clearly explained in the [XML 1.0 Third Edition Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info). Note that in this algorithm BOMEnc and XMLGuessEnc are restricted to UTF\-8 and UTF\-16\* encodings. - - - -* **#1.0.** There is no BOM, an encoding or encoding family cannot be guessed from the first bytes in the stream, defaulting to UTF\-8. - -* **#1.1.** Strictly following [XML 1.0 Third Edition Section 4.3.3 Charset Encoding in Entities](http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding) (2nd paragraph) no BOM and UTF\-16 XML declaration encoding is an error. The BOM is required to identify if the encoding is BE or LE. But if XMLEnc was read it means that the encoding byte order of the stream was guessed from the first bytes in the stream, note that this is possible only if the document starts with a XML declaration. The logic verifies that there is no conflicting encoding information and relaxes the BOM requirement if a XML declaration (that allows guessing the byte order) is present. - -* **#1.2.** XMLEnc is present, it is not UTF\-16 (although it can be UTF\-16BE or UTF\-16LE), the guessed encoding is used to read the XML declaration encoding. Detecting encoding mismatches here it would require awareness of charset families, instead the algorithm relies on the charset encoding routines that will process the stream to discover and report mismatches. _IMPORTANT:_ To handle other encodings (i.e. USC\-4 or EBCDIC encoding families) the algorithm should be extended here. - -* **#1.3, #1.4, #1.5, #1.6** There is an explicit encoding mismatch. - -* **#1.7.** Given the currently assumed BOMEnc values this case cannot happen. _IMPORTANT:_ To handle other encodings (i.e. USC\-4 or EBCDIC encoding families) the algorithm should be extended here. - - -### XML over HTTP charset encoding detection - - - -Detection of the charset encoding of a XML document with external information (provided by HTTP). Following [Section 4.3.3](http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding), [Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info) and [Appendix F.2](http://www.w3.org/TR/2004/REC-xml-20040204/#sec-guessing-with-ext-info) of the XML 1.0 specification, plus [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) the charset encoding of an XML document served over HTTP is determined as follows: - - - -``` - -ContentType: Content-Type HTTP header -CTMime : MIME type defined in the ContentType -CTEnc : charset encoding defined in the ContentType, NULL otherwise -BOMEnc : byte order mark. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL -XMLGuessEnc: best guess using the byte representation of the first bytes of XML declaration - ('') if present. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL -XMLEnc : encoding in the XML declaration (''). Possible values: anything or NULL -APP-XML : RFC 3023 defined 'application/*xml' types -TEXT-XML : RFC 3023 defined 'text/*xml' types - -if CTMime is APP-XML or CTMime is TEXT-XML - if CTEnc is NULL - if CTMime is APP-XML - encoding is determined using the Raw XML charset encoding detection algorithm [2.0] - else - if CTMime is TEXT-XML - encoding is 'US-ASCII' [2.1] - else - if (CTEnc is 'UTF-16BE' or CTEnc is 'UTF-16LE') and BOMEnc is not NULL - ERROR, RFC 3023 explicitly forbids this [2.2] - else - if CTEnc is 'UTF-16' - if BOMEnc is 'UTF-16BE' or BOMEnc is 'UTF-16LE' - encoding is BOMEnc [2.3] - else - ERROR, missing BOM or encoding mismatch [2.4] - else - encoding is CTEnc [2.5] -else - ERROR, handling for other MIME types is undefined [2.6] - -``` - - -Byte Order Mark encoding and XML guessed encoding detection rules are clearly explained in the [XML 1.0 Third Edition Appendix F.1](http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info). Note that in this algorithm BOMEnc and XMLGuessEnc are restricted to UTF\-8 and UTF\-16\* encodings. - - - -* **#2.0.** HTTP content type declares a MIME of application type and XML sub\-type. There is not HTTP Content\-type charset encoding information. The charset encoding is determined using the Raw XML charset encoding detection algorithm. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _3.2. Application/xml Registration_. - -* **#2.1.** HTTP content type declares a MIME of text type and XML sub\-type. There is not HTTP Content\-type charset encoding information. The charset encoding is US\-ASCII. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _3.1. Text/xml Registration_. - -* **#2.2.** For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16BE' or 'UTF\-16LE' as the charset encoding, a BOM is prohibited. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset_. - -* **#2.3.** For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16' as the charset encoding, a BOM is required and it must be used to determine the byte order. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset_. - -* **#2.4.** For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16' as the charset encoding, a BOM must be present and it must be 'UTF\-16BE' or 'UTF\-16LE'. Refer to [RFC 3023](http://www.ietf.org/rfc/rfc3023.txt) Section _4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset_. - -* **#2.5.** For text\-XML and application\-XML MIME types if the HTTP content type declares a charset encoding other than the UTF\-16 variants, that charset encoding is used, no other special handling is required. - -* **#2.6.** There is not defined logic to determine the charset encoding based on the MIME type given by the HTTP content type. - diff --git a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md b/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md deleted file mode 100644 index 0ed43d1..0000000 --- a/src/site/markdown/rome/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.md +++ /dev/null @@ -1,57 +0,0 @@ -# Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles - -## Tutorials - - - -The following tutorials show how to use the ROME API. They focus on the higher abstraction layer of classes offered by ROME, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. - - - -1. [Using ROME to read a syndication feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html) - -1. [Using ROME to convert a syndication feed from one type to another](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html) - -1. [Using ROME to aggregate many syndication feeds into a single one](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html) - -1. [Using ROME to create and write a feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) - -1. [Defining a Custom Module bean, parser and generator](RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html) - -1. [Using ROME within a Servlet to create and return a feed](RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html) - - - -For instructions on how to build and run the samples used in the tutorials [click here](RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html). - - -## Additional Information - - - -* [Bean Utilities](UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - -* [XML Charset Encoding detection](XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html) - -* [TheCopyFromInterface.html](TheCopyFromInterface.html) - -* [Date Elements Mapping](FeedsDateElementsMappingToSyndFeedAndSyndEntry.html) - -* [Plugins Mechanism](RssAndAtOMUtilitiEsROMEPluginsMechanism.html) - -* [URI Mapping](FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html) - - -## Articles - - - -* [O'Reilly \- ROME in a Day: Parse and Publish Feeds in Java](http://www.xml.com/pub/a/2006/02/22/rome-parse-publish-rss-atom-feeds-java.html) by [Mark Woodman](http://markwoodman.com/) (February 22, 2006). - _A hands\-on tutorial that shows you how to act like your own FeedBurner and add a footer to existing feed items._ - -* [java.net \- Taking a Tour of ROME](http://today.java.net/pub/a/today/2006/02/02/tour-of-rome.html) by [Randy J. Ray](http://www.rjray.org/) (February 2, 2006). - _Working with web syndication? Your development path may lead you to ROME\-\-not the city, but the syndication framework, which makes working with RSS and Atom a breeze for both server\-and client\-side code. Randy J. Ray has an introduction to this project._ - -* [inkBlots \- Interview with Patrick Chanezon](http://inkblots.markwoodman.com/rss-diaries/patrick-chanezon) by [Mark Woodman](http://markwoodman.com/) (July 13, 2005). - _Why and how we started this project._ - diff --git a/src/site/markdown/rome/SitesToMoveFromJava.net.md b/src/site/markdown/rome/SitesToMoveFromJava.net.md deleted file mode 100644 index c8ca49c..0000000 --- a/src/site/markdown/rome/SitesToMoveFromJava.net.md +++ /dev/null @@ -1,551 +0,0 @@ -# sites to move from java.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - source - - - - target - - - -state - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/HowToBuild](http://wiki.java.net/twiki/bin/view/Javawsxml/HowToBuild) - - - - [How to build Rome?](HowToBuildRome.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/PoweredByRome](http://wiki.java.net/twiki/bin/view/Javawsxml/PoweredByRome) - - - - [ProductsOrSitesPoweredByROME.html](ProductsOrSitesPoweredByROME.html) - - - - missing images - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/PreservingWireFeeds](http://wiki.java.net/twiki/bin/view/Javawsxml/PreservingWireFeeds) - - - - [PreservingWireFeeds.html](PreservingWireFeeds.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/ProjectMotivation](http://wiki.java.net/twiki/bin/view/Javawsxml/ProjectMotivation) - - - - [Why this project?](WhyThisProject.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common) - - - - [HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html](HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04HowRomeWorks](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04HowRomeWorks) - - - - [HowRomeWorks/index.html](HowRomeWorks/index.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedAggregator](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedAggregator) - - - - [HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedConverter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedConverter) - - - - [HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedReader](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedReader) - - - - [HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedWriter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedWriter) - - - - [HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html](HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialSampleModule](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialSampleModule) - - - - [Rome v0.4 Tutorial, Defining a Custom Module (bean, parser and generator)](HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Tutorials](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Tutorials) - - - - [ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04URIMapping](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04URIMapping) - - - - [RomeV0.4FeedAndEntryURIMapping.html](RomeV0.4FeedAndEntryURIMapping.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05BeanUtils](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05BeanUtils) - - - - [Understanding Rss and atOM utilitiEs (ROME) Bean Utilities](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CharsetEncoding](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CharsetEncoding) - - - - [XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CopyFrom](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CopyFrom) - - - - [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05DateMapping](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05DateMapping) - - - - [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Plugins](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Plugins) - - - - [Rss and atOM utilitiEs (ROME) Plugins Mechanism](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05SamplesHowTo](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05SamplesHowTo) - - - - [Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedAggregator](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedAggregator) - - - - [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedConverter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedConverter) - - - - [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to convert a syndication feed from one type to another](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader) - - - - [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedServlet](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedServlet) - - - - [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html) - - - - links in code examples messed up - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedWriter](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedWriter) - - - - [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) - - - - links in code examples messed up - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialSampleModule](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialSampleModule) - - - - [Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator)](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Tutorials](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Tutorials) - - - - [Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05URIMapping](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05URIMapping) - - - - [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/Rome07DateParsing](http://wiki.java.net/twiki/bin/view/Javawsxml/Rome07DateParsing) - - - - [Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing](RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal2](http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal2) - - - - [ROME2 2nd Proposal (July 18th 2006) CURRENT](ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal](http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal) - - - - [ROME2 1st Proposal (June 10th 2006) NOT CURRENT](ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndMaven2](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndMaven2) - - - - [ROMEAndMaven2.html](ROMEAndMaven2.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndOSGi](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndOSGi) - - - - [ROMEAndOSGI.html](ROMEAndOSGI.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAPIFAQ](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAPIFAQ) - - - - [RomeAPIFAQ.html](RomeAPIFAQ.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeComparisonOtherLibs](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeComparisonOtherLibs) - - - - [What's wrong with other existing RSS parsing libraries?](WhatSWrongWithOtherExistingRSSParsingLibraries.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeDevelopmentProcess](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeDevelopmentProcess) - - - - [ROMEDevelopmentProcess.html](ROMEDevelopmentProcess.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeFeatureRequests](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeFeatureRequests) - - - - [ROMEDevelopmentProposals/ROMEFeatureRequests.html](ROMEDevelopmentProposals/ROMEFeatureRequests.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeProposals](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeProposals) - - - - [ROMEDevelopmentProposals/index.html](ROMEDevelopmentProposals/index.html) - - - - - -
- - [http://wiki.java.net/twiki/bin/view/Javawsxml/RomeWhatAPIToUse](http://wiki.java.net/twiki/bin/view/Javawsxml/RomeWhatAPIToUse) - - - - [WhatPartOfTheAPIYouShouldBeUsing.html](WhatPartOfTheAPIYouShouldBeUsing.html) - - - - - -
diff --git a/src/site/markdown/rome/TutorialsAndArticles.md b/src/site/markdown/rome/TutorialsAndArticles.md deleted file mode 100644 index a5f977c..0000000 --- a/src/site/markdown/rome/TutorialsAndArticles.md +++ /dev/null @@ -1,114 +0,0 @@ -# Tutorials and Articles - -## Tutorials and documentation - - - -* Inside ROME, How Things Work - - * [How ROME Works](HowRomeWorks/index.html), Understanding Rome (a detailed overview by Dave Johnson) - - * [Rome common Package](HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html), bean utilities, enums, copying and clonning - - * [ROME Plugins Mechanism](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - - * [Feeds Date Elements](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - - * [Feed and Entry URI Mapping](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - - * [XML Charset Encoding Detection](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how Rome helps getting the right charset encoding - - - -* [RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html](RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) - -* [RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html) - - * [Using ROME to read a syndication feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html) - - * [Using ROME to convert a syndication feed from one type to another](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html) - - * [Using ROME to aggregate many syndication feeds into a single one](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html) - - * [Using ROME to create and write a feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html) - - * [Defining a Custom Module bean, parser and generator](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html) - - * [Using ROME within a Servlet to create and return a feed](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html) - - * [instructions on how to build and run the samples used in the tutorials](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html) - - - -* [ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html) - - * [Using Rome to read a syndication feed](HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html) - - * [Using Rome to convert a syndication feed from one type to another](HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - - * [Using Rome to aggregate many syndication feeds into a single one](HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - - * [Using Rome to create and write a feed](HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) - - * [Defining a Custom Module bean, parser and generator](HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html) - - * [Using Rome within a Servlet to create and return a feed](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.html) - - * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.html) - - - -* [ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.html](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.html) - - * [Using Rome to read a syndication feed](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.html) - - * [Using Rome to convert a syndication feed from one type to another](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - - * [Using Rome to aggregate many syndication feeds into a single one](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - - * [Using Rome to create and write a feed](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.html) - - * [Defining a Custom Module bean, parser and generator](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.html) - - * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.html) - - - -* [ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.html](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.html) - - * [Using Rome to read a syndication feed](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.html) - - * [Using Rome to convert a syndication feed from one type to another](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - - * [Using Rome to aggregate many syndication feeds into a single one](ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - - * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html) - - - -* [ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.html](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.html) - - * [Using Rome to read a syndication feed](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.html) - - * [Using Rome to convert a syndication feed from one type to another](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html) - - * [Using Rome to aggregate many syndication feeds into a single one](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html) - - * [instructions on how to build and run the samples used in the tutorials](ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html) - - - - -## Articles - - - -* [O'Reilly \- ROME in a Day: Parse and Publish Feeds in Java](http://www.xml.com/pub/a/2006/02/22/rome-parse-publish-rss-atom-feeds-java.html) by [Mark Woodman](http://markwoodman.com/) (February 22, 2006). - _A hands\-on tutorial that shows you how to act like your own FeedBurner and add a footer to existing feed items._ - -* [java.net \- Taking a Tour of ROME](http://today.java.net/pub/a/today/2006/02/02/tour-of-rome.html) by [Randy J. Ray](http://www.rjray.org/) (February 2, 2006). - _Working with web syndication? Your development path may lead you to ROME\-\-not the city, but the syndication framework, which makes working with RSS and Atom a breeze for both server\-and client\-side code. Randy J. Ray has an introduction to this project._ - -* [inkBlots \- Interview with Patrick Chanezon](http://inkblots.markwoodman.com/rss-diaries/patrick-chanezon) by [Mark Woodman](http://markwoodman.com/) (July 13, 2005). - _Why and how we started this project._ - diff --git a/src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md b/src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md deleted file mode 100644 index 7294c4d..0000000 --- a/src/site/markdown/rome/WhatPartOfTheAPIYouShouldBeUsing.md +++ /dev/null @@ -1,9 +0,0 @@ -# What part of the API you should be using - - -Rome API allows developers to work with classes that closely resemble a particular syndication feed type. For example, the Channel class for RSS feeds and the Feed class for Atom feeds. All the Synd\* classes, which leverage the RSS and Atom specific classes, are the bridge to go from one syndication type to another. - - - -For day to day coding, we found ourselves using the **Synd\*** classes (in **com.sun.syndication.feed.synd**, **com.sun.syndication.feed.module** and **com.sun.syndication.io** packages) as we need to do applications that understand the different syndication feed types. And it is much simpler to work with a higher and independent abstraction. - diff --git a/src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md b/src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md deleted file mode 100644 index 6fe027e..0000000 --- a/src/site/markdown/rome/WhatSWrongWithOtherExistingRSSParsingLibraries.md +++ /dev/null @@ -1,95 +0,0 @@ -# What's wrong with other existing RSS parsing libraries? - - -Before we started with Rome we've evaluated other Java syndication management libraries to see if they'd fit our criteria. Feel free to update this evaluation if we forgot or mischaracterized your favorite library: this is a wiki after all:\-) - - -### Informa - - - -The [Informa: RSS Library for Java](http://informa.sourceforge.net/) which exists since 2002 is too complicated to grasp and use. As of this writing it has [19 interfaces and 12 marker interfaces](http://informa.sourceforge.net/apidocs/de/nava/informa/core/package-summary.html). It supports all RSS flavors in input, and only 1.0 and 0.91 in output. - - - -No RSS 2.0 output. - - - -No support for Atom at all. - - - -They have some interesting features such as Hibernate and Castor based database serialization, and JSP taglibs, which are useful paraphernalia for server side application development. This seems to be their main focus of development today. - - - -But we prefer to focus on our ESCAPE design criteria, so that our library does one thing really well: syndication parsing, abstract representation and conversion from/to all formats. - - - -Thus our library will be useful for both client and server side developers. - - - -We will develop the server side add\-on later when the basics will be well oiled. - - -### RSS4J - - - -[RSS4J](http://www.churchillobjects.com/c/13005.html) was released in version 0.92 in april 2002. It did not evolve since then. - - - -The web site explains: - - - -_This toolkit supports the three most commonly used RSS standards \- 0.90 (the original), 0.91 and 1.0. RSS 0.92 and 0.93 are not supported due to the dramatic changes it makes to the format and the fact that 1.0 is already finalized._ - - - -No need to say more: it seems to be a dead project and doesn't even start to address our requirements. - - -### RSS Utilities - - - -[RSS Utilities](http://java.sun.com/developer/technicalArticles/javaserverpages/rss_utilities/) seems like a one\-shot project from Rodrigo Oliveira, released in august 2003. It is a taglib to display RSS in JSPs, and includes a small parser for RSS 0.91, 0.92 and 2.0. - - - -It does not seem to be maintained, does not address RSS 1.0 and Atom. - - - -I would encourage Rodrigo to rewrite his taglibs using Rome as the parser, and eventually to contribute them to Rome. - - -### RSSLibJ - - - -[RSSLibJ](http://enigmastation.com/rsslibj) is a full\-Java RSS generation and consumption library, primarily centering on generating RSS feeds but able to consume them as well. It's maintained, but undergoing a refactoring to change a rather undesirable dependency. - - - -(This isn't a review \- this was added by one of RSSLibJ 's authors.) - - -### Sandler - - - -Sandler is yet another parser except that it only supports Atom feeds. I can't say more than that because I haven't used it. And now I won't have to. - - -### Conclusion - - - -These are the only RSS or Syndication management libraries we found in Java when we reviewed what was available and wether it was worth starting a new project. Feel free to add to it if we forgot something. - diff --git a/src/site/markdown/rome/WhyThisProject.md b/src/site/markdown/rome/WhyThisProject.md deleted file mode 100644 index 25be1d4..0000000 --- a/src/site/markdown/rome/WhyThisProject.md +++ /dev/null @@ -1,31 +0,0 @@ -# Why this project? - - -Various flavors of RSS and Atom syndication formats were reaching a tipping point in 2004. At Sun we started various projects involving these Syndication formats, but when looking around for Java libraries to take care of the parsing and generation of RSS we were not satisfied with what we found. [Project ROME](https://rometools.jira.com/) was started out of this frustration. - - - -Our requirements are to **ESCAPE** from [Syndication Feeds Hell](http://blogs.sun.com/tucu/entry/syndication_feeds_hell). In order to allow that the library must be: - - - -* \*E\*asy to use: given a url, get back a feed object independent of the underlying format, and serialize the feed object to the format I want. - -* \*S\*imple: RSS initially stood for "Really Simple Syndication"\*, and this simplicity is what made the format successful. Specifications wars have made the current situation much more complicated. The goal of the library is to give that simplicity back to developers: each API we use force on us a mental model of the domain and we are using more and more libraries on each project we implement. This library tries to ease the cognitive load of developers and provides a very simple model for feeds and entries, abstarcting out the details of the various underlying formats. - -* \*C\*omplete: must handle all versions of RSS and Atom - -* \*A\*bstract: provides a Java\-friendly abstraction layer on top of the various syndication specifications, that maps the commonalities of the various feed formats into a single simple JavaBeans Data Model. - -* \*P\*owerful: lets me access all the metadata of the feeds regardless of their format. If I need them, lets me access optional metadata expressed in extensions accepted by various formats (RSS 1.0 modules, other namespaces in Atom). - -* \*E\*xtensible: It needs to define a simple pluggable architecture to provide support for future extensions of the formats. - - - -\* \- not so, it was originally "RDF Site Summary", see: [RSS History](http://goatee.net/2003/rss-history.html) - - - -We set out to create this library in the same spirit as the [JDOM](http://www.jdom.org/mission/index.html) library for XML manipulation in Java, incorporating XOM's [Elliotte Rusty Harold's pearls of wisdom about API design and refactoring](http://www.artima.com/intv/jdom.html) (see [Air Bags and Other Design Principles](http://www.artima.com/intv/airbags.html) which links his 6 interviews with Bill Venners). ROME implementation uses JDOM. - diff --git a/src/site/markdown/rome/index.md b/src/site/markdown/rome/index.md deleted file mode 100644 index 9764ed0..0000000 --- a/src/site/markdown/rome/index.md +++ /dev/null @@ -1,85 +0,0 @@ -## Welcome to ROME - -_"...ending syndication feed confusion by supporting all of 'em. "_ _[\*](http://blogs.sun.com/roller/page/webmink/20040616#rome_wasn_t_built_in)_ - -**ROME is a set of _R_SS and At_om_ Utiliti_e_s for Java that is open source under the Apache 2.0 license.** - -RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0 - -ROME includes a set of parsers and generators for the various flavors of syndication feeds, as well as converters to convert from one format to another. -The parsers can give you back Java objects that are either specific for the format you want to work with, or a generic normalized SyndFeed class that -lets you work on with the data without bothering about the incoming or outgoing feed type. - -If you use ROME for your site or software, please add it to the wiki page [PoweredByRome](ProductsOrSitesPoweredByROME.html), or drop us an email - -Some of the links in the Navigation are out of date. This is because no one can edit them at present. However any registered user can edit the content -of the pages and you'll find most of the links updated there, notably the Tutorials and Articles. - -## ROME Subprojects - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SubprojectPurposeLatest Release
ROME FetcherA caching feed fetcher that supports retrieval of feeds via HTTP conditional GET. - Supports ETags, GZip compression, and RFC3229 Delta encoding.ROME Fetcher v1.0 (Mar 11 2009)
Rome ModulesProvide support for feed extensions such as GeoRSS, iTunes, Microsoft SSE and SLE, Google GData and others.ROME Modules 1.0 (Feb 24 2011)
ROME ProponoSupports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, - an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API.ROME Propono v0.6.
ROME ManoA servlet pipeline framework for RSS and Atom feeds.
OPML for ROMEOutline Processor Markup Language (OPML) parser and tools.
- -## Further information - -* [ROME Releases](ROMEReleases/index.html) -* Working with ROME - * [What part of the API you should be using](WhatPartOfTheAPIYouShouldBeUsing.html) - * [Tutorials and Articles](TutorialsAndArticles.html) -* Articles about ROME - * [Project Motivation](WhyThisProject.html) \- why we started ROME - * [API FAQ](RomeAPIFAQ.html), why things are like they are - * [Evaluation of existing RSS parsing libraries](WhatSWrongWithOtherExistingRSSParsingLibraries.html) -* Inside ROME, How Things Work - * [How ROME Works](HowRomeWorks/index.html), Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) - * [ROME Plugins Mechanism](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html), bootstrap, adding and changing parsers, generators, converters and modules - * [Feeds Date Elements](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html), how Date data is mapped to SyndFeed and SyndEntry - * [Feed and Entry URI Mapping](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html), how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements - * [XML Charset Encoding Detection](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html), how ROME helps getting the right charset encoding - * [Creating a custom Module](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html), creating all necessary pieces, bean, parser and generator - * [The CopyFrom interface](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html) - * [ROME bean utilities, equals, toString and cloning](RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html) - * [Customizing Date and time parsing](RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html) in the rome.properties file - * [Using ROME from Maven2](ROMEAndMaven2.html) - * [Using ROME with OSGi](ROMEAndOSGI.html) - * [Preserving Wire Feeds to obtain access to Atom/RSS specific fields](PreservingWireFeeds.html) -* ROME development - * [How to build ROME](HowToBuildRome.html) (ROME uses [Maven](http://maven.apache.org/)) - * [Changes Log](ChangeLog.html), what and when - * [ROME Development Process](ROMEDevelopmentProcess.html) - * [ROME Development Proposals](ROMEDevelopmentProposals/index.html) \- proposals for new ROME features and releases -  \ No newline at end of file From db6f65b33187bf8a79f0f2f6932eed37ffd58122 Mon Sep 17 00:00:00 2001 From: Martin Kurz Date: Fri, 27 Sep 2013 00:13:57 +0200 Subject: [PATCH 5/6] maven site and config --- README.md | 2 +- pom.xml | 2 +- src/site/apt/ChangeLog.apt | 773 ++++++++++++++++++ ...ingACustomModuleBeanParserAndGenerator.apt | 363 ++++++++ ...gateManySyndicationFeedsIntoASingleOne.apt | 146 ++++ ...rtASyndicationFeedFromOneTypeToAnother.apt | 105 +++ ...ngRomeToCreateAndWriteASyndicationFeed.apt | 204 +++++ ...utorialUsingRomeToReadASyndicationFeed.apt | 93 +++ ...ndingTheRomeCommonClassesAndInterfaces.apt | 362 ++++++++ src/site/apt/HowRomeWorks/index.apt | 97 +++ src/site/apt/HowToBuildRome.apt | 99 +++ src/site/apt/PreservingWireFeeds.apt | 57 ++ src/site/apt/ProductsOrSitesPoweredByROME.apt | 210 +++++ src/site/apt/ROMEAndMaven2.apt | 60 ++ src/site/apt/ROMEAndOSGI.apt | 19 + src/site/apt/ROMEDevelopmentProcess.apt | 29 + ...ROME21stProposalJune10th2006NOTCURRENT.apt | 386 +++++++++ .../ROME22ndProposalJuly18th2006CURRENT.apt | 397 +++++++++ .../ROMEFeatureRequests.apt | 64 ++ .../apt/ROMEDevelopmentProposals/index.apt | 38 + src/site/apt/ROMEROADMAPProposed.apt | 78 ++ ...HowToBuildAndRunTheTutorialsSampleCode.apt | 73 ++ ...gateManySyndicationFeedsIntoASingleOne.apt | 155 ++++ ...rtASyndicationFeedFromOneTypeToAnother.apt | 95 +++ ...utorialUsingRomeToReadASyndicationFeed.apt | 84 ++ .../ROME0.1Beta/RomeV0.1Tutorials/index.apt | 25 + .../apt/ROMEReleases/ROME0.1Beta/index.apt | 64 ++ ...gateManySyndicationFeedsIntoASingleOne.apt | 143 ++++ ...rtASyndicationFeedFromOneTypeToAnother.apt | 102 +++ ...utorialUsingRomeToReadASyndicationFeed.apt | 91 +++ .../ROME0.2Beta/RomeV0.2Tutorials/index.apt | 25 + .../apt/ROMEReleases/ROME0.2Beta/index.apt | 60 ++ ...HowToBuildAndRunTheTutorialsSampleCode.apt | 81 ++ ...ingACustomModuleBeanParserAndGenerator.apt | 348 ++++++++ ...gateManySyndicationFeedsIntoASingleOne.apt | 148 ++++ ...rtASyndicationFeedFromOneTypeToAnother.apt | 106 +++ ...ngRomeToCreateAndWriteASyndicationFeed.apt | 204 +++++ ...utorialUsingRomeToReadASyndicationFeed.apt | 95 +++ .../ROME0.3Beta/RomeV0.3Tutorials/index.apt | 29 + .../apt/ROMEReleases/ROME0.3Beta/index.apt | 60 ++ ...HowToBuildAndRunTheTutorialsSampleCode.apt | 84 ++ ...meWithinAServletToCreateAndReturnAFeed.apt | 242 ++++++ .../ROME0.4Beta/RomeV0.4Tutorials/index.apt | 31 + .../apt/ROMEReleases/ROME0.4Beta/index.apt | 94 +++ .../ROMEReleases/ROME0.5Beta/ROMET-Shirt.apt | 26 + .../apt/ROMEReleases/ROME0.5Beta/index.apt | 94 +++ src/site/apt/ROMEReleases/ROME0.6Beta.apt | 89 ++ src/site/apt/ROMEReleases/ROME0.7Beta.apt | 91 +++ src/site/apt/ROMEReleases/ROME0.8Beta.apt | 94 +++ src/site/apt/ROMEReleases/ROME0.9Beta.apt | 100 +++ src/site/apt/ROMEReleases/ROME1.0RC1.apt | 68 ++ src/site/apt/ROMEReleases/ROME1.0RC2.apt | 58 ++ src/site/apt/ROMEReleases/ROME1.0Release.apt | 66 ++ src/site/apt/ROMEReleases/index.apt | 38 + src/site/apt/RomeAPIFAQ.apt | 127 +++ .../apt/RomeV0.4FeedAndEntryURIMapping.apt | 100 +++ ...dAtOMUtiliEsROMEV0.7DateAndTimeParsing.apt | 43 + ...ryUriPropertiesMapToRSSAndAtomElements.apt | 97 +++ ...eElementsMappingToSyndFeedAndSyndEntry.apt | 88 ++ ...ssAndAtOMUtilitiEsROMEPluginsMechanism.apt | 208 +++++ ...HowToBuildAndRunTheTutorialsSampleCode.apt | 87 ++ ...ingACustomModuleBeanParserAndGenerator.apt | 369 +++++++++ ...gateManySyndicationFeedsIntoASingleOne.apt | 146 ++++ ...rtASyndicationFeedFromOneTypeToAnother.apt | 105 +++ ...ngROMEToCreateAndWriteASyndicationFeed.apt | 204 +++++ ...utorialUsingROMEToReadASyndicationFeed.apt | 93 +++ ...MEWithinAServletToCreateAndReturnAFeed.apt | 242 ++++++ .../TheCopyFromInterface.apt | 109 +++ ...ngRssAndAtOMUtilitiEsROMEBeanUtilities.apt | 163 ++++ ...OMEHelpsGettingTheRightCharsetEncoding.apt | 172 ++++ .../index.apt | 67 ++ src/site/apt/SitesToMoveFromJava.net.apt | 441 ++++++++++ src/site/apt/TutorialsAndArticles.apt | 125 +++ .../apt/WhatPartOfTheAPIYouShouldBeUsing.apt | 16 + ...ngWithOtherExistingRSSParsingLibraries.apt | 85 ++ src/site/apt/WhyThisProject.apt | 37 + src/site/apt/index.apt | 102 +++ .../resources/HowRomeWorks/HowRomeWorks.png | Bin 0 -> 67373 bytes .../ROMEDevelopmentProposals/rome2proto.zip | 275 +++++++ .../ROMEDevelopmentProposals/rome2proto2.zip | 275 +++++++ .../ROME0.1Beta/rome-0.1-src.tar.gz | Bin 0 -> 51365 bytes .../ROMEReleases/ROME0.1Beta/rome-0.1-src.zip | Bin 0 -> 134694 bytes .../ROMEReleases/ROME0.1Beta/rome-0.1.tar.gz | Bin 0 -> 572873 bytes .../ROMEReleases/ROME0.1Beta/rome-0.1.zip | Bin 0 -> 1183532 bytes .../ROME0.1Beta/rome-samples-0.1-src.tar.gz | Bin 0 -> 3712 bytes .../ROME0.1Beta/rome-samples-0.1-src.zip | Bin 0 -> 7572 bytes .../ROME0.1Beta/rome-samples-0.1.tar.gz | Bin 0 -> 116778 bytes .../ROME0.1Beta/rome-samples-0.1.zip | Bin 0 -> 184740 bytes .../ROME0.2Beta/rome-0.2-src.tar.gz | Bin 0 -> 52444 bytes .../ROMEReleases/ROME0.2Beta/rome-0.2-src.zip | Bin 0 -> 135878 bytes .../ROMEReleases/ROME0.2Beta/rome-0.2.tar.gz | Bin 0 -> 519606 bytes .../ROMEReleases/ROME0.2Beta/rome-0.2.zip | Bin 0 -> 976330 bytes .../ROME0.2Beta/rome-samples-0.2-src.tar.gz | Bin 0 -> 3730 bytes .../ROME0.2Beta/rome-samples-0.2-src.zip | Bin 0 -> 7472 bytes .../ROME0.2Beta/rome-samples-0.2.tar.gz | Bin 0 -> 116763 bytes .../ROME0.2Beta/rome-samples-0.2.zip | Bin 0 -> 184717 bytes .../ROME0.3Beta/rome-0.3-src.tar.gz | Bin 0 -> 62775 bytes .../ROMEReleases/ROME0.3Beta/rome-0.3-src.zip | Bin 0 -> 161660 bytes .../ROMEReleases/ROME0.3Beta/rome-0.3.tar.gz | Bin 0 -> 599801 bytes .../ROMEReleases/ROME0.3Beta/rome-0.3.zip | Bin 0 -> 1082013 bytes .../ROME0.3Beta/rome-samples-0.3-src.tar.gz | Bin 0 -> 7853 bytes .../ROME0.3Beta/rome-samples-0.3-src.zip | Bin 0 -> 20107 bytes .../ROME0.4Beta/rome-0.4-src.tar.gz | Bin 0 -> 73417 bytes .../ROMEReleases/ROME0.4Beta/rome-0.4-src.zip | Bin 0 -> 182106 bytes .../ROMEReleases/ROME0.4Beta/rome-0.4.tar.gz | Bin 0 -> 635787 bytes .../ROMEReleases/ROME0.4Beta/rome-0.4.zip | Bin 0 -> 1138236 bytes .../ROME0.4Beta/rome-samples-0.4-src.tar.gz | Bin 0 -> 9012 bytes .../ROME0.4Beta/rome-samples-0.4-src.zip | Bin 0 -> 20108 bytes .../ROME0.5Beta/rome-0.5-src.tar.gz | Bin 0 -> 75962 bytes .../ROMEReleases/ROME0.5Beta/rome-0.5-src.zip | Bin 0 -> 190677 bytes .../ROMEReleases/ROME0.5Beta/rome-0.5.tar.gz | Bin 0 -> 640848 bytes .../ROMEReleases/ROME0.5Beta/rome-0.5.zip | Bin 0 -> 1124690 bytes .../ROME0.5Beta/rome-samples-0.5-src.tar.gz | Bin 0 -> 9041 bytes .../ROME0.5Beta/rome-samples-0.5-src.zip | Bin 0 -> 20094 bytes .../ROMEReleases/rome-0.6-src.tar.gz | Bin 0 -> 84216 bytes .../resources/ROMEReleases/rome-0.6-src.zip | Bin 0 -> 202771 bytes .../resources/ROMEReleases/rome-0.6.tar.gz | Bin 0 -> 690678 bytes src/site/resources/ROMEReleases/rome-0.6.zip | Bin 0 -> 1174431 bytes .../ROMEReleases/rome-0.7-src.tar.gz | Bin 0 -> 86426 bytes .../resources/ROMEReleases/rome-0.7-src.zip | Bin 0 -> 207694 bytes .../resources/ROMEReleases/rome-0.7.tar.gz | Bin 0 -> 703613 bytes src/site/resources/ROMEReleases/rome-0.7.zip | Bin 0 -> 1189305 bytes .../ROMEReleases/rome-0.8-src.tar.gz | Bin 0 -> 160788 bytes .../resources/ROMEReleases/rome-0.8-src.zip | Bin 0 -> 370971 bytes .../resources/ROMEReleases/rome-0.8.tar.gz | Bin 0 -> 835881 bytes src/site/resources/ROMEReleases/rome-0.8.zip | Bin 0 -> 1377379 bytes .../ROMEReleases/rome-0.9-src.tar.gz | Bin 0 -> 109719 bytes .../resources/ROMEReleases/rome-0.9-src.zip | Bin 0 -> 248755 bytes .../resources/ROMEReleases/rome-0.9.tar.gz | Bin 0 -> 891308 bytes src/site/resources/ROMEReleases/rome-0.9.zip | Bin 0 -> 1437670 bytes .../ROMEReleases/rome-1.0-javadoc.jar | Bin 0 -> 423403 bytes .../ROMEReleases/rome-1.0-sources.jar | Bin 0 -> 206462 bytes src/site/resources/ROMEReleases/rome-1.0.jar | Bin 0 -> 219671 bytes .../ROMEReleases/rome-1.0RC1-src.tar.gz | Bin 0 -> 116473 bytes .../ROMEReleases/rome-1.0RC1-src.zip | Bin 0 -> 259540 bytes .../resources/ROMEReleases/rome-1.0RC1.tar.gz | Bin 0 -> 892214 bytes .../resources/ROMEReleases/rome-1.0RC1.zip | Bin 0 -> 1446087 bytes .../ROMEReleases/rome-1.0RC2-javadoc.jar | Bin 0 -> 421675 bytes .../ROMEReleases/rome-1.0RC2-sources.jar | Bin 0 -> 205322 bytes .../resources/ROMEReleases/rome-1.0RC2.jar | Bin 0 -> 218639 bytes .../ROMEReleases/rome-fetcher-1.0RC2-src.zip | Bin 0 -> 62537 bytes .../ROMEReleases/rome-samples-0.6-src.tar.gz | Bin 0 -> 9044 bytes .../ROMEReleases/rome-samples-0.6-src.zip | Bin 0 -> 20095 bytes .../ROMEReleases/rome-samples-0.7-src.tar.gz | Bin 0 -> 9187 bytes .../ROMEReleases/rome-samples-0.7-src.zip | Bin 0 -> 21115 bytes .../ROMEReleases/rome-samples-0.9-src.tar.gz | Bin 0 -> 9046 bytes .../ROMEReleases/rome-samples-0.9-src.zip | Bin 0 -> 20094 bytes .../ROMEReleases/rome-samples-0.9.tar.gz | Bin 0 -> 156351 bytes .../ROMEReleases/rome-samples-0.9.zip | Bin 0 -> 278896 bytes .../rome-samples-1.0RC1-src.tar.gz | Bin 0 -> 9442 bytes .../ROMEReleases/rome-samples-1.0RC1-src.zip | Bin 0 -> 22333 bytes src/site/resources/romelogo.png | Bin 0 -> 10835 bytes src/site/site.xml | 34 +- 153 files changed, 10547 insertions(+), 10 deletions(-) create mode 100644 src/site/apt/ChangeLog.apt create mode 100644 src/site/apt/HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.apt create mode 100644 src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt create mode 100644 src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.apt create mode 100644 src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt create mode 100644 src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.apt create mode 100644 src/site/apt/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.apt create mode 100644 src/site/apt/HowRomeWorks/index.apt create mode 100644 src/site/apt/HowToBuildRome.apt create mode 100644 src/site/apt/PreservingWireFeeds.apt create mode 100644 src/site/apt/ProductsOrSitesPoweredByROME.apt create mode 100644 src/site/apt/ROMEAndMaven2.apt create mode 100644 src/site/apt/ROMEAndOSGI.apt create mode 100644 src/site/apt/ROMEDevelopmentProcess.apt create mode 100644 src/site/apt/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.apt create mode 100644 src/site/apt/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.apt create mode 100644 src/site/apt/ROMEDevelopmentProposals/ROMEFeatureRequests.apt create mode 100644 src/site/apt/ROMEDevelopmentProposals/index.apt create mode 100644 src/site/apt/ROMEROADMAPProposed.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.1Beta/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.2Beta/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.3Beta/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.4Beta/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.5Beta/ROMET-Shirt.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.5Beta/index.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.6Beta.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.7Beta.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.8Beta.apt create mode 100644 src/site/apt/ROMEReleases/ROME0.9Beta.apt create mode 100644 src/site/apt/ROMEReleases/ROME1.0RC1.apt create mode 100644 src/site/apt/ROMEReleases/ROME1.0RC2.apt create mode 100644 src/site/apt/ROMEReleases/ROME1.0Release.apt create mode 100644 src/site/apt/ROMEReleases/index.apt create mode 100644 src/site/apt/RomeAPIFAQ.apt create mode 100644 src/site/apt/RomeV0.4FeedAndEntryURIMapping.apt create mode 100644 src/site/apt/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.apt create mode 100644 src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.apt create mode 100644 src/site/apt/SitesToMoveFromJava.net.apt create mode 100644 src/site/apt/TutorialsAndArticles.apt create mode 100644 src/site/apt/WhatPartOfTheAPIYouShouldBeUsing.apt create mode 100644 src/site/apt/WhatSWrongWithOtherExistingRSSParsingLibraries.apt create mode 100644 src/site/apt/WhyThisProject.apt create mode 100644 src/site/apt/index.apt create mode 100644 src/site/resources/HowRomeWorks/HowRomeWorks.png create mode 100644 src/site/resources/ROMEDevelopmentProposals/rome2proto.zip create mode 100644 src/site/resources/ROMEDevelopmentProposals/rome2proto2.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-0.2-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-0.2-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-0.2.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-0.2.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-samples-0.2-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-samples-0.2-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-samples-0.2.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.2Beta/rome-samples-0.2.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.3Beta/rome-0.3-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.3Beta/rome-0.3-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.3Beta/rome-0.3.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.3Beta/rome-0.3.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.3Beta/rome-samples-0.3-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.3Beta/rome-samples-0.3-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.4Beta/rome-0.4-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.4Beta/rome-0.4-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.4Beta/rome-0.4.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.4Beta/rome-0.4.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.4Beta/rome-samples-0.4-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.4Beta/rome-samples-0.4-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.5Beta/rome-0.5-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.5Beta/rome-0.5-src.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.5Beta/rome-0.5.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.5Beta/rome-0.5.zip create mode 100644 src/site/resources/ROMEReleases/ROME0.5Beta/rome-samples-0.5-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/ROME0.5Beta/rome-samples-0.5-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.6-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.6-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.6.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.6.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.7-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.7-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.7.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.7.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.8-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.8-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.8.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.8.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.9-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.9-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-0.9.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-0.9.zip create mode 100644 src/site/resources/ROMEReleases/rome-1.0-javadoc.jar create mode 100644 src/site/resources/ROMEReleases/rome-1.0-sources.jar create mode 100644 src/site/resources/ROMEReleases/rome-1.0.jar create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC1-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC1-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC1.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC1.zip create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC2-javadoc.jar create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC2-sources.jar create mode 100644 src/site/resources/ROMEReleases/rome-1.0RC2.jar create mode 100644 src/site/resources/ROMEReleases/rome-fetcher-1.0RC2-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.6-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.6-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.7-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.7-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.9-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.9-src.zip create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.9.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-samples-0.9.zip create mode 100644 src/site/resources/ROMEReleases/rome-samples-1.0RC1-src.tar.gz create mode 100644 src/site/resources/ROMEReleases/rome-samples-1.0RC1-src.zip create mode 100644 src/site/resources/romelogo.png diff --git a/README.md b/README.md index 1c987c4..2013f17 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,4 @@ rome ROME is a set of RSS and Atom Utilities for Java. It makes it easy to work in Java with most syndication formats: RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0 -More Information: http://imk.github.io/rome/ +More Information: http://rometools.github.io/rome/ diff --git a/pom.xml b/pom.xml index 077e8c3..a5c13a2 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ SyndFeed object that lets you work on with the data without bothering about the underlying format.
- https://github.com/rometools/rome/ + http://rometools.github.io/rome/ https://github.com/rometools/rome/issues diff --git a/src/site/apt/ChangeLog.apt b/src/site/apt/ChangeLog.apt new file mode 100644 index 0000000..2b19e97 --- /dev/null +++ b/src/site/apt/ChangeLog.apt @@ -0,0 +1,773 @@ + ----- + Change Log + ----- + mkurz + ----- + 2011-08-15 06:19:27.183 + ----- + +Change Log + + +*Changes made since v1.0 + + + + [[1]] {{{http://java.net/jira/browse/ROME\-127}Issue 127}}: Rome 1.0 not JDK 1.4 compatible + + [] + +*Changes made since v1.0RC2 + + + + [[1]] {{{http://java.net/jira/browse/ROME\-121}Issue 121}}: RSS item category iteration should try to reflect document order + + [[1]] New property preserveWireFeed available on SyndFeedInput\ + WireFeeds will be preserved if the property preserveWireFeed is set on the SyndFeedInput object it is built from. Atom/RSS Entry/Item objects are also available from SyndEntry objects if the WireFeed is preserved using the new getWireEntry() method. See {{{./PreservingWireFeeds.html}Preserving WireFeeds (rome)}} for details. + + [] + +*Changes made since v1.0RC1 + + + + [[1]] Fix. Date parsing for Atom10 entry and additional W3C masks\ + Item date elements were being parsed with the W3C parser instead the lenient one (RFC822 \+ W3C \+ custom masks).\ + The following masks were added to W3C masks to handle RFC822 timezone (ie '\-800'): + ++------+ + +yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd't'HH:mm:sszZ + ++------+ + + + [[1]] Fix. Contributors properties in SyndEntry were not implementing the semantics of list properties.\ + They were returning NULL instead, now they return an empty list if not values are set. + + [[1]] Fix. Contributors properties in SyndEntry and SyndFeed were not being converted to/from WireFeed + + [[1]] Fix. Syndication Module Generator was failing if some of its values were null.\ + Checks for nulll have been added it to the generator to prevent NullPointerExceptions + + [[1]] New. Added new constructor to XmlReader + ++------+ + +public XmlReader(InputStream is, boolean lenient, String defaultEncoding) + ++------+ + + + [[1]] New. Support atom person construct extensions, using the Extendable interface on SyndPerson:\ + Patch from James Roper. See {{{http://java.net/jira/browse/ROME\-110}Issue 1101}} for details + + [[1]] New. Maven 2 build for main project\ + ROME can now be built with Maven 2 + + [[1]] New. OSGi support\ + OSGi headers to MANIFEST.MF so that rome.jar can also be used in an OSGi environment. See {{{http://java.net/jira/browse/ROME\-117}Issue 117}} for details. + + [[1]] New. Allow pretty printing to be turned on and off\ + see {{{http://java.net/jira/browse/ROME\-114}Issue 114}} for details. Thanks to Martin Kurz for the patch. + + [[1]] Configurable classloading behavior for OSGi compatibility.\ + We have received a report of some issues with plugin loading in an OSGi environment ({{{http://java.net/jira/browse/ROME\-118}Issue 118}}). The fix appears to be to change Class.forName to classLoader.loadClass, but the semantics for this are subtly different, so we have made this new behavior user selectable. Set the "rome.pluginmanager.useloadclass" system property to "true" to enable it. + + [[1]] More lenient number parsing\ + There were a number of problems with feeds providing blank or invalid values in fields which would be numbers. ROME will now handles these better. See issues {{{http://java.net/jira/browse/ROME\-104}104}}, {{{http://java.net/jira/browse/ROME\-107}107}} and {{{http://java.net/jira/browse/ROME\-108}108}} for details. + + [] + +*Changes made from v0.9 to v1.0RC1 + + + + [[1]] New. XmlReader support for default encoding\ + The XmlReader can be set with an alternate default encoding in case no encoding has been detected from the transport (HTTP), the stream or the XML prolog. if no value is set the default fallback rules based on the content\-type will be used. The alternate default encoding can be set/viewed via a static methods, <> and <>. + + [[1]] Fix. Atom 1.0 links were generated without title and length attributes.\ + The Atom 1.0 Generator was not generating title and length attributes when values are present. + + [[1]] Fix. XmlReader, multi\-line prolog encoding detection.\ + XmlReader handles properly xml\-prolog detection when prolog goes over multiple lies (such as G groups feeds). + + [[1]] Fix. Base64 decoding was failing under certain padding conditions. + + [[1]] Fix. XmlReader fixes\ + Fixed bug that if BOM is UTF8 was not being set to UTF8. Changed logic to use Buffered stream instead pushback stream for all encoding detection. Changed logic of xml prolog detection to avoid having a buffer with half of a unicode character (instead filling up the buffer looking up to first '\>' which means it a valid buffer). + + [[1]] New. XmlReader supports default encoding at instance level.\ + Via a new constructor is possible to indicate a default encoding different than the default encoding at class level. + + [[1]] Fix. Making the EqualsBean to follow equals contract.\ + For X.equals(null) it was throwing a NullPointerException, now it returns FALSE. + + [[1]] Fix. Render Atom icon and logo attributes.\ + AtomGenerator now adds icon and logo elements to xml tree + + [[1]] Fix. Updated AtomPub namespace to its permenent home.\ + AtomService namespace updated to {{{http://www.w3.org/2007/app}http://www.w3.org/2007/app}} + + [[1]] New. Added support for configuration per classloader level.\ + The PluginManager (handles Parsers and Generators) now is singleton at classloader level allowing different configurations in different classloaders. + + [[1]] Atom parser: better relative URI handling\ + Instead of simply resolving each relative URI at runtime and saving only the resolved one, we now save both the relative URI and the resolve one. We introduced the following new methods to provide access to the resolved URI. + + * Link.getLinkResolved() + + * Link.setLinkResolved() + + * Category.getSchemeResolved() + + * Category.setSchemeResolved() + + * Person.getUriResolved() + + * Person.setUriResolved() + + + + [[1]] Utility methods useful in working with Atom protocol feeds\ + Added a couple of methods to make it easier to deal with Atompub feeds. + + * Entry.isMediaEntry() + + * Atom10Parser.parseEntry() + + * Atom10Generator.serializeEntry() + + + + [[1]] Bugs fixed\ + Fixed the following bugs: + + * 49 Better content/summary mapping + + * 53 Content.setType not working with subtitles atom 1.0 + + * 56 fix of bug #39 leads to invalid atom feeds + + * 63 Missing link attribute when generating Atom 1.0 + + * 64 ROME's Atom parser doesn't pick up multiple alt links + + * 65 Atom feeds not including logo image + + * 71 encoding problem in XmlReader.getXmlProlog() + + * 79 Feed.setIcon()/setLogo() ignored by Atom10Generator + + * 81 SyndFeedImpl.equals() does not obey equals contract + + + + [[1]] Fix. Parsers where ignoring namespaced prefixed Attributes.\ + If an XML feed uses a prefix for the Atom elements and the attributes of Atom elements use the prefix the parser was not picking up those attributes.\ + The fix makes the parser to look for prefixed and non\-prefixed attributes. + + [[1]] Fix. Atom Feed and Entry beans author and category property getters\ + They were returning NULL when there were not authors or categories, they must return an empty list. + + [[1]] New. Switch to enable/disable relative URI resolution in Atom 1.0 Parser.\ + The Atom10Parser class has a static method, setResolveURIs(boolean) that enables/disables relative URI resolution. + + [[1]] New. XmlReader handling content\-type charset values has been relaxed.\ + XmlReader handles content\-type charset encoding value within single quotes and double quotes. + + [[1]] Fix. Links, authors and contributors properties in SyndFeed were not implementing the semantics of list properties.\ + They were returning NULL instead, now they return an empty list if not values are set. + + [[1]] Fix. RSS conversion of a SyndFeed was losing the link of the feed if the links property was used instead the link property.\ + Over time the SyndFeed has been modified to support more Atom specific properties and their cardinality, conversion to RSS of these properties was not always taken care.\ + The RSS converter has been changed so the link from SyndFeed is taken as channel link and if not set the first value of the links property is taken. + + [[1]] Fix. WireFeedInput throws IllegalArgumentException if the feed type is not recognized.\ + Previously the IllegalArgumentException was wrapped by a ParsingFeedException (Reported by {{{http://java.net/jira/browse/ROME\-91}Issue 91}}). + + [[1]] Fix. SyndFeedImpl.equals(other) checks for instance of other before casting.\ + The underlying ObjectBean does this check, but in this method a cast is done before to obtain the foreign markup, no the instance check is peformed before to avoid a class cast exception. + + [[1]] Fix. Atom content based elements related fixes + + * Atom 0.3 Parser/Generator + + * Changed title to be treated as a Content construct. ({{{http://www.mnot.net/drafts/draft\-nottingham\-atom\-format\-02.html#rfc.section.4.3}http://www.mnot.net/drafts/draft\-nottingham\-atom\-format\-02.html#rfc.section.4.3}}) + + + + * Atom 1.0 Generator: + + * changed feed title/subtitle and entry title to be treated as Content constructs. (Parser had this implemented already.) + + * added title attribute to links. (Parser had this implemented already.) + + * fixed content parsing for some XML content types. e.g. (application/xhtml\+xml) + + + + + + [[1]] Fix. Atom link and enclosures handling + + * Atom 0.3 Converter + + * fixed link parsing code to parse all links (not just the first alternate link) and added enclosure support via link rel\="enclosure". + + * changed title conversion to use Content instead of plain text. + + + + * Atom 1.0 Converter + + * added SyndEnclosure to atom:link rel\=enclosure conversion. + + + + + + [[1]] Fix. RSS 1.0 URI generation + + * RSS 1.0 Generator + + * channel/items/Seq/li/@resource now get's the item URI instead of the Link. ({{{http://web.resource.org/rss/1.0/spec#s5.3.5}http://web.resource.org/rss/1.0/spec#s5.3.5}}) + + + + + + [[1]] Fix. Javadocs corrections. + + * Fixed some javadoc comments for SyndEntry. + + + + [[1]] Fix. Atom content based elements were not parsed with XML mime types.\ + If the mime type was and XML mime type the content value was being lost on parsing. + + [[1]] Fix. duplication of content:encoded elements when reading/writing and RSS feed.\ + content:encoded elements are treated special, without a module, they have to be removed from the foreign markup to avoid duplication in case of read/write. Note that this fix will break if a content module is used. + + [[1]] New. XmlFixerReader converts '&' into '&' when there is no matching entity.\ + Feeds commonly use '&' instead '&' in their content, this change converts those orphant '&'s into '&'s. + + [[1]] Fix. RSS090Parser does not set the URI property.\ + The fix honors the documentation "For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 ... the SyndEntry uri property will be set with the value of the link element..." + + [[1]] New. Removal of all unused namespaces from generated feeds.\ + The generators now remove all unused namespaces from the XML document before generating it. + + [] + +*Changes made from v0.8 to v0.9 + + + + [[1]] Design changes + + * Support Atom feed.title, feed.subtitle and entry.title {{{http://java.net/jira/browse/ROME\-48}Issue 48}}\ + #48 fixed via better support for Atom text constructs title and subtitle. Added get/setTitleEx() and get/setSubtitleEx(), which get get SyndContent objects. Title and subtitle still available from old getters/setters. + + * Support for mapping Atom summary/content to RSS description/content {{{https://rome.dev.java.net/servlets/ReadMsg?list\=dev&msgNo\=1680}https://rome.dev.java.net/servlets/ReadMsg?list\=dev&msgNo\=1680}} + + * Fixed by introduced Content object in RSS model. ROME now parses as RSS Content. That makes parsing easier and allows us to support a more logical summary/content mapping: + + * RSS to/from Atom + + * RSS to/from Atom + + + + + + [[1]] General parsing fixes + + * XmlReader xml prolog regular expression does not allow for single quotes {{{http://java.net/jira/browse/ROME\-36}Issue 36}}\ + The XmlReader was only parsing prolog encodings within double quotes, the regular expression to detect the encoding has been change to detect single or double quotes. + + * Fix. XML prolog parsing now support whitespaces around '\='\ + If the XML prolog contained spaces around the '\=' between the encoding attribute name and the encoding attribute value the encoding was not being detected. The fix accepts all valid whitespace characters (as defined in the XML spec). + + * RSS parser does not recognize version\="2.00" {{{http://java.net/jira/browse/ROME\-33}Issue 33}} + + * Atom 1.0 Text Types Not Set Correctly {{{http://java.net/jira/browse/ROME\-39}Issue 39}} + + * Security issue {{{http://java.net/jira/browse/ROME\-46}Issue 46}} + + * Fix for the potential problem outlined in {{{http://www.securiteam.com/securitynews/6D0100A5PU.html}http://www.securiteam.com/securitynews/6D0100A5PU.html}}. Thanks to Nelson Minar for bringing this to our attention. + + * Fix. Wrong default description type for RSS 2.0 Fix for {{{http://java.net/jira/browse/ROME\-26}Issue 26}} + + * Change default description type for RSS 2.0 from text/plain to text/html as per RSS 2.0 spec + + * Fix to add all HTML4 entities, according to {{{http://www.w3.org/TR/REC\-html40/sgml/entities.html}http://www.w3.org/TR/REC\-html40/sgml/entities.html}} specially for the HTMLsymbol set (Mathematical, Greek and Symbolic characters for HTML) and the HTMLspecial set (Special characters for HTML). + + + + [[1]] Date parsing fixes + + * Additional version and date leniency could extract more information {{{http://java.net/jira/browse/ROME\-24}Issue 24}} + + * Non RFC822 Dates not processed in RSS pubDate field {{{http://java.net/jira/browse/ROME\-27}Issue 27}} + + * RSS feed parsers were were only parsing RFC822 dates because they were not using the proper date\-time parsing function for the date\-time elements. + + * If a W3C date\-time element had no time component it was being parsed as local time instead of GMT, ROME DateParser class has been modified to use GMT in this situation. + + * Current JDKs do not handle 'UT' timezone indicator, ROME DateParser class has been modified to handle it. + + * Use Atom updated instead of published {{{http://java.net/jira/browse/ROME\-41}Issue 41}} + + * Atom 1.0 Date (Updated or Published) Not Set {{{http://java.net/jira/browse/ROME\-42}Issue 42}} + + * lastBuildDate does not populate publishedDate {{{http://java.net/jira/browse/ROME\-43}Issue 43}} Provides a feed date for RSS 0.91 feeds that specify lastBuildDate but not pubDate. + + + + * Fix. Parsing some numeric elements was failing due to whitespaces The image.width and image.height of RSS091U, the frequency of SyModule and the cloud.port of RSS092 elements are now being trimmed before doing the integer parsing. + + + + [[1]] Atom link and URI fixes + + * Improper relative link resolution in Atom10Parser {{{http://java.net/jira/browse/ROME\-37}Issue 37}} + + * ATOM 1.0 Entry links parsing {{{http://java.net/jira/browse/ROME\-38}Issue 38}} + + * ConverterForRSS10.java does not set URI for item {{{http://java.net/jira/browse/ROME\-25}Issue 25}} + + * Valid IRI href attributes are stripped for atom:link {{{http://java.net/jira/browse/ROME\-34}Issue 34}} + + + + [[1]] Module fixes + + * iTunes Module has incorrect author and category support {{{http://java.net/jira/browse/ROME\-35}Issue 35}} + + * mediarss.io.MediaModuleParser NumberFormatException {{{http://java.net/jira/browse/ROME\-45}Issue 45}} + + * Slash module not serializable for FeedFetcher {{{http://java.net/jira/browse/ROME\-44}Issue 44}} + + + + [] + +*Changes made from v0.7 to v0.8 + + + + [[1]] Change. Added enclosure support at Synd\* level\ + A new bean for handling enclosures at Synd\* level has been created (SyndEnclosure/SyndEnclosureImpl, interface/implementation).\ + The SyndEntry/SyndEntryImpl bean has a new 'enclosures' property which returns the list of enclosures for that item.\ + The Wire\* to Synd\* converters for RSS propagate enclosures in both directions.\ + This enables handling enclosures from RSS 0.92, 0.93, 0.94 and 2.0 at Synd\* level\ + Test cases have been modified to cover enclosures at Synd\* level. + + [[1]] Change/Fix. Synd\* \- Atom entry dates mapping + + * (Change) Atom entries have 3 dates, 'modified', 'issued' and 'created'. Synd entries have only 1 date property 'publishedDate'. When converting from Atom to Synd the first not null date in the order above will be the one set in the Synd entry bean. + + * (Fix) When converting from Synd to Atom the Synd entries 'publishedDate' property value is set in both 'modified' and 'issued' properties of the Atom entry.\ + This Change/Fix is to be aligned with the Atom 0.3 spec. + + + + [[1]] Fix. Trim enclosure length attribute\ + Fix from Trey Drake: At least 1 podcast site (ESPN) occasionally leaves trailing spaces in the enclosure content length attribute. This causes a NumberFormatException. + + [[1]] Fix. Conversion to RSS 1.0 if Channel URI is not specified\ + Fix for problem converting to RSS 1.0 if not URI is specified at the channel level (it will now attempt to use the Link element) + + [[1]] Changes to support Atom 1.0 + + * In com.sun.syndication.synd, added SyndLink and SyndPerson. + + * In SyndEntry added. In SyndEntry, added summary, updatedDate, links collection and support for multiple authors. + + * In com.sun.syndication.synd.impl, added Atom10Parser.java, Atom10Generator.java and ConverterForAtom10.java. + + + + [] + +*Changes made from v0.6 to v0.7 + + + + [[1]] Fix. RFC\-882 dates parsing and generation were using localized names for day and month names\ + The date parser and generator were using the JVM default Locale instead forcing an English Locale to use day and month names in English as specified by RFC\-822. Now US Locale is used. + + [[1]] Fix. The 'ttl' element of RSS0.94 and RSS2.0 feeds was not being parsed\ + The parsers now parse the 'ttl' element and it is available in the resulting Channel bean. Note that 'ttl' info is not available in the SyndFeed bean, thus it's lost when converting from WireFeed to SyndFeed. + + [[1]] Change. RSS enclosures with empty 'length' attributes are accepted\ + Parsing an RSS feed with an enclosure where the length attribute was an empty String were failing. Now they are parsed and the length is set to 0. + + [[1]] Change. RSS 1.0 feeds use URI/Link for unique ID (rdf:about).\ + RSS 1.0 specification recommends that the rdf:about attribute URI use the value of the item's link element, though this could be different if the user chooses to override it by specifying their own URI. RSS 1.0 feeds now use the URI if specified, otherwise the link for the item. + + [[1]] Fix. toString() was reporting NullPointerException with List properties\ + When a List (or Map) property had a NULL element the toString() logic was failing partially due to a NullPointerException. + + [[1]] Fix. DC creator elements were being lost when converting to SyndFeed\ + DC creator elements were being lost when converting to SyndFeed. This was happening with RSS versions that have native author elements (0.94 and 2.0) and for the managingEditor element at channel level (available in 0.91 Userland and onwards). + + [[1]] Change. Date and enumeration elements are trimmed during parsing\ + There are some feeds that add whitespaces or carriage return characters before or after the proper date or enumeration value. This was causing ROME to fail processing those elements. This is taken care now as all dates elements in all feed types and Modules and the 'channel.skipHours.hour' and 'channel.skipDays.day' (RSS0.91 \- RSS2.0) are trimmed before parsing and setting their values in the beans. + + [[1]] Fix. SyndFeed description now maps to atom:tagline\ + Previously, atom:info was being mapped to the feed's description. According to the Atom03 spec atom:info should be ignored by parsers, and the more appropriate element is atom:tagline. + + [[1]] Fix. RSS cloud is now generated/parsed correctly\ + The 'path' attribute from the cloud was not being generated/parsed. The parser now process all cloud attributes and set the cloud to the channel. + + [[1]] Fix. RFC\-822 2 digit years\ + Previously RFC\-822 dates did not work correctly with 2 digit years. This is now fixed. + + [[1]] Fix. No alternate link causes IndexOutOfBoundsException\ + Fix bug where no alternate link causes IndexOutOfBoundsException in ConverterForAtom03 (Thanks to Joseph Van Valen). + + [[1]] Change. Date parsing attemps RFC822 on W3C parsing on all feeds\ + All feed parsers (RSS and Atom) now attemp both RFC822 and W3C parsing on date values. + + [[1]] Fix. XmlFixerReader removes character from stream when parsing an entity that contains an invalid character\ + Fix bug in XmlFixerReader where an invalid entity such as "&ent\=", gets put back on the stream without the last character (in this example, "&ent\=" becomes "&ent"). This was most visible when the XmlFixerReader encountered an URL with a query string that has more than one parameter (e.g. {{{http://www.url.com/index.html?qp1\=1&qp2\=2}http://www.url.com/index.html?qp1\=1&qp2\=2}}) \-\- all "\=" after the first one would disappear. + + [[1]] Change. DateParser can use additional custom datetime masks\ + Besides attempting to parse datetime values in W3C and RFC822 formats additional datetime masks can be specified in the /rome.properties files using the 'datetime.extra.masks' property. To indicate multiple masks the '|' character must be used, all other characters are considered part of the mask. As with parser/generators/converter plugins the masks are read from all /rome.properties file in the classpath. + + [] + +*Changes made from v0.5 to v0.6 + + + + [[1]] Fix. W3C date\-time parsing now handles date\-time with 'Z' modifier\ + The W3C date\-time parser was not parsing times using the UTC modifier 'Z'. + + [[1]] Fix. XML prolog encoding parsing was failing when other attributes where present in the prolog\ + If there was an attribute following the encoding attribute the value of the encoding attribute was misinterpreted. For example, for the XML prolog the detected encoding was << + + + RSS 1.0 Feed with Sample Module + http://rome.dev.java.net + This is a feed showing how to use a custom module with Rome + + + + + + + Channel bar + Channel first foo + Channel second foo + + + Title of Item 01 + http://rome.dev.java.net/item01 + Item 01 does not have Sample module data + + + Title of Item 02 + http://rome.dev.java.net/item02 + Item 02 has Sample module data + Item 02 bar + Item 02 only foo + 2004-07-27T00:00+00:00 + + + ++------+ + +*Sample Module Bean + + + First we must start with the bean interface, SampleModule. SampleModule must extend Module. The Module interface defines the getUri() method, which will return a URI identifying the module. The Module interface also extends the Cloneable, ToString and CopyFrom interfaces to ensure that the beans provide support for basic features as cloning, equality, toString, etc. (for more details on this check the {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common}Understanding the Rome common classes and interfaces}} document). + + + The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. + + + Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). + + + ++------+ + +public interface SampleModule extends Module,CopyFrom { + + public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; + + public String getBar(); + public void setBar(String bar); + + public List getFoos(); + public void setFoos(List foos); + + public Date getDate(); + public void setDate(Date date); +} + ++------+ + + Next we have to write the bean implementation, SampleModuleImpl. + + + SampleModuleImpl extends ModuleImpl. ModuleImpl is the default implementation of the \=\=Module interface. ModuleImpl extends ObjectBean which provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModule). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. + + + ++------+ + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public SampleModule() { + super(SampleModule.class,SampleModule.URI); + } + + public String getBar() { + return _bar; + } + ... + ++------+ + + The module properties are just Java Bean properties. The only catch is to follow Rome semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned.. Also, following Rome semantics, all properties are by reference, including mutable ones. + + + ++------+ + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + private String _bar; + private List _foos; + private Date _date; + ... + public void setBar(String bar) { + _bar = bar; + } + + public List getFoos() { + return (_foos==null) ? (_foos=new ArrayList()) : _foos; + } + + public void setFoos(List foos) { + _foos = foos; + } + + public Date getDate() { + return _date; + } + + public void setDate(Date date) { + _date = date; + } + ++------+ + + Now the weird part: the bits for the CopyFrom logic. The {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common}Understanding the Rome common classes and interfaces}} document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. + + + The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). + + + The copyFrom() method copies all the properties from the parameter object (which must be a SampleModule implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. + + + ++------+ + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public Class getInterface() { + return SampleModuleI.class; + } + + public void copyFrom(Object obj) { + SampleModule sm = (SampleModule) obj; + setBar(sm.getBar()); + List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) + setFoos(foos); + setDate((Date)sm.getDate().clone()); // because Date is not inmutable. + } + +} + ++------+ + +*Sample Module Parser + + + The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. + + + The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. + + + In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. + + + If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. + + + ++------+ + +public class SampleModuleParser implements ModuleParser { + + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + public Module parse(Element dcRoot) { + boolean foundSomething = false; + SampleModule fm = new SampleModuleImpl(); + + Element e = dcRoot.getChild("bar", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setBar(e.getText()); + } + List eList = dcRoot.getChildren("foo", SAMPLE_NS); + if (eList.size() > 0) { + foundSomething = true; + fm.setFoos(parseFoos(eList)); + } + e = dcRoot.getChild("date", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setDate(DateParser.parseW3CDateTime(e.getText())); + } + return (foundSomething) ? fm : null; + } + + private List parseFoos(List eList) { + List foos = new ArrayList(); + for (int i = 0; i < eList.size(); i++) { + Element e = (Element) eList.get(i); + foos.add(e.getText()); + } + return foos; + } + +} + ++------+ + +*Sample Module Generator + + + The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. + + + The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. The set of namespaces returned by the getNamespaces() method will be used to declare the namespaces used by the module in the feed root element. + + + If no Sample Module bean is in the feed bean the module generator is not invoked at all. + + + ++------+ + +public class SampleModuleGenerator implements ModuleGenerator { + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + private static final Set NAMESPACES; + + static { + Set nss = new HashSet(); + nss.add(SAMPLE_NS); + NAMESPACES = Collections.unmodifiableSet(nss); + } + + public Set getNamespaceUris() { + return NAMESPACES; + } + + public void generate(Module module, Element element) { + + // this is not necessary, it is done to avoid the namespace definition in every item. + Element root = element; + while (root.getParent()!=null && root.getParent() instanceof Element) { + root = (Element) element.getParent(); + } + root.addNamespaceDeclaration(SAMPLE_NS); + + SampleModuleI fm = (SampleModule)module; + if (fm.getBar() != null) { + element.addContent(generateSimpleElement("bar", fm.getBar())); + } + List foos = fm.getFoos(); + for (int i = 0; i < foos.size(); i++) { + element.addContent(generateSimpleElement("foo",foos.get(i).toString())); + } + if (fm.getDate() != null) { + element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate()))); + } + } + + protected Element generateSimpleElement(String name, String value) { + Element element = new Element(name, SAMPLE_NS); + element.addContent(value); + return element; + } + +} + ++------+ + +*Configuration to make Rome process Sample Module in feeds + + + The last step is to setup the configuration file to indicate to Rome how and when to use the Sample Module parser and generator. + + + The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. + + + You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. + + + Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. + + + ++------+ + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + ++------+ + + If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. + + +*Using the Sample Module from the SyndFeed beans + + + They will be there, just use them. You may get the SampleModule bean using the getModule(String Uri) method of the SyndFeed bean and the SyndEntry bean. + + + Adding or replacing a syndication feed parser, generator or converter goes along the same lines of what it has been explained in the tutorial for modules. This is explained in the {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Plugins}Rome Plugins Mechanism}} topic. + diff --git a/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt b/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt new file mode 100644 index 0000000..0edf895 --- /dev/null +++ b/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt @@ -0,0 +1,146 @@ + ----- + Rome v0.4 Tutorial, Using Rome to aggregate many syndication feeds into a single one + ----- + mkurz + ----- + 2011-08-14 14:57:11.190 + ----- + +Rome v0.4 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + + <> J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. + + + SyndFeed instances can also be created and populated within the code. For example: + + + ++------+ + +SyndFeed aggrFeed = new SyndFeedImpl(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + ++------+ + + The snipped of code above creates a SyndFeed instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + SyndFeed properties can be modified, assigned to other SyndFeed instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeed properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeed property you are altering the SyndFeed. Or, another example, if you assign the list of entries of one SyndFeed instance to another SyndFeed isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeed instances. + + + The following lines of code show how to copy the entries of a SyndFeed instance being read (inFeed) into a SyndFeed instance being created within the application (feed): + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndFeedImpl; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i> Synd J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. + + + Following is the full code for a Java application that reads a syndication feed and converts it to other syndication feed type, writing the converted feed to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.XmlReader; + +/** + * It Converts any RSS/Atom feed type to a an RSS/Atom feed of the + * specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,new PrintWriter(System.out)); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt b/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt new file mode 100644 index 0000000..abe4af9 --- /dev/null +++ b/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt @@ -0,0 +1,204 @@ + ----- + Rome v0.4 Tutorial, Using Rome to create and write a syndication feed + ----- + mkurz + ----- + 2011-08-14 14:59:35.761 + ----- + +Rome v0.4 Tutorial, Using Rome to create and write a syndication feed + + + <> J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.feed.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Creating a feed with SyndFeed beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeed bean with 3 entries is created. + + + First the SyndFeed instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. + + + ++------+ + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + ++------+ + + Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. + + + ++------+ + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + ... + entry = new SyndEntryImpl(); + entry.setTitle("Rome v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + ++------+ + + Finally the list with entries is added to the SyndFeed bean. + + + ++------+ + + feed.setEntries(entries); + ++------+ + + The SyndFeed bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. + + + Rome includes generators that allow producing syndication feed XML documents from SyndFeed instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeed bean. All it takes to write a syndication feed XML document using Rome \-assuming you have a SyndFeed bean and a Writer instance\- are the following lines of code: + + + ++------+ + + SyndFeed feed = ...; + Writer writer = ...; + + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + ++------+ + + First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeed bean to the Writer stream. + + + Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. + + + ++------+ + +package com.sun.syndication.samples; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.SyndFeedOutput; + +import java.io.FileWriter; +import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * It creates a feed and writes it to a file. + *

+ * + */ +public class FeedWriter { + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String feedType = args[0]; + String fileName = args[1]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v2.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + Writer writer = new FileWriter(fileName); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + writer.close(); + + System.out.println("The feed has been written to the file ["+fileName+"]"); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); + System.out.println("The first parameter must be the syndication format for the feed"); + System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); + System.out.println("The second parameter must be the file name for the feed"); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.apt b/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.apt new file mode 100644 index 0000000..f14ae76 --- /dev/null +++ b/src/site/apt/HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.apt @@ -0,0 +1,93 @@ + ----- + Rome v0.4 Tutorial, Using Rome to read a syndication feed + ----- + mkurz + ----- + 2011-08-14 14:48:33.636 + ----- + +Rome v0.4 Tutorial, Using Rome to read a syndication feed + + + <> J2SE 1.4\+, JDOM 1.0 and Rome 0.4. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + The default SyndFeed implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + ++------+ + +System.out.println(feed); + ++------+ + + Following is the full code for a Java application that reads a syndication feed and prints the SyndFeed bean to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.apt b/src/site/apt/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.apt new file mode 100644 index 0000000..8f9b644 --- /dev/null +++ b/src/site/apt/HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.apt @@ -0,0 +1,362 @@ + ----- + Understanding the Rome common classes and interfaces + ----- + mkurz + ----- + 2011-08-14 17:31:39.284 + ----- + +Understanding the Rome common classes and interfaces + + + The Rome common package contains a set of Java classes that provide support for all the basic features Java Beans commonly must have: toString, equals, hashcode and cloning. There is also a simple enumeration base class (missing Java 5.0 already). + + + By implementing or extending the common classes and interfaces Beans don't have to hand code these functions. This greatly simplifies things when Beans have several properties, collection properties and composite properties. + + + The common classes use Java Bean instrospection on the properties of the classes extending and using them. This is done recursively on all properties. + + + All Rome Beans (interfaces and default implementations) leverage and use these classes and interfaces defined in the common package. + + + Ideally all this classes and interface should be part of a general component outside of Rome as they are not syndication specific (something like a commons\-bean component if we use Jakarta Commons naming). They cannot be hidden in an implementation package as Rome public API uses them. + + +*ToString and ToStringBean + + + Beans implementing the ToString interface must implement the toString(String prefix) method. This method must print the bean properties names and values, one per per line, separating the name and value with an '\=' sign and prefixing the name with the given prefix parameter using the same notation used in the JSP expression language used in JSTL and in JSP 2.0. This must be done recursively for all array, collection and ToString properties. + + + The ToStringBean class provides an implementation of the ToString interface with the defined behavior. The ToStringBean constructor takes the class definition the ToStringBean class should use for properties scanning \-using instrospection\- for printing, normally it is the class of the Bean using the ToStringBean. Beans leveraging the ToStringBean implementation can do it using two different patterns. + + +*Extending ToStringBean + + + ++------+ + +public class MyBean extend ToStringBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + ++------+ + +**Using a ToStringBean in delegation mode + + + ++------+ + +public class MyBean implements ToString { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public String toString(String prefix) { + ToStringBean tsBean = new ToStringBean(MyBean.class,this); + return tsBean.toString(prefix); + } + + public String toString() { + return toString("myBean"); + } + } + ++------+ + +*EqualBean + + + The EqualsBean class provides a recursive introspetion\-based implementation of the equals() and hashCode() methods working on the Bean properties. The EqualsBean constructor takes the class definition that should be properties scanned (using introspection) by the equals() and thehashCode() methods. The EqualsBean class works on array, collection, bean and basic type properties. Java Beans leveraging the EqualsBean implementation can do it using two different patterns. + + +**Extending EqualsBean + + + ++------+ + +public class MyBean extend EqualsBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + ++------+ + +**Using a EqualsBean in delegation mode + + + ++------+ + +public class MyBean implements ToString { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public boolean equals(Object obj) { + EqualsBean eBean = new EqualsBean(MyBean.class,this); + return eBean.beanEquals(obj); + } + + public int hashCode() { + EqualsBean equals = new EqualsBean(MyBean.class,this); + return equals.beanHashCode(); + } + } + ++------+ + +*CloneableBean + + + The CloneableBean class provides a recursive introspetion\-based implementation of the clone() method working on the Bean properties. The CloneableBean class works on array, collection, bean and basic type properties. Java Beans leveraging the CloneableBean implementation can do it using two different patterns. + + +**Extending CloneableBean + + + ++------+ + +public class MyBean extend CloneableBean { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + ++------+ + +**Using a CloneableBean in delegation mode + + + ++------+ + +public class MyBean implements Cloneable { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public Object clone() { + CloneableBean cBean = new CloneableBean(this); + return cBean.beanClone(); + } + } + ++------+ + + By default, the CloneableBean copies all properties of the given object. It also supports an ignore\-properties set, the property names in this set will not be copied to the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module. + + +*ObjectBean + + + The ObjectBean is a convenience bean providing ToStringBean, EqualsBean and CloneableBean functionality support. Also, ObjectBeans implements the Serializable interface making the beans serializable if all its properties are. Beans extending ObjectBean get toString(), equals(), hashCode() and clone() support as defined above. + + + And example of using the ObjectBean class is: + + + ++------+ + +public class MyBean extends ObjectBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + ++------+ + +*Enum + + + The Enum is an enumeration base class \[Too bad Java 5.0 is not here yet (Aug/16/2004)\] with equals(), hashCode(), toString(), clone() and serialization support. When used as properties of Beans implementing any of the above function it provides a seamless integration. + + + And example of using the EnumBean class is: + + + ++------+ + +public static class Day extends Enum { + private Day(String name) { + super(name); + } + + public static final Day SUNDAY = new Day("sunday"); + public static final Day MONDAY = new Day("monday"); + public static final Day TUESDAY = new Day("tuesday"); + public static final Day WEDNESDAY = new Day("wednesday"); + public static final Day THURSDAY = new Day("thursday"); + public static final Day FRIDAY = new Day("friday"); + public static final Day SATURDAY = new Day("saturday"); + + } + ++------+ + +*CopyFrom + + + The CopyFrom interface defines functionality similar to a deep cloning. The difference with the clone() method (besides the deep cloning requirements) is that the object to be the copy of the original one has to be explicitly created and it is this object the one that triggers the deep copying process. Implemetations of the CopyFrom interface should work propertly on arrays, collections, CopyFrom and basic type properties. + + + Using CopyFrom objects enables copying data between different implementations of a given interface without these implementation having to know about each other. + + + CopyFrom is unidirectional. A class implementing the CopyFrom knows how to extract properties from the given class (commonly having an interface in common). + + + A simple example using the CopyFrom interface is: + + + ++------+ + +public interface Foo extends CopyFrom { + public void setName(String name); + public String getName(); + + public void setValues(Set values); + public Set getValues(); + } + + public class FooImplA implements Foo { + private String _name; + private Set _values; + + public void setName(String name) { + _name = name; + } + + public String getName() { + return _name; + } + + public void setValues(Set values) { + _values = values; + } + + public Set getValues() { + return _values; + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + + public class FooImplB implements Foo { + private Map _data; + + public FooImplB() { + _data = new HashMap(); + } + + public void setName(String name) { + _data.put("name",name); + } + + public String getName() { + return (String) _data.get("name"); + } + + public void setValues(Set values) { + _data.put("values",values); + } + + public Set getValues() { + return (Set) _data.get("values"); + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + ++------+ + + A use case for the CopyFrom functionality is a Java Bean implementation of an interface and a persistency implementation (such as Hibernate) of the the same interface that may add extra persistency related properties to the bean (ie, the 'Id' property as the persistency layer primary key). + + + For bean, array and collection properties the bean being invoked which copyFrom() method is invoked is responsible for those properties. + + + For properties implementing the CopyFrom interface, the bean must create a property instance implementing the interface returned by the getInterface() method. This allows the bean doing the copyFrom() to handle specialized subclasses of property elements propertly. This is also applicacle to array and collection properties. The 'modules' property of the SyndFeed and SyndEntry beans is a use case of this feature where the copyFrom() invocation must create different beans subclasses for each type of module, the getInteface() helps to find the right implementation. + diff --git a/src/site/apt/HowRomeWorks/index.apt b/src/site/apt/HowRomeWorks/index.apt new file mode 100644 index 0000000..a0e3acf --- /dev/null +++ b/src/site/apt/HowRomeWorks/index.apt @@ -0,0 +1,97 @@ + ----- + How Rome works + ----- + mkurz + ----- + 2011-08-16 03:49:43.191 + ----- + +How Rome works + + + <><<{{{http://www.rollerweblogger.org/}The Roller Weblogger}}>><<) has written a very nice blog>> <<{{{http://www.rollerweblogger.org/page/roller/20040808#how_rome_works}How Rome Works}}>> <> + + + I spent some time exploring the new {{{http://rome.dev.java.net/}Rome}} feed parser for Java and trying to understand how it works. Along the way, I put together the following class diagram and notes on the parsing process. I provide some pointers into the {{{http://rome.dev.java.net/apidocs/0_4/overview\-summary.html}Rome 0.4 Javadocs}}. + + + You don't need to know this stuff to use Rome, but it you are interested in internals you might find it interesting. + + +*Notes on the Rome parsing process + + + Rome is based around an idealized and abstract model of a Newsfeed or "Syndication Feed." Rome can parse any format of Newsfeed, including RSS variants and Atom, into this model. Rome can convert from model representation to any of the same Newfeed output formats. + + + Internally, Rome defines intermediate object models for specific Newsfeed formats, or "Wire Feed" formats, including both Atom and all RSS variants. For each format, there is a separate JDOM based parser class that parses XML into an intermediate model. Rome provides "converters" to convert between the intermediate Wire Feed models and the idealized Syndication Feed model. + + + Rome makes no attempt at {{{http://www.xml.com/pub/a/2003/01/22/dive\-into\-xml.html}Pilgrim\-style liberal XML parsing}}. If a Newsfeed is not valid XML, then Rome will fail. Perhaps, as {{{http://www.peerfear.org/rss/permalink/2003/01/23/1043368363\-Smart_Parsing__Not_RSS_Parsing.shtml}Kevin Burton suggests}}, parsing errors in Newsfeeds can and should be corrected. Kevin suggests that, when the parse fails, you can correct the problem and parse again. (BTW, I have some sample code that shows how to do this, but it only works with Xerces \- Crimsom's SAXParserException does not have reliable error line and column numbers.) + + + Here is what happens during Rome Newsfeed parsing: + + + +[HowRomeWorks.png] + + + + [[1]] Your code calls {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/io/SyndFeedInput.html}SyndFeedInput}} to parse a Newsfeed, for example (see also {{{./RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}}): + ++------+ +URL feedUrl = new URL("file:blogging-roller.rss"); +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new InputStreamReader(feedUrl.openStream())); + ++------+ + + + [[1]] SyndFeedInput delegates to WireFeedInput to do the actual parsing. + + [[1]] {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/io/WireFeedInput.html}WireFeedInput}} uses a PluginManager of class FeedParsers to pick the right parser to use to parse the feed and then calls that parser to parse the Newsfeed. + + [[1]] The appropriate parser parses the Newsfeed parses the feed, using {{{http://www.jdom.org/}JDom}}, into a {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/WireFeed.html}WireFeed}}. If the Newsfeed is in an RSS format, the the WireFeed is of class {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/rss/Channel.html}Channel}} and contains Items, Clouds, and other RSS things from the {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/rss/package\-summary.html}com.sun.syndication.feed.rss}} package. Or, on the other hand, if the Newsfeed is in Atom format, then the WireFeed is of class {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/atom/Feed.html}Feed}} from the {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/atom/package\-summary.html}com.sun.syndication.atom}} package. In the end, WireFeedInput returns a WireFeed. + + [[1]] SyndFeedInput uses the returned WireFeedInput to create a SyndFeedImpl. Which implements SyndFeed. SyndFeed is an interface, the root of an abstraction that represents a format independent Newsfeed. + + [[1]] {{{http://rome.dev.java.net/apidocs/0_4/com/sun/syndication/feed/synd/SyndFeed.html}SyndFeedImpl}} uses a Converter to convert between the format specific WireFeed representation and a format\-independent SyndFeed. + + [[1]] SyndFeedInput returns to you a SyndFeed containing the parsed Newsfeed. + + [] + +*Other Rome features + + + Rome supports Newsfeed extension modules for all formats that also support modules: RSS 1.0, RSS 2.0, and Atom. Standard modules such as Dublic Core and Syndication are supported and you can {{{./RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html}define your own custom modules}} too. + + + Rome also supports {{{./RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Newsfeed output}} and for each Newsfeed format provides a "generator" class that can take a Syndication Feed model and produce from it Newsfeed XML. + + +*Learning more + + + I've linked to a number of the Rome 0.4 Tutorials, here is the full list from the {{{../index.html}Rome Wiki}}: + + + + [[1]] {{{./RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + [[1]] {{{./RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + [[1]] {{{./RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + [[1]] {{{./RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Using Rome to create and write a feed}} + + [[1]] {{{./RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} + + [] + +*Conclusion + + + Overall, Rome looks really good. It is obvious that a lot of thought has gone into design and a lot of work has been done on implementation (and docs). Rome is well on the way to "ending syndication feed confusion by supporting all of 'em" for us Java heads. + diff --git a/src/site/apt/HowToBuildRome.apt b/src/site/apt/HowToBuildRome.apt new file mode 100644 index 0000000..20eaece --- /dev/null +++ b/src/site/apt/HowToBuildRome.apt @@ -0,0 +1,99 @@ + ----- + How to build Rome? + ----- + mkurz + ----- + 2011-08-14 17:45:08.966 + ----- + +How to build Rome? + + + Rome is built using mighty {{{http://maven.apache.org/}Maven}}! This is why these instructions are so short:\-) + + + If you don't want to build Rome we'd suggest you download a binary build:\-) + + +*Check out from Subversion + + + See {{{https://rometools.jira.com/source/browse/ROME}Version Control}} for access intructions and to browse the source from your browser. + + + Check out the tag version\-0\-1 for version 0.1. Else checkout the trunk for the development version. + + +*Setup maven + + + See {{{http://maven.apache.org/run\-maven/index.html}Installing Maven}} for details. + + + Maven automatically downloads dependencies of a project from an online repository. + + +*Build rome.jar + + + At the command prompt type: + + + ++------+ + +> mvn jar:jar + ++------+ + + This will build + + + ++------+ + +rome/target/rome-VERSION.jar + ++------+ + + You're good to go. + + +**Build a full binary distribution + + + ++------+ + +> mvn + ++------+ + +**Build the project site + + + ++------+ + +> mvn site + ++------+ + +*For Rome developers + + +**Work on Rome using Eclipse + + + ++------+ + +> mvn eclipse:eclipse + ++------+ + + will setup the Eclipse project for you. + + + We don't use the site:deploy or dist:deploy targets yet since java.net is not very maven\-friendly yet:\-) + diff --git a/src/site/apt/PreservingWireFeeds.apt b/src/site/apt/PreservingWireFeeds.apt new file mode 100644 index 0000000..05d0f95 --- /dev/null +++ b/src/site/apt/PreservingWireFeeds.apt @@ -0,0 +1,57 @@ + ----- + Preserving WireFeeds + ----- + mkurz + ----- + 2011-08-14 16:20:59.295 + ----- + +Preserving WireFeeds + + + WireFeeds will be preserved if the property preserveWireFeed is set on the SyndFeedInput object it is built from: + + + ++------+ + +SyndFeedInput in = new SyndFeedInput(); +in.setPreserveWireFeed(true); +SyndFeed syndFeed = in.build(..); +WireFeed wireFeed = syndFeed.originalWireFeed(); + ++------+ + + Atom/RSS Entry/Item objects are also available from SyndEntry objects if the WireFeed is preserved: + + + ++------+ + +Object obj = syndEntry.getWireEntry(); +if (obj != null && obj instanceof Entry) { + // it is an Atom Entry object + // do Atom specific stuff, eg: + Entry entry = (Entry) o; + System.out.println(entry.getRights()); +} else if (obj != null && obj instanceof Item) { + // it is a RSS Item object + // do RSS specific stuff eg: + Item item = (Item) o; + System.out.println(item.getComments()); +} + ++------+ + + The Fetcher can be set to preserve WireFeeds by setting the preserveWireFeed property to true: + + + ++------+ + +feedFetcher.setPreserveWireFeed(true); + ++------+ + + \-\- Main.nicklothian \- 11 Mar 2009 + diff --git a/src/site/apt/ProductsOrSitesPoweredByROME.apt b/src/site/apt/ProductsOrSitesPoweredByROME.apt new file mode 100644 index 0000000..9acb753 --- /dev/null +++ b/src/site/apt/ProductsOrSitesPoweredByROME.apt @@ -0,0 +1,210 @@ + ----- + Products or sites powered by ROME + ----- + sbasegmez + ----- + 2013-03-14 07:44:37.389 + ----- + +Products or sites powered by ROME + + + If your site or project is powered by ROME, please take the time to write a short testimonial on this wiki page, or send a mail to {{{mailto:users@rome.dev.java.net.}users@rome.dev.java.net.}} Feel free to use our "Powered by ROME" badges in your work. (Several badge variations are available at the bottom of this page.) + + + + + +*Open Source using ROME + + + + * {{{http://firenze.berlios.de/}Firenze}}\ + Firenze is a free Java based open source command line podcast receiver. It is powered by the ROME syndication framework. With Firenze you can easily subscribe to your favorite Podcast feeds and reveive them. + + * {{{http://fnr.sourceforge.net/}Feed'n Read}}\ + Feed'n Read (FnR) is a free Java based open source newsfeed reader. It is powered by the ROME syndication framework and therefore supports all current formats (RSS 0.90, 0.91, 0.92, 0.93, 0.94, 1.00, 2.00, ATOM 0.30 and 1.00). It disposes of an intuitive, fast and responsive user interface using the eclipse Rich Client Platform (RCP), i.e. JFace and SWT. Thus it combines the platform independent Java world on one hand with a fast native user interface on the other hand. + + * {{{http://tudu.sourceforge.net/}Tudu Lists}}\ + An AJAXian Todo Lists manager. We moved from our hand\-made solution to ROME with great pleasure \- it was fast and easy, and the overall performance is very good (11 ms per request in average today). You can try it out on our live site at {{{http://tudu.ess.ch/}http://tudu.ess.ch}}. + + * {{{http://snipsnap.org/}SnipSnap}} + + * {{{http://www.rollerweblogger.org/page/project}Roller Weblogger and Aggregator}}\ + Roller is a weblog server. In Roller 1.1 there is a new aggregator feature, called PlanetRoller, based on ROME and ROME fetcher. Dave Johnson, who created Roller, {{{http://rollerweblogger.org/page/roller/20050213#rome_texen_planet_roller}created PlanetRoller in a couple of days}}, leveraging ROME and ROME fetcher to do all the hard work. You can try out at {{{http://www.rollerweblogger.org/planet/roller.html}PlanetRoller}}. + + * {{{http://incubator.apache.org/activemq/}ActiveMQ}}\ + Apache ActiveMQ is a fast open source JMS 1.1 provider and Message Fabric supporting clustering, peer networks, discovery, TCP, SSL, multicast, persistence, XA and integrates seamlessly into J2EE 1.4 containers, light weight containers and any Java application. ActiveMQ is released under the Apache 2.0 License. \ + Currently ActiveMQ is using Rome to be able to {{{http://docs.codehaus.org/display/ACTIVEMQ/RSS\+and\+Atom}browse message queues}} (with or without filters applied) as RSS or Atom feeds. + + * {{{http://www.xwiki.org/}XWiki}} + + * {{{http://www.thauvin.net/mobitopia/mobibot/}mobibot}} + + * {{{http://sourceforge.net/projects/stat4j/}stat4j}}\ + Used ROME to create an RSS/ATOM Log4j Appender. Read more about it {{{http://www.jroller.com/comments/laraDAB?anchor\=rss_atom_log4j_appender}here}}. + + * {{{http://www.spotdev.net/}SPOT Manager}}\ + SPOT Manager uses ROME to parse RSS feeds and send them to your MSN Direct wristwatch! Learn about MSN Direct {{{http://www.msndirect.com/}here.}} Download the program from {{{http://www.spotdev.net/}SPOTDev.net}}. + + * {{{http://logdistiller.sf.net/}LogDistiller}}\ + LogDistiller is an extensible tool to merge and sort logs : reports can be stored in a feed file thanks to Rome. + + * {{{http://openvision.tv/}ION Internet Video Console}}\ + The I/ON Internet Video Console fuses together leading technologies into one simple media player, connecting you directly to the video you want. Avoid the ads, pop\-ups, and spyware that come with watching video in a browser and watch the web. ROME powers our RSS capabilities. Learn more and download {{{http://openvision.tv/}here}}. + + * {{{http://code.google.com/p/blog\-mover}Blog Mover}}\ + Blog Mover's goal is allowing your blog moving freely between each BSP(Blog Service Provider). Learn more and try it {{{http://blog\-mover.redv.com/}here}}. + + * {{{http://scarab.tigris.org/}Scarab}}\ + The goal of the Scarab project is to build a highly customisable Artifact tracking system. It's distributed under a BSD/Apache style license. + + * {{{http://ozmozr.org/}Ozmozr}}\ + Ozmozr is a website for online learning communities being developed by the {{{http://www.cosl.usu.edu/}Center for Open Sustainable Learning}} at {{{http://www.usu.edu/}Utah State University}}. In ozmozr, users are both content producers and consumers, relying on their social networks to filter and distribute meaningful content. Ozmozr was built to leverage emergent technologies and support social and collaborative information filtering, self\-organization, identity development, and free/open resource\-sharing. + + [] + +*Open Source Research Prototypes using ROME + + + + * {{{http://www.infosys.tuwien.ac.at/prototype/morse/}MORSE}}\ + The {{{http://www.infosys.tuwien.ac.at/prototype/morse/}Model\-Aware Repository and Service Environment}} (MORSE) is a service\-based environment for the storage and retrieval of models and model\-instances at both design\- and runtime. Models, and model\-elements are identified by Universally Unique Identifiers (UUID) and stored and managed in the MORSE repository. The MORSE repository provides versioning capabilities so that models can be manipulated at runtime and new and old versions of the models can be maintained in parallel. MORSE exposes various services to runtime clients and modeling tools. For instance, a {{{http://www.infosys.tuwien.ac.at/m2projects/at.ac.tuwien.infosys.tholmes.morse/rs\-impl/}feed}} reflects the latest changes within the repository. + + [] + +*Free, Based On Open Standards, using ROME + + + + * {{{http://www.scheduleworld.com/}ScheduleWorld}} + + * {{{http://feedpod.dev.java.net/}FeedPod}} + + [] + +*Commercial using ROME + + + + * {{{http://interactivebrokers.com/}Interactive Brokers TraderWorkstation (TWS)}}\ + Interactive Brokers is leading software based broker. IB offers Universal Direct\-Access Trading and sophisticated trade management tools at highly competitive costs to professional traders and investors worldwide. IB is the gateway to trading a broad array of financial instruments \-\- stocks, options, futures, corporate bonds as well as forex \-\- on over 50 exchanges and marketplaces in 14 countries. TraderWorkstation is java\-based trading platform; ROME library is used to fetch, aggregate and visualize news related to securities listed in the application. + + * {{{http://weblogs.at/parss/stories/2315/}parss}}\ + From the antville guys, that we met at blogtalk 1.0 2 years ago. + + * {{{http://www.publicinteractive.com/}Public Interactive}}\ + Public Interactive® is the leading integrated Application Service Provider (ASP) of on\-line collaborative tools, community engagement technologies, content syndication services and member and audience relationship management systems for the public broadcasting industry. Rome is used for syndicating news content and Podcasts local published by stations in the Public Interactive network. + + * {{{http://www.blog\-city.com/}Blog\-City Ltd}}\ + Blog\-City.com has been using ROME for many months now, utilising both the core project and the Fetcher project to allow bloggers to run their own mini\-aggregators within their blog. + + * {{{http://www.reger.com/}Reger.com}}\ + All blogs running at reger.com include ROME feeds. With the custom ROME module we wrote entry data is included in the RSS feeds. DataBlogging allows people to append activity\-specific data to each of their entries. In addition to the pre\-built log types (Running Log, Biking Log, Movie Log, etc), users can create custom log types with whatever data fields they need. The module outputs those data fields. Users simply customize their log types, adding and removing fields, and then the RSS feed automatically includes it. An RDDL document for the namespace can be found at{{{http://www.reger.com/about/specs/entrydata.rddl}http://www.reger.com/about/specs/entrydata.rddl}} Thanks again for all of the help and for making ROME great! + + * {{{http://techrepublic.com.com/}CNET Networks/TechRepublic.com}}\ + CNET Networks uses ROME with an application called the RSS Harvester. The purpose of this application is to harvest a list of predefined RSS/ATOM feeds, saving all new items for each feed in a database. In addition, each feed has an associated keyword that allows for easy surfacing of harvested data. \ + Once the feed data has been collected, internal editors can surface links to the harvested data on the TechRepublic website by including a call to a JSP component. This component passes several parameters including the number of items to return, the number of items from a particular site and an associated keyword. For example, {{{http://techrepublic.com.com/2001\-10591\-0.html}http://techrepublic.com.com/2001\-10591\-0.html}} (see the section "More on ...") we surface related articles. \ + We are also using Rome for Re\-Blogging on TechRepublic.com. Users can start their own blogs on the site as well as choose to import an RSS feed from an existing blog such as blogger.com. When the user imports an existing blog we use Rome to parse the RSS/ATOM feed then convert it to a TechRepublic blog. Any new blog posts on the external blog are automatically imported to TechRepublic. + + * {{{http://www.edmunds.com/insideline/}Edmunds.com Inside Line}}\ + We are currently using ROME as our feed generator and as a feed parser. Currently we publish RSS feeds of our latest articles on www.insideline.com, however, we also use it to provide updates between our sites. For example, our community site {{{http://townhall\-talk.edmunds.com/}Townhall}} produces RSS feeds which we then parse using ROME on our {{{http://www.edmunds.com/insideline}Inside Line}} property. Rome has significantly speed up our development times thanks to its clean object model and its ability to generate multiple feed types. + + * {{{http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewArtist?artistId\=118405710}HBO Podcasts}} (iTunes Music Store Link)\ + HoPE (HBO Podcast Engine) powered by ROME and the iTunes Podcast module. To date has served over 15\-million podcasts for HBO podcast content such as The Sopranos, Real Time with Bill Maher, and Rome + + * {{{http://www.dressupyourwedding.com/Article.do}DressUpYourWedding}} + + [] + +*Sites using ROME + + + + * {{{http://www.yabot.net/}Yabot}}\ + Yabot is a news service currently available in five editions (May 2008). + + Discovering and implementing ROME made Yabot's feed aggregation faster and easier. In previous versions we rendered the XML our selves but with ROME now doing most of this work developers can focus on presentation and integration features. Thanks! + +Mats, co\-founder @ Yabot \-{{{http://www.yabot.net/}http://www.yabot.net}} + + * {{{http://www.wasalive.com/}WASALive}}\ + Wasalive is a news, blogs and forums search engine. Results are sort by a mix of relevancy and date. Thanks to ROME library, Wasabot fetch and parse more than 70k feeds/days and store 3M posts. Thanks to ROME UTF8 support Wasalive is avalaible in {{{http://ru.wasalive.com/}Russian}}, {{{http://fr.wasalive.com/}French}},{{{http://es.wasalive.com/}Spanish}}, {{{http://en.wasalive.com/}English}} + + * {{{http://www.airport\-information.com/}http://www.airport\-information.com}}\ + Rome is used to create a RSS feed with news on airports worldwide. The database runs under Tomcat. The Rome library was very helpful and allowed an easy and quick implementation. \-\- Main.airportinformation \- 28 Jan 2008 + + * {{{http://www.abclinuxu.cz/}http://www.abclinuxu.cz}}\ + I use rome in daily production on www.abclinuxu.cz for watching cca 8 feeds and generating cca 60 feeds. After fixing charset related issues (thanks!) it runs smoothly. I am happy that I could remove my old propietary RSS rw code with Rome ... Leos + + * {{{http://feeds.my.aol.com/}http://feeds.my.aol.com}}\ + The latest My AOL product, a customizable, feed\-driven web application, uses the Rome library to read, manipulate, and normalize RSS, RDF, and Atom feeds. My AOL was built on a very rapid development schedule, and Rome made much of it a lot easier than it otherwise would have been. \-\-Bill Kocik, Sr. Software Engineer, America Online, Inc. + + * {{{http://www.backbase.com/}http://www.backbase.com}}\ + Rome is used on our site to provide rss feeds for forum threads. Implementation took me something like few hours (including downloading and installation), so needless to say I am very happy. Thanks. m.j.milicevic + + * {{{http://oszone.org/}The Open Source Zone}}\ + Rome is used to power the {{{http://oszone.org/channels}Planet}} section of The Open Source Zone, where we aggregate the most interesting feeds concerning Open Source. Took very little to implement, thanks to Rome. Rome Fetcher is used too, which is great. + + * {{{http://www.rel8r.com/}rel8r.com}}\ + rel8r is a tag search and feed aggregator. Rome is used extensively for collecting feeds as well as for publishing all of the aggregated feeds. We love it. \- Travis + + * {{{http://newsrack.in/}NewsRack}}\ + Several organizations in the social development sector monitor news that is relevant to their work. This is a time\-consuming and laborious process for some groups, especially when the news is monitored, marked, cut, and filed using hard copies of newspapers and magazines. This process is very much the case in India. However, much of this work can be automated using web versions of newspapers and magazines. In this context, the broad goal of this project is to automate news monitoring. \ + NewsRack is a tool/service for classifying, filing, and long\-term archiving of news. Users specify filtering rules which are used to select relevant articles from incoming news feeds. The selected articles are then classified into various categories. This process is similar to the process of specifying email filters to pre\-sort incoming mail into various folders. \ + NewsRack is currently using Rome. I am looking for developers, so, if this project tickles you, please get in touch! \- Subramanya Sastry + + * {{{http://www.rsspress.it/}http://www.rsspress.it}}\ + An Italian Rss Aggregator, with a very nice design and layout, very simple to use, with a lot of rss feeds not only in italian language. You can register it and have your personalized homepage with your preferred news. + + * {{{http://www.geonames.org/rss\-to\-georss\-converter.html}Geonames RSS to GeoRSS}}\ + The Geonames "RSS to GeoRSS Converter" reads the entries of an RSS feed and searches the Geonames Database to find a location for the entry text. If a relevant location is found, its latitude and longitude are added to the RSS feed using the GeoRSS encoding. + + * {{{http://www.feedarea.de/}feedarea.de}}\ + FeedArea.de is a RSS, Atom and Podcast portal using Rome for handling the feed submissions. + + * {{{http://www.podblock.de/}podblock.de}} / {{{http://www.podblock.com/}podblock.com}}\ + PodBlock is a podcast portal using Rome for handling the feed submissions. + + * {{{http://www.javamix.co.uk/}javaMix.co.uk}}\ + javaMix is a java news aggregation website using Rome to find the news. + + * {{{http://www.javamix.co.uk/}JavaMix}}\ + the latest java news, articles and resources + + * {{{http://wirecatch.com/}Wirecatch}}\ + Wirecatch is a semantic news aggregator and visualization tool. It uses Rome to grab several news feeds and show connections and relationships between names, concepts and documents. + + * {{{http://swiftmob.com/}Swift}}\ + Swift imports rss feeds and formats them for mobile devices. Swift also include many other tools for building mobile friendly webpages that will reshape themselves for each phone so the experience for the end user is as good as possible. + + * {{{http://devmeat.com/}DevMeat}}\ + DevMeat deliver fresh meat for software developers and Rome is TOP cook ! + + * {{{http://folder2feed.nogoodatcoding.com/}Folder2Feed}}\ + Folder2Feed allows users to generate feeds from the contents of local and network folders; providing an easy way to monitor updates to folders of interest for a large audience. + + * {{{http://www.podcast.tv/}podcast.tv}} + + * {{{http://www.podcast.it/}podcast.it}} + + * {{{http://www.podcast.at/}podcast.at}}\ + Podcast.tv, podcast.it and podcast.at are podcast directories using Rome for handling the feed submissions and parsing. + + * {{{http://collaborationtoday.info/}CollaborationToday.info}}\ +Collaboration Today is a news aggregator, also an open source software developed by OpenNTF. This site is for IBM Collaboration Solutions professionals covering news about various IBM products like IBM Connections, IBM Notes/ Domino, IBM WebSphere Portal etc. and cross product topics like mobile, cloud and analytics. Rome is running on background and fetching stories from various sites. + + [] + +*Powered By ROME Badges Here are badges for use with your ROME\-powered site or software: + + + + * <> + + * <> + + [] + + Please copy the image to your own server rather than link to the image on its current host. + diff --git a/src/site/apt/ROMEAndMaven2.apt b/src/site/apt/ROMEAndMaven2.apt new file mode 100644 index 0000000..6e3f92d --- /dev/null +++ b/src/site/apt/ROMEAndMaven2.apt @@ -0,0 +1,60 @@ + ----- + ROME and Maven 2 + ----- + mkurz + ----- + 2011-08-15 10:53:40.491 + ----- + +ROME and Maven 2 + + + this page is not up to date + + + Starting with ROME 1.0 RC2, rome jars are deployed on the {{{http://download.java.net/maven/2/}java.net maven repository}}. + + + In your project you can add this repository by putting the following XML into your pom.xml + + + ++------+ + + + maven2-repository.dev.java.net + Java.net Repository for Maven + http://download.java.net/maven/2/ + default + + ++------+ + + As of 22, April 2009, the jars are deployed for the following releases: + + + + * ROME 1.0 + + * ROME Fetcher 1.0 + + * ROME Modules 0.3.2 + + [] + + To include the Rome 1.0 in your maven2 project: + + + ++------+ + + + rome + rome + 1.0 + + ++------+ + + \-\- Main.mj_ \- 22 Apr 2009 + diff --git a/src/site/apt/ROMEAndOSGI.apt b/src/site/apt/ROMEAndOSGI.apt new file mode 100644 index 0000000..5b03566 --- /dev/null +++ b/src/site/apt/ROMEAndOSGI.apt @@ -0,0 +1,19 @@ + ----- + ROME and OSGI + ----- + mkurz + ----- + 2011-08-15 10:54:49.376 + ----- + +ROME and OSGI + + + From ROME 1.0 RC2 onwards, the ROME jar includes OSGi information in its manifest. + + + Note that we have received some reports that ROME plugin classloading may cause problems with OSGi. Setting the system property "rome.pluginmanager.useloadclass" to "true" may help avoid this. See {{{http://java.net/jira/browse/ROME\-118}Issue 118}} for further information. + + + \-\- Main.nicklothian \- 08 Jan 2009 + diff --git a/src/site/apt/ROMEDevelopmentProcess.apt b/src/site/apt/ROMEDevelopmentProcess.apt new file mode 100644 index 0000000..15eb6c1 --- /dev/null +++ b/src/site/apt/ROMEDevelopmentProcess.apt @@ -0,0 +1,29 @@ + ----- + ROME Development Process + ----- + mkurz + ----- + 2011-08-15 10:38:27.942 + ----- + +ROME Development Process + + + We're welcoming our first external developer, {{{http://www.mackmo.com/nick/blog/}Nick Lothian}} today, so we thought it would be good to set a few basic rules for this project. We don't want to be too formal, since we're still alpha, and trust our developer's common sense to "do the right thing". + + + + * Please before commiting anything send an email in the rome developer lists to explain what you want to do + + * When you create some new code, please javadoc it, and unit tests are welcome + + * If your code involves new functionality for end users, please document it on the wiki. + + * and update the {{{./ChangeLog.html}RomeChangesLog}} + + * I think that's it: Welcome to Rome + + [] + + \-\- {{{http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon}PatrickChanezon}} \- 17 Jun 2004 + diff --git a/src/site/apt/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.apt b/src/site/apt/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.apt new file mode 100644 index 0000000..68857bf --- /dev/null +++ b/src/site/apt/ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.apt @@ -0,0 +1,386 @@ + ----- + ROME2 1st Proposal (June 10th 2006) NOT CURRENT + ----- + mkurz + ----- + 2011-08-15 11:12:21.744 + ----- + +ROME2 1st Proposal (June 10th 2006) NOT CURRENT + + + It has been 2 years since ROME started and along the way we've fixed, improved, enhanced and changed the API and the implementation. We've had to address things we did not think at first, we have to add support for specifications that were not around when ROME started, doing that has not being a hard task. The best indicator we've done a fair job with ROME is adoption. + + + Some cracks are starting to appear, mistakes in the design (such as overloading the use of DCModule), a bit of implementation over\-engineering (such as the home grown bean\-introspector and the <> ObjectBean & co classes), a more complex than needed API (the existence of 2 abstraction levels for feed, Synd and Wire beans). + + + This proposal attempts to address the problems and limitations we currently have with ROME. + + +*Backwards Compatibility, Support and Upgrade + + + ROME2 will change the API breaking backwards compatibility (after all we are an Open Source Project and that is what they do best). + + + We will maintain ROME 1.0 (bugfixing only) for 1 year to allow a smooth transition for all ROME users. We will also prepare migration/upgrade tips (based on our own experience) for the ROME community. + + +*Leveraging New Language Features + + + ROME2 will make use of Generics to type collections in its beans. It will also use the <> construct when applicable. + + +*Minimum Number of Dependencies + + + ROME2 will implement its core competency (Atom and RSS parsing, generation and manipulation), it will leverage other components as much as possible but it will focus, as ROME, in being as lean as possible not only in its code by in its dependencies (keeping them down to a reasonable minimum). + + +*One Abstraction Level, 2 Models + + + ROME2 will not have an abstract representation of feeds (the Synd beans). It will have 2 distinct models, Atom and RSS, both of them first citizens. + + + ROME2 users will use the model that fits more their needs. + + + Conversion (automatic and implicit) between the 2 models will be part of ROME2. + + +*No Interfaces, Pluggable Beans + + + Interfaces are good, in fact they are great. However, when using them with beans that have to be created by the developer it ads noise to the code. Interfaces are used for all parameters and variables but implementations must be used to create the bean instances thus hard\-coding areas of the application to a specific implementation. Or a factory pattern has to be use throughout the code to hide the implementation, with a side effect of removing clarity from the code. + + + ROME2 will bring the best of both worlds, it will allow coding such as + + + ++------+ + +Feed feed = new Feed(); +Entry entry1 = new Entry(); +Entry entry2 = new Entry(); +feed.getEntries().add(entry1); +feed.getEntries().add(entry2); + ++------+ + + While allowing pluggability of the beans implementation. The pluggability will be achieved using a combination of a factory pattern and a self\-proxy patterns, both of them transparent to the ROME2 user. + + + For example the ROME2 API bean for the Atom feed would be something like: + + + ++------+ + +public class Feed { + private Feed feed; + + public Feed() { + if (this.getClass() == Feed.class) { + feed = BeanFactory.getFactory().create(Feed.class); + } + } + + public final Feed getImplementation() { + return feed; + } + + public Text getTitle() { + return feed.getTitle(); + } + + public void setTitle(Text title) { + feed.setTitle(title); + } + +... +} + ++------+ + + The ROME2 (default/provided) implementation bean for the Atom feed would be something like: + + + ++------+ + +public class FeedBean extends Feed { + private Text title; + + public Text getTitle() { + return title; + } + + public void setTitle(Text title) { + this.title = title; + } + +... +} + ++------+ + + ROME2 users will use the ROME2 API bean as plain objects that they are. The ROME2 API beans will delegate all their properties to an instance implementing their corresponding class. This instance will be the implementation bean which is created by the BeanFactory. + + + To provide alternate implementation beans an alternate BeanFactory has to be provided. + + + To write an alternate implementation beans the ROME2 API bean has be used as an interface, all property methods have to be overridden, nothing else. + + + When extending ROME2 API beans, for example providing a new module bean, it is left to the implementor to follow this pattern or to use plain beans for the the additional module. + + + For cases (they shouldn't be many) that a ROME2 user needs to manipulate the implementation bean, all ROME2 API beans will give access to it via the getImplementation() method. + + +*Using multiple Bean implementations simultaneously + + + ROME2 will support the use of multiple implementation beans simultaneously. + + + A use case could be retrieving a feed from a persistent store (which uses its own implementation beans), retrieving a feed from the internet (using the default implementation beans), merging their entries and producing an output feed, into the persistent store or out to the internet. + + + ROME2 public API will include the following classes for this purpose: + + + ++------+ + +public abstract class BeanFactory { + public abstract T create(Class beanClass); +} + +public class BeanFactoryInjector { + public static void execute(BeanFactory factory, Runnable runnable) { .. } +} + ++------+ + + When these two classes are not used explicitly ROME2 will use the default BeanFactory that creates default implementation beans. + + + For alternate implementation beans a BeanFactory has to be provided. This factory will be responsible for creating a complete ROME2 bean family. + + + The code to create ROME2 beans with an alternate factory will have to be written in the run() method of a Runnable object and it will have to be executed via the BeanFactoryInjector.execute() method. + + + The created ROME2 beans could be used outside of the Runnable.run() method, because of this ROME2 users have to be aware that it is possible to mix and match implementation beans and that may not always have a happy ending if not thought properly. + + +*Collection Elements + + + All collection properties (such as the authors, categories, contributors, links and entries of an Atom feed bean) will only have getter methods in the ROME2 API beans, no setter methods. For example: + + + ++------+ + +public class Feed { + public List getAuthors() { ... } + public List getCategories() { ... } + ... +} + ++------+ + + This will ensure that the implementation bean has control on the implementation of the collection being used. This is particularly important to enable alternate implementation beans to fetch data from a repository as the collection is iterated over. + + + Persistent experts we need your input here. + + +*Modules + + + Feeds, both RSS and Atom, are extensible via namespaced elements at feed/channel and entry/item level, these namespace elements are known as modules. Beans supporting modules (feed, channel, entry and item) will all have the following method to support modules. + + + ++------+ + +public Map getModules() { ... } + ++------+ + + Because modules are uniquely identified by their URI, a Map will be used, the key will be the URI of the module and the value the module itself. As with other ROME2 API bean collection properties, the getModules() property has a getter only, the Map implementation is controlled by the implementation bean. + + + Module URIs in ROME2, as all the links URLs in the beans, will be Strings thus reducing object creation explosion a bit. For cases that some URI manipulation is required, the JDK URI class should be used. + + +*Dynamic Modules Support + + + ROME2 modules design has to ensure it provides simple and comprehensive support for dynamic modules such as SLE and GData. + + +*Unknown Modules + + + A special Module subclass, UnknownModule, will serve as placeholder for module data not explicitly processed by ROME2 available parsers/generators. This will allow to consume and re\-export a feed without losing unknown (to ROME2) modules. Each unknown module will be keyed off with its URI in the map of the associated feed, channel, entry or item. + + + The data of the unknown module will be available as a String. ROME2 users should not use \=UnknownModule\='s data directly, if they need to manipulate that data they should find or implement bean/parser/generator for the module they need to manipulate. + + + Because unknown modules brings some extra overhead in the parsing and generating process ROME2 will have a property to enable/disable processing of unknown modules. + + +*The xml:lang Attributes + + + All ROME2 API beans will have xml:lang attributes, String and enum and primitive types properties won't. + + +*The xml:base Attributes + + + The xml:base attribute will not be present in any ROME2 API bean. + + + It will be the responsibility of the parsers to resolve any relative URL present in the feed at parsing time. Similarly, generators may relativize URLs as a size optimization (for God's sake we are doing XML). + + +*Conversion between Feed Types + + + A FeedConverter class will provide conversion from Atom to RSS beans and vice versa, both at feed/channel and entry/item level. All properties, including modules data will be copied, after an conversion the state of the beans will be completely independent. + + +*Object Class Methods in ROME2 Beans + + + The equals() and hashCode() methods will not be overridden. All ROME2 beans are mutable, it is not safe to use them as keys of hash structures. + + + Cloning will not be supported by ROME2 beans, instead they will have a copyFrom() method which is type safe and does a deep copy. Cloning a ROME2 bean will be a two step process, for example: + + + ++------+ + +Feed feed1 = new Feed(); +... +Feed feed2 = new Feed(); +feed2.copyFrom(feed1); + ++------+ + + The toString() method in the beans will print the property that most likely identifies the bean plus the class name of the implementation bean. For example for a Feed bean the output of toString() would be: + + + ++------+ + +[http://foo.com/atom.xml - xxx.rome2.impl.pojo.atom.FeedBean] + ++------+ + + \-\-\+\+ Plugins ClassLoading + + + Bean implementations, parsers, generators, converters and all pluggable ROME2 components will be loaded using the same classLoader ROME2 core classes are loaded from. + + + This is to keep simple the handling of them via singletons and their instantiation. Supporting different classLoaders would require complex handling for instantiation, to avoid missing classes and class mismatches. + + + As an example of how easy things can go sour, imagine ROME2 core classes in the common path of a web\-container and 2 web\-apps adding their own beans/parsers/generators/modules, the singletons managing them are in ROME2 core, managed by the common classLoader, a simple singleton won't cut it. ROME2 core will be small enough that it will not be a memory consumption issue if it is once in each web\-app. + + +*Parsers and Generators + + + XML parsing and generation will support stream mode. We may even consider using streaming as the underlaying default implementation even if manipulating a feed bean on its whole in memory. We have to see if how this could be done leveraging Abdera, else using StAX API directly. This also means we may get rid of the JDom dependency. + + + For example, the streaming version of an Atom parser and generator would be something like: + + + ++------+ + +public interface AtomReader { + + // repeatable operation, returns was has been read from the header so far + Feed readFeed() throws FeedException; + + // returns null when reaches the end of the feed + Entry readEntry() throws FeedException; + + void close() throws FeedException; + } + +public interface AtomWriter { + + // if called must be called once and before a write(Entry) + void write(Feed feed) throws FeedException; + + // if the first write is for an entry, then the output is an entry document + abstract void write(Entry entry) throws FeedException; + + void close() throws FeedException; + } + ++------+ + + As with ROME, in ROME2 Parsers will be as lenient as possible. Generators will be strict. + + +*Feed Validators + + + A bean FeedValidator class will verify that a feed or entry bean is valid for a given feed type. Feed generators would use this class to ensure feed correctness. + + +*Feed Conversion + + + Conversion from Atom beans to RSS beans and vice versa will be done by a FeedConverter class that would have the following signature: + + + ++------+ + +public class FeedConverter { + public Feed convertToFeed(Channel channel, boolean processItems) { ... } + public Entry convertToEntry(Item item) { ... } + public Channel convertToChannel(Feed feed, boolean processEntries) { ... } + public Item convertToItem(Entry entry) { ... } +} + ++------+ + + Because the mapping from Atom to RSS elements is sometimes subject do discussion and different requirements the FeedConverter class will be pluggable. It will implement the self\-proxy pattern ROME2 API beans implement. + + +*Parser and Generator Filters + + + Manipulation of feeds during parsing and generation at feed/channel and entry/item level will be possible by implementing readers and writers wrappers that work on top of the original reader and writer instances. + + + This filtering/wrapping could be automated via configuration. + + +*Sources + + + + * {{{./rome2proto.zip}rome2proto.zip}} + + [] diff --git a/src/site/apt/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.apt b/src/site/apt/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.apt new file mode 100644 index 0000000..c5b675c --- /dev/null +++ b/src/site/apt/ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.apt @@ -0,0 +1,397 @@ + ----- + ROME2 2nd Proposal (July 18th 2006) CURRENT + ----- + mkurz + ----- + 2011-08-15 11:06:23.384 + ----- + +ROME2 2nd Proposal (July 18th 2006) CURRENT + + + It has been 2 years since ROME started and along the way we've fixed, improved, enhanced and changed the API and the implementation. We've had to address things we did not think at first, we have to add support for specifications that were not around when ROME started, doing that has not being a hard task. The best indicator we've done a fair job with ROME is adoption. + + + Some cracks are starting to appear, mistakes in the design (such as overloading the use of DCModule), a bit of implementation over\-engineering (such as the home grown bean\-introspector and the <> ObjectBean & co classes), a more complex than needed API (the existence of 2 abstraction levels for feed, Synd and Wire beans). + + + This proposal attempts to address the problems and limitations we currently have with ROME. + + +*Backwards Compatibility, Support and Upgrade + + + ROME2 will change the API breaking backwards compatibility (after all we are an Open Source Project and that is what they do best). + + + We will maintain ROME 1.0 (bugfixing only) for 1 year to allow a smooth transition for all ROME users. We will also prepare migration/upgrade tips (based on our own experience) for the ROME community. + + +*Leveraging New Language Features + + + ROME2 will make use of Generics to type collections in its beans. It will also use the <> construct when applicable. + + +*Minimum Number of Dependencies + + + ROME2 will implement its core competency (Atom and RSS parsing, generation and manipulation), it will leverage other components as much as possible but it will, as ROME, be as lean as possible not only in its code but in its dependencies (keeping them down to a reasonable minimum). + + +*One Abstraction Level, 2 Models + + + ROME2 will not have an abstract representation of feeds (the Synd beans). It will have 2 distinct models, Atom and RSS, both of them first citizens. + + + ROME2 users will use the model that fits more their needs. + + + Conversion (automatic and programmatic) between the 2 models will be part of ROME2. + + +*Bean Interfaces + + + After some discussions on the first ROME2 proposal we are going back to the interface model. The self proxy pattern proposed in the first proposal (to be able use arbitrary implementations) adds a bit of complexity into understanding what is going one plus it does not address in a clean way the needs for persistency (such as Hibernate or JPA). + + + All ROME2 beans will interfaces. Different from ROME, the implementation classes for the ROME2 beans will not be part of the public API. Instead using directly constructors to create ROME2 beans, a factory pattern will be used. A Convenience class, Rome, will wrap the factory class providing a concise way of creating a ROME2 bean. + + + For example, creating ROME2 beans using the Rome class convenience class will be something like: + + + ++------+ + +Feed feed = Rome.create(Feed.class); +Entry entry1 = Rome.create(Entry.class)); +Entry entry2 = Rome.create(Entry); +feed.getEntries().add(entry1); +feed.getEntries().add(entry2); + ++------+ + + Which is equivalent to (using the Rome Bean factory class): + + + ++------+ + +Feed feed = BeanFactory.getFactory().create(Feed.class); +Entry entry1 = BeanFactory.getFactory().create(Entry.class)); +Entry entry2 = BeanFactory.getFactory().create(Entry); +feed.getEntries().add(entry1); +feed.getEntries().add(entry2); + ++------+ + + To provide an alternate implementation beans an alternate set of beans will have to be provided. In addition, if necessary, an alternate bean factory could be used. + + + To write an alternate implementation the bean classes will have to implement the ROME2 interface beans. + + +*Using multiple Bean implementations simultaneously + + + ROME2 will support the use of multiple implementation beans simultaneously by changing the bean factory at anytime. + + + A use case could be retrieving a feed from a persistent store (which uses its own implementation beans), retrieving a feed from the internet (using the default implementation beans), merging their entries and producing an output feed, into the persistent store or out to the internet. + + +*Bean Factory Scopes + + + The bean factory will support a default factory and a context factory. The default factory is used if no context factory is available. The context factory uses a InheritableThreadLocal to store the factory in context, this is useful for use in dependency injection containers (Servlet, Spring, etc). + + +*Collection Elements + + + All collection properties (such as the authors, categories, contributors, links and entries of an Atom feed bean) will only have getter methods in the ROME2 API beans, no setter methods. For example: + + + ++------+ + +public class Feed { + public List getAuthors() { ... } + public List getCategories() { ... } + ... +} + ++------+ + + This will ensure that the implementation bean has control on the implementation of the collection being used. This is particularly important to enable alternate implementation beans to fetch data from a repository as the collection is iterated over. + + +*Modules + + + Feeds, both RSS and Atom, are extensible via namespaced elements at feed/channel and entry/item level, these namespace elements are known as modules. Beans supporting modules (feed, channel, entry and item) will all have the following method to support modules. + + + ++------+ + +public Map getModules() { ... } + ++------+ + + Because modules are uniquely identified by their URI, a Map will be used, the key will be the URI of the module and the value the module itself. As with other ROME2 API bean collection properties, the getModules() property has a getter only, the Map implementation is controlled by the implementation bean. + + + Module URIs in ROME2, as all the links URLs in the beans, will be Strings thus reducing object creation explosion a bit. For cases that some URI manipulation is required, the JDK URI class should be used. + + +*Dynamic Modules Support + + + ROME2 modules design has to ensure it provides simple and comprehensive support for dynamic modules such as SLE and GData. + + +*Unknown Modules + + + A special Module subclass, UnknownModule, will serve as placeholder for module data not explicitly processed by ROME2 available parsers/generators. This will allow to consume and re\-export a feed without losing unknown (to ROME2) modules. Each unknown module will be keyed off with its URI in the map of the associated feed, channel, entry or item. + + + The data of the unknown module will be available as a String. ROME2 users should not use \=UnknownModule\='s data directly, if they need to manipulate that data they should find or implement bean/parser/generator for the module they need to manipulate. + + + Because unknown modules brings some extra overhead in the parsing and generating process ROME2 will have a property to enable/disable processing of unknown modules. + + +*The xml:lang Attributes + + + All ROME2 API beans will have xml:lang attributes, String and enum and primitive types properties won't. + + +*The xml:base Attributes + + + The xml:base attribute will not be present in any ROME2 API bean. + + + It will be the responsibility of the parsers to resolve any relative URL present in the feed at parsing time. Similarly, generators may relativize URLs as a size optimization (for God's sake we are doing XML). + + +*Object Class Methods in ROME2 Beans + + + The equals() and hashCode() methods will not be overridden. As all ROME2 beans are mutable, it is not safe to use them as keys of hash structures. + + + Cloning will not be directly defined by ROME2 interface beans, instead they will have a copyFrom() method which is type safe and does a deep copy. Cloning a ROME2 bean will be a two step process, for example: + + + ++------+ + +Feed feed1 = Rome.create(Feed.class); +... +Feed feed2 = Rome.create(Feed.class); +feed2.copyFrom(feed1); + ++------+ + + The toString() method in the beans will print the property that most likely identifies the bean plus the class name of the implementation bean. For example for a Feed bean the output of toString() would be: + + + ++------+ + +[xxx.rome2.impl.pojo.atom.FeedBean - http://foo.com/atom.xml] + ++------+ + + \-\-\+\+ Plugins ClassLoading + + + Bean implementations, parsers, generators, converters and all pluggable ROME2 components will be loaded using the same classLoader ROME2 core classes are loaded from. + + + This is to keep simple the handling of them via singletons and their instantiation. Supporting different classLoaders would require complex handling for instantiation, to avoid missing classes and class mismatches. + + + NOTE: As an example of how easy things can go sour, imagine ROME2 core classes in the common path of a web\-container and 2 web\-apps adding their own beans/parsers/generators/modules, the singletons managing them are in ROME2 core, managed by the common classLoader, a simple singleton won't cut it. ROME2 core will be small enough that it will not be a memory consumption issue if it is once in each web\-app. + + +*Parsers and Generators + + + To support large feeds (several megabytes or even gigabytes) ROME2 will support stream parsing. We have to see if how this could be done leveraging Abdera, else using StAX API directly. + + + Using XML stream parsers/generators is more complicated than using a DOM ones, to make easier for developers to implement parsers and generators ROME2 will take care of the details of the XML streaming API and it will expose feed fragments (the feed header and entries) via the JDom API, as JDom Elements. For example, the streaming version of an Atom parser and generator would be something like: + + + ++------+ + +public interface AtomParser { + // A JDom Document with just the root element, its attributes and namespaces in it. + boolean canParseFeed(Document jdomDoc); + + // repeatable operation, returns was has been read from the header so far + // feed parameter has whatever is has been readed from the feed header so far. + // If the given feed parameter is not null data from the jdom element is injected in it. + Feed parseFeed(Element jdomFeedElement, Feed feed) throws FeedException; + + + // the jdomFeedElement allows the parser to get context (such as base URL, namespaces) + // for the entry being parsed. + Entry parseEntry(Element jdomFeedElement, Element jdomEntryElement) throws FeedException; + } + + public interface AtomGenerator { + String getFeedType(); + + // if called must be called once and before a generateEntry(Entry) + Element generateFeed(Feed feed) throws FeedException; + + Element generateEntry(Entry entry) throws FeedException; + } + ++------+ + + For Modules the parser and generator interface would be something like: + + + ++------+ + +public interface ModuleParser { + String getUri(); + + M parseModule(Element jdomFeedElement); + + M parseModule(Element jdomFeedElement, Element jdomEntryElement); + } + public interface ModuleGenerator { + String getUri(); + + Element generateModule(M module); + } + ++------+ + + Parsers and Generators for modules will follow the same principle. + + + As with ROME, in ROME2 Parsers will be as lenient as possible. Generators will be strict. + + +*ROME2 IO classes + + + Feed parsers and generators will not be directly accessed by the ROME2 user, they are used by ROME2 to expose a more convenient API in the form of streaming API and builder API. For example: + + + ++------+ + +public class RomeIO { + + // streaming API + + public static AtomReader createAtomReader(Reader reader, boolean xmlHealing) { }; + public static RssReader createRssReader(Reader reader, boolean xmlHealing) { }; + + public static AtomWriter createAtomWriter(Writer writer, String feedType) { }; + public static RssWriter createRssWriter(Writer writer, String feedType) { }; + + + // builder API + + public Feed parseAsFeed(Reader reader) { }; + public Channel parseAsChannel(Reader reader) { }; + + public void generate(Writer writer, Feed feed, String feedType) { }; + public void generate(Writer writer, Channel channel, String feedType) { }; + } + public interface AtomReader { + + String getFeedType(); + + // repeatable read, returns the current parsed state of the feed header + Feed readFeed() throws FeedException; + + // returns a feed entry while there are more, NULL when done + Entry readEntry() throws FeedException; + + // closes the feed reader + void close() throws FeedException; + } + public interface AtomWriter { + + String getFeedType(); + + // if called must be called once and before a write(Entry) + void writeFeed(Feed feed) throws FeedException; + + // if the first write is for an Entry, then the output is an item document + void writeEntry(Entry entry) throws FeedException; + + void close() throws FeedException; + } + ++------+ + +*Feed Validators + + + A bean FeedValidator class will verify that a feed or entry bean is valid for a given feed type. Feed generators would use this class to ensure feed correctness. + + +*Feed Conversion + + + Conversion from Atom to RSS beans and vice versa will be done by an implementation of the FeedConverter interface. Conversion will be supported at both feed/channel and entry/item level. All properties, including modules data will be copied, after an conversion the state of the beans will be completely independent. + + + The converter implementation will be pluggable, the implementation will be obtained from the bean factory and the Rome convenience class. + + + Conversion from Atom beans to RSS beans and vice versa will be done by a FeedConverter class that would have the following signature: + + + ++------+ + +public interface FeedConverter { + public Feed convertToFeed(Channel channel); + public Feed convertToFeed(Channel channel, boolean processItems); + public Entry convertToEntry(Item item); + + public Channel convertToChannel(Feed feed); + public Channel convertToChannel(Feed feed, boolean processEntries); + public Item convertToItem(Entry entry); +} + ++------+ + +*Parser and Generator Filters + + + Manipulation of feeds during parsing and generation at feed/channel and entry/item level would be possible by implementing readers and writers wrappers that work on top of the original reader and writer instances. + + + This filtering/wrapping could be automated via configuration. + + +*Sources + + + The following ZIP file only includes the ROME2 beans as described in this proposal, it does not include any of the parser, generator or IO API. + + + + * {{{./rome2proto2.zip}rome2proto2.zip}} + + [] diff --git a/src/site/apt/ROMEDevelopmentProposals/ROMEFeatureRequests.apt b/src/site/apt/ROMEDevelopmentProposals/ROMEFeatureRequests.apt new file mode 100644 index 0000000..8d11823 --- /dev/null +++ b/src/site/apt/ROMEDevelopmentProposals/ROMEFeatureRequests.apt @@ -0,0 +1,64 @@ + ----- + ROME Feature Requests + ----- + mkurz + ----- + 2011-08-15 10:49:48.825 + ----- + +ROME Feature Requests + + + + * <> com.sun.syndication.io.impl.DateParser:Date parseW3CDateTime(String) incorrectly uses a comma (",") rather than a decimal (".") to delimit the seconds from miliseconds. The correct format can be found on {{{http://www.w3.org/TR/NOTE\-datetime}http://www.w3.org/TR/NOTE\-datetime}}. The bug is on line 170 (version 0.8). The fix is to replace the line with this: <<>> \-\- JLP 9/4/2006 + + * <> Atom 1.0 parsing uses wrong Content types. "text", "html", "xhtml" do not match what is parse from the content elements. Subsequently, the content elements always have a null value \- no way to get content. + + * <> Link in description is not parsed\ + Try to parse {{{http://jakarta.apache.org/site/rss.xml}http://jakarta.apache.org/site/rss.xml}}, look at entry {{{http://jakarta.apache.org/site/news/news\-2006\-q1.html#20060107.1}http://jakarta.apache.org/site/news/news\-2006\-q1.html#20060107.1}} This entry has an "\> Support all encodings\ + The problem is when reading RSS a space between the encoding to the value or ualue in '' insted of "" will cause error, for example: this will work work encoding\="windows\-1255" but this: encoding \= "windows\-1255" or encoding\='windows\-1255' won't work. + + * <> The reader doesn't attempt use the masks that defined in the rome.properties for reading the date for all date parsing method, e.g. RSS093Parser.parseItem uses DateParser.parserRFC822 which is not covered by that logic \-\- Main.den_st \- 17 Jan 2006; if it will use the mask the code will run good. I had a problem to read date and I defined a mask in the properties file (datetime.extra.masks\=yyyy\-MM\-dd'T'HH:mm:ss trying to read 2005\-09\-22T09:00:41\} ). Then i try to change one of the mask at runtime to the mask i defined in the properties file and it works good. The logic in the code trys to format the date with each one of the default masks if it faild it returns null instead of trying to format the date using the format that defined in the rome.properties file. + + * Support for writing to OutputStreams. If I want to compress the feeds to a (.gz) file or write to a socket, I have to extend SyndFeedOutput and WireFeedOutput to add a method called output(SyndFeed, OuputStream). It would be nice to have that built in instead. \-\- Main.agherna \- 08 Aug 2005 + + * I'd like the getDate method on feeds and entries to go to the associated modules and retrieve the appropriate dc:date when the getDate() method returns null. This way entries from feeds like this one: {{{http://www.magpiebrain.com/index.xml}http://www.magpiebrain.com/index.xml}} would have valid dates without requiring me to write code work out what format the feed is in and act accordingly. + + * Would like to see {{{../../opml/index.html}OPML}} parser also.\ + <<>>. RSS2.0 parser, see {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Date Elements mapping}} by default does not process Modules. Refer to the Modules Plugins documentation to see how to enable this. + + * {{{http://bobwyman.pubsub.com/main/2004/09/implementations.html}RFC3229}} support (in {{{../../fetcher/index.html}RomeFetcher}} and example code implementing it for production) would be a killer feature. + + * The RSS 1.0 Spec {{{http://web.resource.org/rss/1.0/spec}http://web.resource.org/rss/1.0/spec}} indicates that the <> maximum length for a description field on an entry is 500 characters, but the 0.4 codebase enforces 500 characters as a hard limit \-\- exceeding it on input or output generates a FeedException. Since one doesn't always have control over the feeds one consumes, it seems to me that it would be a good idea if Rome were more forgiving in accepting feed entries that exceed the suggested lengths. + + * Is there a chance to include an option in Rome for liberal parsing, ie. trying to get most out of a feed even when it's non\-conforming without throwing exceptions? I believe RSS is pretty close to HTML not from a technical point of view but thinking of practical use. Hence, RSS feeds will be incorrect in many cases however they still could join the party with a tolerant parser. Maybe Rome could do for Java what {{{http://diveintomark.org/projects/feed_parser/}Mark Pilgrim}} has done for Python (although I did not verify his ultraliberal parser's tolerance)? + + * More liberal parsing for dates, to handle un\-parseable dates like: "12 sep 1998", "'05" or monsters like this one : "\[2005\]". I faced this problem using DCModule, dc:date attribute can have mentioned values. In older versions of my app there were no constrains for date format, so users have written them very freely. + + * I think that Rome has problems parsing rss feeds where the xml contains a link to a stylesheet. Try parsing {{{http://ihatemyflatmate.blogspot.com/atom.xml}http://ihatemyflatmate.blogspot.com/atom.xml}} (Atom) or {{{http://msdn.microsoft.com/rss.xml}http://msdn.microsoft.com/rss.xml}} (RSS 1.0). I get Exceptions with both, and they both have stylesheets, whereas other working feeds don't. + + * It would be very nice to have a possibility to add stylesheet to generated feed. I can do this by replacing header in generated String, but this method is ... + + * There are problems with the correct encoding of HTML when generating RSS2.0. It is in the area of extended character sets. If you encode the following: + ++------+ + +Quatre pi&#232;ces + ++------+ + In the hope of gettin "Quatre pièces" in your html feed. You get from the SynFeedOutput.output() this: + ++------+ + +&lt;FONT size="2"&gt;Quatre pi&amp;#232;ces&lt;/FONT&gt; + ++------+ + Which ends up with "Quatre pièces" being displayed in the RSS Reader that is taking your feed. To get the correct ouput I have had to resort to outputString.replaceAll("&#","&#"); OK as a a workaround but not very elegant or performant! \-\- Main.rjwallis \- 19 Mar 2005 + + * From that what i know about Rome it's impossible to use "\<\[!CDDATA \[" entities in content of feed's tags. i know this isn't essential, but it would a very nice feature. + + * Provide support for lastBuildDate in RSS, many news provider, including Yahoo News and BBC use lastBuildDate instead of lastPublishDate. + + [] diff --git a/src/site/apt/ROMEDevelopmentProposals/index.apt b/src/site/apt/ROMEDevelopmentProposals/index.apt new file mode 100644 index 0000000..bb1d842 --- /dev/null +++ b/src/site/apt/ROMEDevelopmentProposals/index.apt @@ -0,0 +1,38 @@ + ----- + ROME Development Proposals + ----- + mkurz + ----- + 2011-08-15 11:17:30.648 + ----- + +ROME Development Proposals + + +*ROME Development Proposals + + + Link to new ROME feature and release proposals here. + + +*ROME2 Proposal + + + + * {{{../ROMEROADMAPProposed.html}ROME ROADMAP (Proposed) (rome)}} + + * {{{./ROME21stProposalJune10th2006NOTCURRENT.html}ROME2 first proposal }} (Jun/10/2006). + + * {{{./ROME22ndProposalJuly18th2006CURRENT.html}ROME2 second proposal }} (Jul/18/2006). + + [] + +*Requests for Enhancement (RFEs) + + + + * {{{https://rometools.jira.com/browse/ROME}Issue tracking system}} \- file RFEs here + + * {{{./ROMEFeatureRequests.html}Feature Requests}} \- old feature request page + + [] diff --git a/src/site/apt/ROMEROADMAPProposed.apt b/src/site/apt/ROMEROADMAPProposed.apt new file mode 100644 index 0000000..92782c0 --- /dev/null +++ b/src/site/apt/ROMEROADMAPProposed.apt @@ -0,0 +1,78 @@ + ----- + ROME ROADMAP (Proposed) + ----- + mkurz + ----- + 2011-08-15 11:15:23.229 + ----- + +ROME ROADMAP (Proposed) + + + *----+--+ +| | + version + +|| + changes + +| +*----+--+ +| + 1.1 + +| + Omnibus release with ROME patches + JDK 1.5 changes. + +| +*----+--+ +| + 1.5 + +| + Migration to org.rometools (light break compat) + +| +*----+--+ +| + 1.6 + +| + Elimination of Synd* interfaces and Synd*Impl in favor of base objects (break compat) + +| +*----+--+ +| + 1.7 + +| + Introduction of "Rome" class with pass-by-ref context for modules + +| +*----+--+ +| + 1.8 + +| + Addition of a factory by package for the Rome class. + +| +*----+--+ +| + 1.9 + +| + JSR-330   remix of the Rome class and all deps. + +| +*----+--+ + +*Old Development Proposals + + + + * {{{./ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html}ROME2 2nd Proposal (July 18th 2006) CURRENT (rome)}} + + * {{{./ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html}ROME2 1st Proposal (June 10th 2006) NOT CURRENT (rome)}} + + [] diff --git a/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.apt b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.apt new file mode 100644 index 0000000..9dda71b --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.apt @@ -0,0 +1,73 @@ + ----- + Rome v0.1, How to build and run the tutorials sample code + ----- + mkurz + ----- + 2011-08-15 14:39:07.651 + ----- + +Rome v0.1, How to build and run the tutorials sample code + + +*Building the samples with Maven + + + This is, as usual, the easiest way. + + + There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. + + + If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be cp rome\-0.1/rome\-0.1.jar   \~/.maven/repository/rome/jars/). + + + Then building the samples it's easy as a pie, just run maven jar in the rome\-samples project and you are all set. + + +*Building the samples with Ant + + + Hopefully maven is helpful in supporting poor ant users who did not make the switch yet:\-) We generated an Ant build.xml file in order for you to be able to build rome\-samples with Ant. (Actually, Maven did it for us, the maven ant goal). + + + The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. + + + The only thing that will be left out is Rome's jar file itself: you'll need to copy it to the rome\-samples/target/lib directory (For example in UNIX would be cp rome\-0.1/rome\-0.1.jar  rome\-samples/target/lib, where rome\-0.1 is the binary distribution). + + + To build rome\-samples just run ant jar. + + +*Running the samples with Maven + + + The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. + + + maven run\-agr runs the FeedAggregator sample + + + maven run\-conv runs the FeedConverter sample + + + maven run\-read runs the FeedReader sample + + +*Running the samples with Ant + + + All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + ant run\-aggr runs the FeedAggregator sample + + + ant run\-conv runs the FeedConverter sample + + + ant run\-read runs the FeedReader sample + diff --git a/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt new file mode 100644 index 0000000..8212eca --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt @@ -0,0 +1,155 @@ + ----- + Rome v0.1 Tutorial, Using Rome to aggregate many syndication feeds into a single one + ----- + mkurz + ----- + 2011-08-15 14:38:10.131 + ----- + +Rome v0.1 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + + <> J2SE 1.4\+, Xerces 2.4.0, JDOM B10, Commons Codec 1.2 and Rome 0.1. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndInput input = new SyndInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + ++------+ + + The first line creates a SyndInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndOutput class does this generation. When creating a syndication feed output, the developer has to indicate the syndication feed type for the ouput, and the SyndOutput will use the right generator for it. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + ++------+ + +SyndOutput output = new SyndOutput(outputType); +output.output(feed,System.out); + ++------+ + + The first line creates a SyndOutput instance that will produce syndication feeds of the type indicated by the outputType parameter. The outputType parameter can be any of the following values: rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + SyndFeedI can also be created and populated within the code. For example: + + + ++------+ + +SyndFeedI aggrFeed = new SyndFeed(); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + ++------+ + + The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome and sets the title, description, author and link properties of the feed. + + + SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. + + + The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): + + + ++------+ + +SyndFeedI feed = new SyndFeed(); +... +List entries = new ArrayList(); +feed.setEntries(entries); +... +SyndInput input = new SyndInput(false); +SyndFeedI inFeed = input.build(inputUrl.openStream()); + +entries.addAll(inFeed.getEntries()); + ++------+ + + Note that it's OK to assign the entries list to the feed and later add entries to it as all SyndFeedI getters/setters do copy by reference. + + + Following is the full code for a Java application that reads a list of syndication feed, aggregates their items into a single feed, and writes the aggregated feed to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndEntryI; +import com.sun.syndication.io.SyndInput; +import com.sun.syndication.io.SyndOutput; + +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeedI feed = new SyndFeed(); + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i> Synd J2SE 1.4\+, Xerces 2.4.0, JDOM B10, Commons Codec 1.2 and Rome 0.1. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndInput input = new SyndInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + ++------+ + + The first line creates a SyndInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndOutput class does this generation. When creating a syndication feed output, the developer has to indicate the syndication feed type for the ouput, and the SyndOutput will use the right generator for it. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + ++------+ + +SyndOutput output = new SyndOutput(outputType); +output.output(feed,System.out); + ++------+ + + The first line creates a SyndOutput instance that will produce syndication feeds of the type indicated by the outputType parameter. The outputType parameter can be any of the following values: rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + Following is the full code for a Java application that reads a syndication feed and converts it to other syndication feed type, writing the converted feed to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndInput; +import com.sun.syndication.io.SyndOutput; + +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndInput input = new SyndInput(false); + SyndFeedI feed = input.build(feedUrl.openStream()); + + SyndOutput output = new SyndOutput(outputType); + output.output(feed,System.out); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.apt b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.apt new file mode 100644 index 0000000..6917528 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.apt @@ -0,0 +1,84 @@ + ----- + Rome v0.1 Tutorial, Using Rome to read a syndication feed + ----- + mkurz + ----- + 2011-08-15 14:35:18.803 + ----- + +Rome v0.1 Tutorial, Using Rome to read a syndication feed + + + <> J2SE 1.4\+, Xerces 2.4.0, JDOM B10, Commons Codec 1.2 and Rome 0.1. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndInput input = new SyndInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + ++------+ + + The first line creates a SyndInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndInput.build() method returns a SyndFeedI instance that can be easily processed. + + + The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + ++------+ + +System.out.println(feed); + ++------+ + + Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndInput; + +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndInput input = new SyndInput(); + SyndFeedI feed = input.build(feedUrl.openStream()); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.apt b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.apt new file mode 100644 index 0000000..d2c2c38 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.apt @@ -0,0 +1,25 @@ + ----- + Rome v0.1 Tutorials + ----- + mkurz + ----- + 2011-08-15 14:28:13.572 + ----- + +Rome v0.1 Tutorials + + + The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + + [[1]] {{{./RomeV0.1TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + [[1]] {{{./RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + [[1]] {{{./RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + [] + + For instructions on how to build and run the samples used in the tutorials {{{./RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html}click here}}. + diff --git a/src/site/apt/ROMEReleases/ROME0.1Beta/index.apt b/src/site/apt/ROMEReleases/ROME0.1Beta/index.apt new file mode 100644 index 0000000..4786b7d --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.1Beta/index.apt @@ -0,0 +1,64 @@ + ----- + ROME 0.1 Beta + ----- + mkurz + ----- + 2011-08-15 14:33:58.218 + ----- + +ROME 0.1 Beta + + +*Dependencies + + + + * J2SE 1.4\+ (Not J2SE 1.3\+ as it was initially documented) + + * {{{http://www.jdom.org/}JDOM Beta 10}} + + * {{{http://jakarta.apache.org/commons/codec/}Jakarta Commons Codec 1.2}} + + * Rome v0.1 does not depend on Xerces as it was initially documented + + [] + +*Downloads + + + + * {{{./rome\-0.1\-src.zip}rome\-0.1\-src.zip}} + + * {{{./rome\-0.1.tar.gz}rome\-0.1.tar.gz}} + + * {{{./rome\-0.1.zip}rome\-0.1.zip}} + + * {{{./rome\-0.1\-src.tar.gz}rome\-0.1\-src.tar.gz}} + + * {{{./rome\-samples\-0.1\-src.zip}rome\-samples\-0.1\-src.zip}} + + * {{{./rome\-samples\-0.1.tar.gz}rome\-samples\-0.1.tar.gz}} + + * {{{./rome\-samples\-0.1.zip}rome\-samples\-0.1.zip}} + + * {{{./rome\-samples\-0.1\-src.tar.gz}rome\-samples\-0.1\-src.tar.gz}} + + [] + +*Additional Information + + + + * {{{./RomeV0.1Tutorials/index.html}Tutorials}} + + [] + +*Known Issues + + + + * On Mac OS X 10.2.8 Maven cannot run the samples, the JVM exist with a reflection error in a native method + + * On Mac OS X 10.2.8 to run the samples using Ant you need to include Xerces 2.4.0 in the CLASSPATH. Otherwise it does not the XML Parser implementation + + [] diff --git a/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt b/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt new file mode 100644 index 0000000..532b4ed --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt @@ -0,0 +1,143 @@ + ----- + Rome v0.2 Tutorial, Using Rome to aggregate many syndication feeds into a single one + ----- + mkurz + ----- + 2011-08-15 14:44:18.890 + ----- + +Rome v0.2 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + + <> J2SE 1.4\+, JDOM B10 and Rome 0.2. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeedI object being output. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,System.out); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeedI feedType property indicates the type. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + SyndFeedI can also be created and populated within the code. For example: + + + ++------+ + +SyndFeedI aggrFeed = new SyndFeed(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + ++------+ + + The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. + + + The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeedI feed = new SyndFeed(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i> Synd J2SE 1.4\+, JDOM B10 and Rome 0.2. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeedI object being output. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,System.out); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeedI feedType property indicates the type. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + Following is the full code for a Java application that reads a syndication feed and converts it to other syndication feed type, writing the converted feed to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.SyndFeedOutput; + +/** + * It Converts any RSS/Atom feed type to a an RSS/Atom feed of the + * specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(feedUrl.openStream()); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,System.out); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.apt b/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.apt new file mode 100644 index 0000000..18fe964 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.apt @@ -0,0 +1,91 @@ + ----- + Rome v0.2 Tutorial, Using Rome to read a syndication feed + ----- + mkurz + ----- + 2011-08-15 14:42:09.813 + ----- + +Rome v0.2 Tutorial, Using Rome to read a syndication feed + + + <> J2SE 1.4\+, JDOM B10 and Rome 0.2. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(feedUrl.openStream()); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + ++------+ + +System.out.println(feed); + ++------+ + + Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(feedUrl.openStream()); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.apt b/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.apt new file mode 100644 index 0000000..aa7874d --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.apt @@ -0,0 +1,25 @@ + ----- + Rome v0.2 Tutorials + ----- + mkurz + ----- + 2011-08-15 14:41:00.881 + ----- + +Rome v0.2 Tutorials + + + The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + + [[1]] {{{./RomeV0.2TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + [[1]] {{{./RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + [[1]] {{{./RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + [] + + The instructions for building and running the samples are identical to the {{{../../ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html}instructions for Rome v0.1}}. + diff --git a/src/site/apt/ROMEReleases/ROME0.2Beta/index.apt b/src/site/apt/ROMEReleases/ROME0.2Beta/index.apt new file mode 100644 index 0000000..e7477ce --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.2Beta/index.apt @@ -0,0 +1,60 @@ + ----- + ROME 0.2 Beta + ----- + mkurz + ----- + 2011-08-15 14:31:23.934 + ----- + +ROME 0.2 Beta + + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM Beta 10}} + + [] + +*Downloads + + + + * {{{./rome\-0.2\-src.zip}rome\-0.2\-src.zip}} + + * {{{./rome\-0.2.tar.gz}rome\-0.2.tar.gz}} + + * {{{./rome\-0.2.zip}rome\-0.2.zip}} + + * {{{./rome\-0.2\-src.tar.gz}rome\-0.2\-src.tar.gz}} + + * {{{./rome\-samples\-0.2\-src.tar.gz}rome\-samples\-0.2\-src.tar.gz}} + + * {{{./rome\-samples\-0.2.tar.gz}rome\-samples\-0.2.tar.gz}} + + * {{{./rome\-samples\-0.2.zip}rome\-samples\-0.2.zip}} + + * {{{./rome\-samples\-0.2\-src.zip}rome\-samples\-0.2\-src.zip}} + + [] + +*Aditional Information + + + + * {{{./RomeV0.2Tutorials/index.html}Tutorials}} + + * Changes Log + + [] + +*Known Issues + + + + * Same issues as Rome v0.1 + + [] diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.apt new file mode 100644 index 0000000..0d6bf98 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.apt @@ -0,0 +1,81 @@ + ----- + Rome v0.3, How to build and run the tutorials sample code + ----- + mkurz + ----- + 2011-08-15 13:52:00.856 + ----- + +Rome v0.3, How to build and run the tutorials sample code + + +*Building the samples with Maven + + + This is, as usual, the easiest way. + + + There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in <<<\~/.maven/repository>>>). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. + + + If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be <<>>). + + + Then building the samples it's easy as a pie, just run maven jar in the rome\-samples project and you are all set. + + +*Building the samples with Ant + + + Hopefully maven is helpful in supporting poor ant users who did not make the switch yet We generated an Ant build.xml file in order for you to be able to build rome\-samples with Ant. (Actually, Maven did it for us, the maven ant goal). + + + The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. + + + The only thing that will be left out is Rome's jar file itself: you'll need to copy it to the rome\-samples/target/lib directory (For example in UNIX would be <<>>, where rome\-0.3 is the binary distribution). + + + To build rome\-samples just run <<>>. + + +*Running the samples with Maven + + + The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. + + + + * <<>> runs the FeedAggregator sample + + * <<>> runs the FeedConverter sample + + * <<>> runs the FeedReader sample + + * <<>> runs the FeedWriter sample + + * <<>> runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + [] + +*Running the samples with Ant + + + All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + + * <<>> runs the FeedAggregator sample + + * <<>> runs the FeedConverter sample + + * <<>> runs the FeedReader sample + + * <<>> runs the FeedWriter sample + + * <<>> runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + [] diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.apt new file mode 100644 index 0000000..f9b78bd --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.apt @@ -0,0 +1,348 @@ + ----- + Rome v0.3 Tutorial, Defining a Custom Module (bean, parser and generator) + ----- + mkurz + ----- + 2011-08-15 13:58:16.611 + ----- + +Rome v0.3 Tutorial, Defining a Custom Module (bean, parser and generator) + + + This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). + + + To understand this tutorial you should be familiar the with Rome API and with the use of modules in syndication feeds. + + + Out of the box Rome parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. + + + The complete source for this tutorial is in the Rome samples bundle as well as in CVS. + + +*What is the intended outcome of the tutorial? + + + The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. + + + The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: + + + ++------+ + + + + + RSS 1.0 Feed with Sample Module + http://rome.dev.java.net + This is a feed showing how to use a custom module with Rome + + + + + + + Channel bar + Channel first foo + Channel second foo + + + Title of Item 01 + http://rome.dev.java.net/item01 + Item 01 does not have Sample module data + + + Title of Item 02 + http://rome.dev.java.net/item02 + Item 02 has Sample module data + Item 02 bar + Item 02 only foo + 2004-07-27T00:00+00:00 + + + ++------+ + +*Sample Module Bean + + + First we must start with the bean interface, SampleModuleI. SampleModuleI must extend ModuleI. The ModuleI interface defines the getUri() method, which will return a URI identifying the module. The ModuleI interface also extends the Cloneable, ToString and CopyFrom interfaces to ensure that the beans provide support for basic features as cloning, equality, toString, etc. (for more details on this check the Understanding the Rome common classes and interfaces document). + + + The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. + + + Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). + + + ++------+ + +public interface SampleModuleI extends ModuleI,CopyFrom { + + public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; + + public String getBar(); + public void setBar(String bar); + + public List getFoos(); + public void setFoos(List foos); + + public Date getDate(); + public void setDate(Date date); +} + ++------+ + + Next we have to write the bean implementation, SampleModule. + + + SampleModule extends Module (the implementation counterpart of ModuleI). Module extends ObjectBean which provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModuleI). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. + + + ++------+ + +public class SampleModule extends Module implements SampleModuleI { + ... + public SampleModule() { + super(SampleModuleI.class,SampleModuleI.URI); + } + + public String getBar() { + return _bar; + } + ... + ++------+ + + The module properties are just Java Bean properties. The only catch is to follow Rome semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned.. Also, following Rome semantics, all properties are by reference, including mutable ones. + + + ++------+ + +public class SampleModule extends Module implements SampleModuleI { + private String _bar; + private List _foos; + private Date _date; + ... + public void setBar(String bar) { + _bar = bar; + } + + public List getFoos() { + return (_foos==null) ? (_foos=new ArrayList()) : _foos; + } + + public void setFoos(List foos) { + _foos = foos; + } + + public Date getDate() { + return _date; + } + + public void setDate(Date date) { + _date = date; + } + ++------+ + + Now the weird part: the bits for the CopyFrom logic. The Understanding the Rome common classes and interfaces document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. + + + The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). + + + The copyFrom() method copies all the properties from the parameter object (which must be a SampleModuleI implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. + + + ++------+ + +public class SampleModule extends Module implements SampleModuleI { + ... + public Class getInterface() { + return SampleModuleI.class; + } + + public void copyFrom(Object obj) { + SampleModuleI sm = (SampleModuleI) obj; + setBar(sm.getBar()); + List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) + setFoos(foos); + setDate((Date)sm.getDate().clone()); // because Date is not inmutable. + } + +} + ++------+ + +*Sample Module Parser + + + The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. + + + The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. + + + In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. + + + If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. + + + ++------+ + +public class SampleModuleParser implements ModuleParser { + + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModuleI.URI); + + public String getNamespaceUri() { + return SampleModuleI.URI; + } + + public ModuleI parse(Element dcRoot) { + boolean foundSomething = false; + SampleModuleI fm = new SampleModule(); + + Element e = dcRoot.getChild("bar", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setBar(e.getText()); + } + List eList = dcRoot.getChildren("foo", SAMPLE_NS); + if (eList.size() > 0) { + foundSomething = true; + fm.setFoos(parseFoos(eList)); + } + e = dcRoot.getChild("date", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setDate(DateParser.parseW3CDateTime(e.getText())); + } + return (foundSomething) ? fm : null; + } + + private List parseFoos(List eList) { + List foos = new ArrayList(); + for (int i = 0; i < eList.size(); i++) { + Element e = (Element) eList.get(i); + foos.add(e.getText()); + } + return foos; + } + +} + ++------+ + +*Sample Module Generator + + + The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. + + + The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. + + + If no Sample Module bean is in the feed bean the module generator is not invoked at all. + + + ++------+ + +public class SampleModuleGenerator implements ModuleGenerator { + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModuleI.URI); + + public String getNamespaceUri() { + return SampleModuleI.URI; + } + + public void generate(ModuleI module, Element element) { + + // this is not necessary, it is done to avoid the namespace definition in every item. + Element root = element; + while (root.getParent()!=null && root.getParent() instanceof Element) { + root = (Element) element.getParent(); + } + root.addNamespaceDeclaration(SAMPLE_NS); + + SampleModuleI fm = (SampleModuleI)module; + if (fm.getBar() != null) { + element.addContent(generateSimpleElement("bar", fm.getBar())); + } + List foos = fm.getFoos(); + for (int i = 0; i < foos.size(); i++) { + element.addContent(generateSimpleElement("foo",foos.get(i).toString())); + } + if (fm.getDate() != null) { + element.addContent(generateSimpleElement("date", DateParser.parseW3CDateTime(fm.getDate()))); + } + } + + protected Element generateSimpleElement(String name, String value) { + Element element = new Element(name, SAMPLE_NS); + element.addContent(value); + return element; + } + +} + ++------+ + +*Configuration to make Rome process Sample Module in feeds + + + The last step is to setup the configuration file to indicate to Rome how and when to use the Sample Module parser and generator. + + + The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. + + + You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. + + + Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. + + + ++------+ + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + ++------+ + + If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. + + +*Using the Sample Module from the SyndFeedI beans + + + They will be there, just use them. You may get the SampleModuleI bean using the getModule(String Uri) method of the SyndFeedI bean and the SyndEntryI bean. + + + Adding or replacing a syndication feed parser, generator or converter is along the same lines of what it has been explained in the tutorial for modules. Eventually we'll have a doc on that too + diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt new file mode 100644 index 0000000..b6b0c78 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.apt @@ -0,0 +1,148 @@ + ----- + Rome v0.3 Tutorial, Using Rome to aggregate many syndication feeds into a single one + ----- + mkurz + ----- + 2011-08-15 14:02:32.685 + ----- + +Rome v0.3 Tutorial, Using Rome to aggregate many syndication feeds into a single one + + + <> J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + ++------+ + + Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. + + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeedI object being output. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeedI feedType property indicates the type. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + SyndFeedI can also be created and populated within the code. For example: + + + ++------+ + +SyndFeedI aggrFeed = new SyndFeed(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + ++------+ + + The snipped of code above creates a SyndFeedI instance using the default implementation provided by Rome, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + SyndFeedI properties can be modified, assigned to other SyndFeedI instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeedI properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeedI property you are altering the SyndFeedI. Or, another example, if you assign the list of entries of one SyndFeedI instance to another SyndFeedI isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeedI instances. + + + The following lines of code show how to copy the entries of a SyndFeedI instance being read (inFeed) into a SyndFeedI instance being created within the application (feed): + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeedI feed = new SyndFeed(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i> Synd J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + ++------+ + + Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. + + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Rome also includes generators to create syndication feeds out of SyndFeedI instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeedI object being output. The following two lines of code show how to create a syndication feed output from a SyndFeedI instance: + + + ++------+ +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeedI feedType property indicates the type. The second line writes the SyndFeedI as a syndication feed into the application's output. + + + Following is the full code for a Java application that reads a syndication feed and converts it to other syndication feed type, writing the converted feed to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.SyndFeedOutput; + +/** + * It Converts any RSS/Atom feed type to a an RSS/Atom feed of the + * specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,new PrintWriter(System.out)); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt new file mode 100644 index 0000000..859b92b --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.apt @@ -0,0 +1,204 @@ + ----- + Rome v0.3 Tutorial, Using Rome to create and write a syndication feed + ----- + mkurz + ----- + 2011-08-15 14:00:50.552 + ----- + +Rome v0.3 Tutorial, Using Rome to create and write a syndication feed + + + <> J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Creating a feed with SyndFeedI beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeedI bean with 3 entries is created. + + + First the SyndFeedI instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. + + + ++------+ + +SyndFeedI feed = new SyndFeed(); +feed.setFeedType(feedType); + +feed.setTitle("Sample Feed (created with Rome)"); +feed.setLink("http://rome.dev.java.net"); +feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + ++------+ + + Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. + + + ++------+ + +List entries = new ArrayList(); +SyndEntryI entry; +SyndContentI description; + +entry = new SyndEntry(); +entry.setTitle("Rome v1.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); +entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); +description = new SyndContent(); +description.setType("text/plain"); +description.setValue("Initial release of Rome"); +entry.setDescription(description); +entries.add(entry); +... +entry = new SyndEntry(); +entry.setTitle("Rome v3.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); +entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); +description = new SyndContent(); +description.setType("text/html"); +description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); +entry.setDescription(description); +entries.add(entry); + ++------+ + + Finally the list with entries is added to the SyndFeedI bean. + + + ++------+ + +feed.setEntries(entries); + ++------+ + + The SyndFeedI bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. + + + Rome includes generators that allow producing syndication feed XML documents from SyndFeedI instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeedI bean. All it takes to write a syndication feed XML document using Rome \-assuming you have a SyndFeedI bean and a Writer instance\- are the following lines of code: + + + ++------+ + +SyndFeedI feed = ...; +Writer writer = ...; + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,writer); + ++------+ + + First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeedI bean to the Writer stream. + + + Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. + + + ++------+ + +package com.sun.syndication.samples; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.SyndFeedOutput; + +import java.io.FileWriter; +import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * It creates a feed and writes it to a file. + *

+ * + */ +public class FeedWriter { + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String feedType = args[0]; + String fileName = args[1]; + + SyndFeedI feed = new SyndFeed(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntryI entry; + SyndContentI description; + + entry = new SyndEntry(); + entry.setTitle("Rome v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContent(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntry(); + entry.setTitle("Rome v2.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + description = new SyndContent(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntry(); + entry.setTitle("Rome v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContent(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + Writer writer = new FileWriter(fileName); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + writer.close(); + + System.out.println("The feed has been written to the file ["+fileName+"]"); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); + System.out.println("The first parameter must be the syndication format for the feed"); + System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); + System.out.println("The second parameter must be the file name for the feed"); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.apt new file mode 100644 index 0000000..137740d --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.apt @@ -0,0 +1,95 @@ + ----- + Rome v0.3 Tutorial, Using Rome to read a syndication feed + ----- + mkurz + ----- + 2011-08-15 13:53:37.700 + ----- + +Rome v0.3 Tutorial, Using Rome to read a syndication feed + + + <> J2SE 1.4\+, JDOM B10 and Rome 0.3. + + + Rome represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeedI interface. The SyndFeedI interfaces and its properties follow the Java Bean patterns. The default implementations provided with Rome are all lightweight classes. + + + Rome includes parsers to process syndication feeds into SyndFeedI instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using Rome are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The SyndFeedInput.build() method returns a SyndFeedI instance that can be easily processed. + + + Obtaining the char based input stream has been simplified in this tutorial, the sample code in the distribution is a little more complex to handle charset encodings properly. + + + The default SyndFeedI implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + ++------+ + +System.out.println(feed); + ++------+ + + Following is the full code for a Java application that reads a syndication feed and prints the SyndFeedI bean to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import com.sun.syndication.feed.synd.SyndFeedI; +import com.sun.syndication.io.SyndFeedInput; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeedI feed = input.build(new InputStreamReader(feedUrl.openStream())); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.apt new file mode 100644 index 0000000..a26cdab --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.apt @@ -0,0 +1,29 @@ + ----- + Rome v0.3 Tutorials + ----- + mkurz + ----- + 2011-08-15 13:49:23.826 + ----- + +Rome v0.3 Tutorials + + + The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + + [[1]] {{{./RomeV0.3TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + [[1]] {{{./RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + [[1]] {{{./RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + [[1]] {{{./RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Using Rome to create and write a feed}} <<<(New)>>> + + [[1]] {{{./RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} <<<(New)>>> + + [] + + For instructions on how to build and run the samples used in the tutorials {{{./RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.html}click here}}. + diff --git a/src/site/apt/ROMEReleases/ROME0.3Beta/index.apt b/src/site/apt/ROMEReleases/ROME0.3Beta/index.apt new file mode 100644 index 0000000..600a35f --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.3Beta/index.apt @@ -0,0 +1,60 @@ + ----- + ROME 0.3 Beta + ----- + mkurz + ----- + 2011-08-15 13:47:07.902 + ----- + +ROME 0.3 Beta + + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM Beta 10}} + + [] + +*Downloads + + + + * {{{./rome\-0.3\-src.zip}rome\-0.3\-src.zip}} + + * {{{./rome\-0.3.tar.gz}rome\-0.3.tar.gz}} + + * {{{./rome\-0.3.zip}rome\-0.3.zip}} + + * {{{./rome\-0.3\-src.tar.gz}rome\-0.3\-src.tar.gz}} + + * {{{./rome\-samples\-0.3\-src.tar.gz}rome\-samples\-0.3\-src.tar.gz}} + + * {{{./rome\-samples\-0.3\-src.zip}rome\-samples\-0.3\-src.zip}} + + [] + +*Additional Information + + + + * {{{./RomeV0.3Tutorials/index.html}Tutorials}} (2 New ones) + + * Changes Log + + [] + +*Known Issues + + + + * Same issues as Rome v0.1 + + * When processing XML documents with DTD (ie: Netscape RSS 0.91) if the XML parser implementation is not Xerces and the system does not have access ot the internet, the XML parser will fail. + + * If the feed starts with a {{{http://www.unicode.org/faq/utf_bom.html#BOM}BOM}} the JAXP SAX parser may fail, using {{{http://xml.apache.org/xerces2\-j}Xerces 2.6.2}} addresses the problem. + + [] diff --git a/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.apt b/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.apt new file mode 100644 index 0000000..e570db0 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.apt @@ -0,0 +1,84 @@ + ----- + Rome v0.4, How to build and run the tutorials sample code + ----- + mkurz + ----- + 2011-08-15 13:32:24.939 + ----- + +Rome v0.4, How to build and run the tutorials sample code + + +*Building the samples with Maven + + + This is, as usual, the easiest way. + + + There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + If you built Rome run maven jar:install in the rome project to install Rome's jar in your Maven repository. + + + If you got Rome binary distribution copy the Rome's jar file to your Maven repository (on UNIX that would be <<>>). + + + Then building the samples it's easy as a pie, just run maven jar in the samples sub\-project and you are all set. + + + To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, <<>>, will be created under the <<>> directory. + + +*Building the samples with Ant + + + The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files Rome depends on and are needed for building an application using Rome. + + + In order to build the samples (or any subprojects), you'll need to first ensure that rome itself is built. You can do this simply by running ant in the project root directory. + + + Once this is done, change to the samples directory, and just run ant. This will produce two files, rome\-samples.jar which contains the sample applications, and rome\-samples.war which will contain a deployable web application war file for the FeedServlet sample. + + +*Running the samples with Maven + + + The Maven goals for running the samples are defined in maven.xml. They should all generate the same file named toto, but somehow it ends up empty. However the output is correctly sent to the console. We'll fix that glitch later. + + + + * <<>> runs the FeedAggregator sample + + * <<>> runs the FeedConverter sample + + * <<>> runs the FeedReader sample + + * <<>> runs the FeedWriter sample + + * <<>> runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + [] + + To run the sample Web Application you'll need to deploy the WAR file into your servlet container. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the <<<$\{TOMCAT\}/webapps>>> directory the URL for the <<>> would be {{{http://localhost:8080/rome\-samples/feed}http://localhost:8080/rome\-samples/feed}} in a default localhost Tomcat installation. + + +*Running the samples with Ant + + + All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + + * <<>> runs the FeedAggregator sample + + * <<>> runs the FeedConverter sample + + * <<>> runs the FeedReader sample + + * <<>> runs the FeedWriter sample + + * <<>> runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + [] diff --git a/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.apt b/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.apt new file mode 100644 index 0000000..ffe3122 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.apt @@ -0,0 +1,242 @@ + ----- + Rome v0.4 Tutorial, Using Rome within a Servlet to create and return a feed + ----- + mkurz + ----- + 2011-08-15 13:29:48.938 + ----- + +Rome v0.4 Tutorial, Using Rome within a Servlet to create and return a feed + + + <> J2SE 1.4\+, Servlet Container 2.3\+, JDOM 1.0 and Rome 0.4. + + + This sample consists of a servlet that serves a feed as response. The feed type (RSS in any of its variants or Atom) can be specified as a URL parameter when requesting the feed. The returned feed is hardwired in the sample and it would be straight forward to modify the sample to generate the feed dynamically (i.e. from data stored in a database). + + + The core logic of the <<>> is in the following fragment of code: + + + ++------+ + +public class FeedServlet extends HttpServlet { + ... + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + ... + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + ... + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + feed = ... + return feed; + } + +} + ++------+ + + The servlet returns a feed upon HTTP GET requests with the <<>> method. + + + First the <<>> bean is obtained by invoking the <<>> method, the request object is passed as it could be used to obtain request contextual information to create the feed. How to create a feed using SyndFeed bean is explained in detail in the {{{../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Using Rome to create and write a feed}} Tutorial. + + + Then the feed type of the response is determined, first looking at the request parameters and falling back to a default feed type (specified by a servlet init parameter) if the type is not indicated in the request parameters. Setting the feed type in the feed bean will indicate the <<>> the feed type to output. + + + Finally, the response is set with the proper content type (the MIME_TYPE constant is 'application/xml; charset\=UTF\-8') and the feed is written to response writer using the <<>> output classes. + + + Following is the full code for the servlet. + + + ++------+ + +package com.sun.syndication.samples.servlet; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.FeedException; +import com.sun.syndication.io.SyndFeedOutput; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * Sample Servlet that serves a feed created with Rome. + *

+ * The feed type is determined by the 'type' request parameter, if the parameter is missing it defaults + * to the 'default.feed.type' servlet init parameter, if the init parameter is missing it defaults to 'atom_0.3' + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedServlet extends HttpServlet { + private static final String DEFAULT_FEED_TYPE = "default.feed.type"; + private static final String FEED_TYPE = "type"; + private static final String MIME_TYPE = "application/xml; charset=UTF-8"; + private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed"; + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + private String _defaultFeedType; + + public void init() { + _defaultFeedType = getServletConfig().getInitParameter(DEFAULT_FEED_TYPE); + _defaultFeedType = (_defaultFeedType!=null) ? _defaultFeedType : "atom_0.3"; + } + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + try { + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + } + catch (FeedException ex) { + String msg = COULD_NOT_GENERATE_FEED_ERROR; + log(msg,ex); + res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg); + } + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + + feed.setTitle("Sample Feed (created with Rome)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using Rome (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.1"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of Rome"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.2"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"+ + "

For details check the Changes Log for 0.2

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.3"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log for 0.3

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.4"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome04"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-09-24")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features, Unit testing completed

"+ + "

For details check the Changes Log for 0.4

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + return feed; + } + +} + ++------+ + + To use the <<>> we need to create a Web Application. For the Web Application we need a deployment descriptor, the <<>> file: + + + ++------+ + + + + + + Rome Samples + + + FeedServlet + com.sun.syndication.samples.servlet.FeedServlet + + default.feed.type + rss_2.0 + + + + + FeedServlet + /feed + + + + ++------+ + + To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, <<>>, will be created under the <<>> directory. Deploy the WAR in a servlet container and the <<>> should be up an running. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the <<<$\{TOMCAT\}/webapps>>> directory the URL for the <<>> would be {{{http://localhost:8080/rome\-samples/feed}http://localhost:8080/rome\-samples/feed}} in a default localhost Tomcat installation. + diff --git a/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.apt b/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.apt new file mode 100644 index 0000000..c9d2343 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.apt @@ -0,0 +1,31 @@ + ----- + Rome v0.4 Tutorials + ----- + mkurz + ----- + 2011-08-15 13:26:41.706 + ----- + +Rome v0.4 Tutorials + + + The following tutorials show how to use the Rome API. They focus on the higher abstraction layer of classes offered by Rome, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + + [[1]] {{{../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + [[1]] {{{../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + [[1]] {{{../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + [[1]] {{{../../../HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Using Rome to create and write a feed}} + + [[1]] {{{../../../HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} + + [[1]] {{{./RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.html}Using Rome within a Servlet to create and return a feed}} <<<(NEW)>>> + + [] + + For instructions on how to build and run the samples used in the tutorials {{{./RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.html}click here}}. + diff --git a/src/site/apt/ROMEReleases/ROME0.4Beta/index.apt b/src/site/apt/ROMEReleases/ROME0.4Beta/index.apt new file mode 100644 index 0000000..eb4f70f --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.4Beta/index.apt @@ -0,0 +1,94 @@ + ----- + ROME 0.4 Beta + ----- + mkurz + ----- + 2011-08-15 13:35:59.126 + ----- + +ROME 0.4 Beta + + +*What is New, Highlights + + + + * Changed naming convention of bean interfaces and implementations (i.e.: SyndFeedI/SyndFeed are now SyndFeed/SyndFeedImpl) + + * New XmlReader that handles charset encoding as defined by the XML 1.0 specification and RFC 3023 + + * Support of RSS 0.91 Netscape and RSS 0.91 Userland as distinct feed types + + * All feed types have Modules support + + * Added checks to generators reducing the chances of generating invalid feeds + + * Comprehensive Unit testing + + * Bug fixes + + * More documentation and samples + + * Dependencies, upgraded to JDom 1.0 and removed Xerces + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-0.4\-src.zip}rome\-0.4\-src.zip}} + + * {{{./rome\-0.4.tar.gz}rome\-0.4.tar.gz}} + + * {{{./rome\-0.4.zip}rome\-0.4.zip}} + + * {{{./rome\-0.4\-src.tar.gz}rome\-0.4\-src.tar.gz}} + + * {{{./rome\-samples\-0.4\-src.tar.gz}rome\-samples\-0.4\-src.tar.gz}} + + * {{{./rome\-samples\-0.4\-src.zip}rome\-samples\-0.4\-src.zip}} + + [] + +*Additional Information + + + + * {{{./RomeV0.4Tutorials/index.html}Tutorials}} + + * {{{../../ChangeLog.html}Changes Log}} + + * Inside ROME, How Things Work + + * {{{../../HowRomeWorks/index.html}How ROME Works}}, Understanding Rome (a detailed overview by Dave Johnson) + + * {{{../../HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html}Rome common Package}}, bean utilities, enums, copying and clonning + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how Rome helps getting the right charset encoding + + + + [] + +*Known Issues + + + None. + diff --git a/src/site/apt/ROMEReleases/ROME0.5Beta/ROMET-Shirt.apt b/src/site/apt/ROMEReleases/ROME0.5Beta/ROMET-Shirt.apt new file mode 100644 index 0000000..e353641 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.5Beta/ROMET-Shirt.apt @@ -0,0 +1,26 @@ + ----- + ROME T-Shirt + ----- + mkurz + ----- + 2011-08-15 12:34:25.248 + ----- + +ROME T\-Shirt + + + I made it quickly before taking a plane, and ruined my iron when trying to press it myself on a T\-shirt, but it's better than nothing and a T\-shirt is vital to an open source project! + + + It's at {{{http://www.cafepress.com/chanezon.13794826}http://www.cafepress.com/chanezon.13794826}} + + + Else just print the design yourself and iron it on a T\-shirt (advice from P@ the practical guy: don't try to iron glossy paper photo on a T\-shirt + + + +[http://blogs.sun.com/roller/resources/pat/_rome-t-shirt.png] + + + \-\- {{{http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon}PatrickChanezon}} \- 10 Jan 2005 + diff --git a/src/site/apt/ROMEReleases/ROME0.5Beta/index.apt b/src/site/apt/ROMEReleases/ROME0.5Beta/index.apt new file mode 100644 index 0000000..859be00 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.5Beta/index.apt @@ -0,0 +1,94 @@ + ----- + ROME 0.5 Beta + ----- + mkurz + ----- + 2011-08-15 12:32:36.814 + ----- + +ROME 0.5 Beta + + +*What is New, Highlights + + + + * Removed common package and classes from the public API + + * Removed Enum class, using constants now + + * XmlReader now has a lenient behavior for charset encoding detection + + * Bug fixes + + * {{{./ROMET\-Shirt.html}ROME T\-Shirt (rome)}} + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-0.5\-src.zip}rome\-0.5\-src.zip}} + + * {{{./rome\-0.5.tar.gz}rome\-0.5.tar.gz}} + + * {{{./rome\-0.5.zip}rome\-0.5.zip}} + + * {{{./rome\-0.5\-src.tar.gz}rome\-0.5\-src.tar.gz}} + + * {{{./rome\-samples\-0.5\-src.tar.gz}rome\-samples\-0.5\-src.tar.gz}} + + * {{{./rome\-samples\-0.5\-src.zip}rome\-samples\-0.5\-src.zip}} + + [] + +*Additional Information + + + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Tutorials}} + + * {{{../../ChangeLog.html}Changes Log}} + + * Inside ROME, How Things Work + + * {{{../../HowRomeWorks/index.html}How ROME Works}}, Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how ROME helps getting the right charset encoding + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Creating a custom Module}}, creating all necessary pieces, bean, parser and generator + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface}} + + + + * Implementation documents + + * {{{../../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}ROME bean utilities, equals, toString and clonning}} + + + + [] + +*Known Issues + + + None. + diff --git a/src/site/apt/ROMEReleases/ROME0.6Beta.apt b/src/site/apt/ROMEReleases/ROME0.6Beta.apt new file mode 100644 index 0000000..911eeaa --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.6Beta.apt @@ -0,0 +1,89 @@ + ----- + ROME 0.6 Beta + ----- + mkurz + ----- + 2011-08-15 12:36:05.599 + ----- + +ROME 0.6 Beta + + + Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.6 is reusing ROME 0.5 Wiki pages as most of the changes are internal and the documentation has not changed. + + +*What is New, Highlights + + + + * Bug fixes + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-0.6\-src.zip}rome\-0.6\-src.zip}} + + * {{{./rome\-0.6.tar.gz}rome\-0.6.tar.gz}} + + * {{{./rome\-0.6.zip}rome\-0.6.zip}} + + * {{{./rome\-0.6\-src.tar.gz}rome\-0.6\-src.tar.gz}} + + * {{{./rome\-samples\-0.6\-src.tar.gz}rome\-samples\-0.6\-src.tar.gz}} + + * {{{./rome\-samples\-0.6\-src.zip}rome\-samples\-0.6\-src.zip}} + + [] + +*Additional Information + + + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Tutorials}} + + * {{{../ChangeLog.html}Changes Log}} + + * Inside ROME, How Things Work + + * {{{../HowRomeWorks/index.html}How ROME Works}}, Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how ROME helps getting the right charset encoding + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Creating a custom Module}}, creating all necessary pieces, bean, parser and generator + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface}} + + + + * Implementation documents + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}ROME bean utilities, equals, toString and clonning}} + + + + [] + +*Known Issues + + + None. + diff --git a/src/site/apt/ROMEReleases/ROME0.7Beta.apt b/src/site/apt/ROMEReleases/ROME0.7Beta.apt new file mode 100644 index 0000000..1d3e43b --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.7Beta.apt @@ -0,0 +1,91 @@ + ----- + ROME 0.7 Beta + ----- + mkurz + ----- + 2011-08-15 12:08:20.698 + ----- + +ROME 0.7 Beta + + + Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.7 is reusing ROME 0.5 Wiki pages as most of the changes are internal. + + +*What is New, Highlights + + + + * We got a cool logo + + * Bug fixes + + * Several Date and time parsing improvements including support for custom parsing masks + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-0.7\-src.zip}rome\-0.7\-src.zip}} + + * {{{./rome\-0.7.tar.gz}rome\-0.7.tar.gz}} + + * {{{./rome\-0.7.zip}rome\-0.7.zip}} + + * {{{./rome\-0.7\-src.tar.gz}rome\-0.7\-src.tar.gz}} + + * {{{./rome\-samples\-0.7\-src.tar.gz}rome\-samples\-0.7\-src.tar.gz}} + + * {{{./rome\-samples\-0.7\-src.zip}rome\-samples\-0.7\-src.zip}} + + [] + +*Additional Information + + + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Tutorials}} + + * {{{../ChangeLog.html}Changes Log}} + + * Inside ROME, How Things Work + + * {{{../HowRomeWorks/index.html}How ROME Works}}, Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how ROME helps getting the right charset encoding + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Creating a custom Module}}, creating all necessary pieces, bean, parser and generator + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface}} + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}ROME bean utilities, equals, toString and clonning}} + + * {{{../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html}Customizing Date and time parsing}} in the rome.properties file <> + + + + [] + +*Known Issues + + + None. + diff --git a/src/site/apt/ROMEReleases/ROME0.8Beta.apt b/src/site/apt/ROMEReleases/ROME0.8Beta.apt new file mode 100644 index 0000000..4b9f28b --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.8Beta.apt @@ -0,0 +1,94 @@ + ----- + ROME 0.8 Beta + ----- + mkurz + ----- + 2011-08-15 12:35:29.441 + ----- + +ROME 0.8 Beta + + + Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.8 is reusing ROME 0.7 Wiki pages as much as possible. + + +*What is New, Highlights + + + + * ROME now supports the final version of the Atom Syndication Format {{{http://www.ietf.org/rfc/rfc4287}RFC 4287}}: let's Nuke all these feeds! <> + + * Enclosure support at the Synd level, for all our podcaster friends + + * Bug fixes + + * details in the ChangeList + + * Modules galore: Content, iTunes Podcast, Slash, Google Base, Creative Commons, MediaRSS + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-0.8\-src.zip}rome\-0.8\-src.zip}} + + * {{{./rome\-0.8.tar.gz}rome\-0.8.tar.gz}} + + * {{{./rome\-0.8.zip}rome\-0.8.zip}} + + * {{{./rome\-0.8\-src.tar.gz}rome\-0.8\-src.tar.gz}} + + [] + +*Additional Information + + + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Tutorials}} + + * {{{../ChangeLog.html}Changes Log}} + + * Inside ROME, How Things Work + + * {{{../HowRomeWorks/index.html}How ROME Works}}, Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how ROME helps getting the right charset encoding + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Creating a custom Module}}, creating all necessary pieces, bean, parser and generator + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface}} + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}ROME bean utilities, equals, toString and clonning}} + + * {{{../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html}Customizing Date and time parsing}} in the rome.properties file <> + + + + [] + +*Known Issues + + + None. + + + \-\- {{{http://wiki.java.net/twiki/bin/view/Main/PatrickChanezon}PatrickChanezon}} \- 02 Feb 2006 + diff --git a/src/site/apt/ROMEReleases/ROME0.9Beta.apt b/src/site/apt/ROMEReleases/ROME0.9Beta.apt new file mode 100644 index 0000000..60c93d9 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME0.9Beta.apt @@ -0,0 +1,100 @@ + ----- + ROME 0.9 Beta + ----- + mkurz + ----- + 2011-08-15 11:58:02.820 + ----- + +ROME 0.9 Beta + + + Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 0.9 is reusing ROME 0.8 Wiki pages as much as possible. + + +*What is New, Highlights + + + + * Better support for RSS feeds that use + + * Better mapping for RSS description/content and Atom summary/content + + * Numerous bug fixes + + * Details in the ChangeList + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-samples\-0.9.tar.gz}rome\-samples\-0.9.tar.gz}} + + * {{{./rome\-0.9.tar.gz}rome\-0.9.tar.gz}} + + * {{{./rome\-0.9\-src.zip}rome\-0.9\-src.zip}} + + * {{{./rome\-0.9\-src.tar.gz}rome\-0.9\-src.tar.gz}} + + * {{{./rome\-0.9.zip}rome\-0.9.zip}} + + * {{{./rome\-samples\-0.9.zip}rome\-samples\-0.9.zip}} + + * {{{./rome\-samples\-0.9\-src.tar.gz}rome\-samples\-0.9\-src.tar.gz}} + + * {{{./rome\-samples\-0.9\-src.zip}rome\-samples\-0.9\-src.zip}} + + [] + +*Additional Information + + + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Tutorials}} + + * {{{../ChangeLog.html}Changes Log}} + + * Inside ROME, How Things Work + + * {{{../HowRomeWorks/index.html}How ROME Works}}, Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how ROME helps getting the right charset encoding + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Creating a custom Module}}, creating all necessary pieces, bean, parser and generator + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface}} + + * {{{../RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}ROME bean utilities, equals, toString and clonning}} + + * {{{../RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html}Customizing Date and time parsing}} in the rome.properties file <> + + + + [] + +*Known Issues + + + None. + + + \-\- Main.snoopdave \- 06 Dec 2006 + diff --git a/src/site/apt/ROMEReleases/ROME1.0RC1.apt b/src/site/apt/ROMEReleases/ROME1.0RC1.apt new file mode 100644 index 0000000..8247234 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME1.0RC1.apt @@ -0,0 +1,68 @@ + ----- + ROME 1.0 RC1 + ----- + mkurz + ----- + 2011-08-14 17:22:56.542 + ----- + +ROME 1.0 RC1 + + +*Rss and atOM utiliEs (ROME) v1.0 RC1 (16 Jul 2008) + + + Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 1.0 is reusing wikis from previous versions as there are not significant changes. + + +*What is New, Highlights + + + + * Several XmlReader fixes + + * Several Atom 1.0 bean, parser and generator fixes + + * Some RSS fixes + + * Removal of unused namespaces + + * Details in the {{{../ChangeLog.html}change log}} + + [] + +*Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-samples\-1.0RC1\-src.zip}rome\-samples\-1.0RC1\-src.zip}} + + * {{{./rome\-1.0RC1\-src.zip}rome\-1.0RC1\-src.zip}} + + * {{{./rome\-1.0RC1.tar.gz}rome\-1.0RC1.tar.gz}} + + * {{{./rome\-1.0RC1.zip}rome\-1.0RC1.zip}} + + * {{{./rome\-1.0RC1\-src.tar.gz}rome\-1.0RC1\-src.tar.gz}} + + * {{{./rome\-samples\-1.0RC1\-src.tar.gz}rome\-samples\-1.0RC1\-src.tar.gz}} + + [] + +*Documentation + + + + * {{{http://rome.dev.java.net/apidocs/1_0RC1/overview\-summary.html}Javadocs}} + + [] diff --git a/src/site/apt/ROMEReleases/ROME1.0RC2.apt b/src/site/apt/ROMEReleases/ROME1.0RC2.apt new file mode 100644 index 0000000..1f16383 --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME1.0RC2.apt @@ -0,0 +1,58 @@ + ----- + ROME 1.0 RC2 + ----- + mkurz + ----- + 2011-08-14 17:19:36.245 + ----- + +ROME 1.0 RC2 + + +*What is New, Highlights + + + + * ROME is now {{{../HowToBuildRome.html}built using Maven 2}} + + * ROME jars are now available in the {{{../ROMEAndMaven2.html}java.net Maven repository}} + + * More lenient handling of Number formats during parsing + + * Better date parsing for Atom dates + + * Complete details in the {{{../ChangeLog.html}change log}} + + [] + +*Dependencies + + + + * {{{http://wiki.java.net/twiki/bin/view/Javawsxml/J2SE}J2SE}} 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}} + + [] + +*Downloads + + + + * {{{./rome\-fetcher\-1.0RC2\-src.zip}rome\-fetcher\-1.0RC2\-src.zip}} + + * {{{./rome\-1.0RC2.jar}rome\-1.0RC2.jar}} + + * {{{./rome\-1.0RC2\-javadoc.jar}rome\-1.0RC2\-javadoc.jar}} + + * {{{./rome\-1.0RC2\-sources.jar}rome\-1.0RC2\-sources.jar}} + + [] + +*Documentation + + + + * {{{http://rome.dev.java.net/apidocs/1_0RC2/overview\-summary.html}Javadocs}} + + [] diff --git a/src/site/apt/ROMEReleases/ROME1.0Release.apt b/src/site/apt/ROMEReleases/ROME1.0Release.apt new file mode 100644 index 0000000..5bdbebe --- /dev/null +++ b/src/site/apt/ROMEReleases/ROME1.0Release.apt @@ -0,0 +1,66 @@ + ----- + ROME 1.0 Release + ----- + mkurz + ----- + 2011-08-15 14:48:27.959 + ----- + +ROME 1.0 Release + + + + + +*What is New / Highlights + + + Normally each release of ROME includes a whole new set of Wiki pages with the corresponding version number. ROME 1.0 is reusing wikis from previous versions as there are not significant changes. + + + + * ROME can now optionally preserve WireFeed (ie, Atom/RSS specific) data and make it available via the SyndFeed data model. See {{{../PreservingWireFeeds.html}PreservingWireFeeds}} for further details + + [] + + + * Complete details in the {{{../ChangeLog.html}change log}} + + [] + +**Downloads + + + + * {{{./rome\-1.0.jar}rome\-1.0.jar}} + + * {{{./rome\-1.0\-sources.jar}rome\-1.0\-sources.jar}} + + * {{{./rome\-1.0\-javadoc.jar}rome\-1.0\-javadoc.jar}} + + * {{{./rome\-1.0.jar}rome\-1.0.jar}} + + * {{{./rome\-1.0\-javadoc.jar}rome\-1.0\-javadoc.jar}} + + * {{{./rome\-1.0\-sources.jar}rome\-1.0\-sources.jar}} + + [] + +**Dependencies + + + + * J2SE 1.4\+ + + * {{{http://www.jdom.org/}JDOM 1.0}}\ + + + [] + +**Documentation + + + + * {{{http://rome.dev.java.net/apidocs/1_0/overview\-summary.html}Javadocs}} + + [] diff --git a/src/site/apt/ROMEReleases/index.apt b/src/site/apt/ROMEReleases/index.apt new file mode 100644 index 0000000..b9b95fc --- /dev/null +++ b/src/site/apt/ROMEReleases/index.apt @@ -0,0 +1,38 @@ + ----- + ROME Releases + ----- + mkurz + ----- + 2011-08-15 14:51:42.765 + ----- + +ROME Releases + + +*----+--+ +||Version||Release Date| +*----+--+ +|{{{./ROME1.0Release.html}ROME 1.0}}|March 12, 2009| +*----+--+ +|{{{./ROME1.0RC2.html}Rome v1.0 RC2}}|Jan 9, 2009| +*----+--+ +|{{{./ROME1.0RC1.html}Rome v1.0 RC1}}|Jul 16, 2007| +*----+--+ +|{{{./ROME0.9Beta.html}Rome v0.9 Beta}}|Dec 11, 2006| +*----+--+ +|{{{./ROME0.8Beta.html}Rome v0.8 Beta}}|Feb 01, 2006| +*----+--+ +|{{{./ROME0.7Beta.html}Rome v0.7 Beta}}|Sep 09, 2005| +*----+--+ +|{{{./ROME0.6Beta.html}Rome v0.6 Beta}}|Apr 01, 2005| +*----+--+ +|{{{./ROME0.5Beta/index.html}Rome v0.5 Beta}}|Jan 10, 2005| +*----+--+ +|{{{./ROME0.4Beta/index.html}Rome v0.4 Beta}}|Sep 27, 2004| +*----+--+ +|{{{./ROME0.3Beta/index.html}Rome v0.3 Beta}}|Jul 28, 2004| +*----+--+ +|{{{./ROME0.2Beta/index.html}Rome v0.2 Beta}}|Jun 16, 2004| +*----+--+ +|{{{./ROME0.1Beta/index.html}Rome v0.1 Beta}}|Jun 08, 2004| +*----+--+ diff --git a/src/site/apt/RomeAPIFAQ.apt b/src/site/apt/RomeAPIFAQ.apt new file mode 100644 index 0000000..c3a3985 --- /dev/null +++ b/src/site/apt/RomeAPIFAQ.apt @@ -0,0 +1,127 @@ + ----- + Rome API FAQ + ----- + mkurz + ----- + 2011-08-14 14:37:43.201 + ----- + +Rome API FAQ + + + As we were designing and implementing Rome we had discusssions, brainstorming and code reviews on the API. We've captured them in this document. + + +*Do SyndFeed support arbitrary Metadata? + + + Yes, using what we call Modules. Currently we support the 2 modules defined in RSS 1.0, {{{http://purl.org/rss/1.0/modules/dc/}Dublin Core}} and {{{http://purl.org/rss/1.0/modules/syndication/}Syndication}}. They are wired when converting from SyndFeed beans to RSS/Atom feeds beans and vice versa. We use the RSS 1.0 terminology of Modules because RSS 1.0 is the specification that defined and used extensibility the most. RSS 2.0 and Atom use XML namespaces to extend the feed. + + + However we will develop, and encourage developers to develop Rome specific Modules to handle future RSS 2.0 and Atom extensions. + + + If additional modules are defined to express metadata the converters should be modified to handle them. And the same goes for the parsers and generators or RSS/Atom feeds. + + +*Why those package, interfaces, classes and method names? + + + We've struggled (and still are struggling) with names. We renamed and moved things around until we got dizzy. If you have suggestions please let us know. + + +*Where are the parser, generator and converter implementations? + + + They are in hidden (not javadoc\-ed) packages within the Rome jar file. Their classes are loaded using declarations in a properties file. It is possible for developers to add or replace implementations of these components without modifying Rome source code, just by indicating an addition properties file to look for extra implementation classes. + + +*What are the interfaces and classes in the syndication.common package for? And why most bean (or interface) extend/implement them? + + + At first we got tired of modifying the toString() methods every time we were adding/removing a property. As we were strictly following the Bean patterns we wrote a toString() method that would traverse the properties and print them. Then we went recursively. Then we refactor that into an interface and provided an adapter. + + + Later we did the same to handle equals/hashcode, which is very useful when using Maps. + + + To complete the task we did the same for cloning, providing deep cloning support. + + + The ObjectBean is a base class that implements all these features. All Rome beans extend ObjectBean getting a toString, equals, hashcode and clone support for free. + + +*What are the property values when not set? + + + For Boolean is <>. For numbers is 1. For String is null. For collections is an empty collection (even if you set it to null you get an empty collection). For all other objects is null. + + +*Are properties copied by value or by reference when set or gotten? + + + All properties as always handled by reference (except primitive types). If they are not immutable and you modify them you are affecting the bean/s that reference them too. + + +*What is with the interface and implementation names in the synd and module packages? + + + Interfaces have the following naming pattern: \I. Default implementations provided with Rome are named just \. For example, SyndFeedI is the interface and SyndFeed is the default implementation. + + + We decided to use \ for the default implementation classes as we think they'll be the implementation of choice most of the time. + + +*Why the beans in the synd and module packages have interface and implementation versions of them? + + + We added interfaces only for the higher abstraction layer of Rome, SyndFeed (and Modules as they are used to express extensible metadata for SyndFeed instances). The reasoning behind such decoupling was to allow facading existing classes as SyndFeed beans. For example some persistent classes. This would allow to process them through components that work with SyndFeedI. + + +*Why the RSS and Atom beans don't have interface and implementation versions of it? + + + We thought about this, we dismissed the idea. The reasoning was that we expect to work with the SyndFeed and Module beans all the time and the convenience of using interface should be at that level only. We have RSS and Atom only because we have folks going and making up things without talking to each other. In short, we expect all our application processing to be done in a feed agnostic way in Java using SyndFeed and Module beans. + + +*How all the escaping for the description elements is handled for the different feed types as they keep changing their mind version after version? + + + Item description MIME type, depending on the RSS version is text/plain (0.91), text/html (0.92, 0.93, 2.0) or configurable (0.94). The thing is that when you get the value out of JDOM Element it's always XML unescaped. When putting data into a JDOM Element the data is XML escaped. This is not 100% correct but it will work in most of the cases. + + + Note that type in feed beans indicate what was the escaping type of the underlying feed, but if you get the value is already unescaped. + + +*How does Rome handle Atom content elements that support encoding (Base64, XML, plain) using the mode attribute? + + + The mode in feed in content indicates what was the encoding of the element in the feed, but when you get the value is already unencoded. + + +*What kind of input and output Rome supports? + + + Rome implementation currently uses JDOM for parsing and generating syndication feeds. As people tend to use the XML libraries they feel more comfortable with we have built in support for SAX, DOM, JDOM, byte streams, character streams and strings. + + +*What is the SyndFeedI.getSupportedFeedTypes() method for? + + + This method was originally a static method in the SyndFeed class. We've moved ot the SyndFeedI interface as we thought it would be useful to be able to ask a SyndFeedI instance the feed converters it handles. + + +*Are Rome beans Serializable? Why? + + + Yes, the default bean implementations of SyndFeedI provided with Rome are Serializable. + + + However, the \*I interfaces are not. We made that decision consciously and the reason behind it is closely related to the reason we introduced the \*I interfaces. You may want to extend some existing classes to implement SyndFeedI, and these classes you are extending may not be Serializable and cannot be (for example, they are tied to a live InputStream). + + +*Why all those packages? + + + TBD + diff --git a/src/site/apt/RomeV0.4FeedAndEntryURIMapping.apt b/src/site/apt/RomeV0.4FeedAndEntryURIMapping.apt new file mode 100644 index 0000000..c3d1055 --- /dev/null +++ b/src/site/apt/RomeV0.4FeedAndEntryURIMapping.apt @@ -0,0 +1,100 @@ + ----- + Rome v0.4, Feed and Entry URI Mapping + ----- + mkurz + ----- + 2011-08-15 06:41:03.135 + ----- + +Rome v0.4, Feed and Entry URI Mapping + + + Rome Synd beans define the concept of URI at both feed and entry levels. The purpose of this URI is to help uniquely identifying feeds and entries when processed with Rome. This is particularly useful when a system is persisting feeds and when doing data manipulation where a primary key for the feeds or the entries is needed. + + +*The Problem + + + RSS 0.90, 0.91, 0.92, 0.93 and 1.0 do not define any special element for the purposes of identifying the feed or the items other than the items link element. The channel link element cannot be used to identify the feed as its semantics is to refer to the web site that has the information being published through the feed and, if web site offers more than one feed most likely both of them will have the same feed link value. + + + RSS 0.94 and RSS 2.0 define the guid element at item level. The guid element has an overloaded meaning. If the isPermalink attribute is true, the guid value can be used also as the URL for the item instead of the link element as well as a unique ID for the item. If the isPermalink attribute is false, the guid value can be used as a unique ID for the item. However, RSS 0.94 or RSS 2.0, do not define that the value of the guid element must be an URI. + + + Atom 0.3 defines an id element at feed and entry levels. The id element is defined as an URI. The Atom specification being currently designed requires the id element to contain a normalized URI as defined by RFC 2396bis. + + + The RSS0.94 and RSS 2.0 guid element and the Atom 0.3 id element are optional elements. Because of this, they may not be present at all in feeds. + + +*Rome's Solution + + + Because the concept of a URI it is not defined in all the feed formats, Rome makes an arbitrary design decision to provide the URI functionality regardless of the original (or target) feed type. The following behavior as been chosen based on expected and assumed usage pattern of feed and entry data. + + +*URI Normalization + + + If the uri property of a SyndFeed or SyndEntry bean is not NULL, the getter method must return a normalized URI following the rules defined in RFC2396bis. + + +**Converting from WireFeed (RSS or Atom) to SyndFeed + + + The common use case for this scenario is when consuming a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +**SyndFeed + + + None of the RSS versions define an ID at channel level. In addition to this, Rome input classes (WireFeedInput and SyndFeedInput) do not have access to the URL (if any) used to fetch the feed. Because of this Rome does not set in the SyndFeed uri property , it is left to developer to set (if needed) a URI in the feed bean. + + + In the case of Atom 0.3, if the id element is present in the feed, the SyndFeed uri property will be set with the value of the id element. If it is not present, the developer must set (if needed) a URI manually. + + +***SyndEntry + + + For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 if the link element is present in the item, the SyndEntry uri property will be set with the value of the link element. Otherwise the SyndEntry uri property is left as NULL and the developer must set it (if needed). + + + For RSS 0.94 & RSS 2.0 if the guid property is present in the item, the SyndEntry uri property will be set with the value of the guid element. If the guid element is not present, the SyndEntry uri property will be set with the value of the link element. If the link element is missing but the guid is present and it is flagged as a permalink, Rome will set set the SyndEntry link property with the value of the guid element (Rome is doing this because is a common practice to generated RSS 2.0 fees with guid elements marked as permalinks and without a link element). + + + For Atom 0.3 if the id element is present, the SyndEntry uri property is set with the value of the id element. If the id element is not present, the SyndEntry uri property is set with the value of the alternate link element. + + +**Converting from SyndFeed to WireFeed (RSS or Atom) + + + The common use case for this scenario is when generating a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +***SyndFeed + + + For RSS 0.91, RSS 0.92, RSS 0.93, RSS 1.0 & RSS 2.0 the SyndFeed uri property is lost as there is not possible representation in the channel element for it. + + + For Atom 0.3 set the SyndFeed uri property is set as the value for the id element. + + +***SyndEntry + + + For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 the SyndEntry uri property is lost as there is not possible representation in the item element for it. + + + For RSS 0.94 & RSS 2.0 the SyndEntry uri property is set as the value of the guid element with permalink set to false. If the SyndEntry uri property is not set, the SyndEntry link property is set as the value of the guid element with permalink set to true. Note that if the SyndFEntry linkproperty is missing the SyndEntry uri cannot be set as the value of the link element because it cannot be assumed that the uri property is an URL. + + + Because SyndEntry instances always return a normalized URI the value of the guid elements of a generated RSS 0.94 or RSS 2.0 may differ from the values of the guid elements of the original feed. + + + For Atom 0.3 the SyndEntry uri property is set as the id element. + + + Mosh... + diff --git a/src/site/apt/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.apt b/src/site/apt/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.apt new file mode 100644 index 0000000..1486e65 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.apt @@ -0,0 +1,43 @@ + ----- + Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing + ----- + mkurz + ----- + 2011-08-15 09:49:56.580 + ----- + +Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing + + + Date and time elements seem to be error prone. RSS feeds use RFC822 datetime formats and Atom feeds use W3C datetime formats. Both RFC822 and W3C support quite a few flavors for specifying date and time. Some feeds use the wrong standard (such as some RSS feeds using W3C dates). Other feeds have an ENTER before or after the date. And another feeds use an arbitrary format altogether. + + + To help cope with this ROME makes a few tricks: + + + + * It trims datetime elements before parsing them. + + * It tries both RFC822 and W3C formats in all feeds. + + * It uses custom format masks (if provided) when the previous steps fail. + + [] + +*Using Custom Format Masks + + + Custom format masks can be specified in the file in any of the classpath elements. + + + The masks must be specified in the property. + + + If more than one mask is to be specified they must be separated with '|' characters. + + + The syntax for the masks is the one use by by the class. Always US Locale is assumed for the masks. + + + If datetime masks are specified in more than one file in teh classpath, they are all aggregated. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.apt new file mode 100644 index 0000000..9eac566 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.apt @@ -0,0 +1,97 @@ + ----- + Feed and Entry URI Mapping, how SyndFeed and SyndEntry 'uri' properties map to RSS and Atom elements + ----- + mkurz + ----- + 2011-08-15 09:05:43.877 + ----- + +Feed and Entry URI Mapping, how SyndFeed and SyndEntry 'uri' properties map to RSS and Atom elements + + + Rss and atOM utilitiEs (ROME) Synd\* beans define the concept of URI at both feed and entry levels. The purpose of this URI is to help uniquely identifying feeds and entries when processed with ROME. This is particularly useful when a system is persisting feeds and when doing data manipulation where a primary key for the feeds or the entries is needed. + + +*The Problem + + + RSS 0.90, 0.91, 0.92, 0.93 and 1.0 do not define any special element for the purposes of identifying the feed or the items other than the items link element. The channel link element cannot be used to identify the feed as its semantics is to refer to the web site that has the information being published through the feed and, if web site offers more than one feed most likely both of them will have the same feed link value. + + + RSS 0.94 and RSS 2.0 define the guid element at item level. The guid element has an overloaded meaning. If the isPermalink attribute is true, the guid value can be used also as the URL for the item instead of the link element as well as a unique ID for the item. If the isPermalink attribute is false, the guid value can be used as a unique ID for the item. However, RSS 0.94 or RSS 2.0, do not define that the value of the guid element must be an URI. + + + Atom 0.3 defines an id element at feed and entry levels. The id element is defined as an URI. The Atom specification being currently designed requires the id element to contain a normalized URI as defined by RFC 2396bis. + + + The RSS0.94 and RSS 2.0 guid element and the Atom 0.3 id element are optional elements. Because of this, they may not be present at all in feeds. + + +*ROME's Solution + + + Because the concept of a URI it is not defined in all the feed formats, ROME makes an arbitrary design decision to provide the URI functionality regardless of the original (or target) feed type. The following behavior as been chosen based on expected and assumed usage pattern of feed and entry data. + + +*URI Normalization + + + If the uri property of a SyndFeed or SyndEntry bean is not NULL, the getter method must return a normalized URI following the rules defined in RFC2396bis. + + +**Converting from WireFeed (RSS or Atom) to SyndFeed + + + The common use case for this scenario is when consuming a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +**SyndFeed + + + None of the RSS versions define an ID at channel level. In addition to this, ROME input classes (WireFeedInput and SyndFeedInput) do not have access to the URL (if any) used to fetch the feed. Because of this ROME does not set in the SyndFeed uri property , it is left to developer to set (if needed) a URI in the feed bean. + + + In the case of Atom 0.3, if the id element is present in the feed, the SyndFeed uri property will be set with the value of the id element. If it is not present, the developer must set (if needed) a URI manually. + + +***SyndEntry + + + For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 if the link element is present in the item, the SyndEntry uri property will be set with the value of the link element. Otherwise the SyndEntry uri property is left as NULL and the developer must set it (if needed). + + + For RSS 0.94 & RSS 2.0 if the guid property is present in the item, the SyndEntry uri property will be set with the value of the guid element. If the guid element is not present, the SyndEntry uri property will be set with the value of the link element. If the link element is missing but the guid is present and it is flagged as a permalink, ROME will set set the SyndEntry link property with the value of the guid element (ROME is doing this because is a common practice to generated RSS 2.0 fees with guid elements marked as permalinks and without a link element). + + + For Atom 0.3 if the id element is present, the SyndEntry uri property is set with the value of the id element. If the id element is not present, the SyndEntry uri property is set with the value of the lternate link element. + + +**Converting from SyndFeed to WireFeed (RSS or Atom) + + + The common use case for this scenario is when generating a feed. Because of that, for clarity purposes, when referring to the data in the WireFeed the following sections talks about elements (as in the XML feed) instead of talking of properties. + + +***SyndFeed + + + For RSS 0.91, RSS 0.92, RSS 0.93, RSS 1.0 & RSS 2.0 the SyndFeed uri property is lost as there is not possible representation in the channel element for it. + + + For Atom 0.3 set the SyndFeed uri property is set as the value for the id element. + + +***SyndEntry + + + For RSS 0.91, RSS 0.92, RSS 0.93 & RSS 1.0 the SyndEntry uri property is lost as there is not possible representation in the item element for it. + + + For RSS 0.94 & RSS 2.0 the SyndEntry uri property is set as the value of the guid element with permalink set to false. If the SyndEntry uri property is not set, the SyndEntry link property is set as the value of the guid element with permalink set to true. Note that if the SyndFEntry linkproperty is missing the SyndEntry uri cannot be set as the value of the link element because it cannot be assumed that the uri property is an URL. + + + Because SyndEntry instances always return a normalized URI the value of the guid elements of a generated RSS 0.94 or RSS 2.0 may differ from the values of the guid elements of the original feed. + + + For Atom 0.3 the SyndEntry uri property is set as the id element. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.apt new file mode 100644 index 0000000..7a781da --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.apt @@ -0,0 +1,88 @@ + ----- + Feeds Date Elements Mapping to SyndFeed and SyndEntry + ----- + mkurz + ----- + 2011-08-15 08:59:02.075 + ----- + +Feeds Date Elements Mapping to SyndFeed and SyndEntry + + + The different RSS versions and Atom define different date elements at feed and entry level. Some of them also define syndication information indicating when (and when not) and how often to fetch feeds for updates. There is not always a possible mapping or conversion of this information when going from one format to another. + + + As this is still subject of debate ({{{http://www.tbray.org/ongoing/When/200x/2004/07/30/Dates}How About a Date}} and {{{http://www.intertwingly.net/wiki/pie/DateSurvey}Date Survey}}), for now, in Rss and atOM utilitiEs (ROME) we've taken a simplistic approach. + + + When handling feeds at WireFeed level, <<>> or <<>>, it is possible to access all the date elements and syndication information available in the feed. + + + When handling feeds at SyndFeed level, <<>>, there is only one date element available, the <<>>. Both, <<>> and <<>> have the <<>> property. In addition, it is possible to use the Syndication Module. + + + The mapping of the date elements from the different feed formats to SyndFeed is as follows. + + +*For RSS 0.90 + + + RSS 0.90 does not define date elements. + + + There is no mapping to <<>> and <<>> date properties. + + +*For RSS 0.91, 0.92 + + + RSS 0.91 and 0.92 define <<>> and <<>> at feed level. + + + The feed <<>> element is mapped to the <<>> <<>> property. The <<>> element is lost. + + +*For RSS 0.93, 0.94 and 2.0 + + + RSS 0.93, 0.94 and 2.0 define <<>> and <<>> at feed level. They also define <<>> and <<>> at item level. + + + The feed <<>> element is mapped to the <<>> <<>> property. The <<>> element is lost. + + + The item <<>> element is mapped to the <<>> <<>> property. The <<>> element is lost. + + +*For RSS 1.0 + + + RSS 1.0 use DC Module data at feed an item level to indicate date information about the feed and the items. + + + <<>> and <<>> use the DC Module <<>> element for the <<>> property. + + +*For Atom 0.3 + + + Atom 0.3 defines a <<>> element at feed level and the <<>>, <<>> & <<>> elements at entry level. + + + The feed <<>> element is mapped to the <<>> <<>> property. + + + The item <<>> element is mapped to the <<>> <<>> property. The entry elements, <<>> and <<>>, are lost. + + +*For Atom 1.0 + + + (Atom 1.0 supported in ROME since v0.8) + + + Atom 1.0 defines an <<>> element at the feed level, which ROME maps to <<>>. + + + Atom 1.0 defines <<>> and <<>> elements at the entry level, which ROME maps to <<>> and <<>> respectively. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.apt new file mode 100644 index 0000000..e9c1d5f --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.apt @@ -0,0 +1,208 @@ + ----- + Rss and atOM utilitiEs (ROME) Plugins Mechanism + ----- + mkurz + ----- + 2011-08-15 09:03:07.534 + ----- + +Rss and atOM utilitiEs (ROME) Plugins Mechanism + + + ROME has been designed around a plugin mechanism. All the supported feed types (RSSs and Atom) is done by plugins included in the distribution. + + + Parsing feeds, generating feeds, converting feeds from a concrete feed to a SyndFeed and vice versa, parsing modules and generating modules is done using plugins. + + + Plugins for new functionality can be added and default plugins can be easily replaced with alternate plugins. + + +*Plugins definition files + + + Plugins are defined in a properties file, the <<>> file. + + + The default plugins definition file is included in the ROME JAR file, <<>>, this is the first plugins definition file to be processed. It defines the default parsers, generators and converters for feeds and modules ROME provides. + + + After loading the default plugins definition file, ROME looks for additional plugins definition files in all the CLASSPATH entries, this time at root level, <<>>. And appends the plugins definitions to the existing ones. Note that if there are several <<>> files in the different CLASSPATH entries all of them are processed. The order of processing depends on how the <<>> processes the CLASSPATH entries, this is normally done in the order of appearance \-of the entry\- in the CLASSPATH. + + + For each type of plugin (parser, generator, converter, ect) a list of available plugins is built following the read order just described. The plugins classes are then loaded and instantiated. All plugins have some kind of primary key. In the case or parsers, generators and converters the primary key is the type of feed they handle. In the case of modules, the primary key is the module URI. If a plugin list definition (the aggregation of all the plugins of the same time from all the <<>>) contains more than one plugin with the same primary key, the latter one is the one that will be used(this enables replacing default plugins with custom ones). + + + The plugins are read, loaded and managed by the implementation class <<>>. This class is an abstract class and it is extended to provide support for each type of plugin. + + +*Parser Plugins + + + Parser plugins are managed by the <<>> class (subclass of the <<>>). This plugin manager looks for the <<>> property in all the <<>> files. The fully qualified names of the parser classes must be separated by whitespaces or commas. For example, the default <<>> file parser plugins definition is as follows: + + + ++------+ + +# Feed Parser implementation classes +# +WireFeedParser.classes=com.sun.syndication.io.impl.RSS090Parser \ + com.sun.syndication.io.impl.RSS091NetscapeParser \ + com.sun.syndication.io.impl.RSS091UserlandParser \ + com.sun.syndication.io.impl.RSS092Parser \ + com.sun.syndication.io.impl.RSS093Parser \ + com.sun.syndication.io.impl.RSS094Parser \ + com.sun.syndication.io.impl.RSS10Parser \ + com.sun.syndication.io.impl.RSS20wNSParser \ + com.sun.syndication.io.impl.RSS20Parser \ + com.sun.syndication.io.impl.Atom03Parser + ++------+ + + All the classes defined in this property have to implement the <<>> interface. Parser instances must be thread safe. The return value of the <<>> method is used as the primary key. If more than one parser returns the same type, the latter one prevails. + + +*Generator Plugins + + + Generator plugins are managed by the <<>> class (subclass of the <<>>). This plugin manager looks for the <<>> property in all the <<>> files. The fully qualified names of the generator classes must be separated by whitespaces or commas. For example, the default <<>> file generator plugins definition is as follows: + + + ++------+ + +# Feed Generator implementation classes +# +WireFeedGenerator.classes=com.sun.syndication.io.impl.RSS090Generator \ + com.sun.syndication.io.impl.RSS091NetscapeGenerator \ + com.sun.syndication.io.impl.RSS091UserlandGenerator \ + com.sun.syndication.io.impl.RSS092Generator \ + com.sun.syndication.io.impl.RSS093Generator \ + com.sun.syndication.io.impl.RSS094Generator \ + com.sun.syndication.io.impl.RSS10Generator \ + com.sun.syndication.io.impl.RSS20Generator \ + com.sun.syndication.io.impl.Atom03Generator + ++------+ + + All the classes defined in this property have to implement the <<>> interface. Generator instances must be thread safe. The return value of the <<>> method is used as the primary key. If more than one generator returns the same type, the latter one prevails. + + +*Converter Plugins + + + Converter plugins are managed by the <<>> class (subclass of the <<>>). This plugin manager looks for the <<>> property in all the <<>> files. The fully qualified names of the converter classes must be separated by whitespaces or commas. For example, the default <<>> file converter plugins definition is as follows: + + + ++------+ + +# Feed Conversor implementation classes +# +Converter.classes=com.sun.syndication.feed.synd.impl.ConverterForAtom03 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS090 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS091Netscape \ + com.sun.syndication.feed.synd.impl.ConverterForRSS091Userland \ + com.sun.syndication.feed.synd.impl.ConverterForRSS092 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS093 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS094 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS10 \ + com.sun.syndication.feed.synd.impl.ConverterForRSS20 + ++------+ + + All the classes defined in this property have to implement the <<>> interface. Converter instances must be thread safe. The return value of the <<>> method is used as the primary key. If more than one converter returns the same type, the latter one prevails. + + +*Module Plugins + + + There are 2 types of module plugins, module parser plugins and module generator plugins. They use a same pattern feed parsers and generators use. + + + The main difference is that support for module plugins has to be wired in the feed parser and generator plugins. The default feed parser and generator plugins supporting module plugins are: RSS 1.0, RSS 2.0 and Atom 0.3. + + + It is important to understand that this wiring is for modules support. Once a feed parser or generator has modules support, new modules can be used just by adding them to right property in the <<>> file. No code changes are required. + + + Module parsers and generators are defined at feed and item level. This allow selective handling of modules, for example handling Syndication module at feed level only. + + + Module parser plugins are managed by the <<>> class (subclass of the <<>>). This plugin manager looks for the <<<.feed.ModuleParser.classes>>> and the <<<.item.ModuleParser.classes>>> properties in all the <<>> files. must be the type defined by the parser (ie: rss_1.0, atom_0.3). The fully qualified names of the module parser classes must be separated by whitespaces or commas. For example, the default <<>> file modules parser plugins definition is as follows: + + + ++------+ + +# Parsers for Atom 0.3 feed modules +# +atom_0.3.feed.ModuleParser.classes=com.sun.syndication.io.impl.SyModuleParser \ + com.sun.syndication.io.impl.DCModuleParser + +# Parsers for Atom 0.3 entry modules +# +atom_0.3.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.io.impl.SyModuleParser \ + com.sun.syndication.io.impl.DCModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.io.impl.DCModuleParser + +# Parsers for RSS 2.0 feed modules +# +rss_2.0.feed.ModuleParser.classes= + +# Parsers for RSS 2.0 item modules +# +rss_2.0.item.ModuleParser.classes= + ++------+ + + All the classes defined in this property have to implement the <<>> interface. ModuleParser instances must be thread safe. The return value of the <<>> method is used as the primary key. If more than one module parser returns the same URI, the latter one prevails. + + + Module generator plugins are managed by the <<>> class (subclass of the <<>>). This plugin manager looks for the <<<.feed.ModuleGenerator.classes>>> and the <<<.item.ModuleGenerator.classes>>> properties in all the <<>> files. must be the type defined by the generator (ie: rss_1.0, atom_0.3). The fully qualified names of the module generator classes must be separated by whitespaces or commas. For example, the default <<>> file modules generator plugins definition is as follows: + + + ++------+ + +# Generators for Atom 0.3 feed modules +# +atom_0.3.feed.ModuleGenerator.classes=com.sun.syndication.io.impl.SyModuleGenerator \ + com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for Atom 0.3 entry modules +# +atom_0.3.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.io.impl.SyModuleGenerator \ + com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.io.impl.DCModuleGenerator + +# Generators for RSS 2.0 feed modules +# +rss_2.0.feed.ModuleGenerator.classes= + +# Generators for RSS_2.0 entry modules +# +rss_2.0.item.ModuleGenerator.classes= + ++------+ + + All the classes defined in this property have to implement the <<>> interface. ModuleGenerator instances must be thread safe. The return value of the <<>> method is used as the primary key. If more than one module generator returns the same URI, the latter one prevails. + + + See also: a step\-by\-step {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}tutorial for implementing a custom module}}. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.apt new file mode 100644 index 0000000..7734b44 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.apt @@ -0,0 +1,87 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code + ----- + mkurz + ----- + 2011-08-15 09:41:55.286 + ----- + +Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code + + + These instructions are outdated + + +*Building the samples with Maven + + + This is, as usual, the easiest way. + + + There's only one configuration step: Maven downloads dependencies from an online repository (by default ibiblio), to a local repository (on UNIX usually in \~/.maven/repository). Because the rome distribution is not yet on ibiblio, you need to add it yourself, either to your local repository, or to your own intranet maven repository if you have such a thing in your organization. + + + If you built ROME run maven jar:install in the rome project to install ROME's jar in your Maven repository. + + + If you got ROME binary distribution copy the ROME's jar file to your Maven repository (on UNIX that would be <<>>). + + + Then building the samples it's easy as a pie, just run maven jar in the samples sub\-project and you are all set. + + + To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, <<>>, will be created under the <<>> directory. + + +*Building the samples with Ant + + + The targets present in the build.xml are very helpful, ant get\-deps will download from ibiblio to rome\-samples/target/lib all the jar files ROME depends on and are needed for building an application using Rome. + + + In order to build the samples (or any subprojects), you'll need to first ensure that rome itself is built. You can do this simply by running ant in the project root directory. + + + Once this is done, change to the samples directory, and just run ant. This will produce two files, rome\-samples.jar which contains the sample applications, and rome\-samples.war which will contain a deployable web application war file for the FeedServlet sample. + + +*Running the samples with Maven + + + The Maven goals for running the samples are defined in maven.xml. + + + + * <<>> runs the FeedAggregator sample + + * <<>> runs the FeedConverter sample + + * <<>> runs the FeedReader sample + + * <<>> runs the FeedWriter sample + + * <<>> runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + [] + + To run the sample Web Application you'll need to deploy the WAR file into your servlet container. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the <<<$\{TOMCAT\}/webapps>>> directory the URL for the <<>> would be {{{http://localhost:8080/rome\-samples/feed}http://localhost:8080/rome\-samples/feed}} in a default localhost Tomcat installation. + + +*Running the samples with Ant + + + All ant targets for the samples generate the same file named toto: feel free to customize this build.xml to your own needs. Also today all these targets depends on the jar target, which represents some overhead if you have already built. Get rid of that once your project is well setup. + + + + * <<>> runs the FeedAggregator sample + + * <<>> runs the FeedConverter sample + + * <<>> runs the FeedReader sample + + * <<>> runs the FeedWriter sample + + * <<>> runs the FeedConverter sample against a file with Sample Module data (shows off custom module plugin) + + [] diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.apt new file mode 100644 index 0000000..d964a36 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.apt @@ -0,0 +1,369 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator) + ----- + mkurz + ----- + 2011-08-15 09:29:19.297 + ----- + +Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator) + + + <> Synd J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + This tutorial walks through the steps of creating a custom module for syndication feeds that support additional namespaces (such as RSS 1.0, RSS 2.0 and Atom 0.3). + + + To understand this tutorial you should be familiar the with ROME API and with the use of modules in syndication feeds. + + + Out of the box ROME parsers and generators support plug\-ability of modules for RSS 1.0, RSS 2.0 and Atom 0.3 at both feed and item/entry levels. Also support for the Dublin Core and Syndication modules is provided. + + + The complete source for this tutorial is in the ROME samples bundle as well as in CVS. + + +*What is the intended outcome of the tutorial? + + + The goal is to add support for a hypothetical Sample Module by defining a module bean, module parser and module generator and the necessary configuration to wire the parser and generator to an RSS 1.0 parser and RSS 1.0 generator. + + + The sample module defines 3 elements, 'bar', 'foo' and 'date', where 'bar' and 'date' may occur at most once and the 'foo' element may occur several times. For example, a feed with the Sample Module data would look like: + + + ++------+ + + + + + RSS 1.0 Feed with Sample Module + http://rome.dev.java.net + This is a feed showing how to use a custom module with ROME + + + + + + + Channel bar + Channel first foo + Channel second foo + + + Title of Item 01 + http://rome.dev.java.net/item01 + Item 01 does not have Sample module data + + + Title of Item 02 + http://rome.dev.java.net/item02 + Item 02 has Sample module data + Item 02 bar + Item 02 only foo + 2004-07-27T00:00+00:00 + + + ++------+ + +*Sample Module Bean + + + First we must start with the bean interface, SampleModule. SampleModule must extend Module. The Module interface defines the getUri() method, which will return a URI identifying the module. + + + The Module interface also extends the CopyFrom interface to enable copying properties from alternate implementations of the concrete Module interface. More on this later in this page. + + + The SampleModule's URI is defined as a constant, accessible via the getURI() instance method. This is for convenience and good practice only. + + + Then the module defines 3 properties: bar (String), foos (List) and date (Date). The elements of the foos property list must be strings (wishing for Java 5 generics already?). + + + ++------+ + +public interface SampleModule extends Module { + + public static final String URI = "http://rome.dev.java.net/module/sample/1.0"; + + public String getBar(); + public void setBar(String bar); + + public List getFoos(); + public void setFoos(List foos); + + public Date getDate(); + public void setDate(Date date); +} + ++------+ + + Next we have to write the bean implementation, SampleModuleImpl. + + + SampleModuleImpl extends ModuleImpl. ModuleImpl is the default implementation of the \=\=Module interface. ModuleImpl automatically provides equals, hashCode, toString and clone support for the properties of the class given in the constructor (SampleModule). Also the URI of the Sample module is indicated; it will be used by the Module.getUri() method. + + + ++------+ + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public SampleModuleImpl() { + super(SampleModule.class,SampleModule.URI); + } + + public String getBar() { + return _bar; + } + [...] + ++------+ + + The module properties are just Java Bean properties. The only catch is to follow ROME semantics for Collection properties: in the case of a null value for the collection, an empty collection must be returned. Also, following ROME semantics, all properties are by reference, including mutable ones. + + + ++------+ + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + private String _bar; + private List _foos; + private Date _date; + ... + public void setBar(String bar) { + _bar = bar; + } + + public List getFoos() { + return (_foos==null) ? (_foos=new ArrayList()) : _foos; + } + + public void setFoos(List foos) { + _foos = foos; + } + + public Date getDate() { + return _date; + } + + public void setDate(Date date) { + _date = date; + } + ++------+ + +*The CopyFrom interface + + + Now the weird part, the bits for the CopyFrom logic. The {{{./TheCopyFromInterface.html}The CopyFrom interface (rome)}} document fully explains the CopyFrom logic in detail. In short, the CopyFrom interface is to support copying properties from one implementation of a bean (defined through an interface) to another implementation of the same bean. + + + The getInterface() method returns the bean interface of the implementation (this is necessary for collections containing sub\-classes such as a list of modules). + + + The copyFrom() method copies all the properties from the parameter object (which must be a SampleModule implementation) into the caller bean properties. Note that the copyFrom must do a deep copy. + + + ++------+ + +public class SampleModuleImpl extends ModuleImpl implements SampleModule { + ... + public Class getInterface() { + return SampleModule.class; + } + + public void copyFrom(Object obj) { + SampleModule sm = (SampleModule) obj; + setBar(sm.getBar()); + List foos = new ArrayList(sm.getFoos()); // this is enough for the copy because the list elements are inmutable (Strings) + setFoos(foos); + setDate((Date)sm.getDate().clone()); // because Date is not inmutable. + } + +} + ++------+ + +*Sample Module Parser + + + The sample module parser must implement the ModuleParser interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and parse(Element) which extracts the module elements from the given Element. + + + The feed parsers will invoke the module parser with a feed element or with an item element. The module parser must look for module elements in the children of the given element. That is was the Sample parser is doing when looking for 'bar', 'foo' and 'date' children elements in the received element. + + + In the case of the 'foo' element it looks for all occurrences as the Sample module schema allows for more than one occurrence of the 'foo' element. A SampleModule bean is created and the found values are set into it. For the 'date' element it assumes its a date value in W3C datetime format. + + + If no Sample Module elements are found in the feed, the parse(Element) method returns null. This is to avoid having an empty instance of a module \-not present in the feed\- in the feed bean or in the item bean. + + + ++------+ + +public class SampleModuleParser implements ModuleParser { + + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + public Module parse(Element dcRoot) { + boolean foundSomething = false; + SampleModule fm = new SampleModuleImpl(); + + Element e = dcRoot.getChild("bar", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setBar(e.getText()); + } + List eList = dcRoot.getChildren("foo", SAMPLE_NS); + if (eList.size() > 0) { + foundSomething = true; + fm.setFoos(parseFoos(eList)); + } + e = dcRoot.getChild("date", SAMPLE_NS); + if (e != null) { + foundSomething = true; + fm.setDate(DateParser.parseW3CDateTime(e.getText())); + } + return (foundSomething) ? fm : null; + } + + private List parseFoos(List eList) { + List foos = new ArrayList(); + for (int i = 0; i < eList.size(); i++) { + Element e = (Element) eList.get(i); + foos.add(e.getText()); + } + return foos; + } + +} + ++------+ + +*Sample Module Generator + + + The sample module generator must implement the ModuleGenerator interface. This interface defines 2 methods, getNamespaceUri() that returns the URI of the module and generate(ModuleI,Element) which injects the module data into the given Element. + + + The feed generator will invoke the module generator with a feed element or with an item element. The module generator must inject the module properties into the given element (which is a feed or an item). This injection has to be done using the right namespace. The set of namespaces returned by the getNamespaces() method will be used to declare the namespaces used by the module in the feed root element. + + + If no Sample Module bean is in the feed bean the module generator is not invoked at all. + + + ++------+ + +public class SampleModuleGenerator implements ModuleGenerator { + private static final Namespace SAMPLE_NS = Namespace.getNamespace("sample", SampleModule.URI); + + public String getNamespaceUri() { + return SampleModule.URI; + } + + private static final Set NAMESPACES; + + static { + Set nss = new HashSet(); + nss.add(SAMPLE_NS); + NAMESPACES = Collections.unmodifiableSet(nss); + } + + public Set getNamespaces() { + return NAMESPACES; + } + + public void generate(Module module, Element element) { + + // this is not necessary, it is done to avoid the namespace definition in every item. + Element root = element; + while (root.getParent()!=null && root.getParent() instanceof Element) { + root = (Element) element.getParent(); + } + root.addNamespaceDeclaration(SAMPLE_NS); + + SampleModuleI fm = (SampleModule)module; + if (fm.getBar() != null) { + element.addContent(generateSimpleElement("bar", fm.getBar())); + } + List foos = fm.getFoos(); + for (int i = 0; i < foos.size(); i++) { + element.addContent(generateSimpleElement("foo",foos.get(i).toString())); + } + if (fm.getDate() != null) { + element.addContent(generateSimpleElement("date", DateParser.formatW3CDateTime(fm.getDate()))); + } + } + + protected Element generateSimpleElement(String name, String value) { + Element element = new Element(name, SAMPLE_NS); + element.addContent(value); + return element; + } + +} + ++------+ + +*Configuration to make ROME process Sample Module in feeds + + + The last step is to setup the configuration file to indicate to ROME how and when to use the Sample Module parser and generator. + + + The configuration is stored in a Properties file, 'rome.properties', that has to be in the root of the classpath or JAR where the Sample Module bean, parser and generator classes are. + + + You must indicate the syndication feed formats (ie RSS 1.0) that must be aware of the Sample Module. You must indicate if the Sample Module is available for feed or item elements, or for both. You must indicate both the parser and the generator classes. + + + Following is the 'rome.properties' file for the Sample Module, it's defined for RSS 1.0 only, for both feed and item elements. + + + ++------+ + +# Parsers for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Parsers for RSS 1.0 item modules +# +rss_1.0.item.ModuleParser.classes=com.sun.syndication.samples.module.SampleModuleParser + +# Generators for RSS 1.0 feed modules +# +rss_1.0.feed.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + +# Generators for RSS_1.0 entry modules +# +rss_1.0.item.ModuleGenerator.classes=com.sun.syndication.samples.module.SampleModuleGenerator + ++------+ + + If you are defining more than one module, indicate the parser and generator implementation classes separated by commas or spaces. + + +*Using the Sample Module from the SyndFeed beans + + + They will be there, just use them. You may get the SampleModule bean using the getModule(String Uri) method of the SyndFeed bean and the SyndEntry bean. + + + Adding or replacing a syndication feed parser, generator or converter goes along the same lines of what it has been explained in the tutorial for modules. This is explained in the {{{./RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}} topic. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.apt new file mode 100644 index 0000000..48171a5 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.apt @@ -0,0 +1,146 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one + ----- + mkurz + ----- + 2011-08-15 09:12:26.866 + ----- + +Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one + + + <> J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + ROME also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. + + + SyndFeed instances can also be created and populated within the code. For example: + + + ++------+ + +SyndFeed aggrFeed = new SyndFeedImpl(); +aggrFeed.setFeedType("rss_1.0"); +aggrFeed.setTitle("Aggregated Feed"); +aggrFeed.setDescription("Anonymous Aggregated Feed"); +aggrFeed.setAuthor("anonymous"); +aggrFeed.setLink("http://www.anonymous.com"); + ++------+ + + The snipped of code above creates a SyndFeed instance using the default implementation provided by ROME, sets the feed type to RSS 1.0, sets the title, description, author and link properties of the feed. + + + SyndFeed properties can be modified, assigned to other SyndFeed instances, removed, etc. It's important to remember that the getters/setters semantics defined for all SyndFeed properties (and properties of its properties) is a copy by reference, not by value. In other words if you alter the property of a SyndFeed property you are altering the SyndFeed. Or, another example, if you assign the list of entries of one SyndFeed instance to another SyndFeed isntance and then you modify the list or any of the entries in the list, you are modifying the entries of both SyndFeed instances. + + + The following lines of code show how to copy the entries of a SyndFeed instance being read (inFeed) into a SyndFeed instance being created within the application (feed): + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; + +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.feed.synd.SyndFeedImpl; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It aggregates a list of RSS/Atom feeds (they can be of different types) + * into a single feed of the specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedAggregator { + + public static void main(String[] args) { + boolean ok = false; + if (args.length>=2) { + try { + String outputType = args[0]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(outputType); + + feed.setTitle("Aggregated Feed"); + feed.setDescription("Anonymous Aggregated Feed"); + feed.setAuthor("anonymous"); + feed.setLink("http://www.anonymous.com"); + + List entries = new ArrayList(); + feed.setEntries(entries); + + for (int i=1;i> Synd J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the InputStream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + ROME also includes generators to create syndication feeds out of SyndFeed instances. The SyndFeedOutput class does this generation. The SyndFeedOutput will generate a syndication feed of the feed type indicated by the SyndFeed object being output. The following two lines of code show how to create a syndication feed output from a SyndFeed instance: + + + ++------+ + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,new PrintWriter(System.out)); + ++------+ + + The first line creates a SyndFeedOutput instance that will produce syndication feeds. It can output feeds of any type (rss_0.9, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0 & atom_0.3), the SyndFeed feedType property indicates the type. The second line writes the SyndFeed as a syndication feed into the application's output. + + + Following is the full code for a Java application that reads a syndication feed and converts it to other syndication feed type, writing the converted feed to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.SyndFeedOutput; +import com.sun.syndication.io.XmlReader; + +/** + * It Converts any RSS/Atom feed type to a an RSS/Atom feed of the + * specified type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedConverter { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String outputType = args[0]; + + URL feedUrl = new URL(args[1]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + feed.setFeedType(outputType); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,new PrintWriter(System.out)); + + ok = true; + } + catch (Exception ex) { + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedConverter converts between syndication feeds types."); + System.out.println("The first parameter must be the feed type to convert to."); + System.out.println(" [valid values are: rss_0.9, rss_0.91, rss_0.92, rss_0.93, ]"); + System.out.println(" [ rss_0.94, rss_1.0, rss_2.0 & atom_0.3 ]"); + System.out.println("The second parameter must be the URL of the feed to convert."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.apt new file mode 100644 index 0000000..13b8060 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.apt @@ -0,0 +1,204 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed + ----- + mkurz + ----- + 2011-08-15 09:20:35.352 + ----- + +Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed + + + <> J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + Creating a feed with SyndFeed beans consists of creating beans and setting their properties. The following code fragments show how a SyndFeed bean with 3 entries is created. + + + First the SyndFeed instance is created, the preferred syndication format is set and the feed header info (title, link, description) is also set. + + + ++------+ + +SyndFeed feed = new SyndFeedImpl(); +feed.setFeedType(feedType); + +feed.setTitle("Sample Feed (created with ROME)"); +feed.setLink("http://rome.dev.java.net"); +feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + ++------+ + + Then a list for entries is created, entries are created and added to the list. Each entry is set with a title, link, published date and a description. The description for the first entry is plain test, for the third entry is HTML. After each entry is created is added to the list. + + + ++------+ + +List entries = new ArrayList(); +SyndEntry entry; +SyndContent description; + +entry = new SyndEntryImpl(); +entry.setTitle("ROME v1.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); +entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); +description = new SyndContentImpl(); +description.setType("text/plain"); +description.setValue("Initial release of ROME"); +entry.setDescription(description); +entries.add(entry); +[...] +entry = new SyndEntryImpl(); +entry.setTitle("ROME v3.0"); +entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); +entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); +description = new SyndContentImpl(); +description.setType("text/html"); +description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); +entry.setDescription(description); +entries.add(entry); + ++------+ + + Finally the list with entries is added to the SyndFeed bean. + + + ++------+ + +feed.setEntries(entries); + ++------+ + + The SyndFeed bean is now ready to be written out to a syndication feed XML document. Note that any of supported syndication formats can be set in the feedType property. + + + ROME includes generators that allow producing syndication feed XML documents from SyndFeed instances. The SyndFeedOutput class handles the generation of the syndication feed XML documents on any of the supported feed formats (RSS and Atom). The developer does not need to worry about selecting the right generator for a syndication feed, the SyndFeedOutput will take care of it by looking at the information in the SyndFeed bean. All it takes to write a syndication feed XML document using ROME \-assuming you have a SyndFeed bean and a Writer instance\- are the following lines of code: + + + ++------+ + +SyndFeed feed = ...; +Writer writer = ...; + +SyndFeedOutput output = new SyndFeedOutput(); +output.output(feed,writer); + ++------+ + + First a SyndFeedOutput instance is created, this instance will work with any syndication feed type (RSS and Atom versions). Then the feed and the writer are given to the SyndFeedOutput instance, the SyndFeedOutput will write the syndication feed XML document represented by the SyndFeed bean to the Writer stream. + + + Following is the full code for a Java application that creates a syndication feed and writes it to a file in the specified syndication format. + + + ++------+ + +package com.sun.syndication.samples; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.SyndFeedOutput; + +import java.io.FileWriter; +import java.io.Writer; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * It creates a feed and writes it to a file. + *

+ * + */ +public class FeedWriter { + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + public static void main(String[] args) { + boolean ok = false; + if (args.length==2) { + try { + String feedType = args[0]; + String fileName = args[1]; + + SyndFeed feed = new SyndFeedImpl(); + feed.setFeedType(feedType); + + feed.setTitle("Sample Feed (created with ROME)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v1.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of ROME"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v2.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome02"); + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v3.0"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome03"); + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

More Bug fixes, mor API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + Writer writer = new FileWriter(fileName); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,writer); + writer.close(); + + System.out.println("The feed has been written to the file ["+fileName+"]"); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedWriter creates a RSS/Atom feed and writes it to a file."); + System.out.println("The first parameter must be the syndication format for the feed"); + System.out.println(" (rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0 rss_2.0 or atom_0.3)"); + System.out.println("The second parameter must be the file name for the feed"); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.apt new file mode 100644 index 0000000..09fd997 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.apt @@ -0,0 +1,93 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed + ----- + mkurz + ----- + 2011-08-15 09:08:56.262 + ----- + +Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed + + + <> J2SE 1.4\+, JDOM 1.0 and ROME 0.5. + + + ROME represents syndication feeds (RSS and Atom) as instances of the com.sun.syndication.synd.SyndFeed interface. The SyndFeed interfaces and its properties follow the Java Bean patterns. The default implementations provided with ROME are all lightweight classes. + + + ROME includes parsers to process syndication feeds into SyndFeed instances. The SyndFeedInput class handles the parsers using the correct one based on the syndication feed being processed. The developer does not need to worry about selecting the right parser for a syndication feed, the SyndFeedInput will take care of it by peeking at the syndication feed structure. All it takes to read a syndication feed using ROME are the following 2 lines of code: + + + ++------+ + +SyndFeedInput input = new SyndFeedInput(); +SyndFeed feed = input.build(new XmlReader(feedUrl)); + ++------+ + + The first line creates a SyndFeedInput instance that will work with any syndication feed type (RSS and Atom versions). The second line instructs the SyndFeedInput to read the syndication feed from the char based input stream of a URL pointing to the feed. The XmlReader is a character based Reader that resolves the encoding following the HTTP MIME types and XML rules for it. The SyndFeedInput.build() method returns a SyndFeed instance that can be easily processed. + + + The default SyndFeed implementation has a detailed and clear toString() implementation. The following line just prints it to the application's output. + + + ++------+ + + System.out.println(feed); + ++------+ + + Following is the full code for a Java application that reads a syndication feed and prints the SyndFeed bean to the application's output. + + + ++------+ + +package com.sun.syndication.samples; + +import java.net.URL; +import java.io.InputStreamReader; +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +/** + * It Reads and prints any RSS/Atom feed type. + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedReader { + + public static void main(String[] args) { + boolean ok = false; + if (args.length==1) { + try { + URL feedUrl = new URL(args[0]); + + SyndFeedInput input = new SyndFeedInput(); + SyndFeed feed = input.build(new XmlReader(feedUrl)); + + System.out.println(feed); + + ok = true; + } + catch (Exception ex) { + ex.printStackTrace(); + System.out.println("ERROR: "+ex.getMessage()); + } + } + + if (!ok) { + System.out.println(); + System.out.println("FeedReader reads and prints any RSS/Atom feed type."); + System.out.println("The first parameter must be the URL of the feed to read."); + System.out.println(); + } + } + +} + ++------+ diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.apt new file mode 100644 index 0000000..b6451e2 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.apt @@ -0,0 +1,242 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed + ----- + mkurz + ----- + 2011-08-15 09:34:50.713 + ----- + +Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed + + + <> J2SE 1.4\+, Servlet Container 2.3\+, JDOM 1.0 and ROME 0.5. + + + This sample consists of a servlet that serves a feed as response. The feed type (RSS in any of its variants or Atom) can be specified as a URL parameter when requesting the feed. The returned feed is hardwired in the sample and it would be straight forward to modify the sample to generate the feed dynamically (i.e. from data stored in a database). + + + The core logic of the <<>> is in the following fragment of code: + + + ++------+ + +public class FeedServlet extends HttpServlet { + ... + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + ... + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + ... + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + feed = ... + return feed; + } + +} + ++------+ + + The servlet returns a feed upon HTTP GET requests with the <<>> method. + + + First the <<>> bean is obtained by invoking the <<>> method, the request object is passed as it could be used to obtain request contextual information to create the feed. How to create a feed using SyndFeed bean is explained in detail in the {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html}Using ROME to create and write a feed}} Tutorial. + + + Then the feed type of the response is determined, first looking at the request parameters and falling back to a default feed type (specified by a servlet init parameter) if the type is not indicated in the request parameters. Setting the feed type in the feed bean will indicate the <<>> the feed type to output. + + + Finally, the response is set with the proper content type (the MIME_TYPE constant is 'application/xml; charset\=UTF\-8') and the feed is written to response writer using the <<>> output classes. + + + Following is the full code for the servlet. + + + ++------+ + +package com.sun.syndication.samples.servlet; + +import com.sun.syndication.feed.synd.*; +import com.sun.syndication.io.FeedException; +import com.sun.syndication.io.SyndFeedOutput; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +/** + * Sample Servlet that serves a feed created with ROME. + *

+ * The feed type is determined by the 'type' request parameter, if the parameter is missing it defaults + * to the 'default.feed.type' servlet init parameter, if the init parameter is missing it defaults to 'atom_0.3' + *

+ * @author Alejandro Abdelnur + * + */ +public class FeedServlet extends HttpServlet { + private static final String DEFAULT_FEED_TYPE = "default.feed.type"; + private static final String FEED_TYPE = "type"; + private static final String MIME_TYPE = "application/xml; charset=UTF-8"; + private static final String COULD_NOT_GENERATE_FEED_ERROR = "Could not generate feed"; + + private static final DateFormat DATE_PARSER = new SimpleDateFormat("yyyy-MM-dd"); + + private String _defaultFeedType; + + public void init() { + _defaultFeedType = getServletConfig().getInitParameter(DEFAULT_FEED_TYPE); + _defaultFeedType = (_defaultFeedType!=null) ? _defaultFeedType : "atom_0.3"; + } + + public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException { + try { + SyndFeed feed = getFeed(req); + + String feedType = req.getParameter(FEED_TYPE); + feedType = (feedType!=null) ? feedType : _defaultFeedType; + feed.setFeedType(feedType); + + res.setContentType(MIME_TYPE); + SyndFeedOutput output = new SyndFeedOutput(); + output.output(feed,res.getWriter()); + } + catch (FeedException ex) { + String msg = COULD_NOT_GENERATE_FEED_ERROR; + log(msg,ex); + res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,msg); + } + } + + protected SyndFeed getFeed(HttpServletRequest req) throws IOException,FeedException { + SyndFeed feed = new SyndFeedImpl(); + + feed.setTitle("Sample Feed (created with ROME)"); + feed.setLink("http://rome.dev.java.net"); + feed.setDescription("This feed has been created using ROME (Java syndication utilities"); + + List entries = new ArrayList(); + SyndEntry entry; + SyndContent description; + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v0.1"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome01"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-08")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Initial release of ROME"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("Rome v0.2"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome02"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-06-16")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/plain"); + description.setValue("Bug fixes, minor API changes and some new features"+ + "

For details check the Changes Log for 0.2

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v0.3"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome03"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-07-27")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features and some Unit testing

"+ + "

For details check the Changes Log for 0.3

"); + entry.setDescription(description); + entries.add(entry); + + entry = new SyndEntryImpl(); + entry.setTitle("ROME v0.4"); + entry.setLink("http://wiki.java.net/bin/view/Javawsxml/rome04"); + try { + entry.setPublishedDate(DATE_PARSER.parse("2004-09-24")); + } + catch (ParseException ex) { + // IT CANNOT HAPPEN WITH THIS SAMPLE + } + description = new SyndContentImpl(); + description.setType("text/html"); + description.setValue("

Bug fixes, API changes, some new features, Unit testing completed

"+ + "

For details check the Changes Log for 0.4

"); + entry.setDescription(description); + entries.add(entry); + + feed.setEntries(entries); + + return feed; + } + +} + ++------+ + + To use the <<>> we need to create a Web Application. For the Web Application we need a deployment descriptor, the <<>> file: + + + ++------+ + + + + + + ROME Samples + + + FeedServlet + com.sun.syndication.samples.servlet.FeedServlet + + default.feed.type + rss_2.0 + + + + + FeedServlet + /feed + + + + ++------+ + + To build the sample Web Application, just run maven war in the samples sub\-project. The WAR file, <<>>, will be created under the <<>> directory. Deploy the WAR in a servlet container and the <<>> should be up an running. If you are using Tomcat 4 or Tomcat 5 and the WAR file was dropped in the <<<$\{TOMCAT\}/webapps>>> directory the URL for the <<>> would be {{{http://localhost:8080/rome\-samples/feed}http://localhost:8080/rome\-samples/feed}} in a default localhost Tomcat installation. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.apt new file mode 100644 index 0000000..20464d7 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.apt @@ -0,0 +1,109 @@ + ----- + The CopyFrom interface + ----- + mkurz + ----- + 2011-08-15 08:57:12.280 + ----- + +The CopyFrom interface + + + The CopyFrom interface defines functionality similar to a deep cloning. The difference with the clone() method (besides the deep cloning requirements) is that the object to be the copy of the original one has to be explicitly created and it is this object the one that triggers the deep copying process. Implemetations of the CopyFrom interface should work propertly on arrays, collections, CopyFrom and basic type properties. + + + Using CopyFrom objects enables copying data between different implementations of a given interface without these implementation having to know about each other. + + + CopyFrom is unidirectional. A class implementing the CopyFrom knows how to extract properties from the given class (commonly having an interface in common). + + + A simple example using the CopyFrom interface is: + + + ++------+ + + public interface Foo extends CopyFrom { + public void setName(String name); + public String getName(); + + public void setValues(Set values); + public Set getValues(); + } + + public class FooImplA implements Foo { + private String _name; + private Set _values; + + public void setName(String name) { + _name = name; + } + + public String getName() { + return _name; + } + + public void setValues(Set values) { + _values = values; + } + + public Set getValues() { + return _values; + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + + public class FooImplB implements Foo { + private Map _data; + + public FooImplB() { + _data = new HashMap(); + } + + public void setName(String name) { + _data.put("name",name); + } + + public String getName() { + return (String) _data.get("name"); + } + + public void setValues(Set values) { + _data.put("values",values); + } + + public Set getValues() { + return (Set) _data.get("values"); + } + + public void copyFrom(Object obj) { + Foo other = (Foo) obj; + setName(other.getName()); + setValues(new HashSet(other.getValues()); + } + + public Class getInterface() { + return Foo.class; + } + } + ++------+ + + A use case for the CopyFrom functionality is a Java Bean implementation of an interface and a persistency implementation (such as Hibernate) of the the same interface that may add extra persistency related properties to the bean (ie, the 'Id' property as the persistency layer primary key). + + + For bean, array and collection properties the bean being invoked which copyFrom() method is invoked is responsible for those properties. + + + For properties implementing the CopyFrom interface, the bean must create a property instance implementing the interface returned by the getInterface() method. This allows the bean doing the copyFrom() to handle specialized subclasses of property elements propertly. This is also applicacle to array and collection properties. The 'modules' property of the SyndFeed and SyndEntry beans is a use case of this feature where the copyFrom() invocation must create different beans subclasses for each type of module, the getInteface() helps to find the right implementation. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.apt new file mode 100644 index 0000000..8102f29 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.apt @@ -0,0 +1,163 @@ + ----- + Understanding Rss and atOM utilitiEs (ROME) Bean Utilities + ----- + mkurz + ----- + 2011-08-15 08:46:28.502 + ----- + +Understanding Rss and atOM utilitiEs (ROME) Bean Utilities + + + ROME bean utilities are not part of ROME public API. They are used by the default implementation of ROME beans and it may be useful for alternate implementations as well. It is important to keep in mind that these APIs are not public and they are subject to change breaking backward compatibility. + + + Rome package contains a set of Java classes that provide support for all the basic features Java Beans commonly must have: toString, equals, hashcode and cloning. + + + By using these classes Beans don't have to hand code these functions. This greatly simplifies things when Beans have several properties, collection properties and composite properties. + + + The , , and classes use instrospection on the properties of the classes using them. This is done recursively on all properties. All ROME Beans default implementations leverage these classes. + + +*ToStringBean + + + Beans implementing the ToString interface must implement the toString(String prefix) method. This method must print the bean properties names and values, one per per line, separating the name and value with an '\=' sign and prefixing the name with the given prefix parameter using the same notation used in the JSP expression language used in JSTL and in JSP 2.0. This must be done recursively for all array, collection and ToString properties. + + + The ToStringBean class provides an implementation of the toString() method producing a detailed output of all the properties of the Bean being processed. The ToStringBean constructor takes the class definition the ToStringBean class should use for properties scanning \-using instrospection\- for printing, normally it is the class of the Bean using the ToStringBean. + + +*Using the ToStringBean class + + + ++------+ + + public class MyBean { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public String toString(String prefix) { + ToStringBean tsBean = new ToStringBean(MyBean.class,this); + return tsBean.toString(prefix); + } + + public String toString() { + return toString("myBean"); + } + } + ++------+ + +*EqualBean + + + The EqualsBean class provides a recursive introspetion\-based implementation of the equals() and hashCode() methods working on the Bean properties. The EqualsBean constructor takes the class definition that should be properties scanned (using introspection) by the equals() and thehashCode() methods. The EqualsBean class works on array, collection, bean and basic type properties. + + +**Using the EqualsBean class + + + ++------+ + + public class MyBean { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public boolean equals(Object obj) { + EqualsBean eBean = new EqualsBean(MyBean.class,this); + return eBean.beanEquals(obj); + } + + public int hashCode() { + EqualsBean equals = new EqualsBean(MyBean.class,this); + return equals.beanHashCode(); + } + } + ++------+ + +*CloneableBean + + + The CloneableBean class provides a recursive introspetion\-based implementation of the clone() method working on the Bean properties. The CloneableBean class works on array, collection, bean and basic type properties. + + +**Using the CloneableBean class + + + ++------+ + + public class MyBean implements Cloneable { + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + + public Object clone() { + CloneableBean cBean = new CloneableBean(this); + return cBean.beanClone(); + } + } + ++------+ + + By default, the CloneableBean copies all properties of the given object. It also supports an ignore\-properties set, the property names in this set will not be copied to the cloned instance. This is useful for cases where the Bean has convenience properties (properties that are actually references to other properties or properties of properties). For example SyndFeed and SyndEntry beans have convenience properties, publishedDate, author, copyright and categories all of them mapped to properties in the DC Module. + + +*ObjectBean + + + The ObjectBean is a convenience bean providing ToStringBean, EqualsBean and CloneableBean functionality support. Also, ObjectBeans implements the Serializable interface making the beans serializable if all its properties are. Beans extending ObjectBean get toString(), equals(),hashCode() and clone() support as defined above. + + + And example of using the ObjectBean class is: + + + ++------+ + + public class MyBean extends ObjectBean { + + public MyBean() { + super(MyBean.class); + } + + public Foo getFoo() { ... } + public void setFoo(Foo foo) { ... } + + public String getName() { ... } + public void setName(String name) { ... } + + public List getValues() { ... } + public void setValues(List values) { ... } + } + ++------+ + + It can also be used in delegation mode instead as some of the previous examples. + diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.apt new file mode 100644 index 0000000..642d878 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.apt @@ -0,0 +1,172 @@ + ----- + XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding + ----- + mkurz + ----- + 2011-08-15 08:55:25.019 + ----- + +XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding + + + Determining the charset set encoding of an XML document it may prove not as easy as it seems, and when the XML document is served over HTTP things get a little more hairy. + + + Current Java libraries or utilities don't do this by default, A JAXP SAX parser may detect the charset encoding of a XML document looking at the first bytes of the stream as defined Section 4.3.3 and Appendix F.1 of the in {{{http://www.w3.org/TR/2004/REC\-xml\-20040204/}XML 1.0 (Third Edition)}} specification. But Appendix F.1 is non\-normative and not all Java XML parsers do it right now. For example the JAXP SAX parser implementation in {{{http://java.sun.com/j2se/1.4.2}J2SE 1.4.2}} does not handle Appendix F.1 and {{{http://xml.apache.org/xerces2\-j/}Xerces 2.6.2}} just added support for it. But still this does not solve the whole problem. JAXP SAX parsers are not aware of the HTTP transport rules for charset encoding resolution as defined by {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}}. They are not because they operate on a byte stream or a char stream without any knowledge of the stream transport protocol, HTTP in this case. + + + {{{http://diveintomark.org/}Mark Pilgrim}} did a very good job explaining how the charset encoding should be determined, {{{http://diveintomark.org/archives/2004/02/13/xml\-media\-types}Determining the character encoding of a feed}} and {{{http://www.xml.com/pub/a/2004/07/21/dive.html}XML on the Web Has Failed}}. + + + To isolate developers from this issue ROME has a special character stream class, the . The class is a subclass of the that detects the charset encoding of XML documents read from files, input streams, URLs and input streams obtained over HTTP. Ideally this should be built into the JAXP SAX classes, most likely in the InputSource class. + + +*Default Lenient Behavior + + + It is very common for many sites, due to improper configuration or lack of knowledge, to declare an invalid charset encoding. Invalid according to the XML 1.0 specification and the RFC 3023. For example a mismatch between the implicit charset encoding in the HTTP content\-type and the explicit charset encoding in the XML prolog. + + + Because of this, ROME XmlReader by default has a lenient detection. This lenient detection works in the following order: + + + + * A strict charset encoding detection, as specified by the Algorithms below is attempted + + * If the content type was 'text/html' it replaces it with 'text/xml' and tries strict charset encoding detection again + + * If the XML prolog had a charset encoding that encoding is used + + * If the content type had a charset encoding that encoding is used + + * 'UTF\-8' is used + + [] + + The XmlReader class has 2 constructors that allow a strict (non\-lenient) charset encoding detection to be performed. This constructors take a lenient boolean flag, the flag should be set to for a strict detection. + + +*The Algorithms per XML 1.0 and RFC 3023 specifications + + + Following it's a detailed explanation on the algorithms the uses to determine the charset encoding. These algorithms first appeared in {{{http://blogs.sun.com/roller/page/tucu/Weblog}Tucu's Weblog}}. + + +*Raw XML charset encoding detection + + + Detection of the charset encoding of a XML document without external information (i.e. reading a XML document from a file). Following {{{http://www.w3.org/TR/2004/REC\-xml\-20040204/#charencoding}Section 4.3.3}} and {{{http://www.w3.org/TR/REC\-xml/#sec\-guessing\-no\-ext\-info}Appendix F.1}} of the XML 1.0 specification the charset encoding of an XML document is determined as follows: + + + ++------+ + +BOMEnc : byte order mark. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLGuessEnc: best guess using the byte representation of the first bytes of XML declaration + ('') if present. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLEnc : encoding in the XML declaration (''). Possible values: anything or NULL + +if BOMEnc is NULL + if XMLGuessEnc is NULL or XMLEnc is NULL + encoding is 'UTF-8' [1.0] + else + if XMLEnc is 'UTF-16' and (XMLGuessEnc is 'UTF-16BE' or XMLGuessEnc is 'UTF-16LE') + encoding is XMLGuessEnc [1.1] + else + encoding is XMLEnc [1.2] +else +if BOMEnc is 'UTF-8' + if XMLGuessEnc is not NULL and XMLGuessEnc is not 'UTF-8' + ERROR, encoding mismatch [1.3] + if XMLEnc is not NULL and XMLEnc is not 'UTF-8' + ERROR, encoding mismatch [1.4] + encoding is 'UTF-8' +else +if BOMEnc is 'UTF-16BE' or BOMEnc is 'UTF-16LE' + if XMLGuessEnc is not NULL and XMLGuessEnc is not BOMEnc + ERROR, encoding mismatch [1.5] + if XMLEnc is not NULL and XMLEnc is not 'UTF-16' and XMLEnc is not BOMEnc + ERROR, encoding mismatch [1.6] + encoding is BOMEnc +else + ERROR, cannot happen given BOMEnc possible values (see above) [1.7] + ++------+ + + Byte Order Mark encoding and XML guessed encoding detection rules are clearly explained in the {{{http://www.w3.org/TR/REC\-xml/#sec\-guessing\-no\-ext\-info}XML 1.0 Third Edition Appendix F.1}}. Note that in this algorithm BOMEnc and XMLGuessEnc are restricted to UTF\-8 and UTF\-16\* encodings. + + + + * <<#1.0.>> There is no BOM, an encoding or encoding family cannot be guessed from the first bytes in the stream, defaulting to UTF\-8. + + * <<#1.1.>> Strictly following {{{http://www.w3.org/TR/2004/REC\-xml\-20040204/#charencoding}XML 1.0 Third Edition Section 4.3.3 Charset Encoding in Entities}} (2nd paragraph) no BOM and UTF\-16 XML declaration encoding is an error. The BOM is required to identify if the encoding is BE or LE. But if XMLEnc was read it means that the encoding byte order of the stream was guessed from the first bytes in the stream, note that this is possible only if the document starts with a XML declaration. The logic verifies that there is no conflicting encoding information and relaxes the BOM requirement if a XML declaration (that allows guessing the byte order) is present. + + * <<#1.2.>> XMLEnc is present, it is not UTF\-16 (although it can be UTF\-16BE or UTF\-16LE), the guessed encoding is used to read the XML declaration encoding. Detecting encoding mismatches here it would require awareness of charset families, instead the algorithm relies on the charset encoding routines that will process the stream to discover and report mismatches. To handle other encodings (i.e. USC\-4 or EBCDIC encoding families) the algorithm should be extended here. + + * <<#1.3, #1.4, #1.5, #1.6>> There is an explicit encoding mismatch. + + * <<#1.7.>> Given the currently assumed BOMEnc values this case cannot happen. To handle other encodings (i.e. USC\-4 or EBCDIC encoding families) the algorithm should be extended here. + + [] + +**XML over HTTP charset encoding detection + + + Detection of the charset encoding of a XML document with external information (provided by HTTP). Following {{{http://www.w3.org/TR/2004/REC\-xml\-20040204/#charencoding}Section 4.3.3}}, {{{http://www.w3.org/TR/REC\-xml/#sec\-guessing\-no\-ext\-info}Appendix F.1}} and {{{http://www.w3.org/TR/2004/REC\-xml\-20040204/#sec\-guessing\-with\-ext\-info}Appendix F.2}} of the XML 1.0 specification, plus {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}} the charset encoding of an XML document served over HTTP is determined as follows: + + + ++------+ + +ContentType: Content-Type HTTP header +CTMime : MIME type defined in the ContentType +CTEnc : charset encoding defined in the ContentType, NULL otherwise +BOMEnc : byte order mark. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLGuessEnc: best guess using the byte representation of the first bytes of XML declaration + ('') if present. Possible values: 'UTF-8', 'UTF-16BE', 'UTF-16LE' or NULL +XMLEnc : encoding in the XML declaration (''). Possible values: anything or NULL +APP-XML : RFC 3023 defined 'application/*xml' types +TEXT-XML : RFC 3023 defined 'text/*xml' types + +if CTMime is APP-XML or CTMime is TEXT-XML + if CTEnc is NULL + if CTMime is APP-XML + encoding is determined using the Raw XML charset encoding detection algorithm [2.0] + else + if CTMime is TEXT-XML + encoding is 'US-ASCII' [2.1] + else + if (CTEnc is 'UTF-16BE' or CTEnc is 'UTF-16LE') and BOMEnc is not NULL + ERROR, RFC 3023 explicitly forbids this [2.2] + else + if CTEnc is 'UTF-16' + if BOMEnc is 'UTF-16BE' or BOMEnc is 'UTF-16LE' + encoding is BOMEnc [2.3] + else + ERROR, missing BOM or encoding mismatch [2.4] + else + encoding is CTEnc [2.5] +else + ERROR, handling for other MIME types is undefined [2.6] + ++------+ + + Byte Order Mark encoding and XML guessed encoding detection rules are clearly explained in the {{{http://www.w3.org/TR/REC\-xml/#sec\-guessing\-no\-ext\-info}XML 1.0 Third Edition Appendix F.1}}. Note that in this algorithm BOMEnc and XMLGuessEnc are restricted to UTF\-8 and UTF\-16\* encodings. + + + + * <<#2.0.>> HTTP content type declares a MIME of application type and XML sub\-type. There is not HTTP Content\-type charset encoding information. The charset encoding is determined using the Raw XML charset encoding detection algorithm. Refer to {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}} Section <3.2. Application/xml Registration>. + + * <<#2.1.>> HTTP content type declares a MIME of text type and XML sub\-type. There is not HTTP Content\-type charset encoding information. The charset encoding is US\-ASCII. Refer to {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}} Section <3.1. Text/xml Registration>. + + * <<#2.2.>> For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16BE' or 'UTF\-16LE' as the charset encoding, a BOM is prohibited. Refer to {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}} Section <4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset>. + + * <<#2.3.>> For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16' as the charset encoding, a BOM is required and it must be used to determine the byte order. Refer to {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}} Section <4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset>. + + * <<#2.4.>> For text\-XML and application\-XML MIME types if the HTTP content type declares 'UTF\-16' as the charset encoding, a BOM must be present and it must be 'UTF\-16BE' or 'UTF\-16LE'. Refer to {{{http://www.ietf.org/rfc/rfc3023.txt}RFC 3023}} Section <4. The Byte Order Mark (BOM) and Conversions to/from the UTF\-16 Charset>. + + * <<#2.5.>> For text\-XML and application\-XML MIME types if the HTTP content type declares a charset encoding other than the UTF\-16 variants, that charset encoding is used, no other special handling is required. + + * <<#2.6.>> There is not defined logic to determine the charset encoding based on the MIME type given by the HTTP content type. + + [] diff --git a/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.apt b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.apt new file mode 100644 index 0000000..c805e30 --- /dev/null +++ b/src/site/apt/RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.apt @@ -0,0 +1,67 @@ + ----- + Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles + ----- + mkurz + ----- + 2011-08-15 09:06:56.262 + ----- + +Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles + + +*Tutorials + + + The following tutorials show how to use the ROME API. They focus on the higher abstraction layer of classes offered by ROME, what we call the Synd\* classes. By using the Synd\* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd\* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today. + + + + [[1]] {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html}Using ROME to read a syndication feed}} + + [[1]] {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html}Using ROME to convert a syndication feed from one type to another}} + + [[1]] {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html}Using ROME to aggregate many syndication feeds into a single one}} + + [[1]] {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html}Using ROME to create and write a feed}} + + [[1]] {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} + + [[1]] {{{./RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html}Using ROME within a Servlet to create and return a feed}} + + [] + + For instructions on how to build and run the samples used in the tutorials {{{./RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html}click here}}. + + +*Additional Information + + + + * {{{./UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}Bean Utilities}} + + * {{{./XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding detection}} + + * {{{./TheCopyFromInterface.html}The CopyFrom interface (rome)}} + + * {{{./FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Date Elements Mapping}} + + * {{{./RssAndAtOMUtilitiEsROMEPluginsMechanism.html}Plugins Mechanism}} + + * {{{./FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}URI Mapping}} + + [] + +*Articles + + + + * {{{http://www.xml.com/pub/a/2006/02/22/rome\-parse\-publish\-rss\-atom\-feeds\-java.html}O'Reilly \- ROME in a Day: Parse and Publish Feeds in Java}} by {{{http://markwoodman.com/}Mark Woodman}} (February 22, 2006).\ + + + * {{{http://today.java.net/pub/a/today/2006/02/02/tour\-of\-rome.html}java.net \- Taking a Tour of ROME}} by {{{http://www.rjray.org/}Randy J. Ray}} (February 2, 2006).\ + + + * {{{http://inkblots.markwoodman.com/rss\-diaries/patrick\-chanezon}inkBlots \- Interview with Patrick Chanezon}} by {{{http://markwoodman.com/}Mark Woodman}} (July 13, 2005).\ + + + [] diff --git a/src/site/apt/SitesToMoveFromJava.net.apt b/src/site/apt/SitesToMoveFromJava.net.apt new file mode 100644 index 0000000..e55ff52 --- /dev/null +++ b/src/site/apt/SitesToMoveFromJava.net.apt @@ -0,0 +1,441 @@ + ----- + sites to move from java.net + ----- + mkurz + ----- + 2011-08-16 03:51:15.314 + ----- + +sites to move from java.net + + + *----+--+--+ +| | + source + +|| + target + +|| + state + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/HowToBuild}http://wiki.java.net/twiki/bin/view/Javawsxml/HowToBuild}} + +| + {{{./HowToBuildRome.html}How to build Rome?}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/PoweredByRome}http://wiki.java.net/twiki/bin/view/Javawsxml/PoweredByRome}} + +| + {{{./ProductsOrSitesPoweredByROME.html}Products or sites powered by ROME (rome)}} + +| + missing images + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/PreservingWireFeeds}http://wiki.java.net/twiki/bin/view/Javawsxml/PreservingWireFeeds}} + +| + {{{./PreservingWireFeeds.html}Preserving WireFeeds (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/ProjectMotivation}http://wiki.java.net/twiki/bin/view/Javawsxml/ProjectMotivation}} + +| + {{{./WhyThisProject.html}Why this project?}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Common}} + +| + {{{./HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html}Understanding the Rome common classes and interfaces (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04HowRomeWorks}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04HowRomeWorks}} + +| + {{{./HowRomeWorks/index.html}How Rome works (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedAggregator}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedAggregator}} + +| + {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Rome v0.4 Tutorial, Using Rome to aggregate many syndication feeds into a single one (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedConverter}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedConverter}} + +| + {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Rome v0.4 Tutorial, Using Rome to convert a syndication feed from one type to another (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedReader}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedReader}} + +| + {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html}Rome v0.4 Tutorial, Using Rome to read a syndication feed (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedWriter}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialFeedWriter}} + +| + {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Rome v0.4 Tutorial, Using Rome to create and write a syndication feed (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialSampleModule}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04TutorialSampleModule}} + +| + {{{./HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html}Rome v0.4 Tutorial, Defining a Custom Module (bean, parser and generator)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Tutorials}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04Tutorials}} + +| + {{{./ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html}Rome v0.4 Tutorials (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04URIMapping}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome04URIMapping}} + +| + {{{./RomeV0.4FeedAndEntryURIMapping.html}Rome v0.4, Feed and Entry URI Mapping (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05BeanUtils}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05BeanUtils}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}Understanding Rss and atOM utilitiEs (ROME) Bean Utilities}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CharsetEncoding}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CharsetEncoding}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding detection, how Rss and atOM utilitiEs (ROME) helps getting the right charset encoding}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CopyFrom}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05CopyFrom}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05DateMapping}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05DateMapping}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements Mapping to SyndFeed and SyndEntry (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Plugins}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Plugins}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}Rss and atOM utilitiEs (ROME) Plugins Mechanism}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05SamplesHowTo}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05SamplesHowTo}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html}Rss and atOM utilitiEs (ROME) v0.5, How to build and run the tutorials sample code}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedAggregator}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedAggregator}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html}Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to aggregate many syndication feeds into a single one}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedConverter}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedConverter}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html}Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to convert a syndication feed from one type to another}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html}Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to read a syndication feed}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedServlet}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedServlet}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html}Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME within a Servlet to create and return a feed}} + +| + links in code examples messed up + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedWriter}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedWriter}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html}Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Using ROME to create and write a syndication feed}} + +| + links in code examples messed up + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialSampleModule}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialSampleModule}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Rss and atOM utilitiEs (ROME) v0.5 Tutorial, Defining a Custom Module (bean, parser and generator)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Tutorials}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05Tutorials}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05URIMapping}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05URIMapping}} + +| + {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping, how SyndFeed and SyndEntry 'uri' properties map to RSS and Atom elements (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/Rome07DateParsing}http://wiki.java.net/twiki/bin/view/Javawsxml/Rome07DateParsing}} + +| + {{{./RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html}Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal2}http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal2}} + +| + {{{./ROMEDevelopmentProposals/ROME22ndProposalJuly18th2006CURRENT.html}ROME2 2nd Proposal (July 18th 2006) CURRENT}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal}http://wiki.java.net/twiki/bin/view/Javawsxml/ROME2Proposal}} + +| + {{{./ROMEDevelopmentProposals/ROME21stProposalJune10th2006NOTCURRENT.html}ROME2 1st Proposal (June 10th 2006) NOT CURRENT}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndMaven2}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndMaven2}} + +| + {{{./ROMEAndMaven2.html}ROME and Maven 2 (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndOSGi}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAndOSGi}} + +| + {{{./ROMEAndOSGI.html}ROME and OSGI (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAPIFAQ}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeAPIFAQ}} + +| + {{{./RomeAPIFAQ.html}Rome API FAQ (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeComparisonOtherLibs}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeComparisonOtherLibs}} + +| + {{{./WhatSWrongWithOtherExistingRSSParsingLibraries.html}What's wrong with other existing RSS parsing libraries?}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeDevelopmentProcess}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeDevelopmentProcess}} + +| + {{{./ROMEDevelopmentProcess.html}ROME Development Process (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeFeatureRequests}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeFeatureRequests}} + +| + {{{./ROMEDevelopmentProposals/ROMEFeatureRequests.html}ROME Feature Requests (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeProposals}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeProposals}} + +| + {{{./ROMEDevelopmentProposals/index.html}ROME Development Proposals (rome)}} + +| + + +| +*----+--+--+ +| + {{{http://wiki.java.net/twiki/bin/view/Javawsxml/RomeWhatAPIToUse}http://wiki.java.net/twiki/bin/view/Javawsxml/RomeWhatAPIToUse}} + +| + {{{./WhatPartOfTheAPIYouShouldBeUsing.html}What part of the API you should be using (rome)}} + +| + + +| +*----+--+--+ diff --git a/src/site/apt/TutorialsAndArticles.apt b/src/site/apt/TutorialsAndArticles.apt new file mode 100644 index 0000000..0bf59ac --- /dev/null +++ b/src/site/apt/TutorialsAndArticles.apt @@ -0,0 +1,125 @@ + ----- + Tutorials and Articles + ----- + mkurz + ----- + 2011-08-15 15:03:00.951 + ----- + +Tutorials and Articles + + +*Tutorials and documentation + + + + * Inside ROME, How Things Work + + * {{{./HowRomeWorks/index.html}How ROME Works}}, Understanding Rome (a detailed overview by Dave Johnson) + + * {{{./HowRomeWorks/UnderstandingTheRomeCommonClassesAndInterfaces.html}Rome common Package}}, bean utilities, enums, copying and clonning + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, bootstrap, adding and changing parsers, generators, converters and modules + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, how Date data is mapped to SyndFeed and SyndEntry + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, how Rome helps getting the right charset encoding + + + + * {{{./RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html}Rss and atOM utiliEs (ROME) v0.7 Date and Time Parsing (rome)}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/index.html}Rss and atOM utilitiEs (ROME) v0.5 and above Tutorials and Articles (rome)}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToReadASyndicationFeed.html}Using ROME to read a syndication feed}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToConvertASyndicationFeedFromOneTypeToAnother.html}Using ROME to convert a syndication feed from one type to another}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToAggregateManySyndicationFeedsIntoASingleOne.html}Using ROME to aggregate many syndication feeds into a single one}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEToCreateAndWriteASyndicationFeed.html}Using ROME to create and write a feed}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialUsingROMEWithinAServletToCreateAndReturnAFeed.html}Using ROME within a Servlet to create and return a feed}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5HowToBuildAndRunTheTutorialsSampleCode.html}instructions on how to build and run the samples used in the tutorials}} + + + + * {{{./ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/index.html}Rome v0.4 Tutorials (rome)}} + + * {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + * {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + * {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + * {{{./HowRomeWorks/RomeV0.4TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Using Rome to create and write a feed}} + + * {{{./HowRomeWorks/RomeV0.4TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} + + * {{{./ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4TutorialUsingRomeWithinAServletToCreateAndReturnAFeed.html}Using Rome within a Servlet to create and return a feed}} + + * {{{./ROMEReleases/ROME0.4Beta/RomeV0.4Tutorials/RomeV0.4HowToBuildAndRunTheTutorialsSampleCode.html}instructions on how to build and run the samples used in the tutorials}} + + + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/index.html}Rome v0.3 Tutorials (rome)}} + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialUsingRomeToCreateAndWriteASyndicationFeed.html}Using Rome to create and write a feed}} + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3TutorialDefiningACustomModuleBeanParserAndGenerator.html}Defining a Custom Module bean, parser and generator}} + + * {{{./ROMEReleases/ROME0.3Beta/RomeV0.3Tutorials/RomeV0.3HowToBuildAndRunTheTutorialsSampleCode.html}instructions on how to build and run the samples used in the tutorials}} + + + + * {{{./ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/index.html}Rome v0.2 Tutorials (rome)}} + + * {{{./ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + * {{{./ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + * {{{./ROMEReleases/ROME0.2Beta/RomeV0.2Tutorials/RomeV0.2TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + * {{{./ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html}instructions on how to build and run the samples used in the tutorials}} + + + + * {{{./ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/index.html}Rome v0.1 Tutorials (rome)}} + + * {{{./ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToReadASyndicationFeed.html}Using Rome to read a syndication feed}} + + * {{{./ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToConvertASyndicationFeedFromOneTypeToAnother.html}Using Rome to convert a syndication feed from one type to another}} + + * {{{./ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1TutorialUsingRomeToAggregateManySyndicationFeedsIntoASingleOne.html}Using Rome to aggregate many syndication feeds into a single one}} + + * {{{./ROMEReleases/ROME0.1Beta/RomeV0.1Tutorials/RomeV0.1HowToBuildAndRunTheTutorialsSampleCode.html}instructions on how to build and run the samples used in the tutorials}} + + + + [] + +*Articles + + + + * {{{http://www.xml.com/pub/a/2006/02/22/rome\-parse\-publish\-rss\-atom\-feeds\-java.html}O'Reilly \- ROME in a Day: Parse and Publish Feeds in Java}} by {{{http://markwoodman.com/}Mark Woodman}} (February 22, 2006).\ + + + * {{{http://today.java.net/pub/a/today/2006/02/02/tour\-of\-rome.html}java.net \- Taking a Tour of ROME}} by {{{http://www.rjray.org/}Randy J. Ray}} (February 2, 2006).\ + + + * {{{http://inkblots.markwoodman.com/rss\-diaries/patrick\-chanezon}inkBlots \- Interview with Patrick Chanezon}} by {{{http://markwoodman.com/}Mark Woodman}} (July 13, 2005).\ + + + [] diff --git a/src/site/apt/WhatPartOfTheAPIYouShouldBeUsing.apt b/src/site/apt/WhatPartOfTheAPIYouShouldBeUsing.apt new file mode 100644 index 0000000..deabc90 --- /dev/null +++ b/src/site/apt/WhatPartOfTheAPIYouShouldBeUsing.apt @@ -0,0 +1,16 @@ + ----- + What part of the API you should be using + ----- + mkurz + ----- + 2011-08-14 14:12:52.930 + ----- + +What part of the API you should be using + + + Rome API allows developers to work with classes that closely resemble a particular syndication feed type. For example, the Channel class for RSS feeds and the Feed class for Atom feeds. All the Synd\* classes, which leverage the RSS and Atom specific classes, are the bridge to go from one syndication type to another. + + + For day to day coding, we found ourselves using the <> classes (in <>, <> and <> packages) as we need to do applications that understand the different syndication feed types. And it is much simpler to work with a higher and independent abstraction. + diff --git a/src/site/apt/WhatSWrongWithOtherExistingRSSParsingLibraries.apt b/src/site/apt/WhatSWrongWithOtherExistingRSSParsingLibraries.apt new file mode 100644 index 0000000..2e03e2d --- /dev/null +++ b/src/site/apt/WhatSWrongWithOtherExistingRSSParsingLibraries.apt @@ -0,0 +1,85 @@ + ----- + What's wrong with other existing RSS parsing libraries? + ----- + mkurz + ----- + 2011-08-14 14:34:42.032 + ----- + +What's wrong with other existing RSS parsing libraries? + + + Before we started with Rome we've evaluated other Java syndication management libraries to see if they'd fit our criteria. Feel free to update this evaluation if we forgot or mischaracterized your favorite library: this is a wiki after all:\-) + + +*Informa + + + The {{{http://informa.sourceforge.net/}Informa: RSS Library for Java}} which exists since 2002 is too complicated to grasp and use. As of this writing it has {{{http://informa.sourceforge.net/apidocs/de/nava/informa/core/package\-summary.html}19 interfaces and 12 marker interfaces}}. It supports all RSS flavors in input, and only 1.0 and 0.91 in output. + + + No RSS 2.0 output. + + + No support for Atom at all. + + + They have some interesting features such as Hibernate and Castor based database serialization, and JSP taglibs, which are useful paraphernalia for server side application development. This seems to be their main focus of development today. + + + But we prefer to focus on our ESCAPE design criteria, so that our library does one thing really well: syndication parsing, abstract representation and conversion from/to all formats. + + + Thus our library will be useful for both client and server side developers. + + + We will develop the server side add\-on later when the basics will be well oiled. + + +**RSS4J + + + {{{http://www.churchillobjects.com/c/13005.html}RSS4J}} was released in version 0.92 in april 2002. It did not evolve since then. + + + The web site explains: + + + + + + No need to say more: it seems to be a dead project and doesn't even start to address our requirements. + + +**RSS Utilities + + + {{{http://java.sun.com/developer/technicalArticles/javaserverpages/rss_utilities/}RSS Utilities}} seems like a one\-shot project from Rodrigo Oliveira, released in august 2003. It is a taglib to display RSS in JSPs, and includes a small parser for RSS 0.91, 0.92 and 2.0. + + + It does not seem to be maintained, does not address RSS 1.0 and Atom. + + + I would encourage Rodrigo to rewrite his taglibs using Rome as the parser, and eventually to contribute them to Rome. + + +**RSSLibJ + + + {{{http://enigmastation.com/rsslibj}RSSLibJ}} is a full\-Java RSS generation and consumption library, primarily centering on generating RSS feeds but able to consume them as well. It's maintained, but undergoing a refactoring to change a rather undesirable dependency. + + + (This isn't a review \- this was added by one of RSSLibJ 's authors.) + + +**Sandler + + + Sandler is yet another parser except that it only supports Atom feeds. I can't say more than that because I haven't used it. And now I won't have to. + + +**Conclusion + + + These are the only RSS or Syndication management libraries we found in Java when we reviewed what was available and wether it was worth starting a new project. Feel free to add to it if we forgot something. + diff --git a/src/site/apt/WhyThisProject.apt b/src/site/apt/WhyThisProject.apt new file mode 100644 index 0000000..f562ed8 --- /dev/null +++ b/src/site/apt/WhyThisProject.apt @@ -0,0 +1,37 @@ + ----- + Why this project? + ----- + mkurz + ----- + 2011-08-14 14:35:51.661 + ----- + +Why this project? + + + Various flavors of RSS and Atom syndication formats were reaching a tipping point in 2004. At Sun we started various projects involving these Syndication formats, but when looking around for Java libraries to take care of the parsing and generation of RSS we were not satisfied with what we found. {{{https://rometools.jira.com/}Project ROME}} was started out of this frustration. + + + Our requirements are to <> from {{{http://blogs.sun.com/tucu/entry/syndication_feeds_hell}Syndication Feeds Hell}}. In order to allow that the library must be: + + + + * \*E\*asy to use: given a url, get back a feed object independent of the underlying format, and serialize the feed object to the format I want. + + * \*S\*imple: RSS initially stood for "Really Simple Syndication"\*, and this simplicity is what made the format successful. Specifications wars have made the current situation much more complicated. The goal of the library is to give that simplicity back to developers: each API we use force on us a mental model of the domain and we are using more and more libraries on each project we implement. This library tries to ease the cognitive load of developers and provides a very simple model for feeds and entries, abstarcting out the details of the various underlying formats. + + * \*C\*omplete: must handle all versions of RSS and Atom + + * \*A\*bstract: provides a Java\-friendly abstraction layer on top of the various syndication specifications, that maps the commonalities of the various feed formats into a single simple JavaBeans Data Model. + + * \*P\*owerful: lets me access all the metadata of the feeds regardless of their format. If I need them, lets me access optional metadata expressed in extensions accepted by various formats (RSS 1.0 modules, other namespaces in Atom). + + * \*E\*xtensible: It needs to define a simple pluggable architecture to provide support for future extensions of the formats. + + [] + + \* \- not so, it was originally "RDF Site Summary", see: {{{http://goatee.net/2003/rss\-history.html}RSS History}} + + + We set out to create this library in the same spirit as the {{{http://www.jdom.org/mission/index.html}JDOM}} library for XML manipulation in Java, incorporating XOM's {{{http://www.artima.com/intv/jdom.html}Elliotte Rusty Harold's pearls of wisdom about API design and refactoring}} (see {{{http://www.artima.com/intv/airbags.html}Air Bags and Other Design Principles}} which links his 6 interviews with Bill Venners). ROME implementation uses JDOM. + diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt new file mode 100644 index 0000000..015b1f8 --- /dev/null +++ b/src/site/apt/index.apt @@ -0,0 +1,102 @@ + ----- + Home + ----- + msmithi33 + ----- + 2013-08-18 11:12:40.194 + ----- + +Welcome to ROME + + <"...ending syndication feed confusion by supporting all of 'em. "> <{{{http://blogs.sun.com/roller/page/webmink/20040616#rome_wasn_t_built_in}\*}}> + + <> <><><> <><><> + + RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0 + + ROME includes a set of parsers and generators for the various flavors of syndication feeds, as well as converters to convert from one format to another. + The parsers can give you back Java objects that are either specific for the format you want to work with, or a generic normalized SyndFeed class that + lets you work on with the data without bothering about the incoming or outgoing feed type. + + If you use ROME for your site or software, please add it to the wiki page {{{./ProductsOrSitesPoweredByROME.html}PoweredByRome}}, or drop us an email + + Some of the links in the Navigation are out of date. This is because no one can edit them at present. However any registered user can edit the content + of the pages and you'll find most of the links updated there, notably the Tutorials and Articles. + +*ROME Subprojects + +*----+--+--+ +||Subproject||Purpose||Latest Release| +*----+--+--+ +|{{{http://rometools.github.io/rome-fetcher/index.html}ROME Fetcher}}|A caching feed fetcher that supports retrieval of feeds via {{{http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers}HTTP conditional GET}}. Supports ETags, GZip compression, and {{{http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html}RFC3229 Delta encoding}}.|{{{../fetcher/Releases/ROMEFetcher1.0.html}ROME Fetcher}} v1.0 (Mar 11 2009)| +*----+--+--+ +|{{{http://rometools.github.io/rome-modules/index.html}Rome Modules}}|Provide support for feed extensions such as GeoRSS, iTunes, Microsoft SSE and SLE, Google GData and others.|{{{./index.html}ROME Modules 1.0}} (Feb 24 2011)| +*----+--+--+ +|{{{http://rometools.github.io/rome-propono/index.html}ROME Propono}}|Supports publishing protocols, specifically the Atom Publishing Protocol and the legacy MetaWeblog API. Propono includes an Atom client library, an Atom server framework and a Blog client that supports both Atom protocol and the MetaWeblog API.|{{{../propono/ROMEProponoVersion0.6.html}ROME Propono v0.6}}.| +*----+--+--+ +|{{{http://rometools.github.io/rome-mano/index.html}ROME Mano}}|A servlet pipeline framework for RSS and Atom feeds.| | +*----+--+--+ +|{{{http://rometools.github.io/rome-opml/index.html}OPML for ROME}}|Outline Processor Markup Language (OPML) parser and tools.| | +*----+--+--+ + +*Further information + + * {{{./ROMEReleases/index.html}ROME Releases (rome)}} + + * Working with ROME + + * {{{./WhatPartOfTheAPIYouShouldBeUsing.html}What part of the API you should be using (rome)}} + + * {{{./TutorialsAndArticles.html}Tutorials and Articles (rome)}} + + * Articles about ROME + + * {{{./WhyThisProject.html}Project Motivation}} \- why we started ROME + + * {{{./RomeAPIFAQ.html}API FAQ}}, why things are like they are + + * {{{./WhatSWrongWithOtherExistingRSSParsingLibraries.html}Evaluation of existing RSS parsing libraries}} + + * Inside ROME, How Things Work + + * {{{./HowRomeWorks/index.html}How ROME Works}}, Understanding ROME, a detailed overview by Dave Johnson (This doc is based on ROME v0.4) + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEPluginsMechanism.html}ROME Plugins Mechanism}}, + bootstrap, adding and changing parsers, generators, converters and modules + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedsDateElementsMappingToSyndFeedAndSyndEntry.html}Feeds Date Elements}}, + how Date data is mapped to SyndFeed and SyndEntry + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/FeedAndEntryURIMappingHowSyndFeedAndSyndEntryUriPropertiesMapToRSSAndAtomElements.html}Feed and Entry URI Mapping}}, + how SyndFeed and SyndEntry 'uri' properties map to concrete feed elements + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/XMLCharsetEncodingDetectionHowRssAndAtOMUtilitiEsROMEHelpsGettingTheRightCharsetEncoding.html}XML Charset Encoding Detection}}, + how ROME helps getting the right charset encoding + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/RssAndAtOMUtilitiEsROMEV0.5TutorialDefiningACustomModuleBeanParserAndGenerator.html}Creating a custom Module}}, + creating all necessary pieces, bean, parser and generator + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/TheCopyFromInterface.html}The CopyFrom interface (rome)}} + + * {{{./RssAndAtOMUtilitiEsROMEV0.5AndAboveTutorialsAndArticles/UnderstandingRssAndAtOMUtilitiEsROMEBeanUtilities.html}ROME bean utilities, equals, toString and cloning}} + + * {{{./RssAndAtOMUtiliEsROMEV0.7DateAndTimeParsing.html}Customizing Date and time parsing}} in the rome.properties file + + * {{{./ROMEAndMaven2.html}Using ROME from Maven2}} + + * {{{./ROMEAndOSGI.html}Using ROME with OSGi}} + + * {{{./PreservingWireFeeds.html}Preserving Wire Feeds to obtain access to Atom/RSS specific fields}} + + * ROME development + + * {{{./HowToBuildRome.html}How to build ROME}} (ROME uses {{{http://maven.apache.org/}Maven}}) + + * {{{./ChangeLog.html}Changes Log}}, what and when + + * {{{./ROMEDevelopmentProcess.html}ROME Development Process (rome)}} + + * {{{./ROMEDevelopmentProposals/index.html}ROME Development Proposals (rome)}} \- proposals for new ROME features and releases + + [] +  \ No newline at end of file diff --git a/src/site/resources/HowRomeWorks/HowRomeWorks.png b/src/site/resources/HowRomeWorks/HowRomeWorks.png new file mode 100644 index 0000000000000000000000000000000000000000..ef677ce01b814ab1bf75e12989e22bdf95f48768 GIT binary patch literal 67373 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�Noy(ZYiHmUY=n8M$RFDC{X|YT^vOm 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 + + + + Java.net — 404 - Not Found + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ Create Account + + Login + + Help + +
+
+
+
+ + +
+
+
+
+ +
+
+
+ + + + +
+

Not Found

+ +
+ The page you were looking for doesn't exist.
+ You may have mistyped the address or the page may have moved. +
+ « back +  |  + home » +
+ + + +
+
+
+
+
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
 
+
+
+ + +
+
+
 
+ Close +
+
+ loading +
+
+
+
+
+ + +
+
+
Please Confirm
+ Close +
+
 
+
+
+
+
+
+ +
+ + + + + + diff --git a/src/site/resources/ROMEDevelopmentProposals/rome2proto2.zip b/src/site/resources/ROMEDevelopmentProposals/rome2proto2.zip new file mode 100644 index 0000000..88ca059 --- /dev/null +++ b/src/site/resources/ROMEDevelopmentProposals/rome2proto2.zip @@ -0,0 +1,275 @@ + + + + + Java.net — 404 - Not Found + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ Create Account + + Login + + Help + +
+
+
+
+ + +
+
+
+
+ +
+
+
+ + + + +
+

Not Found

+ +
+ The page you were looking for doesn't exist.
+ You may have mistyped the address or the page may have moved. +
+ « back +  |  + home » +
+ + + +
+
+
+
+
+ +
+
+
+ +
+ +
+ +
+
+
+
+
+
 
+
+
+ + +
+
+
 
+ Close +
+
+ loading +
+
+
+
+
+ + +
+
+
Please Confirm
+ Close +
+
 
+
+
+
+
+
+ +
+ + + + + + diff --git a/src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1-src.tar.gz b/src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1-src.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7cd72b1e0b6d766c322aa1e5a953d947799f98b5 GIT binary patch literal 51365 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�p<2x2R?+ z^URM`8Ro|oaf=_3FOya70ek$hEZ5qniKmkO|70<*a{*AK|L;BS+4}!Sz1IG3El;ce zZ}tCQl>VQuQB7*}qdIi!8*e?JlmD4ASj`5BL_aN2^Td` z6+YmspC<1|AG3+>NJQjCSrXVB|CmY%QOu$&Df9 z?>lc$Ev3L&vrJ^L5Oxk?8Q|1#+3z+0=IA@Ci_$9c88q0UxFZ-KH`3O|^biipej4}(ydMal*xMb-w z1Ax@}>-af%TS<~Gflba9=j>l-0+DCE7jN^4|XG-IBMWzJyOu6y-DFIj?o>@skKb-M^Z#J{*r z@;z;0?4W-t)}7{7-#!Edp|M7-hqGg^tus|lYm=F=wjs|i0hXPiHIodmlW}kBUe+WXeeL7ye2hHbm z(AZ>o`D=i<{=e7Td9vf?e|y~O|JU)f`u|q{|Jn5au&h+muLn)uF-+FMY?j_Za#qi` z!0S_<&v%sNo{wBlb}{{sO-BCqKu(nB3=s^=pVQ3iZvRL0ZrS!WCe1~+u% zAYWLEDzF2a5toZGjtUyQ1NjHj@i-gcZpv6(wllv<=LzF7oJb!gu3&L z6)NF#%qT3V!lf)P7!E@jj{_^tMnjxZfN=o5uI>&9jf^;Pr)t-J&zywMe}+%cA4NG~0aAPUF>fmH3nO3<|hdh9p`YSVMBQ|4g4 zmX)EMNq^3nB(b7fncza zufzm1zy-ymp_3Ocy6hVQaeWE{bHpd}$fg>f6nYxSChXbZZUA&lzJ2!{>|_{ngG~$& z{|rj7cPFnfG6#Cg(sCoTWMU*LyjNkRf6#4qJX~yWYXQ%={6K@VtcfMcE|~Y28H6f% z)f_<5=Mf(8gtmTLVx+a&U`EDVl9vlEC=dBo^cWRVP<&8poH}sjb%I9^V_hmZn~mNy z(GwXs0#plK?5i;zz=N;+O@h{GE3jBa`7+)?XGgbo;sP9fOd(IrQdGvY+@71&KxarA z$h*maRRitP5HzLWLT2S#zDzpuaQ@623>g<4Ns4FKM}?Fb6IsVIb|M?=^M8bMyL6hj ze7t5pb`=oS7}t-pHhDk4dOG^*D|zQ z)yK}lz$KkP#q85lZ_VGmZ#gU&Fh97?#&dPwE$;l4ngT}YmyNFoWkt-o&gNGeziw>0 zc>G>=VU;5{pCTW1g4z@=8w6&VJk-Oq;R^JJdg49Qs+7>0Xig|g_iOAJwYD*wHF_!p zXAN#< z_?s%|n5rF~#=kp@58o|0z4<%YLe2z=&gQQgl>8vs5UY}==>A)oLsOgYqHKrELi;X8 z0V=|rTP+Lf`#wZkmesFmVKV{52DzuF^WTR45NOhr=l|ivwe^w4}ya)F(}qmSXJFVQYogKJD`*Jgxm- tYya2U|F!mit^HqX|JU08wf2AFX|0x8`@h!y?@ut3{y%@cR-FJ?2LR?kOFIAn literal 0 HcmV?d00001 diff --git a/src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1-src.zip b/src/site/resources/ROMEReleases/ROME0.1Beta/rome-0.1-src.zip new file mode 100644 index 0000000000000000000000000000000000000000..f051ec57d93dd4617cd23b8576757d5444479ec1 GIT binary patch literal 134694 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%0DXKtackW6JXR#H( z#y1!=U^xyxVN=_7bsYG`!-YnJ&w@*3YxXsApEiGfE~&!maxTTjV;S=g~PNNU+Bpn*1=yc_qJqJtlU+@^1Yv@ zmV=MU&vH*e3@vZd(ZV;ky#R~pB5DwI4?|qP`8&C^FYaEOES9LRn~`4NiIWa#81tXa zw407sQQVN{9r=WQ*3^M?(tyAHJqA755v(}s*msd{5Xa#&aXn=uam5#~%o}bxnpgbC zAnm=H5cHt~IwptZImfn=Pdvm+af3HY?JRqhzIVzM@jFoLd`R+tFuWaga^sJi_ulk} z5#Qtr|FgaE6Y>&9rsGo>lkaP!!(uzs9RkxrJpSh)fF+516J;BOLc-v@D~yyF^Znpt zfPgUvPdBWNbv%YK4KpdqF04I#+)n(BR2`M0>X)*B9f>uxqL_%(4gi@p|5Fa57<2m?Y1;GHziU0^!k#<+h8SVJ|M)~Yn>d|k%{3BQhdkuhb zMqd8#!VnAlbt%<)=;_V5FBXGCXyUSO7X@bp%Wb4jfiXcbxi3M;zurhFh5%%T=|e`Y zFAs#Jtay&E86=C^BJT=XLxl;QF+DdvJYG+QhZj7V>F8}`UatTf!yjTXke5tw0D(!W z4&Ud`3i18(`aP&2XHkxW#+&#|!-4oam)~czyLZA_JKW(;Y2W2Edi6iij2e5LwwgFH zW7y+Y5rl+U3Zcxg5ivMC9qOXDT&+JAHjqB$%f~m*za{BlE?0HYu<$*|RV{N#b_-}2 zUddH155pUIqoipDNaKCT)h-t!CsHq;&4zuo7-+y4rhs;wo+=;>8+m+6>Zd_k{?oq5jmw-dtZ$_Qd(b67@h2X}?q6%wLmG^Z;75(;`?eS@}kPI$D|QYpPzhAx8js{q>*gvI*|4< zaJuU4n0AT{n~fpT*~;WCRMJ8DEZa<4t?44rsh>Xk_;Q@Z=6S((y&%*I^MxZT7mAsw z!@{`-k>y)i#tZrRt4*PEVoSi~)4U6P2tuKoJxJoQuU(O_#yiEW6W2Z8WL?ED4S+(X;uJP~ zWjc#>H-+J5Cqn&-*kA2Ufr9{KveRihCP1mbVo%EY^gl_kd>Q+yfD-@b#tk}9jsKxd zvLj>)Q@y1-o4|bu)jfAEE}fH3K0mxZ=gAzkP9JLe<^u12iu(xAd1-{2c4S}$0(Tv! zV!K)etx3=~7uALmOtG!+v4WmEl6lBsTeNcZ#N(^Q$%id;P9F#4-tOw0KAo4~1#$C1 z-ENoL^+jtI{$a(WHpgLXhpZ$p1&Rv5SfwWTjs@YOgcZDmLut+&gmX&eOGp8WftL2rz_2=mF^>2=vK(qgvCj zBZd@g5!d%Al%0=eBFe`2f~E0h%>W!s?GpEcS@~`N-wy7KYpE6k$(8RD_$Jg*^{=U= z4RtHT&>!T~P>-ioMJf$4za*je9E>rJ6O<$R0L$Q*9)4&Uo+lH#Q3u6L8{VUv$~Zo_ z*AMGyKZhF0HhtBrqF)$<-wCc0F?-f+OnI919guI~N2 zi=KJBbR6Em`#cq=ifGr+{I~BHeA#|};s2Q+!)J^aN-4lA3goPQLG+c*%z> z++r$sI1XfxCJ$$IrooPV8{RZc8OXl<-TWeNMb2Es>3-CQLd!~C4Q+b zK{>dq`uXXNrmh}W#h@Dy)Pg?CeUdDgzgQGdN^B*z=uT)b0sD=#T5_yDtunv~ORf6F zkoOlNYs-7sr&+Ee_OkGrn{p(?goVp-n2bqi_o-hSkTR+0h13f1gw#ciK@h24J4*2Y zweyy(GOkPdfSU}f+bczr9Z=EX9R^x zWXLq8sS}d=^_0=NWkU4S1kKVL86FW=;6Jz_WoEK0LD2O_Qwl4ryy)0F#dl`9I6HII z>zL4h&e6UFflP!p0LHZfK=G{;AT+~YrFfTxRi|UE_b#_imUCjw-i%k^RHtt+wK*Q- zbf&mzvkc-BMe4l8bTeQyDvPGJt@pU-H8zmdsT-@0e+nMv`XTSI3E)c&BwlETt04`J zb|YkDU66^dFBDs(Z@4gcXW~YpLvV1WI^2SIBCpe_l*?1oyxaJWPR#-3C!}U*ME0gM zc2Xj}1FKjl_MEbf$h$;^pzpj-`V_a4H zdKG$s@N*SFJ7GrsC74m{#Mk#HwX}||{4e(*oXnWDpRME$sR!MSM~tPrH59_G$m(j$ z_v-%U&$Iu6I*yhfEBO5yyQmaEiyYV+5lVDbr8W4-!L|X>#5F%$%j- zrXLs1t!r){r(&n?KsyYAkpXG|(FgaN-4o*s_nC=Vb*ZnJqSj7B#Cmk@3u2;LS&Vf- zY0pw>kR4f!`a>$KGX0F%@qTVw?VE{$E)6u9=YM{@e%-q3Flgk}vI_Bt4GomQX=t&9 zR!Al-%L@bhSC-+zo!S@>te~;;3u*}SGs!cfBz8yu%NhA$bI_{}bQsBD4X_5}0EtVX ztqp29O_a44uMd8M23*mA_*oxewI0fXs=@}}f6k|@8-<%m?RjBC$E=RMs;CCp^y&BVACg)~t?+3iuZm-TXLS6A$ zT=5O~5PsK4f?>PQ)}bAq8p>gn|4C^@113}nYRo8CYrMSoX^+BaV|8m6HJ~5OY+LPE z+sKz8v+byc_(w70bN&}2WB@)b*z*UyjJ!z$R$h3%Z%5#|(Z?M}jTZ9O!*_oZs?W^Jqbp$oo6nAB)0oXL+E}v%!EL zWbq$w>%B(}`A$Ju#38p;D3V?Czhh|~FTf5#hKuIqV{Aaes~nRDTh4=v0U>!qJH6?zbN3H&N8}4?(!VQCuX)ldIq8oG zH~<*-%b^GF#cdl@i{v(qEkPZ6N#t<>B^3}M1;4@`@4 zgn0E;^Mtf}E|zofS~pOp4|q$0trtF%MHiuK85sG^Ku?X0N;nxC6aXfW60=CUD9M5y zspVZ}`L8JS!WgC^jHA#OTZde#CG?0bi1ZAbQ(J?byIndj4~|Mac**6{PV>D!@YgfU z+U@s#=r*1%G#s=|(~+HG_DdQx-Y6J2yM$WSE>sj$bByjxQQTc2o8wD*oaY%iQj_-v z5}zF(;ti=CrW%MUle;`vvpc#6o{#{~#C|)$@?^(6{s2ko*}S+zr~nfvY45_|p|me% zA-}%Me@-10G+xdeHTEsvX6D|lhd)eY%^MW_yqr16pOe#|U1#}Fe4`!Hs7~=bLD`tb z5U|@b>rty!a5S+vpvdns9Eb)!WEMURlY6OJ`vkOgb$jJk3jbV+L&MH^eK;P17aVAQ zDAClJ4*6z>PgPX6>F^u;x2@~;ah-sOe08D~k8>54p!S_=t{_DSjpzMR#GsJHi|UJQ zd1^NFu4bA#*uYcFpIJi$2x>x~^dXir`$-@)(ldz9_q1H3S%SQF6chR;*`s)4mFZ;T z5~a{vsDywXf#>vyfO$Gyo>B{!5I(A)ft?hVF(NHzDm)b;*21An1$6Dz)iLxfvpqXV7r>%A=qUQ7% z%Go!yu5~G_RqZ^4T)fgZO{lTACP=7Cwz$C8BPS2?u($CrltmX{s>8*XE0=PKi!`K` zds&r`&>~vL7FF&~f}%Q^G8KqF~eZr5Gj`hP|}lS z&a?*FB2qyTi3vX?6${zI%#@mqZ%LcnrP2x%g&-iC1`goUiF|RMf?nbY@Ee5JY`{(+ zTBX8Cjl}eeq#$5WzPq>JZu-h0o*0{wM{RRqOA&=IE9zTEE$`9fnG~(VId0!9_W4@E zt)Wp1-7YAD?vwg6!GMl%qTtgRsnS?dF@N~xytRd7d;EJ?6+n+Cai9O}ft&@SD$t>P z+bt0EGz5i_@Bbt!pLU+_FI?Pw9GOHy@{;y~<|p;8l8(SH$$U>z*#065;6hRn@y(}} zf1o;{tD%xfxp*gy{9WtYi^iwRj{8v3%HW`+9DmKx@SPV-l-r>izu*0LZm7+Mj|cP+ zb=jBtpse864x-?>*jDTCi!{Bsq?~PyW+KI+5LODV`_q^<_m5rm=`-opBcOkdsXX)3 zCvnpak{4F`R#MXwVGFM$nbwSSM(lLOYhUvvHT;|5Tma6^6mMf1xL;WRJo_K~j{^-W% zZF%N_1PNxu=^tJk0NJ&R;K0ilZlhdSV0McV?g8e-uK)64scB=J><}8=F6;h7K1|B4 zb*7go%E>+hzqi+jK1m}jp6Rdl(d9=&SR$7~`@XutFeWeiM36+3rv07VXiD9{?gVI# zD)&ws-*3#Z9+yLp!LOfP?L+WJp1(V5XnJJIj5%Q%+f@0cifnbKI&-pDi@t}({cfJ$ zFx;rx!5HvibQ;mK{CI$vsW8pgcqST&OFT$ShhO1OZbkQGxI$GLvvK%Cl|K5NwCrqh z4|1oxE1k!repKTldDNIR@@&$0<-tA0gYLICZ#fZdLbu@T(ywmHKJ{lUXN7>HuIn&C zwA(&?Q#6nDYA5YyEw&Tx=^ioKOvxALAU(^M%s|UUL)nTuw^EK@6VN|$e%V0g0<=#Q zGko@$h{+&+{&;tW)VGB4fKUcjURo?UU^*wu8j}W|DeSQ9l*_|R8|eFRfWw|mPWw8v zpj%YWrbTM$0Vo}Q3moLoJx?(MU1nVl$L=zn{`oUB2xS8bht?n8Dg<9{0<(zyzLIE8 zI$faZ?dRU?whHF)bQ$qyCwaN3yw)k6RrV@QC=Yf|CA}g5tB-E*0|ns#uk;zFFhf9g z7%!C6JhJwASr?;rMpBl(Bx-)T+!$WQWU2}2&#{R&OqNY(<|Y|-wiwG={`PEXXmTN) zBfFuDx|yatOL1o3GJQvr+Dl%jU52kR6g(kCwY-$``{t20`l+S$Oj2>~_L;8+koc1{ z3BHQPR~G^pjz_;CrUiu^6*1p`Ik;gq60$WxCUBsidGft#_1{YPOY;-G?;w&@tk{)F zw57;5iLSBxBasg%t)8<(uBHC2Ud6E@ENYgTP%*Lk?G`ef*v{OxnrpYZuezDrOj8Qu zr)gzqbu&#>sxiUNIK29MBhBPeW)Dd$pI6C?tk-i3Kdb0KfczA^enaSJo3$Eo2+gVw zT|(}SnWdl4Z{VD?*By8^VwG7j;RA*T;dL4$l{=<@Zi-g(erz!1C@IQ+(u{S{q#~1e1^!A-llrC8>z+drzYeF~II+sU`}&r9F=J?>I7SeBe!OdlT;i0ed(uv?vQ&;uU zUR;bDK!g4XGfsmzIQ_-ru6GA|r#?5U%y=e0@+tqQZDRmzJ4Er{G||X(#*^M?PET_G zu$0KUy0Yn|3S^99MA&}@l7BiEmHr+oELkv=DUU}aEV1^P*9g$8Vy0BhTl;l*BE|Jm?vQFvAPrTI zi*M7|Z>(SNhaFh$AqAE|${G5^i)TQhqA5${LXp#@=m+AmsJKrzs@L&cNX}{iR=PC$ z!JK+eoo~-O99H7Ok{(Q*Srl6IQ9}8qc>1~DPgx_chA)6pI1Yk91vtP=vOXmBVK+YY z5G?pslBUL9&vrc#hKWK+EfuH?E|WKd!6cv;k;aD&g~BNEmlM}Bhk>#w#X}O_L46%1 zu|;%(cg`*%@`wzbWIPa6BFfuqi%mf5y#2+`_Kobo7(UfHkXZLzx5R&fV+&0ZZialP z+?R^hs8prXlS+@(Ak{8+gg%YvU3;cuE> zbXG-~T=LBS0R0qnR?^0n_%y8YT&GJKeNAF08K~s zhSb?tJ~^t&lg63C!p=F->vddL@V;y~(G#GGis+HzBCY4}VXYc0@%@7I(%44PNJ!3s z>dwvHPMam@zKnU$wq{$Jk+finm=TpF>hNG}=Db=~ULxT;vG}x-Qv|p(h`8F{!}^Qc z5c%SECD$WTqd;DVWh%!W71)&`OXoBhqT?Lo z%W^B)z3YtU17$q`EXPvt^&mjHWTQlT3ZE7_e=SAKNw2JICz>RNa)(1-A>y!6mE`97 z)&2FjQ=5@33vq=|@TbF*AcRJ0ZF!@eylj>?#v6cr446B2xp0UayMDBn&ShJCP6yy(lsSF0@D{>!A3~@~mhd(6 zG%sdyQP_n>Gv)9ogkAR~=Wg9KL^k)3rUKVb)0!rTY#Nj_3nAmns&eHUTNT;~0-yK{{$^*BN|mU!%v;D` z=P-Su`Wi%09H9Enm~u@YycdpsEvgbFA;Y@R3_9wee^HBs>!bWyXzSXFYC*N&?y9=$ zf%*4B1qI*{xL_Skl0pX22`Zg<7kwb|@CzQk{R#wlCBPE0nzOI@-OHow4?`2i+G3)#@O<3MrqBK zgq}D+3F+=bSK0b9nky`#Y*~jr8B*Nsx!CY+U#9N5v47uT8T4M{sh13*qPa1d+BM}()dlhi6q2hJ7 zy7^gUN}I~XIvT&^?SZP#sMc9wV}SAAxNJgV0?0kBQY5sBc))Ym-Q4D zW6HY`;zG*cw+{Ls1Pg;T-hRSP&9c@IRB(;&{d5*{Vd68IH9M%Zj|RJCFMlS<3&6JM zMvIhUA5Kltq3~!MSLJW$AT~^9K{kA_X>PGnGL(yBwPm9>#lXPnvuV)6%*G<7G zRgrF#n8SRs2-FR!%r6#vl{HzzULH&Rz}>YU8CguGeH%45lQ_E`IuXtAb+{f!8a5=p z9jrii83&tlXy8SN!k@SxmG(@7(KPwD2;${u0e5bd#ewCY9qwr>m^UH&om(2g3DOWZ zYqz=ylRz%vfGdFjUA~y{ZdbXp#0u8zd734&#prqPYg}U0KS4Q`j#`WubhQX3-4NBv zmk5M*o9xf*gxaIKZwUdh=rdCG*RFfuyRPVGd}!Fl5W@9BRUn4U#`Ea?M#8Bk|0YGr zaP9Xpb&G&sHaM$%wH)#So&O=~b?Q*@p}-y7B!ZVRt`wy3I=aq0a84Gi9}Z|VO4}m~ z+9NwDeHw2xOgJsc;wKxXkl9R!$xx1Mw?g~oZsanrl11m@GW&D?dqyhbkaZaNs`_y~ zlG8%?a1-nSbIm|DBQoqnfKD8u4i9%8($NB~w$!+Znx+M_lw42U7B_ z`{tVl+~@~L+%;VebdY33qsahuS0fj{-EU$&Gc?_0iYj=OCLEgNZlv}ZJd{A zItHCsL7!BF;(KY~=}NY$FIXf=b3ehf9TG2{WS3mC&;?(YNbd?_T{F!Qao!Yw35}Uh zWTqknjci7YN>!F)1{|k4kts@|B6(`#WCssuI*` zddpfoeBYf!=9AsiBP5I36HbzxTx*lrBX0fjn(Gj}4sF{>!q&9t5H#v_+Y?@fyBgfJ zur}0J!J{f2SoWfX9u)boR+p;YL!7E2X>xHz-}{98wMo{bnsAQBr`cLEYiO|oV{yQb z5nGkH;tMr-$1Lj6o`mbh?ow8t@yDZU6uWYc@m{BVs02%#S6~fS+-u#@DP!-EoRy#l zUat(06|d?3koDa0wd2og+-17FF{$I3qA~I(&8>o;nD~?i&WMxH_T7jZkdmqBLB#@m zNAjLMIyK_$RELo5TU3`&g@DdUwJ$4RQRufGrr@XLtU*DJt1{;mcq&{TXM!r}k|G(n zM@Utm4L%i0?(b(~XW2<;=Wba+2+2zOY^BtpiN(cVByufOo)9%WVa-+~iMoSgPn+On z20$>QI`_uFJ*2UW<3A-R30h9_B3 zR3n{t)AHz)L|nLkdWJHvkyL#(Hit_vc(zS69%{Gx*XBv?P1>h z(*NHIwPY&_{WU zVk4ChoFBd{9G z%HvZDR+Hy75FHA1n85fDtTKn_@YAKm-!z7mW9G$?_5xJ0il#(G7$Hr!ms1ZRo;{Ephy2Mr{^>4L(_~}gb+QbD)?u!0V<#SiIH;HOKDzqt)XG^e7#CneV&bV{s{1G4Ha! zo%$%bkffwY;uHiu8Ox_#Ch}NS>(Hvsd(3{>EZ_K|7=OoshUh+tW^BV?)Mqudsf9dW zEH zgFPFCt+4QMQnBy%+hISsNRFO$(&iCxI$%Ve}Bs?=qV6*_FHs zCAl`n>7z#2=_4QQEHBKrHRb5FV>p5W!}uDEu9# z8#Pz`2Q{Z&_kdBeHW)QS8Vm%o{DL&t3uG}7O;_z$0fKW2N|^Yg<5ge$KTxm3DZ6$L z@N0yk!jqzK{>?3T{+nA+n(mv-2q`oK=N96blm44q_#>K%{r7{MZ7zK=&NVSU$6HD8 z-r>TLBZRLP1~C|_k0;tkKp-4kLu}@jiTc0G?fNcN!PRZU2gmsonNs5MdQ#2*kFU21 zi>nFRMR6xsaCi6M?(VL^-GaNj!{8R&-Q9I?cXtRb2@-N9`Tl=DXJ4FiF*7i$SFi4# z>aOay-l`r2S~B;zgn-5LZjKTMuBtggba(f-VHqD=>54J@sOn_%L-8KtZqM;+X}L+;J#@pSjY?`i8exOL_Sp>eLE!dlnkyE2uB zmr)I?#~nrBD=fI`^~SzDnMa3F4ZDXzb$S)Nhu`VwNTEEjuj7HdRxdeVoIh|ia~ul` zZzXhGZWmEtZ4Y?FjM9C6mtNCE=*R=-wdic^%8H@!GQF#tYCpKp-@ON144#-qZXM-B z2m$B;*sINC;-`xX{m5jZe~MuF9n;RZCl%7ifRCHxzjqsLNCnZf)8jMcCsT6MWm}ml zCGTnTsr+_MsctNwM`YkHQ_~Q7^!TR5sV__^=kx>XV-7U)6gV^)rZ+?DBVytm=GY4B|=;awqGtjw_NX~=mRow%({5?6tz^O%mLk(KK zk-_LTn!!FjjA>tDSojc&FKFdm#eNhpCxb_t<-apbU@Dv8!7m6?Hq^{T-T%!_HvsgA zZdY#1#)FOC_>`hQ7xxy52%^O+Y4+ZRx}Z5-DjMg$Q@L1vBma2Mf*a;mr$@ln0c;Iw~H8&SmKznS0zTgyTiCC z)IAQZkdXK=Zxwj!AotLXmP3JVyyx$a`7nC;d1z-}a(shGvnl#|VI|~;C(C1_i~S=- z`gQJ)8f2tD63s#}>^pdiT8KBTQ~dHX+KWXFCSY9y5&C*_tidkdoF;lHr2L-2aP7U$ zl1Ro0h~-8GEY${aK|YYO46n?|U^yTqDA%=O$CUX13Ea$^N~epa1g3HFh<|2Q9f{V-}?7Sdu8A^J@M|%H8`&^{u%7>88&?E)7)n(z3vjtd=_N~e;zTO0QA(mW~O6Q+&01m2Ic=SsIph&(WkO4r1DSp{`r?4r`gD&>$R-l_;{1_4`*c zy6OYYE}TCP$RI95qrXf-I>o)%g6DMRNP^+y;Lm!L+^56t;XSlLI$byu?OPlxQnIDP zF5$7aAv(Ep7&`fD4Nj!Ch_B_+&c=d{3U(BEB;COgF&K3Z-|K@|5GK@M} zF49Y4x&H*FXdr6$FRhBQ^a%^f9LLEmsJ)ac?w1N$E)_(uL{^LB%*PLhnGCP>i0AZu z=j49A{D2WKGgf7PDVmcTGxGo7bT5B3!THQ66R1Ma6rc|!I6I1=)$zs< z+)FH5XzlVWSM$nS-SZV=!oV;$p%YRPCvx0FX3`l9L4QptW==Zl3_GY#Ipr-1kd7$| zIXI&c;&WccIDP)M%Io_duf{QBm_1p23@*3ApZ^Q*EHp%hPYnJe&D4)DRy%w^W*iNl zzp_BRAC%_H?fgKM7H(5|FZ;LB{vWdr-0XkzP{5}>4_Cmq9!XD{_*_kcLNoiHFM9pQ zlTEKK`DSzRuE}@@;XRZL#E0`%C6G~zE9rCt3A9i?t3ZG_t~*p`I@)T&zX>jUv!!-E zu1HsXfGz^N7spb@?T$bHS#I^)eC9LOiN!tvU}Wd?-@_;kTYg5sRo_q0skZuns18!P z@S6e(+Vl=xWyt?=O6dH%%HSBeiKjQv*MMP{j zu|U}B)0Ys>0ibwA4P#Z$JBz(0Wr#&XFfD$c8gKcO_w%&Y@mD@*Hk}y)KNYDJcPzsM zfy`g)nGL>XXp=%=`D05s(<_Smy_)~^RT@&4KuM!-i++6!QOZ<>Q{Kt^FN zJ1oIUF^JHgKH4@YSn!Q8j4W65kT1)yV7Wp!xn~peA24Mi?csnDj z-)dON>c(kZD7iVv75ECz+&@id@BKL479>>AnQw~N)Hql40^1}($`C^|URdVqnCSZz zqKfAGG@J)W$O%%WiA|pr0SA7Gl3%@|*)PJIzrc{h1>L)lYjGzX4}CpO32hPmGY0K+ z>D!ubT*1M2(41%OKQA@CH})*6>6^&piTXKJcaRtDIMs|EfuQT zfgw@+rGPCfBAI6j+Hso)$wIfxhA)mT;#B30xP#y%h)duThC@pmDXKtciRyJ*8)+gD zTydGNJ0P*thb)m&&aLxzJ?C(6i70*DXW97M;Cl+L`sJ#1ifwn(Y!h%GN=jLGf4nK# zEv1~#+~ZBrHmy!CiU^U|@ykp(>A`*f=T{*6*~D~${-68@$;g9!2+%KvVRzk)8)|Dx z_}Y4}PQ7*LrA9_2JFM;>A8GZZkJ*e_D$Q^;!5p|o`N?VwD(WchjPO}Dp`Nl>D)G?Z zLQv^H-_XtjoGZz04(;6>mMG#o2vpJA;t`aOFi^9+4LST#``g75&sljocRle--4U*{ z?X#3+r>^{!gjIVRC}&%o?QR!GptfY-i4AWM3hRd()HosQI3cO?Jgn6By|JISUr&80 zjQ3eBjzi*Q{FXgsxvg*r6$QRz?Li)ba&{hbWgEr={m zL6~}omAj29fod-*PEugC_dN2+{a0>(c^N(Yq4ZD!!2z($?W-ObFibo%vZ`>}+Va0U zO$ISVi5WuuzabU?6Ast`;aMBLQlg6nIe&KH!cb9y1q zqOgfee5PI_F#b)~49p8- zpJ|Q3;P^1}Qb#aoiMtUMKJoBZNF-atr(wN<6>{cmc#=dn1xMLZp-{il`AhJ7HGA8mD*N($U{ zUMF0V0Jbrrji?0zy)kT}=8mnRgp>!k-7%uU;@mucKGm3Q1+Ok5TiKhN4{y!1|F)e+ zLtgd$kMus%)6g#+I>H00^9jq&?pGU5S>Xy+t#5E`_Y>L_)uM_xni0~IF(A}0{);N*A{ZwQ2 z6)=TVp;X4r+JyZZs)GGukhWXD)cva~_n(Tii;z`cUhJK_XKH%jMM;J>hA`|(U!~T{ zwSBaKbLxF*q{y}jC~J@H3ZWZk!sj%g<6ub!?3lC{O`qk=8%oD61L_^qnNRoS!cyS{ zfl%cCW zhe9udyc22n5xa}6xIg7&7>(M+c39T&z^j1~pD?I)K^p;Rx`+N8g4D2ZeQnPt8u1aV zp9!D8wB(d=Bn3WgX$Vfs;2l1l*-byolg$1iIs>r`dGpRw!O-_{&yV97bvi?W|Crjf zDW7z?GZx#BU~KD3OPuu3P^zQrD}MB&`{^d*<0s?`5{dX5=#E?46j0}`%qTKA7fgz%BT8$`Cla$A{}k8}axhi1LE+N`_xo+|S=&`>kzEPWlp(E|^Y^`Y zXfuv9p8yMrcV*S;moFgp01r6hPNc1pDdX!h#TOWZ_ZU~K2QYmfEEF*H<3oS=m@-9{ zyKPD`vfL?tr`5bEF))o6q~g#ifTty8*#M^FT#MyBoUq0YbP~(UN_Oo@ye}DOFo=>e ztBXAyMHz&F(#5cEX?gd25}dZ-o#L+~Nxk=cGE~+u(1WZ-)A;{wia0ma7LH%RpxBi2 zE@Phym=a0h%*x-9CQ?y&4TjH%nEvu2&+^z;Foe_Z$P*`}y++yT%Bh@LHwCH_tKMTL z+|UkrF^ZD8MgHPBDT?d~pNvnkwc}^hcaQ^aWv$?YI6|Ljc&5mv1i%x8dXI1z3UR8^ znl~MJ@5}waj!W5$mWZLo$2h8K-yzF&!rw@+v&Dr6uN=BmvQbjm-!at(h0p z7;M?YC>d3RQ#t3Egvp;UGYuH-wlsRxx)?4@M_`(0*ZYwT?WpIMsR&8R0T$=RL05VA z)Kkty<`dD9iN}MmX3iMGY5oJ~xTUX8QaF>xPY56908IwJ>V!?LUd0548I;>E%fc^! ztEntq$Qcxte0F8Qd;oK)I|YVF6%7bUQ87%D#4XhNRvxE?7Bc+px9w`dl@>vv7rXjS zchblkT4id|y{sNyw-_j#10Zf!Ux;NhVl!0w*}r_ohe|(bLLzox5Z>5%DZN;y+8uU( zdBVsmJ@1;VT2nqHTBk*QJju{dHQU@B&G=Y=zA<@&dtWYoAQ-UmSWu(u9Yo+rN!fBf z_|<}34c28yv_cyQ5ZoQ1pniw8H~!Tx7yo#l!l`M}xK!syDQEo<1PalGb{Ahx?ukB! z^@d7oSzinrVABn`95=n&?sqe5QoUUuZ|FY$ba|(jihWcjWu!A{pyS(-634tVM%`OO zOYqfTE8czI(_g^%jMgAXz*pOj?`ox8?P-E6OCKAzNO6u3+)WDTqJ;%Q&Spni@SpDo zSH*p&Pqs+8eD91BE4n-Ak-s9o*mArdhcV-!SeObp4Yl$7oW|ZIx@PbOelJXpV9ujG zr~O_?i@ZyE?@`VlF!HFSFNKv*_bG;2Q2mPLjp$ERc{Y-xO^z8J_XL@U?I9UPg@ub5 zUwyb+%B&^!d`iTCddvsQ!keZujJ^x{;feh3p3EP$sX2EmxkE-=uBluEk&o3!NL|VFhbxQI>hRSsmVh~jI9T8t z>pjL~B;?p35UE~xBj~ zfaWkR2#`)SV?YAeJFc=MdRI)=-3wykIbl1CUP3^2xeRw0($CGHzwI}Uze45g6FUY_ z9jze@5gAn}K=wu5fby8mH=IU-8Gp?pvJ`d+Q1a|MTGx(YuRr?5WIxM)0oHxdwRrR+ zvm+4nJYR>YQO0#gE%1Hf+p2aN6N~uN)Uvy! zhc!S53tQlloaNVq`C?@O*Ruv4M7}0 zQ6I%I+i?7y*zs%_Yt_Xi=KEq%1Rzu`-8XSv>|InCV}s9NS&>$m8SKl32P#_-lg12%HvIwvg7S$_5eGqNp#xAFa_( z#15$w%l!_fo4T%tvDkv66;jQ+e_3I%HYBz9Iu2{#oRYq@*I@q-CBJSQbG{mxj&_%> zUL?v_&#Ffzc2!t&A3`zUCSD48plUt;lIr2h9`PNc08U4eXFx9PG5>70q$ldkxp#5& z0|5xp-dvzl_dmc^I8j7O4uJCA%0!H zJSbl|8L$vthK?;ts<6Y3Yh2F;Z)k~0lUf&2Lx29?WOvU0$nKvF*EzB3IsBG`Neu=Q znKDTY4iXDdm=;NMzkb;5l0F%;P&dtZwqf%K4R$HU?}r1dlrv+E^Ra({1HDhy7EjAI zr!qWUguU-7&09v3l=m4eK|x#l@ZsM;L0h3Tpr9>QmS{O80qT>z8bU>j@CS4FMkuNS z{E?Cv!XXgby%F#czU<%;rvy4mWhVERp%ZcFjQ#C@IWFi*e|V|plyhkAT$1q0?C~p@ z4f9JLyVdMTMxIsxaQudmU0wn=VVzRz=BVMf{>31D=cRzx$B;|NR5)ifyv>5ETR$^U zyw!!PTdq&X=(hTj5x3lrxWhEKX}>lJZ}=FWdEql=Hc%yF?xu4azo8AK^HNy?3Pm)e zEUHx6|MFwG>IB3YX)sHArRFjluqEwIyZ`&grkIqYl9$rW|8AxT#1(X?U^B?iK`}bB z@N0s38aLPpO6r74F$nos@nsSo9Cu%k53C!CTcXN9$a=rQ7EbFOEXmKMY%m^2$6SeV zSXF@os~Zt)T-bEut^IdU+}M||8>H0+{~vK<;wDUg4W}=IDO}$$@ao<>T+tu;^*qp} z#^O?i>~j)5i8y@HCry|FZD&pR?MvQOT0=+FT6NmZ*dF?Gi83D`(6Jjhq<*MVlcW8( z&i8kLJt=1Nih2|#6F8PTJRP$uLPi-AYwa$elyg@W5-Pw{Outxz5&g}C8hcO5lmI?% zn*aVju7P5wIzsawSzc2*)?LvxQxGZ$354Y8^(M3nOOhlefqbPETd?=2MLz9+eTVrz zGi$$@3`VoH3zn<9Md^8F*k#L^l37*QO7C5$RwZL&q+?a-kXh5m{qKqz@9Y)qzNWAB zN=BGVvNLGNw<&f#J0NAzBtRS8U$MOgqP6MpWxzmw>Pm2zEQrn2+uQ6 z#j`fu5FB!DG^v-w5Ql7Em|9d_ylOAm{G=JwHAB8v%s~xj;JLnUqkJ^4QSX^6hF*c! z0V%Fx>}I1H0y{o|>J2Fq6pzzi`5(PM-&YGfHm_4QrtJBP)|agtt2R@*I5+t?chNar zibdsS5n!_g%Xc3{QfSFOnKZH+L3p3~qIq*P4_SvpETeH3 zGdJEJ2wy-d2`Oe06|;3{{*cs``LLWH#dE}KPX8sT?B{={%{Ao@ape!(Kbf}w%)VilTDojxefiGo+Ii<;IXPsdNtW*=`wa7vg^q}ra#JWki3Zb?{Y8^ zE+=nSuQtHc9gFLMkk6H+?GGq4&VagH3Cx}wLWK6aDGm$j}hnZuo$qHW*ac%t=VT7`b?d(=0*;f6b4z@ z7{vqjII-)`zh#G$&4;cR2V-m~=O}xM;+N7RaS8;h-IcpC^mm!kDmma0VG3Gt{cu>@ zuGd4@a9)p_rsf60vR2e*BW@h6_2lv2fea1ph9bcZ3@WTwmgTxiG7g_$jPWBX$hZZL zPUWnr!HpqjfWVU)x-~^O*0^T-jZf~A~?fN&` zZiV4ZyEOyL=JST^rE`l(2t7i75b`ftmd#_Vm~bw>)V?g$zAS_*B^vVpo=wzdO@pqG zp#c0^i#!7VGTCC>IcT&<&YkLKu?p4Q1*EPBLp5H#;U6*LA0w>CQ13*BuT zn$9vPXAzptJ$M!(N3c)HH~3$su)i?}IaDmo03A#HTgF36f_-+7DtZQ3_2UxmQ8L{^ z7LQCdl+7wF{f!?cNf`m1i-;$64-54-ez;&s&tv~@LXxk4gAVBbgXk4PQecF4Is@IRl6Z)+GFXzI8i4#gs} zKm5eHj>`hxa#A?i7fnXzr%x!66VqXCJs}0iwBAyP zymC`{rUOKQ$;32uMo+mUkeVlm0XpGDG2P7;X@# z`@&w>vU&rVs0vunSYqgg_H)l)~;=~Ds@VJc;h_|ydX=}2~xYDSs9d*M+z_|Sp6sLfLnzZCX z_YT!;}0f#+OKS4*NQ2BCtz?j z6K|@~bf0Lcj!2li%O8YHEp$4wkF3RW{~yxoh~qTJBHdF7(!BmMWqv)UzcL z4oZ>{H_s(bH?Ul!N0wk&X^G>KtK2+6Lrf*jaFUOiT0(p*Jx>I_LB6cR_(B4!R6W7k z)jGC@L5u8Nb0_>_>Z6*j%7hBYhC@$iu$3@J-@)CcVO%_4o6{wzX(>0-+60u9YCa{I zWik8}NwnfT-sPAn4uwaB&@VP^qvXd1x2hbUutAaoSs~M_o0J(n_6_RQuejU4Z2#L) zFb9uCU0q3gVjj=Hutz$ahTn?1K_#7xfrcAx>2P%w7<8gQN<(9sWcHss+^XP1_LYw@ zOFQ^6%kiWZhcQbA(Cdu$a)a=@Oz2`z=92ZN!j-@JFWf z>M#b4R%aQNgb$PzSBLS_$lqB|TT*uWGfoRYbP!eD*|XAK<@*t|1f7Zq8sDJ}G?WZ@ z6FGaE5sUROPPKYiu-1D_*rT-dBX|x0L%EvpGVChrl(nUpozDn%7bDK*1yoYkohN~m zq8CAl-oRPdicONgBL}PM(%($RjyY?xYZvzh98WZxddm-e1y=b~ z(9``LB^b^(xnw;R6ef&s^v_bDC(e_jJ4i4oFCKD0GY3*tQyptAh31J_d6xb-@brHY4!W{A~Y z(Bhx@Ld`a2irK{FagD1pnVDo6lKY>IdKbJV}bcdEJ zUSbDf`>)rynFtY}#!>|j*Ba@nWDX0;aLGrCtS~APwi;hjYhW z31R;g-dY}msKi%LXX|`}i`4aUK=+>nE#=hyPCUt7G;jT>c+R$|AekPHYe4c$RSdvcRZ3c%GagWhNkUJ+DkL$ zEY%lWa58q6>(PrPE+{{}kSy!&2eEW`kua`HFq6rBA}BF(iCRcHY+hn!Eb zuSkR;DGs`S5ILa(LK{0T3hTn88;Y0K3oOLVq5phGt_Vx&gp~GBr*;!?(fv9Embenm8f(m5u=p(E}S*v%Q?sT*Tyqp}J7#oDhrD#Gk4>Y|-tM zE!y_Xd6judR)b=hebSlZt7KecEG0B8}$UsZ2($&d=`=0zX?wwSb9l z2s%!+oP$~w`zyNjDw4j%ED!sKqh{ORSNxXY_bf5V{a5gFJ|1R<9p&C;r5{gc_)p+U zD=i?tUh;}(LpLu_!)AAmUYV#+Ob2(RHAlN0NO(+Dq=%%IuzlBsOUnpTW104ED3m3F zgs-de(lF|`ERvVY%uY$=K1G#`>2Lp`G1|ayKUjgY9;%Yz#9|xDqD|Hc-tcHn*-U2< zq|J>v8KKRO`4z`eZ?7961HoyBMRvdpU9A^Yj=Dt2Y&a@f#5Z;0)2K|eur?W%(inx> z=CbNt(u|p#3Xe9$_YqX3nI>&p4cnplDw9%IfZ85aS+NH|=6yFJN0{Na zFd_O=X^plZqhDd1@6Ql;i~Y~?HWcb=Y|GaXX>2~UA#G`Cf{yZ?Z%K*}Cgyl!30(u> z-Ypm4fw$eioQfJH)^tzKV^V@*DE#g-M{i7nG|hg`f}wtW#$`{NmHv)Gnk0bHJUEe; ze>nYci2qUmcRR-k-i_v~*5yi8_|kv7cqRjbes~Itw)won;o+%3xD3T zA7inHU`F^>L!8R@FuXT6XLUh%@z;%#ylvm8+cT7Jn7uRXB8YMB_5tbNeF+eQ^mGF0 z{RA}S4(@FHn)T_1<7Dcz@#s4^VC0v%&4(yYuE??>)Dn|FrkLP$Zr#)t-a37+z%WV& zD_TarWR!d9y&uN@QttQ>&v#tXa>t?|a7YjuB-sOTsb`Gg>BS^gCW0*B6181Oim&s7 zQ@vs(BsXDmP-vAkdx}->5S<>Q?%Ow%jf_fG#au28j*Z!RTD`20QuHEh{M;4ITI~j3 zv+ac^e9h|J{)$~Z>OCMZT}Ge2+*gW|?^tynUZ3sif&n51S|JYad`0o7IabF`yw!L* zP@7%1T15@I!J-(O-my}LFKzY$pbh$>#-e2P;&C4^?_I$#xMZ%lD#GpNL6m9U-CjX@ z#lv>wS?FJbUH!O+oqPVRPY};Po+X0Q)%h~LC(w|a!$l^Mp4y7G9HC4@gma-et0l{4 zPHx8B^d;vJ*Jww5Iuvtqh^uC$yrVR!>aok_K*}w)Hq;5hal{SBj3w?u9j(ptQ#PH+ z$yH-Tq1E+dzBQzlT3IalX_iRsLWILshpx7fh0Irz6-WpCYnzZYxOt;S^_nmIezFYh?u0eutFI(VKcq!qh&B$PD|NyPfEZ!bQ> z(bD?D3EF5fE*@;3Ra|}V4sh$2v-F%|z})3%GmN6JJbpH*++4>{uX8r%eCf(IBDXE{ zb{1GGVXBPlTeVj=cPQHE9_>u9N!gd+Q{R?OMb=~~?Sx`oY(FhvcEdEFOjJAxM2>iXK+~nssTE1zmcN4fqB`Zw8nz6lij{+{>V|oYLi)d>#8* zkGgG9Tt{sSIVn@eP;b*?)ANk3x&O%9v(9%7Gqh(B)wI3oPuu83+qgiV7hR^MwQZH$FD&3(;C#rmH zgcF-%_6*qf?`|{l$Z?3O^rd+j9VyWjWtP`+1)0(&9_m-7;wYMN?!8b(4Q;}r35byd z)lpIv^5-6maQ!ASc@-{Z^C8QO<+wp3Baa|U>VmpV` z=~sp|c}m}VoIxFP=Bfa6&4-w?VawC6$eXP2SMZ%neBul<6p{6=%coW~x2p|vB0J5Y zQxo5RC+9dm>MYS53}`kgQAnpHv(~W-bIPIui}4yyd4xCoh;Jae0wOT1h?crBnmrn^ z8lcv|MC);%ZQ&>5;mwda>&5tmckbChCF_2&koJ!xJINgi9Z+wW zCM=HZlf%^PP7Uv)4q#mDKtH$WDZvzNp)*keh#5bC%8n;wzX}}X8M|Q zEi8y#*L{E2#M;FlwO4`t>9VL-uYWZJ1(Cjv9o}kxJGQ?I*V>1RoYE0$cbd2Cq^l*# zC1=``W6vH*aqWe$`)za=Wp5XSDO89MX?J{T8p6>5Cm>MEeb6nMueXLOHdqU$K6QkZ zJ`IJL)VDF}mdm9aB7I==#?lo2YxU|QR_&$4ti5zC>)iIXZrCO4;E)njjKHfxIG4q6 zy4P|AUN7m8EJgBYxc7**8r>3q01#zM=8v{%xhhVi*^$o!9@l4t*OcwT)<%PpiAt@I z?7kC))@Sei(OsxnyT=e+YS_SaVf?0`WUjy|P4Ud1Hho~4WNB^1yLH+p3MQHj-%#2! z82;))>Hnh(^^X=>8-+Dr53?A*ja5C(J6E7`QT3QuS3}{D!DKa?z7#*g>oN^!!)ne| z2x=1WtbE2CBmo(%_$C5%1k*}5 zCao7wB64awlBu$laB_3O@uHUY#lM2hfqOKnUK6VaA{u+BHPZSZvS^%|0KRO##R~R- z+;owPm)p!Oz)j3sVOvNgQ z&q+2Mwj4jp({ox(U#cHF*ss;ug*9FmVD3y&sQ%S!g5nyQDM@4lr^lZzicI?8PP?Sc zelvpN!#c4m7|W%>9z^&PW1%c+#DfmU0Dk}Tjx)VY9FVlNHjEAed$vPaVy=4|QRDM; z0PQeYYv@iyd{$Ky29o?aU&2#h%)p5(T$xjRCZfhLW4=#8WJX69b~H`a8=I9*|MCJy zW|GSY)ppvWMy9}?;eRUm*zj|YX!~=6JKN`^_CUpOvgDI%Ga8VQ5mOLHo^E$urVUc# z9i)1%X#xU!X8-QV=>rr*4nwxzbd~DsOX|t@$NF>AV&b-J|9Vhoy8= z^VU&so@Za-XU$rN+*~mhYru8~S))}6VHL8r{W&6YMr-X^KfI=>|5*Ea7gxUW>#~aZEk;QhXGTDi!8|9jlWPhVYYXxm^%qm~`6)^6 z7Dejlo?Cz;oK1aB6oA>Gk4RoJ51#s=Rg$znqeWuH^e7`E-W8@^Hh>^ONV9(2`kax? zqxzpMFEkt|q={dDaWOgG5ZsoXw6l5TIyvk*o}mxF4>hw&swTFr&zYE-Mpr}?qFec+ z1ffApk}Ee7ugbw}1jZJj{$fBX$rO4sD|M&!eykGzwZ1<~Zup+({3pD%ddR>{BHoz`bnPx|RKT>BZbdA{4-Dd8&n$`@ltlrE4Ll zcXBpRXu^1oxtW>Bt)kx*I}JTG-h~K9?KC zd!;R!ptJER`S*Z7g(|@x5`*x{{T~u8hW47dv7t?K_(OTfYn;@APVxkCcNC3|&r8<0 zaF$J4bb}mOUEe?H0>Htzc$|>BCXF{6x*30y7RIG^qU2;_8^N|y_kb3$Pu1{$a7`i! zeTDU2`L}_p)37~Vm`>sd?5EIMvS@~%?3zr~w{<7z*@kmqrWS}NjaDcu-i!cXoV0$w zS!9aHXXaY6aG&DP6sJEMxqxZDnvg=&)51ZhEnp+61ct$}mEfnbKp}xk$-cTce+HU^ zYtpwNvkcqOo||$a95;ehrEbD-LkE@+KZzFTV;QwLZ-QBZ)xYz3L;X)#CoHhb9MOcp zWuQIeR3USXW-T3Z0DNk;;_$t7F6Jd#{UB{RL^ZlVSsDGx=(Z8}mK;WbzCA29B{H_e zP16&ccF;1BzvupO9{6G2{AiCv3J>B&VU%d*Ge*7$J*hp^H!3fZ>hTKy+iw zsEFrgjrguH0_gq0m~FEr)GnPve1ithbzb@ryQdy+3qJPO?Zl*#V7zflzJv4>_ht%Y zKhHTLlNBKh^f^1lQp(+tnds}4unBM<>Dx<0Bu19m;>^LmbPwM+D(i}Cb`rK5 zVws7FUQnt;>3fO99dwK(j+U*%z{p|Z{yvLfipu2uja!@ANu3#0Y?zv}2Rgj`V=0jg zSthsQQc6G`jR;;8n(qG6t}I2W$j^6lnM&#Oh5aF(qSE&e$ui_$+7eR27ANnLKU{%GIvKqs>6PtM`F z-->t05ld2~4>gkgcaw|?%tAHW@$=0`AT9ZSRE$o?(iiP;3i)P6)D(G_;EWB<)M_5( z8iaMh)BHfhZyt>5GyjS}xNvG^@fq!oVL>24o10aQ_h`*%KDlp*jPihjOi{MZxc%wWXga)6l~-{5#JeK5>nM_T|ALCqTdOcozSlpzt0$*r9#2x!8U#7 zMwLw5GYZjc*UQIrPf&u~!||jq{0d5W6I04xl|%bg1>Q!j$7IyyjP;}#g`Reb8`Ou1 zz8WK_u-W-g`a%Oy3BLq(j|h->#A5+(fnz{mzC z+3Oi9dtr(mRZV+SYC*jZO<$;U3Q4Q5#Q^%;(8aMAbAWo1L(Gjunf?uQzlu^7EJSbD zWzhvb%A(6f5h8zRuG((*5)i54v>~U3T>)aL`0;IXt6~GB2$>S5MYaHj4TkQ&M^C9U z$EOK;uv`(!Wxsc#`jJVFVa|(n`-D}F^GZQkjSZzF%>`?jCbKyX(6jyOqWzWJXCdo3 zSv!iVd@ZVFVqs5T0wsPKJ4;hVtvlnRcNMstQ8@0V7sF$?|2Ww+o*%;GiEC}%9ZTo$ zTws7iwJOHl^5D+8q|B2UQxI;&#|aHG3yeCL%k#WfyGFcA&H}AMqO#gXgk~a9QYWw5 z)eLpu#w!5|XsQ@%#iwx`0Wuy5@ zmH89^h|YVDOluTbP0?{uSEJ-G7Jhoaw2-z;3sDX3lD1rbg9&$sO7G~B#`(22;g42m zb;WO-@UF)~m$K>2v%xV*sXHSiavSUe^m+aj)ncE{WWO4VOQcWa*xWVCS^6|kM!hqB z9k*k~=sq}42lAQ))jmQ34yAYj%MynJWNi50a{7v|&a>+oFE*LbW_QiLJboj=F#Kty4!IUQY zC-PTPk2psAU*ucxEwgZs=>M>y6iR2JecgYQvk95UkOde zT82`Sn_wKJiTqD-K}CIjc)&UwXW+;pOJr$AuxLDL z3A8}R?kaxYfwJcyA)h)p&vcp|Vk#|tpEf>U;pYqtTV%O$0b0-@>#M2EdSfWHtM`f{ zxMe3Bwwd`h#N^Wk;EV9~wsWPY1vtjXGGF7D9Peh3AI3D~yxW(b{W7sjN)rktKg<^G zUHIO9di}GM6(uK45M^tnz|yUvF-k3hNYXV-jZsGePZ8tGG4ZOjX3}VQozrW{REBYx zgxZH~P+U%FMT>~0aL^%{peo$td=U2QS_7voY?SaNR? zC4Mr{_r1v-^VaXv=LJ^`B5FK>j#@~AN3796yJwiwo!u~e%!!>?u;$rf15Wf&OO<@( z^bK2dd>{1Gi`~}{9zb;!#xY3|S)bZ7X-@(O=93Gxm>a*@$^|{IHkY;H7-K2U%5nLW z6slC_TeIxVkDv#C16E`4XdF%Q5!+F+jcdFrri#B9NqU9>7&Qdf2E(t?-jO#uvY{6t zYD*vE=F6ub@Vf^m(xw=U65QoJh_2qJMe#ahiECOi!`vLEBeXNp4U7i0xVIP9p^>%u-ci{}a$4fgna`ZwQPHIK*vsxmOC@+&CjhZGL2s&^#_Ooc}gb z#ShA4m;0FddjUe58`&ixsR6s5GJttchn21E2p7M95I((Dbh+`HSJSbQm~y5er|*aw z%Q96r-D^p$vWDb%GiD|5OoyrWV4{8R7dWO#ET`Se5YIiY5COXpEsI59`%D6|#s1?| z&x{hSLTWpRec3j+le%`@i*)^*a}o0=kTO1R8+cU4S*$q_AXTtLZ!6HXH49~Ls8Iv)P; zpiIWw4nOBd%aP;zW-C`;A^MUmQyaj^4h)f6f6$649c+;2MGB}Y;bQkIy3B~~MjrEb zvXl#`O71K*iCO16Or_D#d6;;N`p-Dj!v5$?5!v}XFNh3LN`nmp3^{ontL3z0U$1rG zbGS_;1iy)M_qdx=mUZ`XE12K?xi_=*&boj{sE-vGe zYf%*Uss2jw@s3z8vV9FAHX$yN+8+qUy!ca4^`3a8jcDA#!|}dQQJxT`iVtg4Ozx%c z(1Oj@M3NaJi|m;_!r#g6=P3>*GUm$qCvaOK0PN$w2>({6)VThJPp!Hx?4Fx&i0M3X z{*J*@lJ(#WdEpawP_Jld&*a)YRg;|7SIu5P}Y$`F|B|efNj*`atJ1 z+`RYbE}i+>IKYsXcb?W=3?B+uXfr9{r5}o{^F%0ZM6Enaf31#X6D<{>FN)1OKA_Kw zJ)Z%takqdvVH4$vP9?9tX9S`5F#zQn6}=7J&Eh0E$@H$rU_XO0*k;}8@3-WE_^a`@ zfUxL59>T;^jr_J$a${#ndIEodi^IA5u-sRKBf$5t}ne{F*QRLiqB(OnOSY z>s{pMUGO)uU4sWh_Z?~mF`=LjsGV(%CxwRa*$*bWFVvBD6OAd+WlY6-OsZ)yZSsVU zVXun=s#(=(k%q~WY#zuW$ih^c=$sp)c5Uw*V#RI9hC-bQ<#=pk}uA;T-KhkR;AWur-a)19KU?I)=A z%sNiJyAaNXYVM>c1KICoI<168OBi$_(qN?3@9do~E+gN(@0DmN_Of7V7ups`_p%^s z7s?F1N?|fkF%>J`)gUWrQ}t|w(FRnDVHTqPda8J1NI3eTs-3cqZ$9lc%R`5os}}1! zWtbi{5rhF4M1W!N+WTK7nU4!2l{@(AyCyg~58BMN2M^UD0 zx#g5jHJ4MB2#VY>x|M;5955cQ@{0LquVK2@pAq+hE9lXjj4i0DCi=g>TB@Cdbb28SS<4=Rsxm#*IVxDBt1Y6J?Q-((W$ICOX-cMJd zhKCXOKwf-vH?Rs-FHD!C>y-^g=?cWJ6x8nr*0NQEXc^SKI)StIRH`VC>(tq#^xcPN zftSBhAR#u>IyI_pxLkpk>(*T?_1vypUW>#zFk8Gda{RRqm7M4urs2VsW^N{?ysI6Q zNS=14eq7ebmj$PmWD(=^>cJ1%XPgMe=~<`Qa!W4Pq;`|ZP1ziwtWlw~g>c$c z@fz-L$q~1hUNlcnqgmW1$j@&LaYa6BO7pqZFlzG5N_b34OVlMT_n8Hl+AsSN9wX_# z2qu{+pD=u2YMhcCb35~pNLhGXYMMPaXIjz?KHJZNb|J%Cr5JVzY{N&i=Zl2JDhhPa zktNLS#S%Ht!wa*4Boa9=Vo56#e5H}8+!#tRI7kw@uhX_RWn`vf_qgXxbH$=F6dTSMrOqOOq$r`uhbfO1q6V@xD?l}||8+#2rdpweNF^;2L8}ep z3KKkmv(_BMzrKo-rA0XEj>(g5!s&pHq4H646Z3l{XhW^GvI~#w8?m8c^UN(4N|tS$ z0K(Neaf#^RKZn12IY3kv8tJ-#asX!+EvII%rV7WUx5BG4s&m+L4wdHDY zEsxvN9yB&J&n@U?yIsz|Kd$3gby_%cTY6w0@hx;o-WiD#-9b3Ln6DyNdf4>Uc*`y` zd8X2UAK0c51u8FF1_t!2$r$vT?}NcoI*s-On(RZKX5l#c!vtW=Od{tc8|pm{};~$(cNIF0cQdcv}dRI{RQb} zRRbTY&{xI3RTH;kG1J+r{e|cNxHck7bRb1nZ(Fn!c^zM$dPVjf^`*L10{^>N_42== z$~@~5iKAjvV}(J(Vu?t6CyAr!uo}HMpMhz?2nnFK`^S@p`&SFL<5b{>|M)^5fR9#* zNFNX^5RmVIT=UbmowZta%s!}Vg84W2QwC&G08XQ~ZZ&B>cbB^pvgfjARI11ZiYrsY zc&^|WpXl-H@ra2z9S*>p%{;f}X2?e9#7(786Z2JUu=1<9w0YrJj6B7loNj_0 z>lw!ufFu~i+kXHkEN4hgH_J|;*7uknxa-7moSmOGGT+fL=k+Q40VHo)LmF_Om7jMl z4xBfQ+(;NOJWO;E6_}`cTLjSPQ;aC*WtsxUV#+OSE@|}TNX$Bm>m&I(+T>`jja!Jz zf@hkFPhtnVJ0WT$0@}OvE^nD92}0PE;o0QH*w$O#xg1u47Jy=63zIa+ON|%A6Td#lzxhK8_K-hdNgbq z9w9x5O|9}8$QS1n(`SR=J=}G7*bPf5k5UKcH`QQ~@!7AX@615~$vd*QZz=A3@P*?b zpZM^{Y8V`Z%RZ>g9Wvx<)iYGM_^J`>8g+7@S%6DJKIo&+CXzRYmZ7dBjNSdQyba7m zv2K7jnm^4N6m`(65rWjjGZECN>C!$j8~+Pt>Gw(d-_U=zVH!v-G$TPP4TtiB=?|X!*4ENZioq@??lE6-~mbV zJW*r}S-Ih=iEcZdQGeNKSJs`nL;O@&b6p_Zu;;6i61QBqrHBjhD|YGMs;n){vod5s zS(k7w=W`O`JG3h?kXLBeq)nWhEa$W6ieU`wz*zcARvuQcI|?#Uqz;v=!HUf}uC_LX z5L_~6FjUn8?>fe_HjIKcr$2~}ra{Vx6De0KkBOpQUAPC)N+1gi`yK`(2$k6ZFp9_xGBn?Lfv|6<; zf7$2NsRymyPt&)bmICN7@Ji_778-um#~CT2;Epe0sP!4l#G%9`25mX>59BFPHhYIqxfY`7N7H0JsN>rDyTy0})8ni+wN!H0WScwI!r1bT? zI`mc2psF;O*NvOo_XLln9%`zd!$iD}1`Q%~jU$tO&V&f?CBc-8AM>(d6G@YSw*}`U?#bi< zpEL0!O#nu57>IK;skC zvAKp4cT3E-?YCBuWnm`0!zg_+)g4p^n4?x%@N4yEX<4+b@>zLqyyZVp)jD)$B* zqyc=uS)|(Pv&sbHw%LE68oWV-M)W45#R{%DB#x`IQ=3>$?8j2z3wli&`^)jbT{)m8Cw{Dt1@m)@|US19U zw6jr_bmBw$_h1Ew5R*hU(cGYDH)Jb^A+BkcuJ3b8?_&EK$HTG?th6dTVl)o2M%+iIki?K}5NU~}tpmijkeFayF^X~D7 z3IQ=!?ymG}UDkoTaA8i}fru^oy#ty?^ek$;Jij!;cgV?X??{zN?Yqfl7NnbB4YivmcbR4$}MU^H9v2 zD+~9=Cfz8$MwD!w5i+AueTyU0F^)csuPoCM>%@h&W~Y8UbBV9F#zse^SFE?iwm8k` zxi#pMljIjc8vbi`SgB%-MnaIqht#9fzsTl}@=`eZlj_~3T}l96GPnG+Bo4(Z6^T0` z*^f9s;MCSGWX<#{fc>f30}y}WWlL_Bbq!p8)#lt@ zmv#pd3+>9B*@kr5><#bF{)i0_mb%<+%_+(YT}EI0R{GivD{X?USgGjJg~=R8P~!lG1s#4`X}s9(&3?K04L3Y-XG(Udka!HRT%%h z&!W_7pii;c>|!$(rBu08egCjNqJk*lOKr>{UJ-;kWB6b+{96DgT|=nFh%UCwt-}w| z{HJnY`t+GI(z2Dq%wc8IN^a7mer_Hr&-ML;kH3k|-a8WfzG`Mma7;ZcmagK0EQi8TB$9Kw1>0mHxAQJI|qwV@ zzUJSX(Xz^$8s={c|JhcCsU4s9v8R=0{qs(#R{1RC&xeIR)#Zr0QQyP{W9KoRXOza?A42OtQve(`k$(7gAXN{A)57-0p+hIYysZ}^74&b;8Mky4fA>1PoGEv0 zyM+o=<(gGS31V|G&*y(QfedI}WABrfLHe5QZ#Qcl3P=`QfMqw{Yk=)p;jcdy|8yH? znmyoWRF!iY;|j8BOsZ0PdqnY}Y{~4R&}8li;;)cjXXv@DfwqN_b6*L?MceFaI@3dV z^MQNMt1~G}GRzcay-)+99)^`wz-sdLu;hm%P{6h08feMU}aDn=wGj9ia zA8|L3ga9(L_r@xCTtOykL8`xZt@Z_7BS>{8PmQz&y_`W)KNz^#INr*-#Y>cGd2Hy*FVTKuaTrHN zAHLY-*iN%_P4qCzmN`@QA&pW~vCtJzgBfc|#xyELy=; ze16iKs4$hBW(Aubv=uX+;CwPohgkqIjptQ5q2ClV`NB`_&23w3K%RqQo0|+*Fg~+Y zOXR7`OX$t5ehRxVh>-BWuJAbm-lX*-b=e@bWs;jufz4;@1%(?ID1m={l5}@v00%frbk$b;ndHrbh0?H|?;IuK&^2-NUk)HH_^oVbC6hV5x#XAvM$Y`fV79?+ z*hO5&gz4am+-sls;&wILN$XG)-ulKZ#V)cS*Qidz16^87!9Lme*ZqzlLLfESME_(f z=ANhN)RT5LKJSvZ4fM^ja`B|DTD=76LFg@D&JSgtn-XqND35Q-*`Cty_qUtZ4P(mP zmG8bIS71jXX|IV$V#j_X*&Nva8Hv3_I6BqU5w^SC#FeB!&a1O0A9LUL46Kx{Fmd(?7@` zZP+WKZN*-+)41?5+vs5WM>TU0!SCKweI8(&ZOKF61O1EM1L}(z854rBWQHGE6(IZq z6iUTMIpoKn*b7fsA|1^Q`Eg!!+MLD~=oxZ$&b%2KvDGlvtPola(A|1ijimq~@^NU| z^f!Asz)_^8u7Ex^k{C^{^fBD%W2|daaEe;!7tsqzoQUkvI7x|P+KGC6?oC<`G8vW@ zQ-`>T@y7mCEpCfp-Tsw_%%!-Fowo~d27gbLM4KD5+o#D59K78R9#fK$Jf;B-Rs#-h zh30A5rO5?5$8k3T{nJtUzv$pjYP-LAz3>&Rj%#g&6No~Vy4bhKE$T13Jxrac!{W@~ zcVs8_-8pG+saKa-Q|wNki={=a>W$jop>>Z$;QL-uL*})NxE3eB!9(2+6|OmjX=gnk zv+yJU=WwZI@mFh{VF9Nns9A>_z5P!XE~Giz>Y+C&bgiyfim^WZ5t$)!7@# z8b6f=UJHNlOk6-R7Rm=vwQ=^`^uB`k@J_L1t{jBN=`3!(^{spjHIu?8dy(Z#9->(8 z$U)kw@!{@Z##&1IKV@S<*sfXVYZtr&<(LblmCS^-;FU&-^Me;P@$#Fp2KVC+4$(rD z*OwH`Y6-CdYU1^J(IU0n)U69rHF^+ufGnh_MBnA41Yf5}Sc)K{OX~PZnUEzy0f_Kh zxg)YYE_GU?Za3~_VIxNQMyRbA=#Hv{jB}Ep$G4cR!P#{0(YOK@9U!M9GRB)b#6Bu- zhJW#oVM=rBc{z0sGW3M$Cau>J3pl*(F0|_564!yl7wN?nU`WQ22pZm1WRdLLEilY> z4gjcEf*0v-Q0!Mmyj(x}wiOwZLhM-n=KELwNNYLkEaSQBUx1GUUED)To)2kaE@%n% z|4-<`XrVrbtzDl^h5DJcVbQGtwLH4&pXN0jIq`iHO2E#BgwKS@-JVs2VEKgU399tY z{{YL`{XqI1Tq)|{zm%8uP1OtK^%d0$_J#6NdQrQ&Y>cx2%8UIU$}5)_`$g&!!+Y-j ze@a~<Lu!zd?E*AOb%uRT^z0c;XY55tdc+@4erDaH($F7?rwxc7kZ^1_18?H-C+Zc?EqB{XN<(5LLSF!LzLK9bC<#j zFk!8V|8HK~_R(Nn7_CCQHs9x;vCCc`pi+E$KazXAs#X5omw13PHf5+{3JG|DE#cZ+ zUB!AxaVFTxl_e;%`>{1s{4mPj+TR2&2hN)Hpa)0Eewj2ghE>+B4kXrguNPLO_Oc`l zSXA@ImN`m$A{Eq;L!0XcfV<5CIJxWHBIfM?Pa_(K@=PgJqY0r%?UE`JrfYMU4JWkE zp%IKS*H*2CvmPX0agjyvy!eM5_j}a?_^^%a$s`JP%fB{-samE;*yV1{L%5&>`iAalZ>VcE;L6HnYLML9jUd;*2vwM8Gzxx~)fjs* zMr6s2O4biSst0tJY6ZN~4*SdAl7e8cUd}_DGwgjq*eJ3yLY0&9fb`+{g1VAuOYDFl z{^Netg{NaJ$x2ziqSn@wxo4@WT@eQBR%u68*`@_>1WFa%Ei7_I7M_YoW2_P3JylW^ zX90#xhkerN*0AD;>M7kalG@%eEHdpdAW%7f8VJD^x+V;-BOM2`t*e5}`gJ7dEjt4# z+^DjmJ1nnLFBXola8l9K*EUxwR@W440B~ZGFzT;?L}LI|R6-@eC?T(XeK)^xl#ws1t|5Io{6LJP^jYLL3HX0AeZ=|G<0s@Cpa8ohf)} zw81p&;Fji*YJpxwG`AM_rg))H>dANJ>1z}wlIV;6n09U?VYSb9>%wg>sfm9G_oH@4 z=P(Iqgi~+%!bI;G@j96F4$QU{f?7@~TGWkdBj0Hj_BBVOs29r+_!ITyk5genqvvns z0@7dFwngP#zp-5-h1aa$k$aMX+p_YlX{d;Q;BJ^Mpi+g=z?3nZG>H2SJQ_~u`eHee z_NA_~pllUn`eH({eD1w0MP$|vVCS865?(6I@K_5K=@QP$i@b&6ot2Ki^3JezfNX={ zjoZ`tdIxXBd6UbUBGpyX%{JJGolcu8Wx#;j+&EdP6ZnC~crWHxB$m>rDlc4N%ndsk zMkw>Oa|lPiIN^GQ5{ME+B7={x3m{0%^l@w0`#~`YL~@_2UaXr^;?>(Yi=>GW^yD^{ zNeRZ!%9HSps-ziX4TDV-G1|UB&Fgx(*}ysDWo;+Uo@#k^$OKK1s4kH zz0urKfGBYEt$duRd*DB|am+3tNw+h0QsXN$?Q1Hh*l+Di4aotRq zTpSD}UT4Mi_{yi1jISE7Yw0f3O(<-{R6c*NP3^a01yr7sjh^vD%L$PVeNcv1&W1UO z&Mp6&hN_t0a0lsIg1u<+^mqUG;9vp+#g}tbO`z>-(RalX&l=JHS6QNaaTC4z1R~H| zn`4%|vjnhH`@dz9i+?csX%RC&ylqb){(}6{|KD0>L}r6kP5x-a4(vhli@z}J{cn#U znZ=;m{P?k`!aO2@f?3T2H9O1yJY8aC6_~hK41i={if1Xz&jjuNI#Xsjdt+N|--5%x z=!58~y+Gmr%U`lhw`J`o`f>=)?JC3RM=4{VR!`$wiHA{VWDn62PFdRLDEXWFsiu_Jos*w~ zyR8>@)^&o~>5x7JeIcvq;LZAzhw|NL$qIO9wTqF8aoqf|Q_*J>5k;Mbku! zv10V|Eq4+f)4!1YgK4bxy()L9a8nVn0Yn@0OU&tD|9|aV6{Psu4Rf^E;qu_H8kqN5 zbR_R`7Y%BJ_}1i$EkkzW?GuglV0xoHvr6~}F$FHMrv}8fg?5BzJD_Ion%fyz7r{Qx4E3B>2Pg9 zg*FgMlt-*F`lK~wnO25mi?ON3|I-##_Ma^(m?#T|*vuAnc@nWHKdOe4UH(k$L^|Bx zx}WEtJhk?Yx0;CRUx8F`r^l4v4vLt&?(KWFcP;fvl4#a0K$mwAV%hEA{6m&wQm6#h#&EfI9v_H z+>=z&3f2f%ibP0FE%H>t*ukHN&U4-WP}}|WMTw~TPB~Q*6kq7O?oHs(O0p9xv)Z69 zg4)wKP_4jt_y6I*Ue!Gcuipd+Jw*g`N1~!F*yO36)NMJ?MHh~iu(}GX4B6S&jv6hq z?_fJS6qFLuc)S0?HX?wYFTRDLpfu9LEt@*a-Jy~~Mk#|q5di3>YQ029r3xFR?9$Jf zKY0Oi3*epLw(7pqkZ80R+cn@B^nZDB*8~C#9BYa+R<5FRqW2#fZe@&D@%wcAdsf_8 zp=ncZG`1T@fAR~Wlmyu|77du?vS0sb29anTauyl`td79fYok5Ws;yoT&`Dc-BQcn$RG;d- z04$ffZ`d!$5st+?Op)NVuUH!xSlzsH z?vazodC1D6Lf25`G?nm5jmNUZ0476B7zi`I7L?;v^xhVdUS;v}Jsb=!H5aep4&!-V zP+HQgy6(4kt_z>mvZc)EN1YXZ@xCjs*8Qx;MdF;x#o=@yxABo5uT9J;V*o%~?qkiXor!`S6J6lv z4Q5OiBS=>s{=w+?9PU<~uYHQin%L1VlGXvl41WCs@(`+&_}HsQ#(o|%Y~&FHu{9+B zvAh0h#EP}VBl0v&a_C{LxJv-(Sg&F2%I7?LgSjrvo&<0~$c~zbvrZbiFG!nR(}Ly80AG9SUaos6~NvEbs0*8~m-f z)`_Lj3er2@^WI$MAWEHx;y-g6faRHw^`6KfZdVvbMs`>c{YH3gi!HMF8}S5pIc@V!8X11;~-ra@Gr5MC$DNYC4d_63JK}I zVri#M_3X2-#s|#ug%UZ23#VaMQ{#~ z;p19F(rL~+{7a^f*tE(})o#%k+|NaV!DT7hB0ea*9ic|FOZOqWU|zoHhLI z(f5tWpq-j|*7I-9jt=GrQ6pa8&0QvJ)0b&du>#VU&74PwB0RkdZQ`8)7T>QHiXl;h zdJwhCfp%zigt@?~coTb0s3y9+iQGdJ9igX|pvbZZ=&P}nilwUnOoH7B;ARQES97kuDng!=|jJA>6&1SbM&5Np!Tp3Hzkq>zH?b_?w5^jE@aEX zpd%m&$O1XD3e=^P;37wEj*0!IvrM0QxTU?kgq9@XT5Hp=^ONQPzVM57B9sL_pmD56 zK+(mhs&aLm(H(DpR^{76)>-C1XrMyhkxRtF(S^ft&uVHcE)4jkv|L%DfKw84u|S5! z2?Z3AC8%Qd>e*<49z!LhOS>Y`BlyAWSq(01`#~0QSgw7Mr6X)N$}F0zX=X#yrFxh)XS5l|3&K&krZZyybD_Kh(At>l4)Cg545F;bWO+8 ziv&n+47ET9(s)_Pj87C*uT5=;#?KmGD^B~oOpGMss-+e_sodox6Hni45REZ+p<%z;y@oT2A9(3fM5(s-u8hq^s_)P%)fz4ZG`qg zn&>)7)NVVPxGd7gVU;FSeotXKIMXnt~ zG2xpSuz7m~0&8^>m<(t!`B_0bN`AM_BxwArsw4hMfEOxeQ-4Fs+EWQl%bcE1z@&cc z^ZhH$8&o)H{357A=6ut8Z_c_X!x5uOL)%47u2Va!3htB&48MfBu7S#%0^8UKSF5x) zDr*jsZE>PA_QfiquZPj+)yT!-F?W^U&>9zNkl($+*i{bRj(2EK+IUCkwNzm15aUf7 z>K6bs4H=5fufc1hUs+sEQn}4SDzzg3$oB z|B20QBnRX*6{?TvI{%upo{B`T$7d~gmI(^8lAx~PTKYVRPjra!qOfJ29B8v?=D`|d z(wKBy?lD>&vHq5T6S5nTe2oobI-QLdf}@TkdB@@mg4B(xjo)J|m0Y|Pkc;FRSEaJ< z*P)hO{ZdKtf|(*5Zm=E}O+;fGi+)dZ3n}2DiF%C*lfeiwt#?o|3f^-4*bzTO{T$x{ zmGsW;HHl=#B$>ef6NQKgp+p4QZ(Ad+YeHAjl|yFmc3%!_K@m)7#}!!0yF zTuz`fk6Sj+$e{iiHLZtTWZRU1@JlpvYaec6d}rsFI#c^IYq~INddzZ|0!DYNwoLBD zyMJG2FPS?*Op;IPydcOd4GW1!vmp5zDn`6#;Lm6q93;t%w5*S*!jQ(6anZ%~#xVzX zm3uc%jktsD<*4AVliSOO(tAp~e}=|LtFo#|oGQU@mbkK=5`}>@P1A3hv8_Z-MMOM{ zy>n#qc5>!*vj1|2kpwY78-b}p9_Yl`5Ol!K7=?sD}}=k7Ejs@UE4B2 zXAD;0hmgQ4YE+r(G_}IqmklN*a5Glf{E0=%=6PD?9g|mW zJ1fDavA-~5Y-q6RFk{#Ym5eTi68%{lQVTJRnQO{ovK}t2i-;=JG#w|f#WWpPuqiZ^ z%$r%@g-)0{u4vt%LMa!O;clp{hHx2(neQvS(<0n`f7>)rmQm8xA=6!VH^mv5HvgPZ zHqy#e1crYJor*!7JE=Nk%ExJWb(5g<1yI2ctNN*r!`p=-D5N|srlZ#C2MI(v1UDcr zb^o2op}C-Tk!i;k)=2z zG{g$%<%vn;2`rf&fP7H8c_skR25)w!C)@2=rYc@@`kTDhk|W~JZ1^xdeS3ziWjhp$Ac zE4)gsM9{kI2HgsZG`l5ai#4@yneZ>%o zVakoaMH>}=Ab>UdDtdffvb`zy^YYmv4za||g5`R@cnxh3W@EsZK3lLigsn<%H^@^|oJ{_ay> z6h}`39OtEaAFS8W@`M*cIC@6EgCV8N>2;r~lgZaCMOw8egDTw`Tu%(lvtwWr;BE#wC~64D@yKs{gTY?< zJ6>e;eaI^8RC~qJu=+VW+nJPCBq_9LUJB|}k8B!^2UINAp4Uxl@_s$)Y?TFqMR zK~^}*)kPOOTvWBRiGW|QRq-_0?2de)WE8mU(bgd{`^5t3qO#3UXc>|}c*Tya@-5vi za?wi7Iiq?j1}r`|ZTyHttEG_G41B{laX4943h-*JAtg(7vZSkYZ%ThA2gh5-^x_ph zcKOQV2pAzLJ!m@gDcUO9IOnjXdN}>u9j_9xbucr{ZYUZ(a}&CwS7>RoOy^w;vjwYU zbKFtx(bRb~zje<5!EJ=F7vm>gPqc34wk5R2T3Dd+$A~3Kgnk)A_Ya*FFP(iZLAG7f zz8azqgTOR%jUlyULF_YQiogJ41$XVJTvc|YP<};W*bOq}J@!Pgn=u~YvXK}%Kcf*} zhQ4@EWsvIK74~5e_X6tQBzF>uNmh6nxVF#19UyoquT@XGl$!zXM|1#+-mJ|`L;6}M zN#=uxVTQ(xFt(r#jS%(6ZlM{eI&-a&6HzZR>gHDFv^%OvO-dUAe1@R(XI*tMl$hty@6+Fn3XGRqf=R#UNbZm`tIL9P{$S8}QG9c1Ue)NIUo#o!2iJ%uEkznB`?22x`Tn40kQFfiUSX{Dc$R48#oI2et;R)K* zI}U?lfajOr;*SrEBj$BP%wj}%d*+mg>_9XZ2s{%`8;%JNfR52)$jJcFLZ-Udiq`;K zK`?y3Jz*w}4PE=WfhN;R)M272smmsWDv{$fD=4H7L$E(I(SBVVn;#RNaJG3otjPmx z6P<&?H46m{XdkN;XNe|bTluMe`;=k)(z&5%_RL3x{TmjBd{Uj=oEVoDP$Q=(5_x?K zTzO(jj+vA$)i-}XugcdgwoJK9ADKd9L+XM=YR@C+AAKFIhih!^4_31;bSlLXXjDTp zV8U`nlW4HwKDCBjF^WOy^DIkcugVjtbM)*G2wKy8Ch(pC^`w6Fzcy<2|Fls{2zc}7 z9rg`Wr~wekU6l^6YR(7xijw_Gk!~}GT|tGhJM+VI@@&lbeY>;fMy!eG#r>`&Jjoo{ z+7ck0XZ~rS)=1HI6ED>8Zwob2_maPXT$q_|poN<7OA9qD&gOUQ`S@joQ?~TTK7oxL z^i$+cqOU7kYmu_QI;G(^RR`lgusm>_e?Wv8R?G3pz3*6 zu{JSN%ybe$aKQ1t^}9(D`hiZ}iK5#aBw!#gfgraSU%PUi2?3+qW+?xLoGnPkbq#`T zZXjksidfJ?uUTg}5br~O<*h=X!`0-urtHpuNxb;b`Y5zOh7clzUW|^P+Pa6i(+Q0Y{q-1Fzw$cMB)werq6oSOq0j85n2t zva;2CW`lA1ctX{+{;h}rLkZK0{VA9%ZCYY%0@Zf{PHWkfbHx{tJT1K5k^JA~7G7N~ zIInnQZ1|M@k(Lp(D?3ej_~1gD5|*q1uL9+@DqCmu*8Drw#GBG-(AzVAYiC|-!3Px0 zwv)Xxztsi5gjcKgOZErgp-_W?CJ>aQ(lZkuAN+yKjn2@H&|oMeamv}ROPE0BXv9dN z-V-z9bq1oemkXK=QKA|%-%X-T^P;LbJ-#DNoDF^QRatUE3nF7}{<RGN&jna)drYrx zV3}R^$+eoV(KQ;h6Fzmd6cPzC6#xzJkV<4vxyYi}Wr~D%BM%OWS~ zJ>=*#t}89pm?L~IaP9iOoBW#XVd!@aalopOC9ezoS8YAa`Qcx;H!~v-x|Hwvw^J9~ zXZyjWE5WUSJ81i!=OpG!^etBVta(Pc}a@CP%YURPZR+a*itUG0xk?-HBa;Y=M zg?b8)cSRFVg0dW8w;02=65KRs3`eMsI$5XOy|Oj&i@B?#c^^$>;5+14m1Uo+F6mHC zk)1+bmEJaVH?vhVEeTm7{<@{j+EC#I|GNIAzi~kHAbylIzokkTtXs z*7RxyTXTX#Gu2lGG}MhT zOWDv7Oe;}c<=;`Q?W3iNJ_L<=P-v=j2=ni4_x&~6Ia$=ulAG;_g0MWiLRHM4b}mrf zo8PRG#pc>fbX<3+sLHi#E>bubT!#6f6lxJ;Yg%Wunh?&oH})u@7?Gw7QN*{A2d+4l zmh{l4Y6guXAVEYKl;$@^xtUCgQg>3bOGRi2nNOo!$NrU!R~H-Q5OO5GZ=tONXz-ck=F zh;g##XvB(K-}M0lLui2XiBQfl-vdcW#oC)jxL;(3++B&xX)da?p$@c zcnJv~GG0{6fE`%UISH}SGqS%X%;h+L9)dQ%2g48HrZuDUT_Xe-GklM+ZyC%>3R*Wz zCN?kBp!I(``GZ>lAN^`%1Dx*Wr-87+e>Fw)%vs6zXd@WU0rY#=HalyIh91Fw&c)nQ ze#q$m^pGJlk3{r*ezSji(@L#kV5(5kE$`w(-I_fC%|rC--;LcLl#wW<**RV3z>Jer zv4@GHtxg*wqhduMvG1=D`Mdha{f8l|;7UHFEzL$*M7Xmc!qY6&LY*XD2objp>zeaI zNIk6tN|EoPzbUgvGbCHh=QWHUW0Hw+VM_h4k| zJQtlyd6b-L6bHMNa~-48wpqqR8LFid44S8~Iq&I78R?^I>k67S5rlVx&7~p@qB(~Z zQgxfdjAY=yzj%91#PyVOwK>Q1;GF2XVCxGqjx#x6Ouk<4-JR?m)LK#YW-=Su}*3y1{9%cEBEHTpsskyf0YmZa?HXg+bCk<=JBd@0oHUzvk{( z5&!zRI1Ieu^xj#QM9V`y2dd0vyt*{P59w-=28%c%=Lcv z$2vWrAxB39femF9hoh}E$I6E)Y=h&g1uKJMzB;CdS9RaswtQk!z-P@_-K+6N>p}Zt zi;F``iI_2w=wuacwElSp^V;$Lc>XIFPL2>EsH;Sh-K z$(x{&&yeo&^h?*lK?yN~%_>tnKeuXtBY&*tMt8DPZpza=QaG^;@5W7Gcj+2CMBFmT zMwjU1Ue1A)VRp5C2)8c-xwTszN7L!a)@E&RB=`C4XT&lO`WZ{2MeY{!8>@|{W$ap` z96RtMH-g-A`18VJOZ(<{?&;#jdI34=7|0`OMmk*h|AP zxC^e8L#cUsRgV^urV9Cwf=hC$K2F7vdz%f`5j|IM<7?04QG3UvV|K6LA#WYL9hGb_dAzbJy8SIuB}OA zOz_Z=w_edHzNpp>=Ndwy#L4|(XSofETR4`ksYR^S5TEWg=7=kIt^KPu9dFczqg#4R zg|zGYd`yM#nVX&~jh07X9aV8o-C+VF8u!qfgQX_v2xk--qAFj#W;x+N2vs1bH?Dx* zAXmxruGUSj*73q#X`RL$f%e^`lfWnFk8j!VRojU<7dN)aK9l>5G~E-U?0FyWcN`kj zrKH&{wZ|BD$uslOY;~aA8z{gpBMpV{JMca()%UJ7FEk7~TKJ8-{^tCVCil~9A;5~C zF#UtOybi9~<)TW$b8RzP%g!bKh|+T$NL}kvhnm;Y?D=K*-tpq)NORmvkbyt=R`z$J z*{7>@SG}<_yA)lTRzSH>9a5TBNIC)5X}FNIZm^+wgfu!F6)--aNwm+HWUbOx5ijK5 zA%kKXYC;E8j2~7eOBCqz2Nv_RH@MfmIyhLhPFvHy>^~AS=un~-4{oRW-M>C+%ql(p zWuR@>E^XcLB)A;MRorm(>UzfyTyIFZ`0RJge>#atd7t2ZbTra@w9dQy7#t;^W)_J!_vXxpMu&F7G+KDRQ^Af;%Se;!UhP(=kXiI+>O@DqOBTt zJC!?!uCAt$?9Zt;4+IRJGrqUy#{zpAI(52-^lk~M{nWWiE3>sL;jMcM=iXb-4p$`3kJtAoD&W^kvMYud9z(9rvVn`}+|VN) z&(7D+G8E%?51a|5X^qd`7feW`H#Ao_5ZvEtlpowd+>?2LOyfbHA(hga7-&p;gP*!@v8(|Ms1~7kq!< zt|MOq|LhYCty!_pgM07yvh2LyQ(U1Ucvgc8{j7R(YId+ zw@6=NX!+9Nt^c+7txFH=OU(b;+0VZD&ewh6+{DWct-oa3?FZa@*%P0B=7f9BJ7enU z^y3?Tar@8i-s{!B>AUuaXWe@{KIPDgwaY(!{Mna8@%DCT|DUJbpZ+^qHzIMj`H|_do?#=9d)o#y$+WD#=buI{{26#I~1R+aU(q2x8#_Q<4UrwaVLzP{er!YJkr?Xpd|;aOCNsi zUhwbPcmLbJ&409S-a&iqb=tx6-rcw7{C|6kb>kj;&j0ocKDp0)WBz-$?NK~%N#D{3 z?MtuOYrgS&W6uNnj=7@mD=+(5un&H^DDMe&D3-)HYjFT3n*s}?@>&D*m_A9?s8FZ=axetXMDZ+Y_RC*M~a z{@cHN^s?iQ7+ycTb<5^=zx#$e|K;;@?Ej1&bYJd;UwQDXYhL%rNWAi)TTWlG$3c6W z>sS2pu%-7O?4COBdk_EY)33j3!TIy5pZW1G|9sN?zP;~vf0Wp>Z_mBYUT}G8&%S+6 zIrQL(d?|$(9*JnQU!hikfPk#UOCI4Xj{iR1=bm?W6ze4ZwMEN!M{qL2F zZmqvi_9EE>dQShpeg0#k{yUM>`5!J{jr;#qxc=|o2TT3cS6_YJdFR1u|A#;P0o;MH zv9V8l;uCk?dFNes-SzOp4|jP1jr)K9#{K`QaQ)v_#r@x{pP0Ay=#$Rv>sxx!jRzn6 zZ;69f)n0z_l4Fj3!d-3rf`rz5OZryX+C8KZYd-YA< z-?(wlql`08{IRp&3-&tdqCc*^@i(v9Z}QSZUcKeq6JD_2*&7Nk-Q#sf28X9ES+?Sk z)ETdNO?~OS%+c3fKX%1F^A;Tal09Fy?-l2M;6pFl^St@5)MjF*zIJr~dsVj*g&*+T z@qhRFpG?{M{0En>?)(3$tFCIl`R};n4!HBd1Z>{Cd8h9G>znugUI#4L|Kh&86UBp< z9B|2!L%#K=z4tiom6HR9CfEOT|BIIV`Qg5U=I>=J={xxS_g`}2CC0o1=Ux7XUoD$= z^SZm2zqb71FYbG7tna|1zWMFL{(Sb5gO}`o{)5;4?#_Ryul4rdvwZR%dmg>|NdNFX z_Pun$x~(sL+v%@aF}Qd9C717g<;!k(*P7&OUp8;c%lBQq&qrSHzL)QL{3kwe!6DiZ z?C5LG`yY?Mj$i>Jm->&SnJ~Nae|AF0|6INr_y0Tkl6`*<{~PXb2>VUbeCnzH`^+;{=29D_tQ`Q^)pZZ?e?es_x30MdfPKkJn+m@zkBBCzdZTpTb};QC!hMu zr=EW7Kc9O1k!PR!^)pZY>e*-h_SFBp_sReH=coR3(__E?&=Y_B@H7AW)u;dV-KQS^ z@5lf9?SFpg+Q)x;!;`dfWf|+2xP@ za@*e?-uAx_zxD5rzU|51y#4WCU-#!Ge&#VRIqCQXBg4m@wc*$^)*W;5 z%GYiI+u9^YW9fdD973p0|9hwiQa;#PucO@I8)3;*!o1;4rfy#Ky`>c77?^{fBb`m675{r2b1`P@w- zcYNrq&;0WnKY8OBpSbb#TW&b*iAOGb{Nc+Ud+5@?{hv$z^y4@G_6O%b_^;ImzFPg$ zPcDARfqNYGihbe>Ubx6UWW!MW{x59$&Yh)i-!XCTZR7WRqHx1yYyRtN=l&=;a9u|zFhg{ZQ~z#`zarK+wkj-c+u5UEARRE z=$-F-!)M=f#@)A!e)Xfymp^>=mu?=p>!y(}e(0>vfAGxDf8fmP-hATQE*!e%{8iul z^w>8(<$nE>#dln?`udAb`rwr(f9jp5e)8?7eEj;2AHQzn$KE#lk!v>GeD(U9u6q4# z?>_z0H=K6;c_+N<%_qM7{8ew;y7K*RS^K`r*1Y@TliqQ`(0eakbK}LU-*wSR*VLC^ z?JwJQ?(vsbmR!4aZ&!V52~R;z_V;nY)4J@Ld7^Z9(V z`-+YA?AML;4DX4)`Oo%!ci+QS-S)wIE}j3(Je$zLuKEyuf zXZPNI^S9n+EW7Hkq0fH!zPBH>;S+DX@3SBI_je@<-+tfF9UuMfd$a!UesgC3|1H_=3kixb*8QfArJ$jGT4UEoWc! z_5BXLcJk5tZXSQpLw8^Lz=ywh=kNZsdezI1I_$?6#rAphzIXN)R^I%@lV6ki+~B|8 z`qvLF+4rR%`^$rg;9p++f)~Wso&4;LYu~@$-~RBXQGd(S{5`IG&BxC_;fmTfuKnwpP4|C(%K!Hd z|I6f0-uRAdGV@;k*O7|`h90@+0Q0mPE)P!pS#_^}c;K3czxAebx9)NE&?5&tbj^yN zA7DJvw|D)q51q7a>qB2V@ZxPR-us1X-?(%i^X9(V(1HhEd+rJUFtYxUdk_EGTc>VXy6#nH zT$kDFO8eUP{A%92Z#nVmd+)xq`lC-RxIDOY_~I*GSxnTo4S)Nn^X~t!`|4v}eDgmY z_>ODdUj4+gcdb9_=)XSns&gN|{o>1l)5_Ovd-*$0`+uvB7=C5pn48Xh^_R}M`Qu+r zUUlHb#jDPG@%LYL{kB)W`+)Q2Z~WwKm%R0}^OkPACiC!>dmWg0_&q}pee&n;IDg>y zd7D@L$6b59fBvu1zqs=7f6C0i>vz|D^%s9V|NBS(pmy%VhgRR=eDjs>dFzYcdBnEh zORM7dU9{++>wf+Y`=%?`?03YY*F9PuygPf_OOE*Ll|xtk=Jp$Z9DL#2+|Lg<_@;Z! z!lOfzzLsI_l;@``7oyK5)xNuULD|15WmJAIOg8esRR(*L?Gr zhrHv6?BVfk-%TI$tz+)bp7~z;)8G8B`5!(v`_t+#KYHuIzx~?E&6AIQp>W6plZW1Z z|MGV|Tiee*;qb+eY+G>iqJz>4KKAsV`+oJ|#n+}^^`kc)^vS(0UUSor7mTer=;n2A zSbKl^Rrl4Zhn;!BPgcG50rLm{bN|hc{m*^zAG~$nwb$SIz}mlE@n5%=?#~nlp84({ zzw@f)UtIG3tN-VtkM8N*{MqYPZ@KK>4?T0MbKYy$t@-=6V;{Wok@E)b`pswG`i?$zgXq__5F3wq{`KpZ7oX+9S69Bz z^R2b}yliyi#SPmCLB|A@Btfe#&k{Vyugm?S&b@wFPqfq#-Ydnp`fa zk4n(UPVYruo_nc$si&v$qh>iYQ)T%v6s&!m4-iz!yXfIGQ#AcGuPB|FX4a@JJH}B{ zRh<0m zAHTmO0Qipn7Z;QKw*DuHwFCYCBMhhi-2l#juAe?*1=Y^(-X0&{-jO4F1_pc9)_Y-L zdueHV85w)|`Fo9xyCcJUPoC_pukUSb{j2H=r>`J5ef8z{1Q71ouqQdV=DSo~c7J)> zOX#kj$K$}uZ$sYhwH10Hgcy@Kl{!UTC`idlX|8#lB95*+d5_(qHm0`OZ|f9j$q(sz zR(x{t+9vt^frqG18;=~8HxX6=en<^>ABspsv_~AmF(64DpCo`VHWf||CL>L-27*9j zWZSCjQ89?L5lmhoMhR|eXux<7-D;>UqihzWAnWM3<>_w;hN zw2l@JTi>0nnY_VzOtUSA=_GQEK^;?VC6r^kGWhf^wV7S)YrdIz(FxeRp zWOYDOi8vQRSJMe+y&8LZIZMCzl|{8V4IydC(=)0vye|5CT;}Bfhn%=)Gi4Ra?vYi# z!V}EEXHLT`|ky2s3dLW3jZdZao*xa=!?z4IoePdP@3?CH=!oh0BnpTZ=6&B`4qDUq&QHI67w%K4v%`xk=+A*=~1;aERut z*7d%5t59pnrf`#!PHY;W@o5YDH{ygUXN6T(x4Jb6WJCttZk4>_V*()`k+5{NOV5ae z$%nI?Grz~&;OV=Y%HBJ6S8i7Xee`|2850;F_;w9`4z+aeN?}hs-AwZOE1!@e)+N4G z#%mAmnC|gjJNr?>{dm&a6U79gndj*Ql1mG#u@v}Q*An)SG79V`DTv>|Z75fslo4?9 zKWEPqrBOy(d!2-o7X>MBeXu3#h^1$d-0j9##Iwtf8B^f5n!@7cG51t`k2qWhC)h8< zFw@KIHmf8mKhiIu1&^~|NKp)qDU=)sJnx9Qg^bR+&}_r69ZkmSOA|nO+vrjRmy@Bb zjpDQu_n}V+Upq3MPxB?Bz9Y-S7x|lApJhwrP6F{h_dDiNl8Tg+83t6yqTQ|V7Rva7 zG9VAwbAwE+Q#kLn^#TY7Fco(2gc-5|&X8bBaGn}tghx?Fp#b@%U>+dSqG$fD?MG-c zAB6`0YBlIae~K;m^i0l-v~JaWTiM=_%?zS*(Z>8Cemc>r5Z|!CRo!cnTu02qhyo4T z@W|cePuAUoJ+ssk7xF_l7Z;vF116Fj-nMFR0N%9Dx7|E>$ABXxmk*SHR9&W{y+7Wm^-STFN-ygYASED+R@p~5(x(VKFhJ+Cin`V`j}%~- z?G%N^t{IWS;RIaXidI)^)VnrGRGy5Bo}0d`r>VhWL~xv~HfPe*S~3X)d6IBd=!1Kn zvZ}Sp)kdxsFw0eZ5QFeFt&5mq>Dgm4$o?MBJ4hMnbI)FXc#I?#*_w|yWTkN+5B~P{ z9sc`zxc}$tf8r9q+W#abc~JlVA%^2W6hQf<{tx(x|Cg^{PtDFAoS3-M)U^Ek`8HM& z?Ck}gJNMq!*3H`b?c2Be*vIjl9LMu7{|*39qptq}NfA90KxY?O3}91_SUMq1B9K}Q z(JHAc-iQeyc+^UOL8LG_QeB3zhkKJ3)b-dd2qn>_qTYeXeQwW-KC|P$csJv~bNnFt zgZJ;_;~9Xf1d3VzTYlhs`d?J$+xL(C=Ry7NhZyetvti%ve*S-NH*X{eZ!AYI zjGcQq6}G;*GS}tv_I~K=dm-QC&-e4>&&PtlB*}*ZpNs@94F;@EpP%XWd-AAfwE6VN zHMcKG?}nd~-nfkSWa}AR(tG%-+hC*XY^M({-96Y|_~cPvd!^mAe2b=B^E>6Xw=db= zDzn*7bT=1ST`#b_UTAqW&!X|7IWEiHRr4j$U7Q(InU5@tIbIZ}|8uT87?WxSID)H2U&rH5+n=ei4`k0*p$M0+YF_^HNtDMxuKMR>qdf;7Ti z6;W?4-Q~VeIPxD{& zoBkhZY4L;oFF(W%_xfAh!eZHBJ{g5; zOM|I`s_b5(V`Z1RBsisQ#2Px$q-0W6S!Uv6qgtA9d#;Xmyc{?ojbdR)U{|BNE|xz&cM7$f9>{{JoZr}&Q>1o;2X0(>w3 zCoLoP&-FiXQLG*C|3?^(|EySFckidqSokbHeThV#-~RaE)B5G@_bs2__wRguw)LuX zeJOqOS?==v?3eT9YmZ{q=aXMPh{xi6pY0Diyzkxi#IhaB^XFsdUQdO+eSp5#ehy3W z={7H1vs!<>%UqW)7TR~J-S2fow3gXmv0R^X3Jc`+N_#Aat1p<8B^h4`)l3Rd&qnD) zc`Db|RGoKG^tY06GZe+qa(8!keSO`-!{aymk&oc~_m}@C0MS%io)$vWN21zQ7#%LL2Gg3TQG)RYqJqQcZ}Ihlm(Nd5AHYfnL=50zrm~5Ht{Z=n%A+in=saoZwo;5e^<+ zGSVwhdMa3#_f-P<8%H<=dC%8T(a^He(eVu`~4&Zi)ohF z*m=aHgnayt92TU1OUEWG=@Nr%NQ}8{%WgB-9FUh8kv%+B1%F^NJzpjAS5BmeON551jRx@LQF zf$5}5OU0|e(3;CsJe-Y9X%e-ptc)~FhZr~xOA850N~#>2n7ns1LW~?rL&Ho5)awE`5=4X(LSsBCkP9XpY(P=^uJ7!|}^X zX5W9W0QBAbkF?mg{{KM#{UG~|{7(|*!pBeBV-KF*fAm~Z)!fi6Nm9j(LqIk>t0gx7 zR(#hDZ8v`yaXpS?3UcY9#AbL3Ii-N$|7 z3q7Ncho_c@?k!EsK9fP%DC)bVS9a&r_O|psn1A}_<=c(NODpDX!D|~I%-qhHnV&Lt zH&wAvI_fSUZOLhquHocsv+@3&aiEezKaYJ6k8zfuPtQ@G-eZOs5w!q5mjZPbMUZ_b zkL?{E+nYR2?ZU3zhg~{E?VCm1Iwag~O1j^ccD*j?J9I=yiy?48t)MpJVrjbV4VXL(&~jU zaEMWApJ8zGv_HfNRC9nH(rb>!^0UQ|a7N>O@5jfPw+#$;SC{rWcca($DK=AobHDZHh21F+S?y z9%|udG@^X8_H#;D8V(H&9i)~1yy5s;@Xz_5W53LQT!=vE7at|1MDgh(0mNW@mSNka zsF9)=qGLdM26i+Y5%Oxz6zuPX_jk#mG+qexleTx~$92;rTz zG~T3KB?2+amabT%a=rXGiW*Tv0`wKIsi-&*al8zbRb@4N3WIN$dK#u1tjZtR-eh`} z%8#i{5KTyavI#S$ss-i=IP#pE&$g6@mJc|}4vXkb;MeqOZH~uuA*rocnk(wLG%y@$ z3GCr(hVul}tm39wg`Gr6Z18+|d$F44%j2Z-a8XfM2RWNYu|<6YVM3PZ9kmGfDo6>% zqF3dxwqBONAn6)*h+Qln=lK8c6@b3af6;IHKd}5i=>Pg5 zcEJAw{vX)S_UHIdB*70fCmXw;&c&*kqUz* zKK29r|F_w9`0wxQ=;Q3;>F@RLqyYXU{{Ni+m6kZ*|BtX=>OcGZ-~6zlbrWdRMQ+py zQL+zN(=# zuP6teOmGBAz^#w35K870Vl00SU)~>|LlLjE;$l>6NPRF#>j?)oJxHh0%6_Fko9;ko-J7YEOK{Rv<5b8o$MZ~gY(M$h*9*}adCaX5W575ZZQ z+&)w%hMM-dI@sunYZk%MwKmtK_iEtNd$~6*$Nwg2TP`Ow*XP%!n_yvEm|%v5Z4M?N zEkrXbTn9_tv{0RW@Fw^pu0MWfnE-~_vy2ZycpHjRD)Q1^E==ol z1KLj!4%!m+IY2@^taDQ1@0bua8xl4hC%j`x9j|#viw$sDn^>0{RHY6qQw6Ee1M(FJ zFrxU1Q~)$L{t+m?3^_mo1P~_y?2CwriHZL^3IfOft6$X*vHU;1&wrSZePll^jFgk& z6|55&$8ds+)nTb?DD9Me)O52qelJZTaB0$}UO9n6L@Q#_WkER(ZYt~hB1BD}9K$H! zvW)QUilL+zD+Y%=8Aum0Yjhf0)Epg7Wj~zrYPBJfG?mSk^mZ_#e^tAbb*c;A1R9tv zVLM7ACVNug1lp_)z5vxWD%MG(;Yd{tn6gBXFvAfx?EvOuAr!*JTrT=dEyR=%zEyZz zB+XecbY_BhloR2pFF-$v437Z$ya5lCl&5g&lKj8n*_UHIdWXrEGtri8Mk*HD)kxEIVmN@Q~$Y8hB17bEJ z?eOV_+U7C}os1c4SBu3k3R@ry__a@Jqur2``bwM{Ih^VtZ86Zu@*1;apcXT#WwkUG zt84m7>zq1W<;P1%E#7g*(upb}FmlvHx+zy0U1C|X2+3$z>m|7dBsHNhO@XD6+Q>G% z2p}D}ZLRa!C`=1Qbd`fd`%OCmkW>NU#SzJ(67hZmZ-ZoR6su0+P~- zx@@6&^-HxgWFukRZi{dVCUL*jRa=S@?Thk>;{F2Z0?!DvW1s*r7%=a+zd*P^q#JGZ zNj$s*4e;M&-{F6Nt*@Wszd8Q--Tp5u_rIP0Jm~-WL5AZ$%h&y1GmoB2n&hvpzyJ7Y zd;G!EnfaIK%o~x}E%mo2>TZpXJ$O1g{p8-<%Kb;rZ9>Z}0t@wB;?>Lo?ao)8IFn{` zuGA%>#x1heJ^J$LsM?^EtKnHKaRql`^KZxG-O8%&$*k(myV75NeWdcnXl?6wb<1e| zoyoe}6Af*XjqUfYc1&ICoNDcxxidJ|KJ>722;>i8wcbi-G z$jY4B-h%pp%eTgF^i0n`eY5cF?drP^Z`L;FmR`*+zI^s-{priKmv1*-ym|M2>(f5a z{?0VR@#i>>KP*4>f89hL|I+`3BI4!XIHJG;QjbcBB9}Ofhes$)ML?UHkK$LR%v54y zfKsPu7aSKPm(3KD5nzH;X%z?_Q<0HT#gk@ctgY~H@XHJmi*v#lM|I~H3!h}lstC&;dZqUk#k+>5K_LXMk!UK_JgQ0h>0_O3 z2b%B%F}H9`J(xt11$rh_dEU+pL!cjFG~js*0Ui6|$9JVj8vvWM zPGFtB;5dqY5V!iewPVjiO65RG>CA{4gX@Y!a`5dX`+H{z1aQ^~NBzivqB!2Vhx3Bi5AHTo~ zzNv>RmO;hl0R?7$7fpS0PI#spxu+a=j?=M^)UpZJun18x@wW}DIOU&f;+<*emSo_X zh*gJrj?uafQQEdBP3!Xr%TQI*v&RfQq|_{Ml2OMFt!Wh|t!^oyY>L&6&gg27m@8g! zbv_9Veu)hMn5N*=YvtH`{FXb@J>>3dty-= zrnDpVQs=(b%)Q)K)G&DI+DJw7-F@9zb93z1((`)PeXROy?w-EYKa10#w+CjwmZAL< zi(e~ITvH=fk50@!8=ral{Pnxd51%&Pf5ggDt8=9SGMZSCnpWPKUfF%2q6?>1^XvLc zuMU?q4HY*IVwG!4?*p88ef;D#R=+-Zv9|nt6{}+3uD{0$*@w%ozt*y^RyT2Sc5&tH z+QtX0sQtXXgZ;ky`So6Y=I-w9-%!#1?=qbJPRB9t%bWO;{}=p6{$Ef@&SoCTAPV7B z26H|gq~!*Yodvat0m_oum5TAuYJl_vf)5cEAVczWHf};2RnQarOjcR%C{>4UH61*E zeGywtnuLTb3~X36X1RoxLBB-n7CV0YJ;e|w2X`&dUGx>3&S1paQ*vTP{XqAf6{#9? z5T_x=OQI`&Cc=U&=E30g!x_9m>lR9w6%nK27=F!St{DB~s~4{67 zmLi9MQ_IK@>T*gpdBc}&DV;rujLtLQs&<)A6b3&}$|CUAtNSD# zeiYN;Bn!EBqLyv-C%AwsQ%sz(!0~7fLLp2KgG0<%B%N7vN(!_keX28{s{SdXyNS*i zTwP=J8UmK+k_o^kx`5Y1Z{=REL2IPC5JA8IEh6Fk^txB&{9sB^7YoFJix@^qhm2CO z4QVH&3o+%0WIZkvuECu{w+v-m;8 zdLeK>3=|A~-^_*?TAS|#G1NnrSUF~7xv2c;#G)Z^k``tXhICQ;L_HxlAd6ZThbkoX zsTTn`hl2wi0lCd8oCuNy2`6Gg(2Rx?Q-{FuNcbZ3!%6uzU!3OtuPTB3G5`OP^{?O6 z|5B0?-`;$EW@~8a|NI2`^tEYr$c=Y(V+}C}=T>#e^2(w1a z;cYCC8WUa>Mud&JON|$l&sCCs@JVW{EVaYQl8rUvHy)lSZeB{HgS-@o>%6XbIEs-w zL65|NP*_rc6QW0qL9?IL6*(d;0pjCgXAz^;Ba%Cl!hQIPE)_pa^zg0Q*Oh5HI=d*8 zmHy_w;`iUbqmPfL&tDP&d{6(&$Vhyn|D_}j_CNm^`wjh%Rg&1Jn?y#D0;Y^2BX}+1ywBtRVg{Nh#Xo# z4$S~V(!h{7GKyF-%4jmmFjDdmQu1I@avu=b3j{s`0y~kAU8AJAN=bc%lDd+Ds+@u< zj~tpq4#j{WNnl7M83l@rBAkpOh?G2ll-vyjK2JvBM@sHXO708-_s}x;9b&ys%hb=n zfnj7lN6+Mbi18E`PqI3q%hmm|lS_@8N1B7vgNmvyM$Q|Iuwr_S0apIo973%p%oj$- zhF~H+Tw;Sf;=@8mZtzRDnAoJT@(+nAYf&@k&@h$>A34h*Fngux<-+1!X+$_oWKdRH zpN?frUeASv*OCzyB`mjGfBlZE_NbCc&r!n(6|-SwQ&oDl97UaUBg>_G_va_>O=wuP z!cR zylUI@Eu%zgxk&!D$*{eQqpUZoG(eYr$mo@mp1CH?oM_h8dcP|DFlX7(h+?hufvC)D z)ot0Li6B;Jr5}v2U&fb!&ykdRl5`LzD zlp9Uu@!}>iZqfz|KAkKfB|`^3OrA`31Iw!c59G7E1PO{s3Lo{^6}(50t`5UCCdJEe z+f*9YvEqTuiNH##C&@QamY$0i*AlXLXJVP<7)yEea>O0_5JANbL*wVKC?<bum~^ z^qg{IaDn5-x^Oq@Wq2=n^`iC&MKecH54U_o|_((JbC=_3BK_9_8&2Ut2m)T^DCaEV;zt%H5ykx9gap5$oF5*f^Iw7r+vr=p06orr02 z@W^xs^Lih5^-_YwFc|Y%tQ*oesM)l&K5)2hl4@}L+O!XuNJC$$_Lrk-gF||NHz;B!f0k(AHDXR#VWHkkfdB$OB0! z&yrGl9Aaud0#DV@a*~vOK0aYh3~r~SzfM7y2d2pdQ(pvAqevmHB;@AA;MUJ4p=I zAtKEur^zFyjU8HM2l3OtK9oG3^_=G4){W-t_9! zgHNk#pV!~@a?AGe$oKIn_6flI1eH1kj`d3+ZYk=v=~{eTTkjH7?iW$-KdjL&syQgG zJ1B9yPh788!DwUp;h>b^khIZ|%!x;+3q$f|gYss>3Km00%!d`NhL70}!|m=WJHC6n zieMMhhDjngB-Gi(G+~m?Vmcmjrao}HK*X7&+;UnX>Q}s~>wPZkNgQuD+te6%{pz`! zaA7qaX~W~PCqgvwU&gajcKYjYNv9WQG7yOfkzQfXIIh+ z2kboWbWUy8OMTR2W>1umDUe92?$b%6n|;`_0-=d=Vds)^9Z7&TJ|RuxRz_|;H|_^# zi|XUcwvThQr7-~aUdQ#ityOkIv20lXfPfdss9XhI6R(|PNc$g zZ5{|#BmjA5iQK zwes}Nhs~jtr(LgJ^uJi?d+~hy!~4Z2%j1vk$1KjJEY77pdXTpCxa#3d)3fDU%L_N3 zE#H3rwEgkJwl}Xv9?f;Xcs}!Ped)#X*{u&R*H)KbEW|C(L~XuGc{r6gJDD&s82eepd+e^2>0r@kNc_&x0Qo$L19m_@#uMXo(KzrVR0H)ZnW&iCD*rz5|tFkk3D zyFP*1#<_PYzVijnK^q)54wZo^K1> zzuq0~sf0V=ope_1>mBE-1L1G`kzb$m4tG@yb5aO#JQCr44CQvz=ai(cg%s|*caW{z zX=5=bJ&^}hXD18&o?SuCSA;yebZ)jd=y7q#C{^4_cbC1i&X;wrD7E zHK^1|O@PD}w*k;x)f6K^7(m=uiN2qX3tYK9T15J&OOPE3bI~|xMW;&2YlMo>vLo(w zv5Imext@?ke}ftYrN|8?F zlPC@M$6^5hmS7r9>Ht&UJjIS$D^VloW){^i#DA*I^tjF7F-KQFq+P>h)O63=hzk)%EoUXyI8`%z zNZPt>`)G-Je4%n7obiqiVSF(w++A!~YV4J`8k2jVZJwt?X+6;)^s9DKb|A}mFP#Ov z15IgKXh3v$RR0~AX*C?GPTO9lj$rGe;UeJ-AW7|`5UDUolp4=ke{_g!Bp@<0vUMz8 zsdl-Dm|LI~L&Pw-=JL@0PIfpEo#FBrF>@O|jW%1@1#uN3#~APVv|BqTi5N}X!!P$RQ96j{Tmu}=S`Anw7E49$@#4Z0q>eur!lz+@7W;;I` z4iX_sL6Puf6e>m0+pat?VQ?-jBBHY(Q6?$#wecYlCQ^HzI>3Vz;*X*~fw5IDHFbyf z<(%0bd%=-7XNO^GXvWuIblj%RqCH)=SK3U%R$lU$4yAr>Zxr*SDwA!2k>9qeWa z)PG6L?ln`7;O*r@LnIn)+O5x@LU15hBfUVxxjD>>q~aZ>5nxdZ_i$VG&+k7I-OO-V zM~L*6+NHqn0MOCwfneo6*7gCVUheD=aUJng3k8Tk6^&txN?04mI(JT;9au=<(4>}- z=LT4VnNyo8K~(99#VD+;3(t=wE5cAmJdHjS!hXxtryq8C3zj`eo0l3Re7mk=vpauo zynouIJW=;xwb%bi`>y``&-ed{iG6+l4VV9yls@SH`yqzYe~_>HzYp%e{IL5k_wV2T zb^S5~r#~P+^?%<-I%**hn#V(8I636?VnVEG!BjLS5H@gi8Ckm|nL}hy8Ua!u2|kmg ztF@66mlCXwTk@E-wuvf)na483nUl#>{Rpc79hiWah0!U*gp*B~6rY3yL_yCkDRL^r zoKskakco+tnO{Oi?3hK!30^fpf+u_&(xT!TMu-qeQ7_7`Z;36uPumg)5vm(P1DdC&hebW)cZawH#i(zOuxf$aNqN9V!!YI zT^!xL{+b5R@6~^$#eU=d??L?kL+m%=e<}*R?d`X_yBoW^pRq95`P}yDi=Uw&oyV{+tsqK%8d)rTUKR?;qeZT$s;^)_S+pEP}FN;3CDc#+?z4Lx} z`{T2Z&(hZBF(032e14g|wUYJeWsZlP^vz1!?d8bEV(ZV#(c4dB*XJU)mSW#8#BMGm zd{|EYyps0uY0BE;#O;*~4rWp@0V-`}4r^l}D_Wsn~DsRZ!!W{cujYB-@W19 zUhCLeVOO4RQj&UN^I`bAS>!&{z9a=kgT8QWBoK?Xfvav;i>(`rtghr)RA-;6$~LRW zF#WU`@o^zyYaadn5eiGa=i}!l?|4nz_F8=q&U}cNmxKI>1ig_aFP4K}AlUdb1T!LZ zaU8@!5SKEj$u|2sU(i$MT$XmSDA`z$i!we)eLr`A1>!ypZ(wOyXo&@43O42s)l58x zzyT3U!wV>#RHXJVS%cIQSQ_F`xSuk>LNGO00}H{lbBN?X_53KkeH30q>*8_;`-uZw z)&R@IuX6+;jzyTjY6r^%Exqus@Hk|l4tD;IQqZ;}WRTVl(Ku5H20Z37K;)>n9;3z@1 zqpl7txy#{zSSpvbQ9f~1B!u(COp9)sx~?Jmf|<=(1@rA7QZ205NG1Hk3LN76?>MWn<~_d-FVKRhaPgmZcL0g2!&7S33Zxf z)KEPeNtfv$2I5XsK#hqKho=&-LvqxC4rmL*C~guu6jY#+#uvgbbtWa3$rED`#gG+a z0Og7XWcTs(Fn9IGs0-YWbV!l(fx;>)8e(}1MSVwwPuukL1T2JeWG5TMX+M6T8H-GHsF%B$PGT<)4b^-5@50Jgbty`PMeo;qBUWs&q&nI6<6JOby8(m=%(A$ zo9h!mi9zvqIXB59hq+R(+-Omq_@7&>{T=@QB@Lk8t^fYI|4U5jfd4EC4AZ#+5I%X`)N5gOgqFE zG2Iuo@uF#WqkV1W{KmuZ=M(2vXVDuAiC8iVa8XJhrqfo2*_j-+J$X3!Jfb+ouq4F@ z%h-xc6Kt4>Bkg|TeY)NIN}f3ut?M)Af1P;$IqQx~xeuIu)a(DK&%dYMWn&Ke>yfYT zg+3b%UKj{?H;2M%85VkC7J3o|Nd^a#!#)nO$zd8L7$a3Ze(Hg#zc1Rn;_fe$2=Zvzyo+mI9CbD0Lh zZIvU*m7M(C{W_H*z&r_k+i+C`xeUIqBt4QNBIOV)0YhJmpWMbm4DK48U+RK#9cysu z=d2?Phlx9_uC|qR(FvG*BDv5}R7ie^U0vaZ4-uF>+}x$KZ>&T!mD{u}W(|fYq^1=r zHMX@=1u+~xJ;O}p;xs@f=vsW?V=DbfzAFAR({L2eP?m`MqrL?r=dsQs{u{vJCEgJ> z74)a0xesG7EUHbuWJ0AeW3Q0k?f-E-q?-LfK)u$0RIv8C~acaUjU5{ufxFI-73X%CJs!_5Uo zW;TQ*UP>&ukzLb^n-R>c?8J=;VhWp!8V1u#Z+<;2m|JxRH!N6mx#QQXD#{zX_vZy` zuJ>JO8K`aU`(}B?*Ild4?IT|g4z~B-`}ORgMPPwFveFY>kX&*nt-Lcd=@M>&@I0m> zF869qZ7({lGOe@~*XX)GN?2OoiR*a1($atVMqlHt!M6T;`;&za9zFSHxUk}C_wUUY zjz3tq|LEzrQ-=Qs<_rI6|K9*#K%l=r;=f<^{|Q+1)h#F!d2h`3`)Z8j%6rc@DWyHt z$rei;7fnD50BY0l4F__hYyf!p=XZgqNZvSQSpvOrEq)tr?acaJKn}kf4Iekj$B^+# zpC^FhXHgW9v|1OcPSnil$j1;l9xo?&CFvr{pP+dkU zu_^ePGJ_@3O`)eshKOev9mMPgg%~ zYEcJ-w)f%%jjpLPrH81tE1hh;KV_YFA+^iWVmaK3i6v1?^AL(zRn5LYpWXsbWzJtM z*df%qpXXSTo4Uti zNq#oD$ss5!0Mit5;X0P&0g1IZjGqb5-=7k}k{pY19KCUq{8(J$K#fYROf7DSO0UKZ z^Y4%G7u2-ju#5#V7R6W&@3Xg|br8$mZ)QcXu3pe&sI^i9ZRE>je zeqDcgQ#Y2SUnBHue*PXgryoE2cd&`$kIz@}2k}j$&rkcGY@D2J+$|gkNp&>PR^HzD zo?ZlJ3_R@IM56KWvvpaH+qvjD7y4Lu5&-q3$;@4y6Sz?hz>6MglBcb$9CcVxAbmqy z7a}qR|uh{|5VG|Nmp=zs1C)e!c(Y!2kac!})(O0F2xJw72i9aJ~p1=Zn649e~ez zfe;kHSd@c?R$g=ura69IaX!EmX{x(om!M!5hVRZM+zaM>QK;1Uz>OoU}9 zRt`EKE3qmtIQ3e1RtqY<4y)M8ua7jeP2v_T-RhrhxPAAV3<)kha-(B3DZKzI*Y@`+ zVTBq_qGeY1_@UCV%B-YmsHOKoe#N!l(`5UCZ1L%fucg@8px}kY#o|k)iAjmBXk#m1 zy{KI8$Onf}W5N+rhtc;ApC1v4nwE&0k%_;rkTiER<)I4ZzFPW2?K35E8Ta*b7fxo+ z8RyShqz_vZ&pL(_8DCqBvJcjdD0ZyB7v~&!A`%l6+AVOdjUPEA6xJsg(kT$xBbzXw zmO7!CF=A{NEt@}OeQC<$(uB{IxzK>C+~@A_1>N8cyv7rJi!ZcQIP``H@|Ji+t9U)7YCzSjfxcn}2`c%UF>$v=CIDM-)&o*!e)bj?{3%On7 z3#*rkyQ!YpWmY`omfPyp*iz|piNmXy-Lr_@yNtuT6y{gTi>^D0X)(OmVV74OcPkW_LB;-9>Njb;j<~sO{y*t;OiQ=Lxvd&%ls`p;B2SQMC+Nh3cKbatHz7w9aRpu%51x9ovJUGWQA*E zf;4bNmKblPV5ei~)5p;6N}i^Yj=I8*7W#wzeOQ6Mva&KgJ^k(cH^(>g-z3zm3fJ}W zZk~P9%%6+!vbyOyoDYJ)lUTZA*Q-GKC&6aoP7_UupJVDCw|e4daGUplv+JFnnzBY{ zh+Mp$2+yQVduqU|6uf-RGM>n|P151+IFuQFwdw?Vqr-sUer+YvZZM8i2wGTU)<{4) zLmfbIQN~3#jsLU;L<0$7Tz^UqWfxXD_h!`l<`nrGb%(wwU2-o@lzp$vz{wLu#gF8# zJ-8h7Zt6ta^#GtEP#;t5=St{Iu&UBfY9;Uctl6b1G#DDX(>qv2$0Dxk*Vur@En zL%GwF&56|}`XA0TR;O`cY`c1IoqIiw=FK2BRt26oYSN zZ4K@yeA;-SmIaqH;!8Xh=D1d(&fwx8j`77y2(Sv0l7$i0;?9~O0W=DhVG&v$;IwHu~PJURXkl%&?Sq$6EqM1&&ibb=A0jLn{>Bfu$Wew9_ zU0}shGgcPw77h~T;0>id)*!y|7_JNY_@sR0xqEhGdULMz29qPhC zuoxr(2?tFc0hty(1_5i`!Uv0WF)!&HmfTIl>u1x)ND#?_EjR9SOzXEFBh&|+#Us?j z;1SW7ijD#g(XfA*^QBY`z=P121t{VDH?6ulu-~xn>%V_L2K;{i$FJ&t(g*$jKgNFP z|3A3@{oir_8+Z2mzrI%YpD>*M%l>Nqf@BUL@ss{jLZw1LT9X>=G5CZeUTy57W6aWL zR+y=_IFP*n2B7ky{WCo#g-CG^60dnUl8jznlC-IuB3C9tJbkNgVw~+*&|)9Mg-VnL zIXG3^ro9isu9yxqod4*pTdJANSB43ee2yX#Jk{p{<0eYep;E9i3|9t_!;}MuvQmM) zWK;xt?Edq`J*mt}Q8Z#GU=IN`tGH=aVJA@%8$2K0UaS`T>yzFw5E5|?L|vz5x{%fF z3u0&HV9=>2xpTta+o95==F7v$bee{K16ak@t#S586Kz7K-8@_<+BO{qg(vadme2_Z`6Z z-~X@oza8}d{}}tL-#_n9@885maO4tdAv6XKS#qLM%c-w1&+cZwyQw(qP-%WAf0XJV zuk<&uKYsuIUVlOP|6kPqKka{)KB)iy82eA@|KZ9Nl(##_7yi=_oT_{^dQ!vV@tN|s z3I|XBZ)Jb*{{8Lk9esa5{a;*0{8#(`4)VW0$bNVK`_9hp+qKQDkDnhret|3dTLu+> zvk=_;Z2lkY1ea1Z$Mu4G#nt&GHk?blc0QvSnR(-zh2TlW?I~rQ8I|4HHNE=_!ExDS z+{uWq&oceqLU3Hm!2T+5+-$`Db)_dS)^I%nHs^Ak(WSV)%~z|NFW$V~bU>I;FroJ?;CC4G#8*Zs_!~m}CZ=`Wr z*D}p6r#06*$1AZj{?cqoSZPRcXJPd~Wmsvj0b1KW+Z=s67~!R)>Z+*haHM25`@(2+ z!Gn~VrGm=Eoa&|AqZU%~C&bGa)5{k#Di^aAOe9L@lP}GuzI(s!Sfgp4t5Wnhw&Zal zy4xvr@~n)Wu$;l+{D-KEGsv9j^97G0iylQ6KaS0~ACNN>oG}@g`!LKq-#l*?ncf*@ zo+FRyu}quxNE~s?eBhTl?&V!*>YZHdphy9ybr5-I08dB<8g+eV8eZt?`KS6?x}cImaqlt3s($nc`;YVkeRgd$t_4Dv&Zw z6*EdWY!D@^6)F%mq3_YkVi+N4fD$|&CZKnYA4|B+5AVLa|J|Akj+yUG ziiWVQuN0xx$s&lnfj{qm4}VpmWJ9EmQiE4*lQ{MOQh_4*+aEeOlc;39QGVhj1UmRC zPS;E|{d$SBPG0U)?dz~-l=UdqO0ObPNvu{&2$6kY4B$7&>WHJ&)<#1(sNt>jZTFV0 z>U%8>lyN`P&Js1ZsOz5IOuTppNl^ZvBkFE}f;pmzyUK@%Nim#+yQ9%|EfFtE!d^tI zBR*g8JQ0V_hNGB$veEP_JV}?-67BfX)vMVP5wXx_r3gIXPbu8`c|FWF!87(5MFTId&~^=F-@Nc)qmW zET=+E?1jp4-s6ol4N&3rX8S%v0)I7R&Y-QRh68+!HjQJ7Z)1EZ|V%-%DvBbbyxLOi|**k*5MPFrDVWP_@S%%s1-5`He zZUd=c-=q?TR6edEQu5u9k)HeuS!%Eh9u0nictzc~&f(i!)Y^XdW%H`p#DEke!xN-E zg?vjw9rdYemW++9$Lgbq=O1hHGqRJvbQuqRZ%hNmST z4Fjuo;E`;%5l~2b;gLz)grsTZ4Y#f*2)@P;+^zros`L0U1MqSX(2X6jfTIS&X;}5alnE#K+Zn<=Ar2P6wYu^kOt#|tF*@qPu)%QMr@;U%hb3VHX zOUum5ck&uLD{l=Nd81ea4x@@{8M*m5Wfhrt1vn&RScDGqsUUcj)On67vmO>_5fI{6 z*E|H{(Dyl=+uBsz*6fxZ6;YGxmm6Q)-JouN99^3%qj98rsxPmvq-Lt}`fOA4;|6hM zk%on`#>Gq5m#UkWYnqp9Tb^8LeNvy?fxNa<*)U(+Fkg~85>xXit9mZG@^Toi3Ai$(ON7mC*9xJKw2h zl_FsfB4iXMtm?uY+N!GN$`e0g(9m5xH9vg!e&5o|IZY29gFwOKe*C(gd@tTU(Q)U| zbmrEu=i2Ohk|9=y32v`3l;b5f~GA&dirvuVa(AcV| zQ&3SIlJZg_=t*WFqZ1Gn_@g_rJ zJIcuDfqc_L-X-1f>5?wXll26Aqw!Q8myP>jgj)GW&I6$W4t(7(N(M>y3a@YiA`pv^ z{#G5|pE|z&`~KhG*U`t>$J5{I-wpx48~-&9mOR_LAGchuDk+G@qsYtd=kY!WgBo;isyuE+;`AQ!b*AD)& zeK0`JGhfv@)+weoGPnJeyAH?i4w6>HW+}9M%7hMqTGuz1e*WJ60rv0S zr6wlEJwN|^<-liWr?ay&PY-ENKYK3E>Yg52f9&p z{`sciN5({bhVl@-q5hst7nl_{ zoJ}9RgCK&#B;La;`PEeA0tb;wFWG}?kEIVmHE)B)n@dNHVJ59HN6ay1?Xf282o}94 zmxI_=A_bRYrF8_z7gM!2^UNI-SVJuoA_6==R+s;9!tBxmga{!PDxnM*qkquC=`$mk zaG@RZc4 zB(vosCu#YLda_hyV03$oXzrv`N$j!WRQ zU(tb_grrSBsVk>RM8lI%hI-8vDZ`S4(n0W8s{JZ4V1y0D?qC`0^2i}AORR}F%-$ji zKHGyml9?u>E(eN9q9d@wg8>;ZcH1dA6_-tv~Q`9~0 zs)+b(E;u^X(#2lxUEvO?1K=dIb^73@h_fISUm$mAxhNz9!0M6Gm8Z+2V|-q^`>YDe z_k@UfFQ9Bl%T+Sy7++j4=`e+Y9~;B?-c-(3aEzoe&J-!9mMdj~%pb~5SJTw1aZ}}m zA@!4Cn7%NCDhrQlB@bYta7}~QddI{N8JkL20m9Ymn;UEoNV7^Xq9bMwz<-y%nre95YDV zD|Wreyo)KJ@|aa9q9Ak-urLf=kz@w3x&urto^?&Wb-Z;ell+wLFpa$*Fc`yMgRaCg zEydg{$#37Z9EVZM`=hy-Mc{PhBNV!H++$zglNefj7ZeVIBOiP#B&xu9U+TE9rj@f2 zmO2Ox8bcnWfooP@cE+T z`J(js;{EeQ+4DvD%k$mKQTqLU+Ve@yFAMG5aNOd;*XO6Zf9<7xxoCU2=yL-&KET0~zkm@i0S08SiyL6O`WQ?11go|vrw{dcepN)>F zk2;Z^p`4>MuBRG}iX?BoK3bF#nueV48#=H9Pv|`lm@QYBRTtQ0C%82a)GZ(Mb#IJW zSM(}F)HQGH6(53wP@>IXvaL`GBObKfD7tzVjyf-)L?82xhWEGEmm79a^L7Z6)+kG! zc*`F6-~6Z>3X{uoQx7*5l_|lxb)aAIdB_alZ*TZ6CAL!&x>*&vQ3<+JA0t)I~fmL75qbGW`o5|vy2EmAUT??@M~a$H~1g(*@dgF;j$DO_Y+DzkY=nso1gJOL$i zyITcB$vm}G9*dxjn~YHiEE=XBkFupQiDVKRp%?|MC^#el#z?u|QiV(;1VN<|WC;!q zi%g~5+zXqWFPuW?{Yoz zHX4moI%-H#{57B?w|E>P}r~m5@iGNrB ztw~I-PkH-F>C@wK!UJQTo}Qy(-{%y!#-!ExMOP^6d)oz;B;~byXc|5}zy7sB+}tZ$ z!_3FnKKPej{7U$jHxB<7RAbA~4_1Fsja}jzwC$qZ|DqiSq&NS2@^Mm0Pex_`za1w1 zOFsTJPx@2ud{fWdKQ1C)UfQpiKwRsskujK`B#4d9Q?0s)Uj!kDM!q z{7x3xn-AgM3;W6)YtI35#{qNG4s+2GqfZ~LNfS`5hFYY6@>Uu-T?#o+5b@p%H(Ct& z-W&hDD%zAK_M|z^y)RL#KF*N`@wN-my+2u<4(_2R=?4R{3OivXPSTn3$kCFB{=$ei zQUY7kz4rl>_d&G%=A^BL#P=agyWWg#=2Q=19PJhiC!u^P)(Q`i{14H>y8(O;v7mMv zjvt|-Tfw3aiSm6;0uM<_t#AJhI8e`%5#Q|1D0XFhNTx~A0 zV}2?R+16W$CO=XwZ}--2e{9}fp5NrU9Ar2@7W;jTvpdW6-p};ddFOjs9J-wsIhdW$ zkrp*olo99U`MdgWv{_eDcT8F&fLO5*-CPC`29y6^_1{`)tH zje29od&OekqH{zctskHP^FBLm?Vg7gfCa;d&zl@AIp(i*2Hn#RNh#$CK=Ul3zo`J_ zw|k$gG`SWo4hM~9G9L~(uM@S!pN`zCwJn-L`CaqCXmO+T7-aK$9(9SfN(Or$LfK(X zDd_Sb%gg!d8BON$&3&s;@CE1v?TlsEo|!J3@JLxt<{%fl)O{E!!Nje5G1XMeJ&B*n zqg{3{4$p<2-T-tAArJaOoqmTO(IX=UN$SnXZ}#K2}c0~ zmMH=;X*?goyJ8eN&iS?Pql!R2;3A5y3NBS#RHRLX1lyvZZ~*4n$W(!ITA){+jezn} zhQ3Og4W7~!^GcjRYXvGFZW)9T&pvupB*)OmKo(0KA+I`2nFU4;DJooNEQxPc#VUz8 z%TPSV+&X&!N7-+uE>E3hR1{60Gd9j|uk*u>u>63xO-C3qp^f8A56d&yqc;1B;^jP$w3ZlnG=T zB`aGLL!c>$OM#;;%`6%e;k611#!?fQ4uk#zryWh1+3Yez^AU**kv1BWev~0*akEQ= zOIM7wJ*Y>9J}4Nf8-~1!r58m!t{0hWDyc_?)QKbnjxcV$dxRoMIRu{AEVrXUFd zj$y3ia^k3y*y7;Filw=mP z6qa{ZH4FqK)PY$j;(AR=_-gM%3+2IBdpt^ z*QlcuD!A<0s}+-POE?c87SfI~apwF8B3tqh<)o(DR1E^C+tx!QJ zQ9^mer6dWYL=aM<1X8FlqBR@*D>`l4WA^H!ebEAZ)&w+Z0MezAqeYQ|1QD&+;Pn~d zMolp9eF$F>>BxubgAQS*HPwPO-hCj=s14P9DC>PF+d~BRm^~wijdIM1;~_@uAwg!* z4>aa3@{p$ekZHUduQ%qex)7!N-b42x*ItH?Z9LTIvC!kOB=E5;^jos4AQKHO0rq2M zEIlDE9U<;xb@E<8I1?#wCL>sYf$B#|JSPuqQmw;6cZsLrYxoB!DqlhvLhkoB;zdw5-{;G%e#?LP|+~5^W7z(nMNWJ zX&+(Ug;>PnvzxB>C6m8L#^nzN`;$HXzaIai{O{^!{=cOG{O{#|j{k1{_h0t^v9tf_ z|Nleczwy7n=6_}9a#ibi@1(|nw9hfG94n_SHovobbfx!|ElsQrzfz^CwfXP+uQX2E z_1!CzQ@2lfC3C-eyBqqJ=zA6DdFE?6y;ZYKRJM#!Fby{itS|{Ee`BAbVil`o9;s*+ zVHxtlCalUfyxJ+c?zdL&e=!KZ@;txPPrur`hrMfkC3cC$-6`*Tv#JI&D*7}3!tiox zhJKN}iss2*{a^p;5&qTu_3sipz2HXojNVr=_lw58a=6f<;oRoM=864R-j-A|{h@FD z|Axxuul%q6ulNV-OOX0&{tuCm0wIdSi-sp8h9gN*v!S4fi}MK!CFO=ng7c}Uyv@ks z6Ua-FDg*~FF3CXq$XgkXTwPOB{E@nYn)_2I!j~3sYCb+Twhqo7b+P^y>h~jK)a*U* z;Nk<|Y{ePFqtvWDA}g!kOUg#TnR^see$;$#-8_Nm5kk4n95_mWj#?MfLX}%}g9dsP zg|iT$6zxmnPGC_|(1#sI;o6vp8IB|Y01>_2nEG39S$j*!;ZrbsGBc6DB#fKoRCUN$ zN$rNm-fp^O=T0)-Wgc8V0zY;g1}+Z0nZKG_I&BynKc zwHEp|fcKj&+hfuqaN-+Z4(2dO^O7@f7wZ}jCZW7pV7}N;q1D6ccNwwI1JIgXF-Fcr zd&0m8Xrk7Q=>I2ulm9I7d-?x=M+ey7%l|A~f2;p-vUB|D|NKMZ@2vlqR)274=AB*K z+&}#M`fYb<{V+7+OL$gGeaB2)``5p=fLvJpVdP(?=T)F=6)U0bWfEBN#v#?nx5O&! zUxs*XP*X&S@z5}`=#hC+Sh?v4042iW+}t2=E+A1B z9VbdkiZ~^2GZG3bD+3K5E@l=jcN;7lIT`-wcnXg=BOgu{^&Geq3IoYZJi@9F7Znk9 z79wk#$RZzF793NXD6HURmJAw;L=0SkXo!JuAR0Q=80MdId;iJe@8*9yM@vUnW_x1~ za|cEfM>{trCkM;_z+?Pg|6jI$v;UWqlk?B~|A$1hvZ53+0zSg)U1S+)km~DE=k-bi z2l0AK4w=XNdVsPNRS*ROs~zHoj`{I=j^`$!<)-Fn;pS=VVh$#1=4fJ0BJOGjBx?Y|EGQRcX|QoZSV-KA`PJ#9;WM?M3YAme{3vR+;?hTjSwTRFsubh&@kTxEXn?#9K{2?f`ePNz1-mhaox2n)EU-dglkU%v+K9<_GqKZq%z1-bb0p zb=P4VIIV8r11~@Zm8_odzE?159^e zC{Nv7W#?-R7=7tGc+1bG`B;&kJl0TG_r3tlNp!lwgy!R-reJ1a064|FSrtp5=DD}E zHN2yxg@ucyxrc{`zrVk`ySt;K(iA2_cz1XA`Ga58QX%6GjD1{}cSVpy;&DCvnpOy% zW;j|c&luPay9T~3l2D#sx-{PWX4D0JkhrcE5o_|NPpQcdI@}e~V>mcCqGo1h6gXIX zGC;QS+FD09H_SNPz|E+v+01D63sBIoH?idPen=O(OJdoQ&=I!0YcF*aHrj@_dGei> zG4#BOkzEmPHz;cxtyX>{m4u(4KhdC21RIR3EJpDY5V&NpEL~rMBlJ?*{OpD)g=r&@ zVL;dBqMADp_}08=zgW|mUFc&;pMkj1AO(z#k2ih(ERIo2 z!lWG{HpcqSM$hD3BbUM;{STuh7z7xgkkRMw6_{qMYcQEykK&P7jSc2JwQe!dl3h!* zo$?6lbSa{$U6^gTnVBrmc(}OhQP%eMl-XSg$e@nzQptFq_D=8SXO;>SV zUfw!HN~7OZlFx%iEdIi$)zgQw6W{!D|4W0yvz^{|AtmW2Cl20<3G#}HDO3gQ92_Nm zctk{s?a^=6z0OXmsk1y!{2s=SCp$IGM;G6JO6>dyu5M6^lu)B9r=+{u@$_uj=#4Hs z_2sfZG5pE0!U+(F9?Xt~&A`BbD;fk@t#5nwk-YxNA%Nv&rZ#XE{pWq`;(OR|a$!7B zO$vz?99jA6+w0je@Q%>~NgF!(_}IQQq6Cv6Y-n_&z=wy%h#2?kYO?c1f@h*aDd2@Z z0`f%$@T7j8!D>M8Y{3hQ;-!U?;~Q>taUC4m7@rzml9`{s=QLfLzO`kV$LH`aICOK4 zbhl)kBs3Fu_K_g*p5yVF*~i==$?c%?ac&aJdLjQv3=d$X093SqNUc^2$P51 zeR7gqtS*ILj_L-9wg_l}MFz$bkT)((JFlfX)+mn_Jh^}(9tIx4kO$>+)JezR(<+ID zvOH8|vd$G^>gtMdynlSWlQPlXD@R*)+P}Dg+|M0bsJNC%SYh`W{3c!VQfi+=Hj+de z2?f6v4))d!t|uRV3Y@7bAB$6Do8no)NeK9UZqa^98ttj>t~q++Ea$UsD(LFE8=Sm3 zZ>=0Vx*VbE3k$zr$lV!C@6g7bI?Bq~65h(W9iQ#PqeGA>hSM287A6RQvheieZ&k## zG>rt5JR-SQb45T^P%w3dulc$gm!ZnXjF#|`*q^#9xf&Y;vPn^TjJ)1)f?81iNHSC* z*^^8c++9cz*ivO?T|-gvnY?vxQ830v2 Vx_a|5#ZU_BoV#(o!}pnUY`$>g)Ug&P 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�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 D?$K8#W4 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ⅅlz?inh?Oum!-t?v(N8Wj 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°l+V0J#7E+r^Om-}qcOyV}|s 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

0CpRk=5m+Ek9l0i~ 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 z
    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

    MM|r)BZg{s#88d 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�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

    0xX<6Z;j7pPtG?gzNXWDtH$-C;TupA@2$oG~zQv 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 z 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 literal 0 HcmV?d00001 diff --git a/src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1-src.tar.gz b/src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1-src.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9abe2d703f7c2483e7a8afe68bd8dfb7302d45e3 GIT binary patch literal 3712 zcmV-`4uA0gf{aPIqZ?V>{RB zWI8t#1<6P#QUysnYR3Qlb^-83B=urPQPP_Dkci;!VzIl}eL%p%pRjshPo^#l>J77L zJ=%POcH{W)5FP=wM(%(8&}=l0n(fwMv)uq_;#2bx9DV^^3M~pkTWmm1esX`3Ci4Cd zgtO@wxQG7_j~kW$x6w-d|K7f~Hy8wW_dot$t^cjG#r}8v$%bO!?*2b$9UWKx-$q;R z{~+=<5CeDjKQgo{|8JwM_J1(*hTO43?%y{S?(YAicB`uYTWNRmzb3q69NgLeEqtif z|5jST|AUCTL-XUr-P{=D+je`A|Iy>^qdfjQZlnJjn^R$Nd*J>*{Rv$S*GvSszB@+K zY#6{i#~*TU+%eu>zN|kre(LV-o_<%aC!qmj<}qQ1YzTuHOzdms!3ZM>row;EoY2h3 z1PrQO0Q@mT2KZOxF*v3b-rk3hPZ+cg4xZNQG=%1cAsg9|8+MHMwlKi6C#+*+62v8zuey)v+LM9(jbC41D z_>+o_+xVR&U+M?P$6`r>VNS}h#ib7uzqZjxlRz=ByIeLJ%QjGDa$w+F>YMR9vV-=rrmlY=cT=heE#Q;~kB$zU97<3F|uH!@b zp~1ou1{y;!g(WZmMI?tEMC16uNBt(~2=q2i6+75R$Bj^0$JpDmrnd9J9y9YQoVcl7 z5U|9*DQM7W%w-eih2Z+}P%)@6GL%+^G&OQY+G*m24A%&a7NB)YV?on!Pb#fFuxC;l znHJ5wI?^z2YRO7ow@0Mp}JPG!_hBWR~g>U5eAyD cs)(X1XHq$? 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 literal 0 HcmV?d00001 diff --git a/src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1-src.zip b/src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1-src.zip new file mode 100644 index 0000000000000000000000000000000000000000..7b4872eb3f5ed0403235997bfcfaabad62a684dc GIT binary patch literal 7572 zcmbtZbzD^4)*g}00fufwY5+mHM7lw`Q96f)K|(sDlo+HW2N3D5m+qDlq+38zy7YtB z>%HFhsyDuMeslKzR&(^ z4E{LNM=dj-a=2?T%*7vx8k^W#t3Q}2BGMT7Skj*DMHE|O`0~>Z$<*}A7}=aWGyX(- z8PN%am>^9grph{#L`8vw6|O`|Tm%uPN7PN4G0{{#A2v4n@Qt6gbbmNI%jc8A7foKV z6$Kkv3{#BbMpry3M}4PbYpH^6PJ2H$cvXKWldcZYVT>iQDw&!bz%njxF3Lu0!^}Ln z2R39VgmnTD({PSdwP(e7@yCeGr4HK$DT(7r>d8=`%OCx$G?|6*FkY-ePg;6wKZvz_ z6dv1IPg-OCWRp{3uB!W4n3_;uHF{weIa5B2*qtYM=>-XU%?b~~vqXi15rIzdXKX@# zf=ep%&|4CChfh)2d_if=&P&86OW_|o#T#DL4eY&SN_0jn66GnEd7I>{6nJHzVuV`b ziu^u%QsUGztow_9Vx(g&Yo38{g-4!NK_O54W#Sb_2*aSdic<@6NaOLR_99}x=^aEl zdS}k?hy1}I`)$>5avT7?fVhd9#4U(ryvlCiIE+)UIQ}RA;VZffqA6JvI>weWJ@dn4 z$*wLd*>Yu_x&!=K=QP2Dh-s-Y9SO+GdJ4``}+wM3el_~(#9kn(4QD8;1PpP|}=H)5ia z>9QvGQ6IZ6nu^xGajAB9v`R#->NL>IB4$e9csQza=-9z^=j3$A4;dKCmC*_7GMMGz ztWmS8waZnGTcZ|ib{DHRR}?X93hWaVKwzDgvhkQs>9VQgCiJkC$H>O8MvJ45Xkls9 zVVi4yJZ9xVR;9?As}=ygg))l&PU2v-m&f2sogvM9zde>VNSCpNEHX}l+u@PZ(lqR`>ewiqStIL@oXRDPr&r@`l4$s;JiYJ$BCoN{x zDehr>Hz$VuN%Q)Go(Y~y%wWe=JjC7tW&T5W>ehOeH>hmy^vF7xT2*%M-I$4f^~hdM zb2{Z(Eq?MLXB())qNi_V463+*+PKg6dE)t+d>)sHE*O%u^2wI4uz=M^ZuH{fB5>$T z-vP$hpfKB~+1zPv9qhL0%$7VQxHe}{6z2XwxW*>*6UB5{Nt#;oJ26@OWr?JY(Uq-t za}bg}yQt}zp~ukebTRTN#rC5)h|VNuIRQK817$;sxqB!SWz*$lY4+;6sQWk}#~4o< zv0y>3iZ>(CKP9?dNdiyEju=?B6S7g)Z<$F?HurWcMK9ILy*h z9b=X!&u#mI!Q0!_<2jehtETs5YKu%2Udan5EYRC+QnO(XFxHlrH<__CArM!=_i{iK zip}^MAIkhAbj%14l-Qab4m3Ivng(M=8Mo~bQ-^|dNiDGZ#r*L6H$ZXvg&vLZg=L#( zx)cq9--gR=*w4$(T1%B zqO(4qTaV;XP;FkWXdEB`0QAHFz)b}IFG2^z$j!{|&(NXX7dFEV6qZEsu~gfF&#X~#Ft=@TANO@Vxl8CNSU$njt z6EO8ssWClY77?<=A#y|GRg0gL+|bN!?sA^8-iR2m~xL3-DtBKx$&%a63c=cQ}U8KCW~s+D)I(BLk6 zbZbd8y=CZwIS?X5i*QJCM5Ti`QZf16e4new5p?~vz0b;Dq=klZEXzZ@d|pIqiSG;_ z9|b|a6xv9zLpRQYLhs=n`3y%jCLUdE`ykxdw@ppMGT{~g5PEInU)%T2&(aMCCwpr% z6BoAY(ZS5g#mdY%s8=4{mmO1bxb~AnN>Tc>!`u))I)qjcBsx>??=PNvl1j+KzO93| z`ecuw9BVtAtd7t~gfg5<&Sv*Xa;kgdqi{bKm)58X-B5zLL>Y~)O=BbI(8OBiv3&@} z&1T(5NMm53kpsNxcPjiqiAe8tRY%s6CJ zqCJXK%;t<6j@mHYP$f#PP#ve(%R$^Th&Skb@bw8FBTbV;o;ygwXnsme9we7b5+OSo z@YMyl1ACRO@-}UP=~%%qY2jgbFV6Cv{kKbR29?s4GOW$Q-CygTWsIU(dp_Ygv_~o{ zzaQznfP{EOW15iNpUz>UP17iUZ!}_;pGdS8JjMk#}oY$jPM-_L3rrh4;vS zW|6LrX_0&H=xmb^YifHf?153otp|x3DCNYwIRSHI23WfN_4IRJ8-h>K_$+Htp6}k> znfDhhU0kQPJ2`c{{PSCkScvn0U4M)Ah`%$h?9a@5Q!V_N`roARH);5fY4rEhSIW%H zRMf)4$;`sY#omeS=6RUry!|o{=Ch&4EvrTj)BQb1J7xn%?8S;4CJl(8qZHVZ9E?26 z>zgvEbiCZbUv{%h1zlB(Esqwc@MNQ@L{v#BPZo&TObwY+i?C9nq|&IF5xrJRW9r6` zc|8Cbq272EWfMYD8619MbZ?pqaQ#y{4&Q1a?-4N%Wc#Z5Af^(mPsm?om2#`}BJdO- z(qMr|dypqemPimDbS983AQ;#7a1KgDl&qR>ALkWnD=&CL#M!X!I7*@OUlmUIH!Eyc zP}rD!E?;!0pFQvA-;#%6m&>W+6t{)FIdCK!28TQFWH*6PbLJO^96a~|bnTW@Uj490-V z775#Y}8(GtP0dmtSX7;^P-5^cZcNUz2<{6R_iq z%_`rsxNTQu3e}>CWOfl;1udWSG>LoBMle6F9?Fizlr&7JMjb?7rt@qwksf*nJPY+^ z;*^oi@Uk?)ctR=J*4&My{h|WgjAv{-j<@a9ss&bO#7wv^?QN>)D0*p@&NSL?n?Iqh zI)K*a5aV`umf}-dJg;r^zCDGyjjA2>E{!&Q!gH~0)yFJ(+SG%@j_;O;#&%-fH#MXd z_UKCJQFiQ6KNXW42qIDu4Lv-@PLMmol@%9`S2dR@?e^pgA?V|Zg4%c?rNT})L3uhp z{2~yWDN%m@gwm`jOn4hq)F{Tv=A)Yn?@mLUUANkz3pPS^z3i^#rC0_nauO0RiN_T( z;z%Xwl@=G9N>|v&ctkh@oRPQe-5xfEUtjcuMdW9j)(QO?&nvfN+X}DD>~XIQ>wN4` z`7nGWFr(Y}DJfyBTt~i!Al>7)cs4?`%zFnoCSPh{>l`Bd{QWMRZ=!+qOvSv+`4n&_ z=~%sI69h37^>qaZ@U){ugqG?+ifoQ%%c2dLTr~QuF^2L?>~@_ zq3-*mH$Clv_(a~>*ucbF*D*|cNwopbq5fUe0^P&>R~Gnup)-}uO0H)Ma-(k$P9VbD zS1LB)6AOwnPwjWnPbXomA75XlgpHZ1qsE?j@rVR`L3^Mp)Hs4BjS|t8<=I5YSS5K$ zw~JG~Il0!X`|1t~YvFiAny2k}z{y2EXr1c4(W@(@qj>@?bt8T?+koJxNk!47zRgRw ztFEfmS+v1a!GQdV>Mew79G0v``JvX-JLp3Xt*%bGzq-Ej@|yI1z0>#rdtnE1j1!9< z`CJ)Riu2{odC5sf+QtYyZ^b$8ocVkvoFl%~pmn{#s%5p+vHQ`mjc1O=S;+^>bPo&} z*5_fG5_!3EJ~u%uE}N3`#={9={LahC{J*@MxV@d*bx1b*=HwzZzLoA1j~x%%o>;JL z!@aHaaSl|8@Z+a^S1TC(pQOWM`=w~PW5P@@&*nYhrbBMCtsXB=mzQUu^Rp@e;Q+P; zDGf5#&#<8U#XT&E%D@-2!@af<9V3S{acFna+vdU$vs*yciJ8dtVhQR(8OrseAjE}rX3 zgqE0=m(_$x2vNMvU|QH-!W%*_EV0p3Qz0D|`f@YA$R~}y$!A;MHJBecle~R< zwlFR!2Io$0$#Q%S7=pRs0u>j>+Q;OHXeb|btBd!jCxj}{fs*=dQtzy6qE*5})5Q$X zm&>d}pKSJnGC}crO@{{hkV;Gh)$`%ROt1TD^5#7E?;_1|nDdp2aiSw+=2iq1Uq0u2 z9zV-!Cq3Pv#=to;bFU=Skjj$q3+P@PN^sfRZT{w`5aIj8`lqU>tVf}A90eFYx5F7p z6$+SX4tnO**O`6mXDIBrkv0@6Hme-cLZRckI|nGm+hI=ZOnYFfd;*0f5QfgD*P*To zW+<{POv!9h@t9U$9s_HZ>~K5p()lsmRo%pa)cPyjvtW+AuqM|Lxi`GpB{QO7{$jC>@f2H;|Cn@k!`}gK z!mi_@p~-9gHD5^|b!Cz#Z-`s|?A-ba?qdo?p3VVT!ih|o`a`ZrUqArK<4Hg3 zDHmjJO^Ue*j&>L~)&vjQpY}UdP;Eq|6CSms9iQNlk9FSL+@Bmrp6s_^kB1Hl|K$=?&5TUH z`vY|q`zdzdvyWOc?*36hMN?`dqh;~d!@4i=w7E6B9b)7ik|z_lL7919y)9yC({0~U z#Y{F{?9}hF@d|A;qv?0QRS|kj$|op%g{Z>15X>OADMiL|1VD&(H?@QmKlK+gL9dii z@zbF_C6HeqpTk^WxXE`ocR?QS)29txFYaIrcazG!_kD?M9U0idZTiQpZtsoWl$tKUBTdI8(QTKn96LO9m>XI|A;&B02+9^!JA` zRj@NnNbT3~cqTPGg7-tQWVq?mKS={63{KaiMY&3-t6MHFY&k;oL@=*5gc2m!F&2$^ z8Zg&dY~|{~d$~;u((Dc7fEZ&C$^@*81gK~?-aaNvM6;vPy%HQ##J)(P%*Y)*!6Mzg ziq9-cA{z8|WlB>6zh$fy^v6mt3G|S;xJoaW;@T02sR#=jU?}s_-bE@*&Lt@o6W(+Q zO;tyxoWwssB(=vid|`eXqsLGBvA5*R( zlP2;y3etY8tGAEm9wU^kw3bPvLKJ$rLz&R)npTiuP#TA%s@E+|EZ&J8nYB$Zly0%z zfFNlXzr5dNpj;nejjgmr8)V>tp#gl;3=?*gf##kZCO0}wZc0bmrIF=sTNR54Y%W=s z<2wDZf4G!HWL1o{(}Rv=7FDoy^rEYhvpaTWT}~bKqeuVPhKYLQg?j3V+Zb*So(Dd! z)mB{VQHJqX)aloOi!4GRJD&QU{7Gcz)o&^(wwL!)1wCCo7^rZ>DbSpK-6Fb`l=FCb z98R!GoX>qYiz@uWm^3qKF3WNte~=JYSxliNSBeh>`(PYLbx2XhtkoV6-9%zPSs`o0 z>tpu}`R3T&LIBl-=pYrGqJV}Gw8zpe3)9@vlFv47YI0D${d{cMfDlPQ12`LPT0 z&p7)iKY0&-@2ve5=f?)gP0!}L!2O2NeuDF_9h|=c{#cUV^i{qK-0#`-S@{vZukC*-D4EwLE{^(h5 n!uEH8`)OW#ga3WiAA^e5 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 U|1@I9{l9Pc4dwDxD*)gI0BExz00000 literal 0 HcmV?d00001 diff --git a/src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1.zip b/src/site/resources/ROMEReleases/ROME0.1Beta/rome-samples-0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..09e3a09d57a6d54484c6a0c7c992de2ef00d6e9f GIT binary patch literal 184740 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

    rfB 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

    b6-Tbh=~% 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 BsMr7i literal 0 HcmV?d00001 diff --git a/src/site/resources/ROMEReleases/ROME0.2Beta/rome-0.2-src.zip b/src/site/resources/ROMEReleases/ROME0.2Beta/rome-0.2-src.zip new file mode 100644 index 0000000000000000000000000000000000000000..6661e746cdbc669b56f77c3dc42c435a72dd39c7 GIT binary patch literal 135878 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 z zfn^x1Yh{<#arHc(YiwO{z_QF0))N1ulK zHXa_J!X!Xk85#acWp2Ximn0y7I9ygs$*D`_D^XzDVFmqyhoG67hUYD)Q=oF=;tc%( z_Ly1yeZi2rdXDH&2U3iagj)V5kdS}@$V;lm9tVk-jh2o~DNt6l@#>gC83oMC#^Q7d z91JBve!5`62Ong~|IlDx^GX3;QGp2o=T#0&D~X5h_%HCoReE^+A7q&bV``0)%4{3Lg;W$n`h zTr6Ua<5dmagrA88*E|ccrXHaxBY}m5b_7em249~1AUGs*TjQp(B!D7q z;+Pia-lyu%PRtfy9))*VT9Gg8HHGL)mEt1&(rA^UO)>WDSWh0nvgixw!W#z-)H_wF zO;2PCFTqEpWGz8K$}Md_<3%E^E3Q)3UdpA0R?! zAp^QbQh>d8U57iOZJo1CIJiAYl1I-Qez$f6Q^~0BGW|J#GyNXi!sk zcf77lnlnTA=5Avb6-W#FQ=B|MtFs05*mVqd-8}ixZMNE*4hN1(VB@*(f~powt`0;D z_ef>25?N?3KkE=mXXKX)kF-n}dsUB9cR=r7#B94dH`^cPUCp!*fxnze2rW!ZTfz)~ za!wh0-O69u;bDxTXrEiC=0T|tO<-;%%!7Sgo5!p!yrMe>T?_XH(-YQ?Tny#mHA=N1 z;W`ZXL0uKT{2G&-$-hy^%3cuB6KClB$w&R|K*VR|bfnl-oQKF-W|YzuZf>S5m{0K= z+#X;izDHa3k~sGvSLANEl=r>w?EGLsDrZJ_BC@)go@Y1?! zPpy;gEQgJw3_Bt}I_KH5_f{%)BiY(*zQ1e;yapTM`k!>C4bcBXyVK_jOG*+JPo22lKv^sURS4XjSy0H> zbBb^r3R7szkdmKQA?=X3KN1I{pHB&y`ry{&5i=&aFCK@J)4f!ysvc3H9xz9o94dlW z?T2HET;2@A6bU`7e9AEd5qH5aqkH*U!!B~-+oAVSlY~5uJ_wHOsmu`mB9LmIScPNT zk%J=#4noXZa->Lm1F6V6XE%FirY?`*ysIKv?tGCS0pFU8{y%0^_#J>z;xPoJM-dr+ z7!i=ij7jb^_dhqu~*_797+QjMcc7wND*Y=_JxiyXTc^X z&g^~Vw&Y&#Jse)!I5^_zNbfzv(%RV44t(4`gWi1mjZLAwQgyar1BwjW;k;)-q5SAK zijc;%JTFP≫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 z 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�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 z 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%0A=B0LPYb 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