]> git.basschouten.com Git - openhab-addons.git/commitdiff
[feed] Added Channel for link to feed item; Updated rome library to version 1.15...
authorChristoph Weitkamp <github@christophweitkamp.de>
Fri, 30 Oct 2020 19:27:09 +0000 (20:27 +0100)
committerGitHub <noreply@github.com>
Fri, 30 Oct 2020 19:27:09 +0000 (12:27 -0700)
* 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>
bundles/org.openhab.binding.feed/README.md
bundles/org.openhab.binding.feed/pom.xml
bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/FeedBindingConstants.java
bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/handler/FeedHandler.java
bundles/org.openhab.binding.feed/src/main/resources/OH-INF/thing/thing-types.xml
itests/org.openhab.binding.feed.tests/pom.xml
itests/org.openhab.binding.feed.tests/src/main/java/org/openhab/binding/feed/test/FeedHandlerTest.java
itests/org.openhab.binding.feed.tests/src/main/java/org/openhab/binding/feed/test/SlowTests.java [deleted file]

index cec19d5472dc5730ac4be0f7f1c88289e6cccc88..58034237293115d87742e9c5a31b690b7278250a 100644 (file)
@@ -35,8 +35,9 @@ The binding supports following channels
 | Channel Type ID    | Item Type | Description                                         |
 |--------------------|-----------|-----------------------------------------------------|
 | 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-link        | String    | Contains the link of the last feed entry.           |
 | author             | String    | The name of the feed author, if author is present.  |
 | title              | String    | The title of the feed.                              |
 | description        | String    | Description of the feed.                            |
@@ -48,8 +49,8 @@ The binding supports following channels
 Things:
 
 ```java
-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: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]
 ```
 
 Items:
@@ -58,6 +59,7 @@ Items:
 String latest_title           {channel="feed:feed:bbc:latest-title"}
 String latest_description     {channel="feed:feed:bbc:latest-description"}
 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"}
 String description            {channel="feed:feed:bbc:description"}
 String author                 {channel="feed:feed:bbc:author"}
index 5d7d6e0e48636132cfaa202ae8c8eaed9a028237..db7b4211170afefcec76a0a26c3b956d7268c850 100644 (file)
 
   <properties>
     <bnd.importpackage>org.jaxen.*;resolution:=optional</bnd.importpackage>
+
+    <rome.version>1.15.0</rome.version>
   </properties>
 
   <dependencies>
     <dependency>
       <groupId>com.rometools</groupId>
       <artifactId>rome</artifactId>
-      <version>1.12.0</version>
+      <version>${rome.version}</version>
       <scope>compile</scope>
       <exclusions>
         <exclusion>
@@ -34,7 +36,7 @@
     <dependency>
       <groupId>com.rometools</groupId>
       <artifactId>rome-utils</artifactId>
-      <version>1.12.0</version>
+      <version>${rome.version}</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
index 366f131a7f8209b44c941e00adc2bcd7dc57f898..ec908b0633817a936389577f22368ef4e7b46ffc 100644 (file)
@@ -41,10 +41,15 @@ public class FeedBindingConstants {
     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";
 
+    /**
+     * Contains the link to the last feed entry.
+     */
+    public static final String CHANNEL_LATEST_LINK = "latest-link";
+
     /**
      * Description of the feed.
      */
index 874654c09fd7512b82f33942762e313d65378dab..488c847aed22982e7147fc0d9fae00fbf2e42f76 100644 (file)
@@ -162,6 +162,13 @@ public class FeedHandler extends BaseThingHandler {
                     state = new StringType(getValueSafely(description));
                 }
                 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_LAST_UPDATE:
                 if (latestEntry == null || latestEntry.getPublishedDate() == null) {
index 25834727440f65b87403f47ce1abf6614f1fe813..f1c8259e340f9339ebda3ec0a51e39ebac854617 100644 (file)
@@ -19,6 +19,7 @@
                        <channel id="latest-title" typeId="latest-title"/>
                        <channel id="latest-description" typeId="latest-description"/>
                        <channel id="latest-date" typeId="latest-date"/>
+                       <channel id="latest-link" typeId="latest-link"/>
                        <channel id="author" typeId="author"/>
                        <channel id="description" typeId="description"/>
                        <channel id="title" typeId="title"/>
@@ -52,7 +53,7 @@
        <channel-type id="latest-description">
                <item-type>String</item-type>
                <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"/>
        </channel-type>
 
                <state readOnly="true" pattern="%tc %n"/>
        </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">
                <item-type>String</item-type>
                <label>Author</label>
index 30453c1c43fcb69ff8ee6132d4d35cf4fad609c7..c849485291fc79e38e3dd54eccdd0be0659ccb24 100644 (file)
@@ -16,6 +16,8 @@
 
   <properties>
     <org.osgi.service.http.port>9090</org.osgi.service.http.port>
+    
+    <rome.version>1.15.0</rome.version>
   </properties>
 
   <dependencies>
@@ -27,7 +29,7 @@
     <dependency>
       <groupId>com.rometools</groupId>
       <artifactId>rome</artifactId>
-      <version>1.12.0</version>
+      <version>${rome.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.servicemix.bundles</groupId>
index fea0dba789ef8bf4fbb5dd338f7ecb368225a64a..258393dc86b51b5b0c9bf8277a6e96292186e99b 100644 (file)
@@ -15,7 +15,6 @@ package org.openhab.binding.feed.test;
 import static java.lang.Thread.sleep;
 import static org.hamcrest.CoreMatchers.*;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.openhab.core.thing.ThingStatus.*;
 
 import java.io.IOException;
 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.ThingProvider;
 import org.openhab.core.thing.ThingRegistry;
+import org.openhab.core.thing.ThingStatus;
 import org.openhab.core.thing.ThingStatusDetail;
 import org.openhab.core.thing.ThingUID;
 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 !
         waitForAssert(() -> {
-            assertThat(feedThing.getStatus(), anyOf(is(ONLINE), is(OFFLINE)));
+            assertThat(feedThing.getStatus(), anyOf(is(ThingStatus.ONLINE), is(ThingStatus.OFFLINE)));
         }, 60000, DFL_SLEEP_TIME);
         initializeItem(channelUID);
     }
@@ -270,7 +270,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
         initializeDefaultFeedHandler();
 
         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()));
         });
 
@@ -294,7 +294,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
 
         waitForAssert(() -> {
             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(() -> {
@@ -361,7 +361,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
         feedHandler.handleCommand(channelUID, RefreshType.REFRESH);
 
         waitForAssert(() -> {
-            assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
+            assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
         });
 
         servlet.httpStatus = HttpStatus.OK_200;
@@ -372,7 +372,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
         feedHandler.handleCommand(channelUID, RefreshType.REFRESH);
 
         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);
         waitForAssert(() -> {
-            assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
+            assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
             assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.CONFIGURATION_ERROR)));
         });
     }
@@ -397,7 +397,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
 
         initializeFeedHandler(invalidURL);
         waitForAssert(() -> {
-            assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
+            assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
             assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.COMMUNICATION_ERROR)));
         }, 30000, DFL_SLEEP_TIME);
     }
@@ -410,7 +410,7 @@ public class FeedHandlerTest extends JavaOSGiTest {
 
         initializeFeedHandler(invalidURL);
         waitForAssert(() -> {
-            assertThat(feedThing.getStatus(), is(equalTo(OFFLINE)));
+            assertThat(feedThing.getStatus(), is(equalTo(ThingStatus.OFFLINE)));
             assertThat(feedThing.getStatusInfo().getStatusDetail(), is(equalTo(ThingStatusDetail.COMMUNICATION_ERROR)));
         });
     }
diff --git a/itests/org.openhab.binding.feed.tests/src/main/java/org/openhab/binding/feed/test/SlowTests.java b/itests/org.openhab.binding.feed.tests/src/main/java/org/openhab/binding/feed/test/SlowTests.java
deleted file mode 100644 (file)
index 4e85891..0000000
+++ /dev/null
@@ -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 {
-}