Details
Description
Currently if you call jdbc:datasources with a broken datasource it will output nothing useful.
It should be more robust. To make it easy I have a patch for you (version 3.0.1). Have a look at it:
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 36df691..dd3a599 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
@@ -21,10 +21,14 @@
import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
@Command(scope = "jdbc", name = "datasources", description = "List the JDBC datasources")
public class DataSourcesCommand extends JdbcCommandSupport {
+ Logger LOG = Logger.getLogger(DataSourcesCommand.class.getName());
+
public Object doExecute() throws Exception {
ShellTable table = new ShellTable();
@@ -35,8 +39,14 @@
List<String> datasources = this.getJdbcService().datasources();
for (String datasource : datasources) {
- Map<String, String> info = this.getJdbcService().info(datasource);
- table.addRow().addContent(datasource, info.get("db.product"), info.get("db.version"), info.get("url"));
+ try { + Map<String, String> info = this.getJdbcService().info(datasource); + table.addRow().addContent(datasource, info.get("db.product"), info.get("db.version"), info.get("url")); + }catch (Throwable t)
{ + LOG.log(Level.WARNING,"Working on datasource: " + datasource,t); + table.addRow().addContent(datasource, "error", "", t.getMessage()); + + }}
table.print(System.out);