]> git.basschouten.com Git - openhab-addons.git/commitdiff
Added OSGi configurable service declarations (#9132)
authorChristoph Weitkamp <github@christophweitkamp.de>
Wed, 25 Nov 2020 21:16:10 +0000 (22:16 +0100)
committerGitHub <noreply@github.com>
Wed, 25 Nov 2020 21:16:10 +0000 (22:16 +0100)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java
bundles/org.openhab.persistence.jdbc/src/main/resources/OH-INF/config/config.xml

index def594b2117a7d97f72f4d2f537b4359a9a1a89f..e80bc4c63940a3745d02fbef6ca65a4b937faa92 100644 (file)
@@ -19,6 +19,7 @@ import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.core.config.core.ConfigurableService;
 import org.openhab.core.items.GroupItem;
 import org.openhab.core.items.Item;
 import org.openhab.core.items.ItemNotFoundException;
@@ -31,9 +32,9 @@ import org.openhab.core.persistence.QueryablePersistenceService;
 import org.openhab.core.persistence.strategy.PersistenceStrategy;
 import org.openhab.core.types.UnDefType;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.ConfigurationPolicy;
 import org.osgi.service.component.annotations.Deactivate;
 import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
@@ -47,9 +48,13 @@ import org.slf4j.LoggerFactory;
  */
 @NonNullByDefault
 @Component(service = { PersistenceService.class,
-        QueryablePersistenceService.class }, configurationPid = "org.openhab.jdbc", configurationPolicy = ConfigurationPolicy.REQUIRE)
+        QueryablePersistenceService.class }, configurationPid = "org.openhab.jdbc", //
+        property = Constants.SERVICE_PID + "=org.openhab.jdbc")
+@ConfigurableService(category = "persistence", label = "JDBC Persistence Service", description_uri = JdbcPersistenceService.CONFIG_URI)
 public class JdbcPersistenceService extends JdbcMapper implements QueryablePersistenceService {
 
+    protected static final String CONFIG_URI = "persistence:jdbc";
+
     private final Logger logger = LoggerFactory.getLogger(JdbcPersistenceService.class);
 
     private final ItemRegistry itemRegistry;
index 6990cc5f50a8f4c9cff6b7eb3d6c561cb3628f51..a277cff08c17c387b097252dac7b86217ba6ada5 100644 (file)
                        jdbc:sqlite:./testSqlite.db]]></description>
                </parameter>
 
-               <parameter name="user" type="text" required="false">
+               <parameter name="user" type="text" required="true">
                        <label>Database User</label>
-                       <description><![CDATA[Defines optional database user.]]></description>
+                       <description>Defines the database user.</description>
                </parameter>
 
-               <parameter name="password" type="text" required="false">
+               <parameter name="password" type="text" required="true">
+                       <context>password</context>
                        <label>Database Password</label>
-                       <description><![CDATA[Defines optional database password.]]></description>
+                       <description>Defines the database password.</description>
                </parameter>
 
                <!--
                        # For Itemtype "Number" default decimal digit count (optional, default: 3)
                        #numberDecimalcount=
                -->
-               <parameter name="sqltype.CALL" type="text" required="false">
+               <parameter name="sqltype.CALL" type="text">
                        <label>SqlType CALL</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for CALL <br>(optional, default: "VARCHAR(200)"). <br>
                        General about JdbcTypes/SqlTypes see: https://mybatis.github.io/mybatis-3/apidocs/reference/org/apache/ibatis/type/JdbcType.html <br>
                        see: http://www.h2database.com/html/datatypes.html <br>
                        see: http://www.postgresql.org/docs/9.5/static/datatype.html]]></description>
                </parameter>
-               <parameter name="sqltype.COLOR" type="text" required="false">
+               <parameter name="sqltype.COLOR" type="text">
                        <label>SqlType COLOR</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for COLOR <br>(optional, default: "VARCHAR(70)").]]></description>
                </parameter>
-               <parameter name="sqltype.CONTACT" type="text" required="false">
+               <parameter name="sqltype.CONTACT" type="text">
                        <label>SqlType CONTACT</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for CONTACT <br>(optional, default: "VARCHAR(6)").]]></description>
                </parameter>
-               <parameter name="sqltype.DATETIME" type="text" required="false">
+               <parameter name="sqltype.DATETIME" type="text">
                        <label>SqlType DATETIME</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for DATETIME <br>(optional, default: "DATETIME").]]></description>
                </parameter>
-               <parameter name="sqltype.DIMMER" type="text" required="false">
+               <parameter name="sqltype.DIMMER" type="text">
                        <label>SqlType DIMMER</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for DIMMER <br>(optional, default: "TINYINT").]]></description>
                </parameter>
-               <parameter name="sqltype.LOCATION" type="text" required="false">
+               <parameter name="sqltype.LOCATION" type="text">
                        <label>SqlType LOCATION</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for LOCATION <br>(optional, default: "VARCHAR(30)").]]></description>
                </parameter>
-               <parameter name="sqltype.NUMBER" type="text" required="false">
+               <parameter name="sqltype.NUMBER" type="text">
                        <label>SqlType NUMBER</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for NUMBER <br>(optional, default: "DOUBLE").]]></description>
                </parameter>
-               <parameter name="sqltype.ROLLERSHUTTER" type="text" required="false">
+               <parameter name="sqltype.ROLLERSHUTTER" type="text">
                        <label>SqlType ROLLERSHUTTER</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for ROLLERSHUTTER <br>(optional, default: "TINYINT").]]></description>
                </parameter>
-               <parameter name="sqltype.STRING" type="text" required="false">
+               <parameter name="sqltype.STRING" type="text">
                        <label>SqlType STRING</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for STRING <br>(optional, default: "VARCHAR(65500)").]]></description>
                </parameter>
-               <parameter name="sqltype.SWITCH" type="text" required="false">
+               <parameter name="sqltype.SWITCH" type="text">
                        <label>SqlType SWITCH</label>
                        <description><![CDATA[Overrides used JDBC/SQL datatype for SWITCH <br>(optional, default: "VARCHAR(6)").]]></description>
                </parameter>
                        # USE WITH CARE! Deactivate after Renaming is done!
                        #rebuildTableNames=true
                -->
-               <parameter name="tableNamePrefix" type="text" required="false">
+               <parameter name="tableNamePrefix" type="text">
                        <label>Tablename Prefix String</label>
                        <description><![CDATA[Tablename prefix string <br>(optional, default: "item"). <br>
                        For migration from MYSQL-Bundle set to 'Item'.]]></description>
                </parameter>
-               <parameter name="tableUseRealItemNames" type="text" required="false">
+               <parameter name="tableUseRealItemNames" type="text">
                        <label>Tablename Realname Generation</label>
                        <description><![CDATA[Enables Tablename prefix generation per Items realname <br>(optional, default: disabled -> "Tablename Prefix String" is used). <br>
                        If true, 'Tablename Prefix String' is ignored.]]></description>
                                <option value="false">Disable</option>
                        </options>
                </parameter>
-               <parameter name="tableIdDigitCount" type="text" required="false">
+               <parameter name="tableIdDigitCount" type="text">
                        <label>Tablename Suffix ID Count</label>
                        <description><![CDATA[Tablename Suffix ID Count <br>(optional, default: 4 -> 0001-9999). <br>
                        For migration from MYSQL-Bundle set to 0.]]></description>
                </parameter>
-               <parameter name="rebuildTableNames" type="text" required="false">
+               <parameter name="rebuildTableNames" type="text">
                        <label>Tablename Rebuild</label>
                        <description><![CDATA[Rename existing tables using 'Tablename Realname Generation' and 'Tablename Suffix ID Count', (optional, default: disabled). <br>
                        USE WITH CARE! Deactivate after renaming is done!]]></description>
                        # maximumPoolSize = 1
                        # minimumIdle = 1
                -->
-               <parameter name="maximumPoolSize" type="text" required="false">
+               <parameter name="maximumPoolSize" type="text">
                        <label>Connections Max Pool Size</label>
                        <description><![CDATA[Overrides max pool size in database connection. <br>(optional, default: differs each Database)<br>
                        https://github.com/brettwooldridge/HikariCP/issues/256]]></description>
                </parameter>
-               <parameter name="minimumIdle" type="text" required="false">
+               <parameter name="minimumIdle" type="text">
                        <label>Connections Min Idle</label>
                        <description><![CDATA[Overrides min idle database connections. <br>(optional, default: differs each Database)<br>
                        https://github.com/brettwooldridge/HikariCP/issues/256]]></description>
                        # (optional, default: false)
                        #enableLogTime=true
                -->
-               <parameter name="enableLogTime" type="text" required="false">
+               <parameter name="enableLogTime" type="text">
                        <label>Timekeeping Enable</label>
                        <description><![CDATA[Enables a time, performance measurement. <br>(optional, default: disabled)]]></description>
                        <options>