Compare commits

..

1 commit

Author SHA1 Message Date
Patrick Gotthard
c447eda87b #244 Update iTunes module 2016-02-20 18:35:57 +01:00
748 changed files with 9339 additions and 6392 deletions

2
.gitattributes vendored
View file

@ -1,2 +0,0 @@
# Set the default behavior, in case people don't have core.autocrlf set. See http://git-scm.com/docs/gitattributes
* text=auto

10
.gitignore vendored
View file

@ -1,7 +1,3 @@
target
.checkstyle
.project
.settings
.classpath
.idea
*.iml
/.settings
/.project
/target

View file

@ -1,5 +0,0 @@
language: java
jdk:
- oraclejdk8
- oraclejdk7
script: mvn verify

10
Jenkinsfile vendored
View file

@ -1,10 +0,0 @@
node {
stage 'Checkout'
checkout scm
stage 'Build'
def mvnHome = tool 'Maven 3.3.9'
sh "${mvnHome}/bin/mvn clean install"
}

View file

@ -1,5 +1,4 @@
Apache License
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@ -179,7 +178,7 @@
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
@ -187,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View file

@ -1,35 +1,36 @@
# ROME
[![Build Status](https://travis-ci.org/rometools/rome.svg?branch=master)](https://travis-ci.org/rometools/rome)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.rometools/rome/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.rometools/rome)
ROME is a Java framework for RSS and Atom feeds. The framework consist of several modules:
| Module | Description |
| ------ | ----------- |
| `rome` | Library for generating and parsing RSS and Atom feeds. |
| `rome-modules` | Generators and parsers for extensions like MediaRSS, GeoRSS and others. |
| `rome-opml` | [OPML](https://en.wikipedia.org/wiki/OPML) parsers and tools. |
| rome-parent | is the parent project for all ROME modules and contains the common Maven configuration. |
| rome-utils | provides utility classes that are used in several ROME modules. |
| rome | is the main RSS and Atom library. It makes it easy to work 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. |
| rome-modules| enables rome to handle several feed extensions like MediaRSS, GeoRSS and others. |
| rome-opml | contains [OPML](https://en.wikipedia.org/wiki/OPML) parsers and tools. |
| rome-fetcher | is a caching feed fetcher that supports retrieval of feeds via HTTP conditional GET. Supports ETags, GZip compression, and RFC3229 Delta encoding. |
| rome-certiorem | is a [PubSubHubub](https://en.wikipedia.org/wiki/PubSubHubbub) implementation based on rome. |
| rome-certiorem-webapp | is an example webapp for rome-certiorem |
| 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. |
Deprecated modules: `rome-fetcher`, `rome-certiorem`, `rome-certiorem-webapp` and `rome-propono`.
## Changelog
## Examples
### 1.5.1
Parse a feed:
- solved an [XML bomb](https://en.wikipedia.org/wiki/Billion_laughs) vulnerability
```java
String url = "http://stackoverflow.com/feeds/tag?tagnames=rome";
SyndFeed feed = new SyndFeedInput().build(new XmlReader(new URL(url)));
System.out.println(feed.getTitle());
```
Important note: due to the security fix ROME now forbids all Doctype declarations by default. This will break compatibility with RSS 0.91 Netscape
because it requires a Doctype declaration. When you experience problems you have to activate the property **allowDoctypes** on the SyndFeedInput object. You
should only use this possibility when the feeds that you process are absolutely trustful.
Generate a feed:
### 1.5.0
```java
SyndFeed feed = new SyndFeedImpl();
feed.setFeedType("rss_2.0");
feed.setTitle("test-title");
feed.setDescription("test-description");
feed.setLink("https://example.org");
System.out.println(new SyndFeedOutput().outputString(feed));
```
- many (untracked) enhancements
- code cleanup
- renamed packages (was required to be able to push to Maven Central after years again)
- updated sourcecode to Java 1.6
### Prior to 1.5.0
- see [http://rometools.github.io/rome/ROMEReleases](http://rometools.github.io/rome/ROMEReleases)

196
pom.xml
View file

@ -3,9 +3,15 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
<groupId>com.rometools</groupId>
<artifactId>rome-parent</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
@ -15,7 +21,6 @@
<module>rome-fetcher</module>
<module>rome-modules</module>
<module>rome-opml</module>
<module>rome-osgi-test</module>
<module>rome-propono</module>
<module>rome-utils</module>
</modules>
@ -24,7 +29,7 @@
<description>Parent for all ROME projects</description>
<url>http://rometools.com</url>
<url>http://rometools.github.io/rome-parent/</url>
<licenses>
<license>
@ -35,31 +40,20 @@
</licenses>
<scm>
<connection>scm:git:https://github.com/rometools/rome.git</connection>
<developerConnection>scm:git:ssh://git@github.com/rometools/rome.git</developerConnection>
<url>https://github.com/rometools/rome</url>
<connection>scm:git:ssh://github.com/rometools/rome-parent.git</connection>
<developerConnection>scm:git:ssh://git@github.com/rometools/rome-parent.git</developerConnection>
<url>https://github.com/rometools/rome-parent</url>
</scm>
<developers>
<developer>
<name>Patrick Gotthard</name>
<roles>
<role>Project lead</role>
</roles>
<email>patrick@patrick-gotthard.de</email>
<url>http://www.patrick-gotthard.de</url>
<timezone>+1</timezone>
</developer>
</developers>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
@ -71,7 +65,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<version>3.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
@ -79,13 +73,13 @@
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.8.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@ -95,23 +89,40 @@
<deployAtEnd>true</deployAtEnd>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9.5</version>
<configuration>
<connectionType>developerConnection</connectionType>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-publish-plugin</artifactId>
<version>1.1</version>
</plugin>
<!-- The following plugin doesn't modify the build. It is only used to hide irrelevant warnings in Eclipse -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.2.0</version>
<version>3.0.1</version>
<executions>
<execution>
<id>bundle</id>
@ -122,86 +133,47 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>false</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>release</id>
<build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
<artifactId>maven-project-info-reports-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
<instructions>
<Export-Package>
com.rometools.rome.feed,
com.rometools.rome.feed.atom,
com.rometools.rome.feed.impl,
com.rometools.rome.feed.module,
com.rometools.rome.feed.rss,
com.rometools.rome.feed.synd,
com.rometools.rome.io,
</Export-Package>
<Import-Package>
org.jdom2,
org.jdom2.filter,
org.jdom2.input,
org.jdom2.input.sax,
org.jdom2.output,
org.slf4j,
org.w3c.dom,
org.xml.sax
</Import-Package>
<_exportcontents>com.rometools.utils</_exportcontents>
<Embed-Dependency>rome-utils</Embed-Dependency>
</instructions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</reporting>
<dependencyManagement>
<dependencies>
@ -209,42 +181,42 @@
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-certiorem</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-certiorem-webapp</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-fetcher</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-modules</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-opml</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-propono</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome-utils</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</dependency>
<!-- JDOM -->
<dependency>
@ -269,12 +241,6 @@
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- XMLUnit -->
<dependency>
<groupId>xmlunit</groupId>
<artifactId>xmlunit</artifactId>
<version>1.6</version>
</dependency>
<!-- Hamcrest -->
<dependency>
<groupId>org.hamcrest</groupId>

4
rome-certiorem-webapp/.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
/.classpath
/.project
/.settings
/target

View file

@ -0,0 +1,3 @@
# ROME Certiorem WebApp
An example webapp for rome-certiorem

View file

@ -1,11 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.rometools</groupId>
<artifactId>rome-parent</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</parent>
<artifactId>rome-certiorem-webapp</artifactId>
@ -13,19 +14,32 @@
<name>rome-certiorem-webapp</name>
<description>A simple webapp that uses rome-certiorem</description>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
<scm>
<connection>scm:git:git@github.com:rometools/rome-certiorem-webapp.git</connection>
<developerConnection>scm:git:git@github.com:rometools/rome-certiorem-webapp.git</developerConnection>
<url>https://github.com/rometools/rome-certiorem-webapp/</url>
</scm>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -26,9 +13,7 @@ import com.rometools.certiorem.web.AbstractHubServlet;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
@Singleton
public class HubServlet extends AbstractHubServlet {

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -33,9 +20,7 @@ import com.rometools.certiorem.pub.Publisher;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
@Singleton
public class NotifyTest extends HttpServlet {

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -41,9 +28,7 @@ import com.rometools.fetcher.impl.HttpURLFeedFetcher;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class ServerModule extends GuiceServletContextListener {
private static final Logger LOG = LoggerFactory.getLogger(ServerModule.class);

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -26,9 +13,7 @@ import com.rometools.certiorem.web.AbstractSubServlet;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
@Singleton
public class SubServlet extends AbstractSubServlet {

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -35,9 +22,7 @@ import com.rometools.fetcher.impl.SyndFeedInfo;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
@Singleton
public class SubTest extends HttpServlet {

4
rome-certiorem/.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
/.classpath
/.project
/.settings
/target

202
rome-certiorem/LICENSE Normal file
View file

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

3
rome-certiorem/README.md Normal file
View file

@ -0,0 +1,3 @@
# ROME Certiorem
[PubSubHubub](https://en.wikipedia.org/wiki/PubSubHubbub) implementation based on ROME

View file

@ -1,11 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.rometools</groupId>
<artifactId>rome-parent</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</parent>
<artifactId>rome-certiorem</artifactId>
@ -15,6 +16,59 @@
<description>A PubSubHubub implementation for Java based on ROME</description>
<scm>
<connection>scm:git:ssh://github.com/rometools/rome-certiorem.git</connection>
<developerConnection>scm:git:ssh://git@github.com/rometools/rome-certiorem.git</developerConnection>
<url>https://github.com/rometools/rome-certiorem</url>
</scm>
<developers>
<developer>
<name>Robert Cooper</name>
<email>kebernet@gmail.comM</email>
<url>http://www.kebernet.net</url>
</developer>
<developer>
<name>Farrukh Najmi</name>
<url>http://wellfleetsoftware.com</url>
</developer>
</developers>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<configuration>
<port>9000</port>
<tempWebappDirectory>${basedir}/target/site/tempdir</tempWebappDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-publish-plugin</artifactId>
<configuration>
<scmBranch>gh-pages</scmBranch>
<pubScmUrl>${project.scm.developerConnection}</pubScmUrl>
<content>${project.build.directory}/site</content>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.rometools</groupId>

View file

@ -21,9 +21,7 @@ package com.rometools.certiorem;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class HttpStatusCodeException extends RuntimeException {
private static final long serialVersionUID = 1L;

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -28,9 +15,7 @@ import com.rometools.fetcher.impl.SyndFeedInfo;
* changes to entries in the underlying feed.
*
* @author najmi
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class DeltaFeedInfoCache implements FeedFetcherCache {
FeedFetcherCache backingCache;

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -35,9 +22,7 @@ import com.rometools.rome.feed.synd.SyndFeed;
* fetch.
*
* @author najmi
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class DeltaSyndFeedInfo extends SyndFeedInfo {
/**

View file

@ -43,9 +43,7 @@ import com.rometools.rome.feed.synd.SyndFeed;
* a very thin servlet wrapper, or other, non-HTTP notification methods you might want to use.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class Hub {
private static final Logger LOG = LoggerFactory.getLogger(Hub.class);

View file

@ -27,9 +27,7 @@ import com.rometools.rome.feed.synd.SyndFeed;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public interface Notifier {
/**
* Instructs the notifier to begin sending notifications to the list of subscribers

View file

@ -24,9 +24,7 @@ import com.rometools.certiorem.hub.data.Subscriber;
* A strategy interface for verification of subscriptions.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public interface Verifier {
/**

View file

@ -23,9 +23,7 @@ import java.util.List;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public interface HubDAO {
public List<? extends Subscriber> subscribersForTopic(String topic);

View file

@ -23,9 +23,7 @@ import java.io.Serializable;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class Subscriber implements Serializable {
/**
*

View file

@ -23,9 +23,7 @@ import java.io.Serializable;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class SubscriptionSummary implements Serializable {
/**
*

View file

@ -35,9 +35,7 @@ import com.rometools.certiorem.hub.data.SubscriptionSummary;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class JPADAO implements HubDAO {
private final EntityManagerFactory factory;

View file

@ -33,9 +33,7 @@ import com.rometools.certiorem.hub.data.Subscriber;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
@Entity
@NamedQueries({ @NamedQuery(name = "Subcriber.forTopic", query = "SELECT o FROM JPASubscriber o WHERE o.topic = :topic AND o.expired = false ORDER BY o.subscribedAt") })
public class JPASubscriber extends Subscriber implements Serializable {

View file

@ -32,9 +32,7 @@ import com.rometools.certiorem.hub.data.SubscriptionSummary;
* A Simple In-Memory HubDAO for subscribers.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class InMemoryHubDAO implements HubDAO {
private final ConcurrentHashMap<String, List<Subscriber>> subscribers = new ConcurrentHashMap<String, List<Subscriber>>();
private final ConcurrentHashMap<String, ConcurrentHashMap<String, SubscriptionSummary>> summaries = new ConcurrentHashMap<String, ConcurrentHashMap<String, SubscriptionSummary>>();

View file

@ -40,9 +40,7 @@ import com.rometools.rome.io.SyndFeedOutput;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public abstract class AbstractNotifier implements Notifier {
private static final Logger LOG = LoggerFactory.getLogger(AbstractNotifier.class);

View file

@ -24,9 +24,7 @@ import com.rometools.certiorem.hub.data.Subscriber;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class Notification {
int retryCount = 0;

View file

@ -31,9 +31,7 @@ import com.rometools.certiorem.hub.data.SubscriptionSummary;
* A notifier implementation that uses a thread pool to deliver notifications to subscribers
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class ThreadPoolNotifier extends AbstractNotifier {
private static final long TWO_MINUTES = 2 * 60 * 1000;
protected final ThreadPoolExecutor exeuctor;

View file

@ -24,9 +24,7 @@ import com.rometools.certiorem.hub.data.SubscriptionSummary;
* A notifier that does not use threads. All calls are blocking and synchronous.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class UnthreadedNotifier extends AbstractNotifier {
/**

View file

@ -39,9 +39,7 @@ import com.rometools.certiorem.hub.data.Subscriber;
* operations, and expects a child class to do Async ops.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public abstract class AbstractVerifier implements Verifier {
private static final Logger LOG = LoggerFactory.getLogger(AbstractVerifier.class);

View file

@ -28,9 +28,7 @@ import com.rometools.certiorem.hub.data.Subscriber;
* Uses a ThreadPoolExecutor to do async verifications.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class ThreadPoolVerifier extends AbstractVerifier {
protected final ThreadPoolExecutor exeuctor;

View file

@ -23,9 +23,7 @@ import java.util.concurrent.ThreadPoolExecutor;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class ThreadpoolVerifierAdvanced extends ThreadPoolVerifier {
public ThreadpoolVerifierAdvanced(final ThreadPoolExecutor executor) {

View file

@ -24,9 +24,7 @@ import com.rometools.certiorem.hub.data.Subscriber;
* A verifier that does not use threads. Suitable for Google App Engine.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class UnthreadedVerifier extends AbstractVerifier {
@Override

View file

@ -21,9 +21,7 @@ package com.rometools.certiorem.pub;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class NotificationException extends Exception {
/**

View file

@ -36,9 +36,7 @@ import com.rometools.rome.feed.synd.SyndLink;
* A class for sending update notifications to a hub.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class Publisher {
private static final Logger LOG = LoggerFactory.getLogger(Publisher.class);

View file

@ -23,9 +23,7 @@ import com.rometools.certiorem.sub.data.Subscription;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public interface Requester {
public void sendSubscribeRequest(String hubUrl, Subscription subscription, String verifySync, long leaseSeconds, String secret, String callbackUrl,
RequestCallback callback);

View file

@ -47,9 +47,7 @@ import com.rometools.rome.io.SyndFeedInput;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class Subscriptions {
private static final Logger LOG = LoggerFactory.getLogger(Subscriptions.class);

View file

@ -21,9 +21,7 @@ package com.rometools.certiorem.sub.data;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public interface SubDAO {
public Subscription findById(String id);

View file

@ -23,9 +23,7 @@ import java.io.Serializable;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class Subscription implements Serializable {
/**
*

View file

@ -1,17 +1,4 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
@ -23,9 +10,7 @@ import com.rometools.fetcher.impl.SyndFeedInfo;
/**
*
* @author najmi
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public interface SubscriptionCallback {
void onNotify(Subscription subscribed, SyndFeedInfo feedInfo);

View file

@ -35,9 +35,7 @@ import com.rometools.certiorem.sub.data.Subscription;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class InMemorySubDAO implements SubDAO {
private static final Logger LOG = LoggerFactory.getLogger(InMemorySubDAO.class);

View file

@ -29,9 +29,7 @@ import com.rometools.certiorem.sub.data.Subscription;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public abstract class AbstractRequester implements Requester {
protected boolean sendRequest(final String hubUrl, final String mode, final Subscription subscription, final String verifySync, final long leaseSeconds,

View file

@ -29,9 +29,7 @@ import com.rometools.certiorem.sub.data.Subscription;
* A simple requester implementation that always makes requests as Async.
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class AsyncRequester extends AbstractRequester {
private static final Logger LOG = LoggerFactory.getLogger(AsyncRequester.class);

View file

@ -33,9 +33,7 @@ import com.rometools.certiorem.sub.data.Subscription;
* A simple requester implementation that always makes requests as Async.
*
* @author Farrukh Najmi
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public class SyncRequester extends AbstractRequester {
private static final Logger LOG = LoggerFactory.getLogger(SyncRequester.class);

View file

@ -32,9 +32,7 @@ import com.rometools.certiorem.hub.Hub;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public abstract class AbstractHubServlet extends HttpServlet {
/**
*

View file

@ -32,9 +32,7 @@ import com.rometools.certiorem.sub.Subscriptions;
/**
*
* @author robert.cooper
* @deprecated Certiorem will be removed in Rome 2.
*/
@Deprecated
public abstract class AbstractSubServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

View file

@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/DECORATION/1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/DECORATION/1.3.0 http://maven.apache.org/xsd/decoration-1.3.0.xsd"
name="ROME Certiorem">
<skin>
<groupId>org.apache.maven.skins</groupId>
<artifactId>maven-fluido-skin</artifactId>
<version>1.3.0</version>
</skin>
<custom>
<fluidoSkin>
<gitHub>
<projectId>rometools/rome-certiorem</projectId>
<ribbonOrientation>right</ribbonOrientation>
<ribbonColor>gray</ribbonColor>
</gitHub>
</fluidoSkin>
</custom>
<bannerLeft>
<name>ROME</name>
<src>images/romelogo.png</src>
<href>http://github.com/rometools/</href>
</bannerLeft>
<publishDate position="right" />
<version position="left" />
<body>
<menu name="ROME Certiorem">
<item name="Overview" href="index.html" />
<item name="Tutorial" href="CertioremTutorial.html" />
<item name="Example project" href="http://github.com/rometools/rome-certiorem-webapp/"/>
</menu>
<menu ref="reports" />
</body>
</project>

View file

@ -0,0 +1,41 @@
/*
* To change this template, choose Tools | Templates and open the template in the editor.
*/
package com.rometools.certiorem.hub;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.net.URL;
import java.util.List;
import org.junit.Test;
import com.rometools.fetcher.impl.HashMapFeedInfoCache;
import com.rometools.fetcher.impl.HttpURLFeedFetcher;
import com.rometools.rome.feed.synd.SyndEntry;
import com.rometools.rome.feed.synd.SyndFeed;
public class DeltaSyndFeedInfoTest {
@Test
public void testGetSyndFeed() throws Exception {
final URL url = new URL("https://news.google.com/news?pz=1&cf=all&ned=us&hl=en&output=rss");
final DeltaFeedInfoCache feedInfoCache = new DeltaFeedInfoCache(new HashMapFeedInfoCache());
final HttpURLFeedFetcher feedFetcher = new HttpURLFeedFetcher(feedInfoCache);
// the first time the feed should not be empty
final SyndFeed firstFeed = feedFetcher.retrieveFeed(url);
final List<SyndEntry> firstEntries = firstFeed.getEntries();
assertFalse(firstEntries.isEmpty());
// fetch once again and this time the entries should be empty because nothing has changed
final SyndFeed secondFeed = feedFetcher.retrieveFeed(url);
final List<SyndEntry> secondEntries = secondFeed.getEntries();
assertTrue(secondEntries.isEmpty());
}
}

7
rome-fetcher/.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
.classpath
.project
.settings
target
.idea
*.iml
atlassian-ide-plugin.xml

14
rome-fetcher/LICENSE Normal file
View file

@ -0,0 +1,14 @@
Copyright 2004 Sun Microsystems, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

3
rome-fetcher/README.md Normal file
View file

@ -0,0 +1,3 @@
# ROME Fetcher
is a caching feed fetcher that supports retrieval of feeds via HTTP conditional GET. Supports ETags, GZip compression, and RFC3229 Delta encoding.

View file

@ -1,22 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.rometools</groupId>
<artifactId>rome-parent</artifactId>
<version>1.7.2-SNAPSHOT</version>
<version>1.6.0-SNAPSHOT</version>
</parent>
<artifactId>rome-fetcher</artifactId>
<packaging>jar</packaging>
<name>rome-fetcher</name>
<description>A well behaved feed fetcher API for ROME</description>
<url>http://rometools.github.io/rome-fetcher/</url>
<scm>
<connection>scm:git:ssh://github.com/rometools/rome-fetcher.git</connection>
<developerConnection>scm:git:ssh://git@github.com/rometools/rome-fetcher.git</developerConnection>
<url>https://github.com/rometools/rome-fetcher</url>
</scm>
<developers>
<developer>
<name>Nick Lothian</name>
<url>http://nicklothian.com</url>
</developer>
<developer>
<name>Robert Cooper</name>
<email>kebernet@gmail.comM</email>
</developer>
</developers>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-publish-plugin</artifactId>
<configuration>
<scmBranch>gh-pages</scmBranch>
<pubScmUrl>${project.scm.developerConnection}</pubScmUrl>
<content>${project.build.directory}/site</content>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>

View file

@ -22,11 +22,6 @@ import java.net.URL;
import com.rometools.rome.feed.synd.SyndFeed;
import com.rometools.rome.io.FeedException;
/**
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public interface FeedFetcher {
/**
* <p>
@ -122,15 +117,4 @@ public interface FeedFetcher {
* corresponding wireEntry property set.
*/
void setPreserveWireFeed(boolean preserveWireFeed);
/**
* In ROME 1.5.1 we fixed a security vulnerability by disallowing Doctype declarations by default.
* This change breaks the compatibility with at least RSS 0.91N because it requires a Doctype declaration.
* You are able to allow Doctype declarations again with this property. You should only activate it
* when the feeds that you process are absolutely trustful.
*
* @param allowDoctypes true when Doctype declarations should be allowed again, false otherwise
*/
void setAllowDoctypes(boolean allowDoctypes);
}

View file

@ -1,18 +1,3 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.rometools.fetcher;
import java.util.EventObject;
@ -25,11 +10,7 @@ import com.rometools.rome.feed.synd.SyndFeed;
* fields final.
*
* @author nl
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class FetcherEvent extends EventObject {
private static final long serialVersionUID = 1L;

View file

@ -19,10 +19,7 @@ package com.rometools.fetcher;
/**
* @author Nick Lothian
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class FetcherException extends Exception {
private static final long serialVersionUID = 1L;

View file

@ -1,27 +1,7 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.rometools.fetcher;
import java.util.EventListener;
/**
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public interface FetcherListener extends EventListener {
/**

View file

@ -34,11 +34,6 @@ import com.rometools.fetcher.FetcherException;
import com.rometools.fetcher.FetcherListener;
import com.rometools.rome.feed.synd.SyndFeed;
/**
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public abstract class AbstractFeedFetcher implements FeedFetcher {
private static final Logger LOG = LoggerFactory.getLogger(AbstractFeedFetcher.class);
@ -47,7 +42,6 @@ public abstract class AbstractFeedFetcher implements FeedFetcher {
private String userAgent;
private boolean usingDeltaEncoding;
private boolean preserveWireFeed;
private boolean allowDoctypes = false;
public AbstractFeedFetcher() {
@ -228,13 +222,4 @@ public abstract class AbstractFeedFetcher implements FeedFetcher {
this.preserveWireFeed = preserveWireFeed;
}
public boolean isAllowDoctypes() {
return allowDoctypes;
}
@Override
public void setAllowDoctypes(boolean allowDoctypes) {
this.allowDoctypes = allowDoctypes;
}
}

View file

@ -1,18 +1,3 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.rometools.fetcher.impl;
import java.beans.EventSetDescriptor;
@ -22,11 +7,6 @@ import java.lang.reflect.Method;
import com.rometools.fetcher.FetcherEvent;
import com.rometools.fetcher.FetcherListener;
/**
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class AbstractFeedFetcherBeanInfo extends SimpleBeanInfo {
@Override

View file

@ -28,11 +28,7 @@ import com.rometools.utils.IO;
/**
* Disk based feed cache.
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class DiskFeedInfoCache implements FeedFetcherCache {
protected String cachePath = null;

View file

@ -26,10 +26,7 @@ import java.net.URL;
*
* @author Nick Lothian
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public interface FeedFetcherCache {
/**

View file

@ -36,10 +36,7 @@ import java.util.Map;
*
* @author Nick Lothian
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class HashMapFeedInfoCache implements FeedFetcherCache, Serializable {
private static final long serialVersionUID = 1L;

View file

@ -46,11 +46,7 @@ import com.rometools.utils.IO;
/**
* @author Nick Lothian
*
* @deprecated HttpClient v3 is known to have some security vulnerabilities! In addition ROME Fetcher will be dropped in the next major version of ROME (version 2).
* For more information and some migration hints, please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class HttpClientFeedFetcher extends AbstractFeedFetcher {
private CredentialSupplier credentialSupplier;
@ -279,7 +275,6 @@ public class HttpClientFeedFetcher extends AbstractFeedFetcher {
final SyndFeedInput syndFeedInput = new SyndFeedInput();
syndFeedInput.setPreserveWireFeed(isPreserveWireFeed());
syndFeedInput.setAllowDoctypes(isAllowDoctypes());
return syndFeedInput.build(reader);

View file

@ -68,11 +68,7 @@ import com.rometools.utils.IO;
* @see <a
* href="http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html">http://bobwyman.pubsub.com/main/2004/09/using_rfc3229_w.html</a>
* @author Nick Lothian
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class HttpURLFeedFetcher extends AbstractFeedFetcher {
private volatile int connectTimeout = -1;
@ -284,6 +280,11 @@ public class HttpURLFeedFetcher extends AbstractFeedFetcher {
is = new BufferedInputStream(inputStream);
}
// InputStreamReader reader = new InputStreamReader(is,
// ResponseHandler.getCharacterEncoding(connection));
// SyndFeedInput input = new SyndFeedInput();
final XmlReader reader;
if (connection.getHeaderField("Content-Type") != null) {
reader = new XmlReader(is, connection.getHeaderField("Content-Type"), true);
@ -293,7 +294,6 @@ public class HttpURLFeedFetcher extends AbstractFeedFetcher {
final SyndFeedInput syndFeedInput = new SyndFeedInput();
syndFeedInput.setPreserveWireFeed(isPreserveWireFeed());
syndFeedInput.setAllowDoctypes(isAllowDoctypes());
return syndFeedInput.build(reader);

View file

@ -1,18 +1,3 @@
/*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.rometools.fetcher.impl;
import java.util.Collections;
@ -31,10 +16,7 @@ import java.util.Map;
* @author Javier Kohen
* @author Nick Lothian
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class LinkedHashMapFeedInfoCache extends HashMapFeedInfoCache {
private final class CacheImpl extends LinkedHashMap<String, SyndFeedInfo> {

View file

@ -22,19 +22,13 @@ import java.util.regex.Pattern;
/**
* Utility class to help deal with HTTP responses
* *
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*
*/
@Deprecated
public class ResponseHandler {
public static final String defaultCharacterEncoding = "ISO-8859-1";
private final static Pattern characterEncodingPattern = Pattern.compile("charset=([.[^; ]]*)");
private ResponseHandler() {
}
public static String getCharacterEncoding(final URLConnection connection) {
return getCharacterEncoding(connection.getContentType());
}

View file

@ -33,11 +33,7 @@ import com.rometools.rome.feed.synd.SyndFeed;
* </p>
*
* @author Nick Lothian
*
* @deprecated ROME Fetcher will be dropped in the next major version of ROME (version 2). For more information and some migration hints,
* please have a look at our <a href="https://github.com/rometools/rome/issues/276">detailed explanation</a>.
*/
@Deprecated
public class SyndFeedInfo implements Cloneable, Serializable {
private static final long serialVersionUID = 1L;

Some files were not shown because too many files have changed in this diff Show more