[ 
https://issues.apache.org/jira/browse/KARAF-2941?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jean-Baptiste Onofré reassigned KARAF-2941:
-------------------------------------------

    Assignee: Jean-Baptiste Onofré

> Let jdbc be more robust against broken data sources
> ---------------------------------------------------
>
>                 Key: KARAF-2941
>                 URL: https://issues.apache.org/jira/browse/KARAF-2941
>             Project: Karaf
>          Issue Type: Improvement
>          Components: karaf-shell
>            Reporter: Mike Hummel
>            Assignee: Jean-Baptiste Onofré
>
> 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);



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to