@Test public void testWithoutApplicationContext() { Status status = dataSourceStatusChecker.check(); assertThat(status.getLevel(), is(Status.Level.UNKNOWN)); }
@Override @SuppressWarnings("unchecked") public Status check() { ApplicationContext context = null; for (ApplicationContext c : SpringExtensionFactory.getContexts()) { if (c != null) { context = c; break; } } if (context == null) { return new Status(Status.Level.UNKNOWN); } Map<String, DataSource> dataSources = context.getBeansOfType(DataSource.class, false, false); if (dataSources == null || dataSources.size() == 0) { return new Status(Status.Level.UNKNOWN); } Status.Level level = Status.Level.OK; StringBuilder buf = new StringBuilder(); for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) { DataSource dataSource = entry.getValue(); if (buf.length() > 0) { buf.append(", "); } buf.append(entry.getKey()); try { Connection connection = dataSource.getConnection(); try { DatabaseMetaData metaData = connection.getMetaData(); ResultSet resultSet = metaData.getTypeInfo(); try { if (!resultSet.next()) { level = Status.Level.ERROR; } } finally { resultSet.close(); } buf.append(metaData.getURL()); buf.append("("); buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion()); buf.append(")"); } finally { connection.close(); } } catch (Throwable e) { logger.warn(e.getMessage(), e); return new Status(level, e.getMessage()); } } return new Status(level, buf.toString()); }
DataSourceStatusChecker implements StatusChecker { @Override @SuppressWarnings("unchecked") public Status check() { ApplicationContext context = null; for (ApplicationContext c : SpringExtensionFactory.getContexts()) { if (c != null) { context = c; break; } } if (context == null) { return new Status(Status.Level.UNKNOWN); } Map<String, DataSource> dataSources = context.getBeansOfType(DataSource.class, false, false); if (dataSources == null || dataSources.size() == 0) { return new Status(Status.Level.UNKNOWN); } Status.Level level = Status.Level.OK; StringBuilder buf = new StringBuilder(); for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) { DataSource dataSource = entry.getValue(); if (buf.length() > 0) { buf.append(", "); } buf.append(entry.getKey()); try { Connection connection = dataSource.getConnection(); try { DatabaseMetaData metaData = connection.getMetaData(); ResultSet resultSet = metaData.getTypeInfo(); try { if (!resultSet.next()) { level = Status.Level.ERROR; } } finally { resultSet.close(); } buf.append(metaData.getURL()); buf.append("("); buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion()); buf.append(")"); } finally { connection.close(); } } catch (Throwable e) { logger.warn(e.getMessage(), e); return new Status(level, e.getMessage()); } } return new Status(level, buf.toString()); } }
DataSourceStatusChecker implements StatusChecker { @Override @SuppressWarnings("unchecked") public Status check() { ApplicationContext context = null; for (ApplicationContext c : SpringExtensionFactory.getContexts()) { if (c != null) { context = c; break; } } if (context == null) { return new Status(Status.Level.UNKNOWN); } Map<String, DataSource> dataSources = context.getBeansOfType(DataSource.class, false, false); if (dataSources == null || dataSources.size() == 0) { return new Status(Status.Level.UNKNOWN); } Status.Level level = Status.Level.OK; StringBuilder buf = new StringBuilder(); for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) { DataSource dataSource = entry.getValue(); if (buf.length() > 0) { buf.append(", "); } buf.append(entry.getKey()); try { Connection connection = dataSource.getConnection(); try { DatabaseMetaData metaData = connection.getMetaData(); ResultSet resultSet = metaData.getTypeInfo(); try { if (!resultSet.next()) { level = Status.Level.ERROR; } } finally { resultSet.close(); } buf.append(metaData.getURL()); buf.append("("); buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion()); buf.append(")"); } finally { connection.close(); } } catch (Throwable e) { logger.warn(e.getMessage(), e); return new Status(level, e.getMessage()); } } return new Status(level, buf.toString()); }  }
DataSourceStatusChecker implements StatusChecker { @Override @SuppressWarnings("unchecked") public Status check() { ApplicationContext context = null; for (ApplicationContext c : SpringExtensionFactory.getContexts()) { if (c != null) { context = c; break; } } if (context == null) { return new Status(Status.Level.UNKNOWN); } Map<String, DataSource> dataSources = context.getBeansOfType(DataSource.class, false, false); if (dataSources == null || dataSources.size() == 0) { return new Status(Status.Level.UNKNOWN); } Status.Level level = Status.Level.OK; StringBuilder buf = new StringBuilder(); for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) { DataSource dataSource = entry.getValue(); if (buf.length() > 0) { buf.append(", "); } buf.append(entry.getKey()); try { Connection connection = dataSource.getConnection(); try { DatabaseMetaData metaData = connection.getMetaData(); ResultSet resultSet = metaData.getTypeInfo(); try { if (!resultSet.next()) { level = Status.Level.ERROR; } } finally { resultSet.close(); } buf.append(metaData.getURL()); buf.append("("); buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion()); buf.append(")"); } finally { connection.close(); } } catch (Throwable e) { logger.warn(e.getMessage(), e); return new Status(level, e.getMessage()); } } return new Status(level, buf.toString()); }  @Override @SuppressWarnings("unchecked") Status check(); }
DataSourceStatusChecker implements StatusChecker { @Override @SuppressWarnings("unchecked") public Status check() { ApplicationContext context = null; for (ApplicationContext c : SpringExtensionFactory.getContexts()) { if (c != null) { context = c; break; } } if (context == null) { return new Status(Status.Level.UNKNOWN); } Map<String, DataSource> dataSources = context.getBeansOfType(DataSource.class, false, false); if (dataSources == null || dataSources.size() == 0) { return new Status(Status.Level.UNKNOWN); } Status.Level level = Status.Level.OK; StringBuilder buf = new StringBuilder(); for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) { DataSource dataSource = entry.getValue(); if (buf.length() > 0) { buf.append(", "); } buf.append(entry.getKey()); try { Connection connection = dataSource.getConnection(); try { DatabaseMetaData metaData = connection.getMetaData(); ResultSet resultSet = metaData.getTypeInfo(); try { if (!resultSet.next()) { level = Status.Level.ERROR; } } finally { resultSet.close(); } buf.append(metaData.getURL()); buf.append("("); buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion()); buf.append(")"); } finally { connection.close(); } } catch (Throwable e) { logger.warn(e.getMessage(), e); return new Status(level, e.getMessage()); } } return new Status(level, buf.toString()); }  @Override @SuppressWarnings("unchecked") Status check();  }