Skip to content

Commit a2e1494

Browse files
committed
Add GeoRSS to FeedReader
1 parent 78abd19 commit a2e1494

File tree

6 files changed

+47
-11
lines changed

6 files changed

+47
-11
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.apptasticsoftware.rssreader;
22

3+
import com.apptasticsoftware.rssreader.module.georss.GeoRssChannel;
34
import com.apptasticsoftware.rssreader.module.itunes.ItunesChannel;
45
import com.apptasticsoftware.rssreader.module.mediarss.MediaRssChannel;
56
import com.apptasticsoftware.rssreader.module.opensearch.OpenSearchChannel;
@@ -8,5 +9,5 @@
89
import com.apptasticsoftware.rssreader.module.spotify.SpotifyChannel;
910
import com.apptasticsoftware.rssreader.module.youtube.YoutubeChannel;
1011

11-
public interface FeedChannel extends Channel, ItunesChannel, MediaRssChannel, OpenSearchChannel, PodcastChannel, PscChannel, SpotifyChannel, YoutubeChannel {
12+
public interface FeedChannel extends Channel, GeoRssChannel, ItunesChannel, MediaRssChannel, OpenSearchChannel, PodcastChannel, PscChannel, SpotifyChannel, YoutubeChannel {
1213
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.apptasticsoftware.rssreader;
22

3+
import com.apptasticsoftware.rssreader.module.georss.GeoRssItem;
34
import com.apptasticsoftware.rssreader.module.itunes.ItunesItem;
45
import com.apptasticsoftware.rssreader.module.mediarss.MediaRssItem;
56
import com.apptasticsoftware.rssreader.module.opensearch.OpenSearchItem;
@@ -8,6 +9,6 @@
89
import com.apptasticsoftware.rssreader.module.spotify.SpotifyItem;
910
import com.apptasticsoftware.rssreader.module.youtube.YoutubeItem;
1011

11-
public interface FeedItem extends Item, ItunesItem, MediaRssItem, OpenSearchItem, PodcastItem, PscItem, SpotifyItem, YoutubeItem {
12+
public interface FeedItem extends Item, GeoRssItem, ItunesItem, MediaRssItem, OpenSearchItem, PodcastItem, PscItem, SpotifyItem, YoutubeItem {
1213

1314
}

src/main/java/com/apptasticsoftware/rssreader/FeedReader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.apptasticsoftware.rssreader.internal.FeedChannelImpl;
44
import com.apptasticsoftware.rssreader.internal.FeedItemImpl;
5+
import com.apptasticsoftware.rssreader.module.georss.GeoRssExtensions;
56
import com.apptasticsoftware.rssreader.module.itunes.ItunesExtensions;
67
import com.apptasticsoftware.rssreader.module.mediarss.MediaRssExtensions;
78
import com.apptasticsoftware.rssreader.module.opensearch.OpenSearchExtensions;
@@ -26,6 +27,7 @@ protected FeedItem createItem(DateTimeParser dateTimeParser) {
2627
protected void registerChannelTags() {
2728
super.registerChannelTags();
2829
var registry = getFeedExtensionRegistry();
30+
GeoRssExtensions.register(registry);
2931
ItunesExtensions.register(registry);
3032
MediaRssExtensions.register(registry);
3133
OpenSearchExtensions.register(registry);

src/main/java/com/apptasticsoftware/rssreader/internal/FeedChannelImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.apptasticsoftware.rssreader.DateTimeParser;
44
import com.apptasticsoftware.rssreader.FeedChannel;
5+
import com.apptasticsoftware.rssreader.module.georss.GeoRssChannelData;
6+
import com.apptasticsoftware.rssreader.module.georss.internal.GeoRssChannelDataImpl;
57
import com.apptasticsoftware.rssreader.module.itunes.ItunesChannelData;
68
import com.apptasticsoftware.rssreader.module.itunes.internal.ItunesChannelDataImpl;
79
import com.apptasticsoftware.rssreader.module.mediarss.MediaRssChannelData;
@@ -18,6 +20,7 @@
1820
import java.util.Objects;
1921

2022
public class FeedChannelImpl extends ChannelImpl implements FeedChannel {
23+
private final GeoRssChannelData geoRssChannelData = new GeoRssChannelDataImpl();
2124
private final ItunesChannelData itunesChannelData = new ItunesChannelDataImpl();
2225
private final MediaRssChannelData mediaRssChannelData = new MediaRssChannelDataImpl();
2326
private final OpenSearchChannelData openSearchChannelData = new OpenSearchChannelDataImpl();
@@ -34,6 +37,11 @@ public FeedChannelImpl(DateTimeParser dateTimeParser) {
3437
super(dateTimeParser);
3538
}
3639

40+
@Override
41+
public GeoRssChannelData getGeoRssChannelData() {
42+
return geoRssChannelData;
43+
}
44+
3745
@Override
3846
public ItunesChannelData getItunesChannelData() {
3947
return itunesChannelData;

src/main/java/com/apptasticsoftware/rssreader/internal/FeedItemImpl.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.apptasticsoftware.rssreader.DateTimeParser;
44
import com.apptasticsoftware.rssreader.FeedItem;
5+
import com.apptasticsoftware.rssreader.module.georss.GeoRssItemData;
6+
import com.apptasticsoftware.rssreader.module.georss.internal.GeoRssItemDataImpl;
57
import com.apptasticsoftware.rssreader.module.itunes.ItunesItemData;
68
import com.apptasticsoftware.rssreader.module.itunes.internal.ItunesItemDataImpl;
79
import com.apptasticsoftware.rssreader.module.mediarss.MediaRssItemData;
@@ -16,6 +18,7 @@
1618
import java.util.Objects;
1719

1820
public class FeedItemImpl extends ItemImpl implements FeedItem {
21+
private final GeoRssItemData geoRssItemData = new GeoRssItemDataImpl();
1922
private final ItunesItemData itunesItemData = new ItunesItemDataImpl();
2023
private final MediaRssItemData mediaRssItemData = new MediaRssItemDataImpl();
2124
private final PodcastItemData podcastItemData;
@@ -32,6 +35,11 @@ public FeedItemImpl(DateTimeParser dateTimeParser) {
3235
podcastItemData = new PodcastItemDataImpl(dateTimeParser);
3336
}
3437

38+
@Override
39+
public GeoRssItemData getGeoRssItemData() {
40+
return geoRssItemData;
41+
}
42+
3543
@Override
3644
public ItunesItemData getItunesItemData() {
3745
return itunesItemData;

src/test/java/com/apptasticsoftware/rssreader/module/georss/GeoRssFeedReaderTest.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package com.apptasticsoftware.rssreader.module.georss;
22

3+
import com.apptasticsoftware.rssreader.AbstractRssReader;
4+
import com.apptasticsoftware.rssreader.FeedReader;
35
import com.apptasticsoftware.rssreader.module.georss.internal.*;
46
import com.apptasticsoftware.rssreader.util.Default;
57
import nl.jqno.equalsverifier.EqualsVerifier;
68
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.junit.jupiter.params.provider.Arguments;
11+
import org.junit.jupiter.params.provider.MethodSource;
712

813
import java.io.InputStream;
914
import java.util.List;
1015
import java.util.stream.Collectors;
16+
import java.util.stream.Stream;
1117

1218
import static com.github.npathai.hamcrestopt.OptionalMatchers.isPresentAndIs;
1319
import static org.hamcrest.MatcherAssert.assertThat;
@@ -17,9 +23,10 @@
1723
@SuppressWarnings("java:S5961")
1824
class GeoRssFeedReaderTest {
1925

20-
@Test
21-
void example1() {
22-
var items = new GeoRssFeedReader().read(fromFile("georss/example1.xml"))
26+
@ParameterizedTest
27+
@MethodSource("feedReaderArguments")
28+
void example1(AbstractRssReader<GeoRssChannel, GeoRssItem> feedReader) {
29+
var items = feedReader.read(fromFile("georss/example1.xml"))
2330
.collect(Collectors.toList());
2431

2532
assertEquals(1, items.size());
@@ -68,9 +75,10 @@ void example1() {
6875
assertThat(item.getGeoRssFeatureName(), isPresentAndIs("Podunk"));
6976
}
7077

71-
@Test
72-
void example2() {
73-
var items = new GeoRssFeedReader().read(fromFile("georss/example2.xml"))
78+
@ParameterizedTest
79+
@MethodSource("feedReaderArguments")
80+
void example2(AbstractRssReader<GeoRssChannel, GeoRssItem> feedReader) {
81+
var items = feedReader.read(fromFile("georss/example2.xml"))
7482
.collect(Collectors.toList());
7583

7684
assertEquals(1, items.size());
@@ -108,9 +116,10 @@ void example2() {
108116
assertThat(item.getGeoRssBoxAsCoordinates(), is(List.of(new Coordinate(42.943, -71.032), new Coordinate(43.039, -69.856))));
109117
}
110118

111-
@Test
112-
void example3() {
113-
var items = new GeoRssFeedReader().read(fromFile("georss/example3.xml"))
119+
@ParameterizedTest
120+
@MethodSource("feedReaderArguments")
121+
void example3(AbstractRssReader<GeoRssChannel, GeoRssItem> feedReader) {
122+
var items =feedReader.read(fromFile("georss/example3.xml"))
114123
.collect(Collectors.toList());
115124

116125
assertEquals(1, items.size());
@@ -144,6 +153,13 @@ void equalsContract() {
144153
EqualsVerifier.simple().forClass(Coordinate.class).verify();
145154
}
146155

156+
private static Stream<? extends Arguments> feedReaderArguments() {
157+
return Stream.of(
158+
Arguments.of(new GeoRssFeedReader()),
159+
Arguments.of(new FeedReader())
160+
);
161+
}
162+
147163
private InputStream fromFile(String fileName) {
148164
return getClass().getClassLoader().getResourceAsStream(fileName);
149165
}

0 commit comments

Comments
 (0)