[feed] Added Channel for link to feed item; Updated rome library to version 1.15 (#8893)
* Added Channel for link to latest feed; update rome deoendency to version 1.15 * Removed unsed interface * Run spotless Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
This commit is contained in:
parent
9a5832a2ee
commit
1e89b792a0
|
@ -35,8 +35,9 @@ The binding supports following channels
|
||||||
| Channel Type ID | Item Type | Description |
|
| Channel Type ID | Item Type | Description |
|
||||||
|--------------------|-----------|-----------------------------------------------------|
|
|--------------------|-----------|-----------------------------------------------------|
|
||||||
| latest-title | String | Contains the title of the last feed entry. |
|
| latest-title | String | Contains the title of the last feed entry. |
|
||||||
| latest-description | String | Contains the description of last feed entry. |
|
| latest-description | String | Contains the description of the last feed entry. |
|
||||||
| latest-date | DateTime | Contains the published date of the last feed entry. |
|
| latest-date | DateTime | Contains the published date of the last feed entry. |
|
||||||
|
| latest-link | String | Contains the link of the last feed entry. |
|
||||||
| author | String | The name of the feed author, if author is present. |
|
| author | String | The name of the feed author, if author is present. |
|
||||||
| title | String | The title of the feed. |
|
| title | String | The title of the feed. |
|
||||||
| description | String | Description of the feed. |
|
| description | String | Description of the feed. |
|
||||||
|
@ -48,8 +49,8 @@ The binding supports following channels
|
||||||
Things:
|
Things:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
feed:feed:bbc [ URL="http://feeds.bbci.co.uk/news/video_and_audio/news_front_page/rss.xml?edition=uk"]
|
feed:feed:bbc [URL="http://feeds.bbci.co.uk/news/video_and_audio/news_front_page/rss.xml?edition=uk"]
|
||||||
feed:feed:techCrunch [ URL="http://feeds.feedburner.com/TechCrunch/", refresh=60]
|
feed:feed:techCrunch [URL="http://feeds.feedburner.com/TechCrunch/", refresh=60]
|
||||||
```
|
```
|
||||||
|
|
||||||
Items:
|
Items:
|
||||||
|
@ -58,6 +59,7 @@ Items:
|
||||||
String latest_title {channel="feed:feed:bbc:latest-title"}
|
String latest_title {channel="feed:feed:bbc:latest-title"}
|
||||||
String latest_description {channel="feed:feed:bbc:latest-description"}
|
String latest_description {channel="feed:feed:bbc:latest-description"}
|
||||||
DateTime latest_date {channel="feed:feed:bbc:latest-date"}
|
DateTime latest_date {channel="feed:feed:bbc:latest-date"}
|
||||||
|
String latest_link {channel="feed:feed:bbc:latest-link"}
|
||||||
Number number_of_entries {channel="feed:feed:bbc:number-of-entries"}
|
Number number_of_entries {channel="feed:feed:bbc:number-of-entries"}
|
||||||
String description {channel="feed:feed:bbc:description"}
|
String description {channel="feed:feed:bbc:description"}
|
||||||
String author {channel="feed:feed:bbc:author"}
|
String author {channel="feed:feed:bbc:author"}
|
||||||
|
|
|
@ -16,13 +16,15 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<bnd.importpackage>org.jaxen.*;resolution:=optional</bnd.importpackage>
|
<bnd.importpackage>org.jaxen.*;resolution:=optional</bnd.importpackage>
|
||||||
|
|
||||||
|
<rome.version>1.15.0</rome.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.rometools</groupId>
|
<groupId>com.rometools</groupId>
|
||||||
<artifactId>rome</artifactId>
|
<artifactId>rome</artifactId>
|
||||||
<version>1.12.0</version>
|
<version>${rome.version}</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
|
@ -34,7 +36,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.rometools</groupId>
|
<groupId>com.rometools</groupId>
|
||||||
<artifactId>rome-utils</artifactId>
|
<artifactId>rome-utils</artifactId>
|
||||||
<version>1.12.0</version>
|
<version>${rome.version}</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -41,10 +41,15 @@ public class FeedBindingConstants {
|
||||||
public static final String CHANNEL_LATEST_TITLE = "latest-title";
|
public static final String CHANNEL_LATEST_TITLE = "latest-title";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the description of last feed entry.
|
* Contains the description of the last feed entry.
|
||||||
*/
|
*/
|
||||||
public static final String CHANNEL_LATEST_DESCRIPTION = "latest-description";
|
public static final String CHANNEL_LATEST_DESCRIPTION = "latest-description";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains the link to the last feed entry.
|
||||||
|
*/
|
||||||
|
public static final String CHANNEL_LATEST_LINK = "latest-link";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of the feed.
|
* Description of the feed.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -162,6 +162,13 @@ public class FeedHandler extends BaseThingHandler {
|
||||||
state = new StringType(getValueSafely(description));
|
state = new StringType(getValueSafely(description));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CHANNEL_LATEST_LINK:
|
||||||
|
if (latestEntry == null || latestEntry.getLink() == null) {
|
||||||
|
state = UnDefType.UNDEF;
|
||||||
|
} else {
|
||||||
|
state = new StringType(getValueSafely(latestEntry.getLink()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
case CHANNEL_LATEST_PUBLISHED_DATE:
|
case CHANNEL_LATEST_PUBLISHED_DATE:
|
||||||
case CHANNEL_LAST_UPDATE:
|
case CHANNEL_LAST_UPDATE:
|
||||||
if (latestEntry == null || latestEntry.getPublishedDate() == null) {
|
if (latestEntry == null || latestEntry.getPublishedDate() == null) {
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
<channel id="latest-title" typeId="latest-title"/>
|
<channel id="latest-title" typeId="latest-title"/>
|
||||||
<channel id="latest-description" typeId="latest-description"/>
|
<channel id="latest-description" typeId="latest-description"/>
|
||||||
<channel id="latest-date" typeId="latest-date"/>
|
<channel id="latest-date" typeId="latest-date"/>
|
||||||
|
<channel id="latest-link" typeId="latest-link"/>
|
||||||
<channel id="author" typeId="author"/>
|
<channel id="author" typeId="author"/>
|
||||||
<channel id="description" typeId="description"/>
|
<channel id="description" typeId="description"/>
|
||||||
<channel id="title" typeId="title"/>
|
<channel id="title" typeId="title"/>
|
||||||
|
@ -52,7 +53,7 @@
|
||||||
<channel-type id="latest-description">
|
<channel-type id="latest-description">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Latest Description</label>
|
<label>Latest Description</label>
|
||||||
<description>Contains the description of last feed entry.</description>
|
<description>Contains the description of the last feed entry.</description>
|
||||||
<state readOnly="true" pattern="%s"/>
|
<state readOnly="true" pattern="%s"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -63,6 +64,13 @@
|
||||||
<state readOnly="true" pattern="%tc %n"/>
|
<state readOnly="true" pattern="%tc %n"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="latest-link">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Latest Link</label>
|
||||||
|
<description>Contains the link of the last feed entry.</description>
|
||||||
|
<state readOnly="true" pattern="%s"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="author" advanced="true">
|
<channel-type id="author" advanced="true">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Author</label>
|
<label>Author</label>
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<org.osgi.service.http.port>9090</org.osgi.service.http.port>
|
<org.osgi.service.http.port>9090</org.osgi.service.http.port>
|
||||||
|
|
||||||
|
<rome.version>1.15.0</rome.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
@ -27,7 +29,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.rometools</groupId>
|
<groupId>com.rometools</groupId>
|
||||||
<artifactId>rome</artifactId>
|
<artifactId>rome</artifactId>
|
||||||
<version>1.12.0</version>
|
<version>${rome.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.servicemix.bundles</groupId>
|
<groupId>org.apache.servicemix.bundles</groupId>
|
||||||
|
|
|
@ -15,7 +15,6 @@ package org.openhab.binding.feed.test;
|
||||||
import static java.lang.Thread.sleep;
|
import static java.lang.Thread.sleep;
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
import static org.hamcrest.CoreMatchers.*;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.openhab.core.thing.ThingStatus.*;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
@ -46,6 +45,7 @@ import org.openhab.core.thing.ManagedThingProvider;
|
||||||
import org.openhab.core.thing.Thing;
|
import org.openhab.core.thing.Thing;
|
||||||
import org.openhab.core.thing.ThingProvider;
|
import org.openhab.core.thing.ThingProvider;
|
||||||
import org.openhab.core.thing.ThingRegistry;
|
import org.openhab.core.thing.ThingRegistry;
|
||||||
|
import org.openhab.core.thing.ThingStatus;
|
||||||
import org.openhab.core.thing.ThingStatusDetail;
|
import org.openhab.core.thing.ThingStatusDetail;
|
||||||
import org.openhab.core.thing.ThingUID;
|
import org.openhab.core.thing.ThingUID;
|
||||||
import org.openhab.core.thing.binding.builder.ChannelBuilder;
|
import org.openhab.core.thing.binding.builder.ChannelBuilder;
|
||||||
|
@ -232,7 +232,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
|
|
||||||
// This will ensure that the configuration is read before the channelLinked() method in FeedHandler is called !
|
// This will ensure that the configuration is read before the channelLinked() method in FeedHandler is called !
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat(feedThing.getStatus(), anyOf(is(ONLINE), is(OFFLINE)));
|
assertThat(feedThing.getStatus(), anyOf(is(ThingStatus.ONLINE), is(ThingStatus.OFFLINE)));
|
||||||
}, 60000, DFL_SLEEP_TIME);
|
}, 60000, DFL_SLEEP_TIME);
|
||||||
initializeItem(channelUID);
|
initializeItem(channelUID);
|
||||||
}
|
}
|
||||||
|
@ -270,7 +270,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
initializeDefaultFeedHandler();
|
initializeDefaultFeedHandler();
|
||||||
|
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat("Feed Thing can not be initialized", feedThing.getStatus(), is(equalTo(ONLINE)));
|
assertThat("Feed Thing can not be initialized", feedThing.getStatus(), is(equalTo(ThingStatus.ONLINE)));
|
||||||
assertThat("Item's state is not updated on initialize", currentItemState, is(notNullValue()));
|
assertThat("Item's state is not updated on initialize", currentItemState, is(notNullValue()));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
|
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat("Error occurred while trying to connect to server. Content is not downloaded!",
|
assertThat("Error occurred while trying to connect to server. Content is not downloaded!",
|
||||||
feedThing.getStatus(), is(equalTo(ONLINE)));
|
feedThing.getStatus(), is(equalTo(ThingStatus.ONLINE)));
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
|
@ -361,7 +361,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
feedHandler.handleCommand(channelUID, RefreshType.REFRESH);
|
feedHandler.handleCommand(channelUID, RefreshType.REFRESH);
|
||||||
|
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
|
assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
|
||||||
});
|
});
|
||||||
|
|
||||||
servlet.httpStatus = HttpStatus.OK_200;
|
servlet.httpStatus = HttpStatus.OK_200;
|
||||||
|
@ -372,7 +372,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
feedHandler.handleCommand(channelUID, RefreshType.REFRESH);
|
feedHandler.handleCommand(channelUID, RefreshType.REFRESH);
|
||||||
|
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat(feedThing.getStatus(), is(equalTo(ONLINE)));
|
assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.ONLINE)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,7 +384,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
|
|
||||||
initializeFeedHandler(invalidURL);
|
initializeFeedHandler(invalidURL);
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
|
assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
|
||||||
assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.CONFIGURATION_ERROR)));
|
assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.CONFIGURATION_ERROR)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -397,7 +397,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
|
|
||||||
initializeFeedHandler(invalidURL);
|
initializeFeedHandler(invalidURL);
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
|
assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
|
||||||
assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.COMMUNICATION_ERROR)));
|
assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.COMMUNICATION_ERROR)));
|
||||||
}, 30000, DFL_SLEEP_TIME);
|
}, 30000, DFL_SLEEP_TIME);
|
||||||
}
|
}
|
||||||
|
@ -410,7 +410,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
|
||||||
|
|
||||||
initializeFeedHandler(invalidURL);
|
initializeFeedHandler(invalidURL);
|
||||||
waitForAssert(() -> {
|
waitForAssert(() -> {
|
||||||
assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
|
assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
|
||||||
assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.COMMUNICATION_ERROR)));
|
assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.COMMUNICATION_ERROR)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
/**
|
|
||||||
* Copyright (c) 2010-2020 Contributors to the openHAB project
|
|
||||||
*
|
|
||||||
* See the NOTICE file(s) distributed with this work for additional
|
|
||||||
* information.
|
|
||||||
*
|
|
||||||
* This program and the accompanying materials are made available under the
|
|
||||||
* terms of the Eclipse Public License 2.0 which is available at
|
|
||||||
* http://www.eclipse.org/legal/epl-2.0
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: EPL-2.0
|
|
||||||
*/
|
|
||||||
package org.openhab.binding.feed.test;
|
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface is used to mark tests that take too much time
|
|
||||||
*
|
|
||||||
* @author Svilen Valkanov - Initial contribution
|
|
||||||
*/
|
|
||||||
@NonNullByDefault
|
|
||||||
public interface SlowTests {
|
|
||||||
}
|
|
Loading…
Reference in New Issue