Return-Path: X-Original-To: apmail-karaf-commits-archive@minotaur.apache.org Delivered-To: apmail-karaf-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4A69917946 for ; Thu, 30 Oct 2014 10:02:34 +0000 (UTC) Received: (qmail 63634 invoked by uid 500); 30 Oct 2014 10:02:28 -0000 Delivered-To: apmail-karaf-commits-archive@karaf.apache.org Received: (qmail 63602 invoked by uid 500); 30 Oct 2014 10:02:27 -0000 Mailing-List: contact commits-help@karaf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@karaf.apache.org Delivered-To: mailing list commits@karaf.apache.org Received: (qmail 63592 invoked by uid 99); 30 Oct 2014 10:02:27 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 30 Oct 2014 10:02:27 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 7547D924DB9; Thu, 30 Oct 2014 10:02:27 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: gnodet@apache.org To: commits@karaf.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: =?utf-8?q?git_commit=3A_=5BKARAF-3261=5D_jdbc_commands_don?= =?utf-8?q?=E2=80=99t_honour_service_rankings?= Date: Thu, 30 Oct 2014 10:02:27 +0000 (UTC) Repository: karaf Updated Branches: refs/heads/karaf-2.3.x d9b38d396 -> 36e932664 [KARAF-3261] jdbc commands don’t honour service rankings Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/36e93266 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/36e93266 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/36e93266 Branch: refs/heads/karaf-2.3.x Commit: 36e9326646c185725ec83a8f4d2818d80d17bc91 Parents: d9b38d3 Author: Guillaume Nodet Authored: Wed Oct 29 17:19:31 2014 +0100 Committer: Guillaume Nodet Committed: Thu Oct 30 11:02:03 2014 +0100 ---------------------------------------------------------------------- .../karaf/jdbc/command/DataSourcesCommand.java | 22 ++++++---- .../java/org/apache/karaf/jdbc/JdbcService.java | 9 ++++ .../karaf/jdbc/internal/JdbcServiceImpl.java | 44 ++++++++++++++++---- 3 files changed, 61 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/36e93266/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java ---------------------------------------------------------------------- diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java index 1c85fe9..fae85e5 100644 --- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java +++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DataSourcesCommand.java @@ -18,25 +18,33 @@ package org.apache.karaf.jdbc.command; import org.apache.felix.gogo.commands.Command; -import java.util.List; import java.util.Map; +import java.util.Set; @Command(scope = "jdbc", name = "datasources", description = "List the JDBC datasources") public class DataSourcesCommand extends JdbcCommandSupport { - private final static String JDBC_DATASOURCES_STRING_FORMAT = "%10s %15s %10s %45s %5s"; + private final static String JDBC_DATASOURCES_STRING_FORMAT = "%20s %15s %10s %45s %5s"; public Object doExecute() throws Exception { System.out.println(String.format(JDBC_DATASOURCES_STRING_FORMAT, "Name", "Product", "Version", "URL", "Status")); - List datasources = this.getJdbcService().datasources(); - for (String datasource : datasources) { + Map> datasources = this.getJdbcService().aliases(); + for (Map.Entry> entry : datasources.entrySet()) { + StringBuilder ids = new StringBuilder(); + for (String id : entry.getValue()) { + if (ids.length() > 0) { + ids.append(", "); + } + ids.append(id); + } + String id = ids.toString(); try { - Map info = this.getJdbcService().info(datasource); - System.out.println(String.format(JDBC_DATASOURCES_STRING_FORMAT, datasource, info.get("db.product"), info.get("db.version"), info.get("url"), "OK")); + Map info = this.getJdbcService().info(entry.getKey()); + System.out.println(String.format(JDBC_DATASOURCES_STRING_FORMAT, id, info.get("db.product"), info.get("db.version"), info.get("url"), "OK")); } catch (Exception e) { - System.out.println(String.format(JDBC_DATASOURCES_STRING_FORMAT, datasource, "", "", "", "Error")); + System.out.println(String.format(JDBC_DATASOURCES_STRING_FORMAT, id, "", "", "", "Error")); } } http://git-wip-us.apache.org/repos/asf/karaf/blob/36e93266/jdbc/core/src/main/java/org/apache/karaf/jdbc/JdbcService.java ---------------------------------------------------------------------- diff --git a/jdbc/core/src/main/java/org/apache/karaf/jdbc/JdbcService.java b/jdbc/core/src/main/java/org/apache/karaf/jdbc/JdbcService.java index d883a07..b99c95e 100644 --- a/jdbc/core/src/main/java/org/apache/karaf/jdbc/JdbcService.java +++ b/jdbc/core/src/main/java/org/apache/karaf/jdbc/JdbcService.java @@ -18,6 +18,7 @@ package org.apache.karaf.jdbc; import java.util.List; import java.util.Map; +import java.util.Set; /** * JDBC Service. @@ -53,6 +54,14 @@ public interface JdbcService { List datasources() throws Exception; /** + * List the datasources available and + * group aliases for the same datasource. + * + * @return a list of aliases. + */ + Map> aliases() throws Exception; + + /** * List the JDBC datasources configuration file names present in the deploy folder. * * @return a list of the JDBC datasources configuration file names. http://git-wip-us.apache.org/repos/asf/karaf/blob/36e93266/jdbc/core/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java ---------------------------------------------------------------------- diff --git a/jdbc/core/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java b/jdbc/core/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java index 404079c..0b884b6 100644 --- a/jdbc/core/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java +++ b/jdbc/core/src/main/java/org/apache/karaf/jdbc/internal/JdbcServiceImpl.java @@ -163,19 +163,49 @@ public class JdbcServiceImpl implements JdbcService { if (references != null) { for (ServiceReference reference : references) { if (reference.getProperty("osgi.jndi.service.name") != null) { - datasources.add((String) reference.getProperty("osgi.jndi.service.name")); - } else if (reference.getProperty("datasource") != null) { - datasources.add((String) reference.getProperty("datasource")); - } else if (reference.getProperty("name") != null) { - datasources.add((String) reference.getProperty("name")); - } else { - datasources.add(reference.getProperty(Constants.SERVICE_ID).toString()); + datasources.add(reference.getProperty("osgi.jndi.service.name").toString()); } + if (reference.getProperty("datasource") != null) { + datasources.add(reference.getProperty("datasource").toString()); + } + if (reference.getProperty("name") != null) { + datasources.add(reference.getProperty("name").toString()); + } + datasources.add(reference.getProperty(Constants.SERVICE_ID).toString()); } } return datasources; } + public Map> aliases() throws Exception { + Map> aliases = new LinkedHashMap>(); + + ServiceReference[] references = bundleContext.getServiceReferences((String) null, + "(|(" + Constants.OBJECTCLASS + "=" + DataSource.class.getName() + ")(" + + Constants.OBJECTCLASS + "=" + XADataSource.class.getName() + "))"); + if (references != null) { + List> refs = Arrays.asList(references); + Collections.sort(refs); + Collections.reverse(refs); + for (ServiceReference reference : refs) { + Set names = new LinkedHashSet(); + if (reference.getProperty("osgi.jndi.service.name") != null) { + names.add(reference.getProperty("osgi.jndi.service.name").toString()); + } + if (reference.getProperty("datasource") != null) { + names.add(reference.getProperty("datasource").toString()); + } + if (reference.getProperty("name") != null) { + names.add(reference.getProperty("name").toString()); + } + String id = reference.getProperty(Constants.SERVICE_ID).toString(); + names.add(id); + aliases.put(id, names); + } + } + return aliases; + } + public List datasourceFileNames() throws Exception { File karafBase = new File(System.getProperty("karaf.base")); File deployFolder = new File(karafBase, "deploy");