You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2017/12/15 09:48:30 UTC

[karaf] branch karaf-4.1.x updated: [KARAF-3976] Able to use "old style" datasource names/properties

This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch karaf-4.1.x
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/karaf-4.1.x by this push:
     new 35ffa75  [KARAF-3976] Able to use "old style" datasource names/properties
35ffa75 is described below

commit 35ffa75653053e041f33424545df49bc7d6c0aff
Author: Jean-Baptiste Onofré <jb...@apache.org>
AuthorDate: Fri Dec 15 09:47:43 2017 +0100

    [KARAF-3976] Able to use "old style" datasource names/properties
---
 .../karaf/jdbc/internal/JdbcServiceImpl.java       | 26 +++++++++++++++-------
 manual/src/main/asciidoc/user-guide/jdbc.adoc      |  5 ++---
 2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/jdbc/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java b/jdbc/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java
index fc6d5b5..b50fc98 100644
--- a/jdbc/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java
+++ b/jdbc/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java
@@ -93,16 +93,26 @@ public class JdbcServiceImpl implements JdbcService {
     @Override
     public List<String> datasources() throws Exception {
         List<String> datasources = new ArrayList<>();
-        Collection<ServiceReference<DataSource>> references = bundleContext.getServiceReferences(DataSource.class, null);
-        if (references == null) {
-            return datasources;
-        }
-        for (ServiceReference reference : references) {
-            String dsName = (String)reference.getProperty(DataSourceFactory.JDBC_DATASOURCE_NAME);
-            if (dsName != null) {
-                datasources.add(dsName);
+
+        ServiceReference<?>[] references = bundleContext.getServiceReferences((String) null,
+                "(|(" + Constants.OBJECTCLASS + "=" + DataSource.class.getName() + ")("
+                        + Constants.OBJECTCLASS + "=" + XADataSource.class.getName() + "))");
+        if (references != null) {
+            for (ServiceReference reference : references) {
+                if (reference.getProperty("osgi.jndi.service.name") != null) {
+                    datasources.add(reference.getProperty("osgi.jndi.service.name").toString());
+                } else if (reference.getProperty("datasource") != null) {
+                    datasources.add(reference.getProperty("datasource").toString());
+                } else if (reference.getProperty("name") != null) {
+                    datasources.add(reference.getProperty("name").toString());
+                } else if (reference.getProperty(DataSourceFactory.JDBC_DATASOURCE_NAME) != null) {
+                    datasources.add(reference.getProperty(DataSourceFactory.JDBC_DATASOURCE_NAME).toString());
+                } else {
+                    datasources.add(reference.getProperty(Constants.SERVICE_ID).toString());
+                }
             }
         }
+
         return datasources;
     }
 
diff --git a/manual/src/main/asciidoc/user-guide/jdbc.adoc b/manual/src/main/asciidoc/user-guide/jdbc.adoc
index 8324b33..8ed2562 100644
--- a/manual/src/main/asciidoc/user-guide/jdbc.adoc
+++ b/manual/src/main/asciidoc/user-guide/jdbc.adoc
@@ -19,12 +19,11 @@ The Apache Karaf DataSources (JDBC) is an optional enterprise feature.
 You have to install the following features first:
 
 ----
-karaf@root()> feature:repo-add pax-jdbc
-karaf@root()> feature:install pax-jdbc
-karaf@root()> feature:install pax-jdbc-config
 karaf@root()> feature:install jdbc
 ----
 
+NB: `jdbc` feature automatically installs the `pax-jdbc-*` core features.
+
 Pax JDBC provides ready to use adapters for different databases:
 
 * pax-jdbc-derby

-- 
To stop receiving notification emails like this one, please contact
['"commits@karaf.apache.org" <co...@karaf.apache.org>'].