Merge pull request #2320 from joshiste/datasourceMetrics-fix

* datasourceMetrics-fix:
  Fix for empty datasource-name in metrics
This commit is contained in:
Stephane Nicoll
2015-02-13 09:33:35 +01:00
2 changed files with 27 additions and 1 deletions

View File

@@ -102,7 +102,8 @@ public class DataSourcePublicMetrics implements PublicMetrics {
if (primary) {
return "datasource.primary";
}
if (name.toLowerCase().endsWith(DATASOURCE_SUFFIX.toLowerCase())) {
if (name.length() > DATASOURCE_SUFFIX.length()
&& name.toLowerCase().endsWith(DATASOURCE_SUFFIX.toLowerCase())) {
name = name.substring(0, name.length() - DATASOURCE_SUFFIX.length());
}
return "datasource." + name;

View File

@@ -168,6 +168,15 @@ public class PublicMetricsAutoConfigurationTests {
"datasource.commonsDbcp.active", "datasource.commonsDbcp.usage");
}
@Test
public void multipleDataSourcesWithCustomPrimary() {
load(MultipleDataSourcesWithCustomPrimaryConfig.class);
PublicMetrics bean = this.context.getBean(DataSourcePublicMetrics.class);
Collection<Metric<?>> metrics = bean.metrics();
assertMetrics(metrics, "datasource.primary.active", "datasource.primary.usage",
"datasource.dataSource.active", "datasource.dataSource.usage");
}
@Test
public void customPrefix() {
load(MultipleDataSourcesWithPrimaryConfig.class,
@@ -250,6 +259,22 @@ public class PublicMetricsAutoConfigurationTests {
}
}
@Configuration
static class MultipleDataSourcesWithCustomPrimaryConfig {
@Bean
@Primary
public DataSource myDataSource() {
return initializeBuilder().type(org.apache.tomcat.jdbc.pool.DataSource.class)
.build();
}
@Bean
public DataSource dataSource() {
return initializeBuilder().type(BasicDataSource.class).build();
}
}
@Configuration
static class CustomDataSourcePublicMetrics {