]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jdbc] Fixed NPE when SQL query failed (#11954)
authorChristoph Weitkamp <github@christophweitkamp.de>
Tue, 4 Jan 2022 09:37:04 +0000 (10:37 +0100)
committerGitHub <noreply@github.com>
Tue, 4 Jan 2022 09:37:04 +0000 (10:37 +0100)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java

index 3025eef1b7b8fe7dbda6785b5903d6fb8ab69470..b778ad48d062a2a7fa51a42160d7e5361e9d3099 100644 (file)
@@ -342,10 +342,14 @@ public class JdbcBaseDAO {
         String sql = histItemFilterQueryProvider(filter, numberDecimalcount, table, name, timeZone);
         logger.debug("JDBC::doGetHistItemFilterQuery sql={}", sql);
         List<Object[]> m = Yank.queryObjectArrays(sql, null);
+        if (m == null) {
+            logger.debug("JDBC::doGetHistItemFilterQuery Query failed. Returning an empty list.");
+            return List.of();
+        }
         // we already retrieve the unit here once as it is a very costly operation
         String itemName = item.getName();
         Unit<? extends Quantity<?>> unit = item instanceof NumberItem ? ((NumberItem) item).getUnit() : null;
-        return m.stream().map(o -> new JdbcHistoricItem(itemName, getState(item, unit, o[1]), objectAsDate(o[0])))
+        return m.stream().map(o -> new JdbcHistoricItem(itemName, objectAsState(item, unit, o[1]), objectAsDate(o[0])))
                 .collect(Collectors.<HistoricItem> toList());
     }
 
@@ -489,7 +493,7 @@ public class JdbcBaseDAO {
     /*****************
      * H E L P E R S *
      *****************/
-    protected State getState(Item item, @Nullable Unit<? extends Quantity<?>> unit, Object v) {
+    protected State objectAsState(Item item, @Nullable Unit<? extends Quantity<?>> unit, Object v) {
         logger.debug(
                 "JDBC::ItemResultHandler::handleResult getState value = '{}', unit = '{}', getClass = '{}', clazz = '{}'",
                 v, unit, v.getClass(), v.getClass().getSimpleName());
index c2e07d2bec9a19eeadf08d92dd46aca397c1d863..ebfaa1c13826245b673dd3438c84bfe5b45c04c2 100644 (file)
@@ -169,7 +169,7 @@ public class JdbcDerbyDAO extends JdbcBaseDAO {
         Unit<? extends Quantity<?>> unit = item instanceof NumberItem ? ((NumberItem) item).getUnit() : null;
         return m.stream().map(o -> {
             logger.debug("JDBC::doGetHistItemFilterQuery 0='{}' 1='{}'", o[0], o[1]);
-            return new JdbcHistoricItem(itemName, getState(item, unit, o[1]), objectAsDate(o[0]));
+            return new JdbcHistoricItem(itemName, objectAsState(item, unit, o[1]), objectAsDate(o[0]));
         }).collect(Collectors.<HistoricItem> toList());
     }