From: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 19:54:19 +0000 (+0200) Subject: [jdbc] Upgrade derby from 10.12.1.1 to 10.14.2.0 (#13038) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=97956d30e9cd3c0182850c2ab7dd35976b4a69d5;p=openhab-addons.git [jdbc] Upgrade derby from 10.12.1.1 to 10.14.2.0 (#13038) * Use derby instead of derbyclient, fix bnd optional package imports * Update versions add dynamic package import for custom JDBC drivers * Prevent redundant null check warnings Signed-off-by: Wouter Born --- diff --git a/bundles/org.openhab.persistence.jdbc/README.md b/bundles/org.openhab.persistence.jdbc/README.md index 76f2adcde9..0a828875f8 100644 --- a/bundles/org.openhab.persistence.jdbc/README.md +++ b/bundles/org.openhab.persistence.jdbc/README.md @@ -9,7 +9,7 @@ The following databases are currently supported and tested: | Database | Tested Driver / Version | | -------------------------------------------- | ------------------------------------------------------------ | -| [Apache Derby](https://db.apache.org/derby/) | [derby-10.12.1.1.jar](https://mvnrepository.com/artifact/org.apache.derby/derby) | +| [Apache Derby](https://db.apache.org/derby/) | [derby-10.14.2.0.jar](https://mvnrepository.com/artifact/org.apache.derby/derby) | | [H2](https://www.h2database.com/) | [h2-1.4.191.jar](https://mvnrepository.com/artifact/com.h2database/h2) | | [HSQLDB](http://hsqldb.org/) | [hsqldb-2.3.3.jar](https://mvnrepository.com/artifact/org.hsqldb/hsqldb) | | [MariaDB](https://mariadb.org/) | [mariadb-java-client-1.4.6.jar](https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client) | diff --git a/bundles/org.openhab.persistence.jdbc/pom.xml b/bundles/org.openhab.persistence.jdbc/pom.xml index d9caf9c5bc..84e3b6ae99 100644 --- a/bundles/org.openhab.persistence.jdbc/pom.xml +++ b/bundles/org.openhab.persistence.jdbc/pom.xml @@ -15,7 +15,7 @@ openHAB Add-ons :: Bundles :: Persistence Service :: JDBC - !org.osgi.service.jdbc.*,!sun.security.*,!org.apache.lucene.*,!org.apache.logging.log4j,!waffle.windows.auth.*,!org.hibernate.*,!org.jboss.*,!org.codehaus.groovy.*,!com.codahale.metrics.*,!com.google.protobuf.*,!com.ibm.icu.*,!com.ibm.jvm.*,!com.mchange.*,!com.sun.*,!com.vividsolutions.*,!io.prometheus.*,com.mysql.jdbc;resolution:=optional,org.apache.derby.*;resolution:=optional,org.h2;resolution:=optional,org.h2.jdbcx;resolution:=optional,org.hsqldb;resolution:=optional,org.hsqldb.jdbc;resolution:=optional,org.mariadb.jdbc;resolution:=optional,org.postgresql;resolution:=optional,org.sqlite;resolution:=optional,org.sqlite.jdbc4;resolution:=optional,javassist*;resolution:=optional + !org.osgi.service.jdbc.*,!sun.security.*,!org.apache.lucene.*,!org.apache.logging.log4j,!waffle.windows.auth.*,!org.hibernate.*,!org.jboss.*,!org.codehaus.groovy.*,!com.codahale.metrics.*,!com.google.protobuf.*,!com.ibm.icu.*,!com.ibm.jvm.*,!com.mchange.*,!com.sun.*,!com.vividsolutions.*,!io.prometheus.*,com.mysql.*;resolution:=optional,org.apache.derby.*;resolution:=optional,org.h2.*;resolution:=optional,org.hsqldb;resolution:=optional,org.hsqldb.jdbc;resolution:=optional,org.mariadb.*;resolution:=optional,org.postgresql.*;resolution:=optional,org.sqlite;resolution:=optional,org.sqlite.jdbc4;resolution:=optional,javassist*;resolution:=optional derby,h2,hsqldb,mariadb-java-client,mysql-connector-java,postgresql,sqlite-jdbc UTF-8 @@ -25,7 +25,7 @@ 3.2.0 - 10.12.1.1 + 10.14.2.0 1.4.191 2.3.3 1.4.6 diff --git a/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml b/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml index 322a15ab0a..20816900db 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml +++ b/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml @@ -6,7 +6,7 @@ mvn:org.openhab.addons.features.karaf/org.openhab.addons.features.karaf.openhab-addons-external/${project.version}/cfg/jdbc openhab-runtime-base - mvn:org.apache.derby/derbyclient/10.12.1.1 + mvn:org.apache.derby/derby/10.14.2.0 mvn:org.openhab.addons.bundles/org.openhab.persistence.jdbc/${project.version} diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java index 6ba364dafb..63ed871727 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Properties; import java.util.stream.Collectors; @@ -245,18 +246,21 @@ public class JdbcBaseDAO { * ITEMS DAOs * **************/ public @Nullable Integer doPingDB() { - return Yank.queryScalar(sqlPingDB, (Class<@Nullable Integer>) Integer.class, null); + final @Nullable Integer result = Yank.queryScalar(sqlPingDB, Integer.class, null); + return result; } public @Nullable String doGetDB() { - return Yank.queryScalar(sqlGetDB, (Class<@Nullable String>) String.class, null); + final @Nullable String result = Yank.queryScalar(sqlGetDB, String.class, null); + return result; } public boolean doIfTableExists(ItemsVO vo) { String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" }, new String[] { vo.getItemsManageTable() }); logger.debug("JDBC::doIfTableExists sql={}", sql); - return Yank.queryScalar(sql, (Class<@Nullable String>) String.class, null) != null; + final @Nullable String result = Yank.queryScalar(sql, String.class, null); + return Objects.nonNull(result); } public Long doCreateNewEntryInItemsTable(ItemsVO vo) { @@ -321,7 +325,7 @@ public class JdbcBaseDAO { String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), sqlTypes.get("tablePrimaryValue") }); - Object[] params = new Object[] { storedVO.getValue(), storedVO.getValue() }; + Object[] params = { storedVO.getValue(), storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); Yank.execute(sql, params); } @@ -331,7 +335,7 @@ public class JdbcBaseDAO { String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), "?" }); java.sql.Timestamp timestamp = new java.sql.Timestamp(date.toInstant().toEpochMilli()); - Object[] params = new Object[] { timestamp, storedVO.getValue(), storedVO.getValue() }; + Object[] params = { timestamp, storedVO.getValue(), storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} timestamp={} value='{}'", sql, timestamp, storedVO.getValue()); Yank.execute(sql, params); } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java index 431ee56db6..4ee6c2d4ce 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java @@ -14,6 +14,7 @@ package org.openhab.persistence.jdbc.db; import java.time.ZoneId; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import javax.measure.Quantity; @@ -44,13 +45,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcDerbyDAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = org.apache.derby.jdbc.EmbeddedDriver.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = org.apache.derby.jdbc.EmbeddedDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcDerbyDAO.class); /******** * INIT * ********/ public JdbcDerbyDAO() { - super(); initSqlTypes(); initDbProps(); initSqlQueries(); @@ -84,9 +88,9 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { private void initDbProps() { // Properties for HikariCP // Use driverClassName - databaseProps.setProperty("driverClassName", "org.apache.derby.jdbc.EmbeddedDriver"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); // OR dataSourceClassName - // databaseProps.setProperty("dataSourceClassName", "org.apache.derby.jdbc.EmbeddedDataSource"); + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); databaseProps.setProperty("maximumPoolSize", "1"); databaseProps.setProperty("minimumIdle", "1"); } @@ -103,7 +107,7 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { **************/ @Override public @Nullable Integer doPingDB() { - return Yank.queryScalar(sqlPingDB, (Class<@Nullable Integer>) Integer.class, null); + return Yank.queryScalar(sqlPingDB, Integer.class, null); } @Override @@ -111,7 +115,8 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" }, new String[] { vo.getItemsManageTable().toUpperCase() }); logger.debug("JDBC::doIfTableExists sql={}", sql); - return Yank.queryScalar(sql, (Class<@Nullable String>) String.class, null) != null; + final @Nullable String result = Yank.queryScalar(sql, String.class, null); + return Objects.nonNull(result); } @Override @@ -158,7 +163,7 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName().toUpperCase(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); - Object[] params = new Object[] { storedVO.getValue() }; + Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); Yank.execute(sql, params); } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java index 8957f55388..140f536672 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java @@ -30,13 +30,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcH2DAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = org.h2.Driver.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = org.h2.jdbcx.JdbcDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcH2DAO.class); /******** * INIT * ********/ public JdbcH2DAO() { - super(); initSqlQueries(); initSqlTypes(); initDbProps(); @@ -61,9 +64,9 @@ public class JdbcH2DAO extends JdbcBaseDAO { */ private void initDbProps() { // Properties for HikariCP - databaseProps.setProperty("driverClassName", "org.h2.Driver"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); // driverClassName OR BETTER USE dataSourceClassName - // databaseProps.setProperty("dataSourceClassName", "org.h2.jdbcx.JdbcDataSource"); + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); } /************** @@ -79,7 +82,7 @@ public class JdbcH2DAO extends JdbcBaseDAO { String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); - Object[] params = new Object[] { storedVO.getValue() }; + Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); Yank.execute(sql, params); } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java index 8f26945e1b..2fd77b4c78 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java @@ -32,13 +32,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcHsqldbDAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = org.hsqldb.jdbcDriver.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = org.hsqldb.jdbc.JDBCDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcHsqldbDAO.class); /******** * INIT * ********/ public JdbcHsqldbDAO() { - super(); initSqlQueries(); initSqlTypes(); initDbProps(); @@ -71,7 +74,9 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO { */ private void initDbProps() { // Properties for HikariCP - databaseProps.setProperty("driverClassName", "org.hsqldb.jdbcDriver"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); + // driverClassName OR BETTER USE dataSourceClassName + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); } /************** @@ -79,7 +84,7 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO { **************/ @Override public @Nullable Integer doPingDB() { - return Yank.queryScalar(sqlPingDB, (Class<@Nullable Integer>) Integer.class, null); + return Yank.queryScalar(sqlPingDB, Integer.class, null); } @Override @@ -111,7 +116,7 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO { new String[] { "#tableName#", "#dbType#", "#tableName#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), storedVO.getTableName(), sqlTypes.get("tablePrimaryValue") }); - Object[] params = new Object[] { storedVO.getValue() }; + Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); Yank.execute(sql, params); } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java index 86c8bbb9e6..740cc0f73d 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java @@ -12,6 +12,8 @@ */ package org.openhab.persistence.jdbc.db; +import java.util.Objects; + import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; @@ -28,13 +30,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcMariadbDAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = org.mariadb.jdbc.Driver.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = org.mariadb.jdbc.MariaDbDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcMariadbDAO.class); /******** * INIT * ********/ public JdbcMariadbDAO() { - super(); initSqlTypes(); initDbProps(); initSqlQueries(); @@ -66,9 +71,9 @@ public class JdbcMariadbDAO extends JdbcBaseDAO { // Properties for HikariCP // Use driverClassName - databaseProps.setProperty("driverClassName", "org.mariadb.jdbc.Driver"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); // driverClassName OR BETTER USE dataSourceClassName - // databaseProps.setProperty("dataSourceClassName", "org.mariadb.jdbc.MySQLDataSource"); + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); databaseProps.setProperty("maximumPoolSize", "3"); databaseProps.setProperty("minimumIdle", "2"); } @@ -91,8 +96,8 @@ public class JdbcMariadbDAO extends JdbcBaseDAO { **************/ @Override public @Nullable Integer doPingDB() { - final @Nullable Long result = Yank.queryScalar(sqlPingDB, (Class<@Nullable Long>) Long.class, null); - return result != null ? result.intValue() : null; + final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null); + return Objects.nonNull(result) ? result.intValue() : null; } /************* diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java index 962938b968..b73f216fd9 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java @@ -12,6 +12,8 @@ */ package org.openhab.persistence.jdbc.db; +import java.util.Objects; + import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; @@ -32,13 +34,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcMysqlDAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = com.mysql.jdbc.Driver.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = com.mysql.cj.jdbc.MysqlDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcMysqlDAO.class); /******** * INIT * ********/ public JdbcMysqlDAO() { - super(); initSqlTypes(); initDbProps(); initSqlQueries(); @@ -69,9 +74,9 @@ public class JdbcMysqlDAO extends JdbcBaseDAO { // Properties for HikariCP // Use driverClassName - databaseProps.setProperty("driverClassName", "com.mysql.jdbc.Driver"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); // OR dataSourceClassName - // databaseProps.setProperty("dataSourceClassName", "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); databaseProps.setProperty("maximumPoolSize", "3"); databaseProps.setProperty("minimumIdle", "2"); } @@ -94,8 +99,8 @@ public class JdbcMysqlDAO extends JdbcBaseDAO { **************/ @Override public @Nullable Integer doPingDB() { - final @Nullable Long result = Yank.queryScalar(sqlPingDB, (Class<@Nullable Long>) Long.class, null); - return result != null ? result.intValue() : null; + final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null); + return Objects.nonNull(result) ? result.intValue() : null; } /************* diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java index d754b4d02a..9c419af8c2 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java @@ -36,13 +36,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcPostgresqlDAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = org.postgresql.Driver.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = org.postgresql.ds.PGSimpleDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcPostgresqlDAO.class); /******** * INIT * ********/ public JdbcPostgresqlDAO() { - super(); initSqlQueries(); initSqlTypes(); initDbProps(); @@ -94,9 +97,9 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO { // databaseProps.setProperty("dataSource.prepStmtCacheSqlLimit", "2048"); // Properties for HikariCP - databaseProps.setProperty("driverClassName", "org.postgresql.Driver"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); // driverClassName OR BETTER USE dataSourceClassName - // databaseProps.setProperty("dataSourceClassName", "org.postgresql.ds.PGSimpleDataSource"); + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); // databaseProps.setProperty("maximumPoolSize", "3"); // databaseProps.setProperty("minimumIdle", "2"); } @@ -141,7 +144,7 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO { String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); - Object[] params = new Object[] { storedVO.getValue() }; + Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); Yank.execute(sql, params); } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java index 5096d546c8..4559e1b183 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java @@ -32,13 +32,16 @@ import org.slf4j.LoggerFactory; */ @NonNullByDefault public class JdbcSqliteDAO extends JdbcBaseDAO { + private static final String DRIVER_CLASS_NAME = org.sqlite.JDBC.class.getName(); + @SuppressWarnings("unused") + private static final String DATA_SOURCE_CLASS_NAME = org.sqlite.SQLiteDataSource.class.getName(); + private final Logger logger = LoggerFactory.getLogger(JdbcSqliteDAO.class); /******** * INIT * ********/ public JdbcSqliteDAO() { - super(); initSqlQueries(); initSqlTypes(); initDbProps(); @@ -66,9 +69,9 @@ public class JdbcSqliteDAO extends JdbcBaseDAO { */ private void initDbProps() { // Properties for HikariCP - databaseProps.setProperty("driverClassName", "org.sqlite.JDBC"); + databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME); // driverClassName OR BETTER USE dataSourceClassName - // databaseProps.setProperty("dataSourceClassName", "org.sqlite.SQLiteDataSource"); + // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME); } /************** @@ -77,7 +80,7 @@ public class JdbcSqliteDAO extends JdbcBaseDAO { @Override public @Nullable String doGetDB() { - return Yank.queryColumn(sqlGetDB, "file", (Class<@Nullable String>) String.class, null).get(0); + return Yank.queryColumn(sqlGetDB, "file", String.class, null).get(0); } @Override @@ -99,7 +102,7 @@ public class JdbcSqliteDAO extends JdbcBaseDAO { String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); - Object[] params = new Object[] { storedVO.getValue() }; + Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); Yank.execute(sql, params); } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java index 90b4e1cfc0..a2342050c7 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java @@ -272,7 +272,7 @@ public class JdbcConfiguration { } matcher.reset(); matcher.find(); - if (!matcher.group(1).equals("sqltype")) { + if (!"sqltype".equals(matcher.group(1))) { continue; } String itemType = matcher.group(2); @@ -304,7 +304,7 @@ public class JdbcConfiguration { if (serviceName != null) { switch (serviceName) { case "derby": - warn += "\tDerby: version >= 10.11.1.1 from https://mvnrepository.com/artifact/org.apache.derby/derby\n"; + warn += "\tDerby: version >= 10.14.2.0 from https://mvnrepository.com/artifact/org.apache.derby/derby\n"; break; case "h2": warn += "\tH2: version >= 1.4.189 from https://mvnrepository.com/artifact/com.h2database/h2\n"; @@ -313,13 +313,13 @@ public class JdbcConfiguration { warn += "\tHSQLDB: version >= 2.3.3 from https://mvnrepository.com/artifact/org.hsqldb/hsqldb\n"; break; case "mariadb": - warn += "\tMariaDB: version >= 1.2.0 from https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client\n"; + warn += "\tMariaDB: version >= 1.4.6 from https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client\n"; break; case "mysql": - warn += "\tMySQL: version >= 5.1.36 from https://mvnrepository.com/artifact/mysql/mysql-connector-java\n"; + warn += "\tMySQL: version >= 8.0.30 from https://mvnrepository.com/artifact/mysql/mysql-connector-java\n"; break; case "postgresql": - warn += "\tPostgreSQL:version >= 9.4.1208 from https://mvnrepository.com/artifact/org.postgresql/postgresql\n"; + warn += "\tPostgreSQL:version >= 42.4.1 from https://mvnrepository.com/artifact/org.postgresql/postgresql\n"; break; case "sqlite": warn += "\tSQLite: version >= 3.16.1 from https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc\n"; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/package-info.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/package-info.java new file mode 100644 index 0000000000..6fc8b9f10a --- /dev/null +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/package-info.java @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2010-2022 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 + */ +@org.osgi.annotation.bundle.Header(name = org.osgi.framework.Constants.DYNAMICIMPORT_PACKAGE, value = "*") +package org.openhab.persistence.jdbc.internal; + +/** + * This dynamic import is required for loading the JDBC driver class. + * + * @author Wouter Born - Initial contribution + */