diff --git a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java index 3aa38b286189cbebc506c3df158e8df399fbbd62..c416ce6d0d51821c35a795523a09a2d0437e640c 100644 --- a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java +++ b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java @@ -151,4 +151,24 @@ public final class DataSourceConfiguration { } return Objects.hashCode(dataSourceClassName, stringBuilder.toString()); } + + /** + * Add alias to share configuration with sharding-jdbc. + * + * @param alias alias for configuration + */ + public void addAlias(final String... alias) { + Object value = null; + for (String each : alias) { + if (null != properties.get(each)) { + value = properties.get(each); + } + } + if (null == value) { + return; + } + for (String each : alias) { + properties.put(each, value); + } + } } diff --git a/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java b/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java index 654c1ce4494c5a75e41c3f646763378dfcdc3325..f6a26e573aaacf4f26ed441ea5baae32fcf6380c 100644 --- a/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java +++ b/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java @@ -64,4 +64,23 @@ public final class DataSourceConfigurationTest { assertThat(actual.getUsername(), is("root")); assertThat(actual.getPassword(), is("root")); } + + @Test + public void assertAddAlias() { + HikariDataSource actualDataSource = new HikariDataSource(); + actualDataSource.setDriverClassName("org.h2.Driver"); + actualDataSource.setJdbcUrl("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL"); + actualDataSource.setUsername("root"); + actualDataSource.setPassword("root"); + DataSourceConfiguration actual = DataSourceConfiguration.getDataSourceConfiguration(actualDataSource); + actual.addAlias("url", "jdbcUrl"); + actual.addAlias("user", "username"); + assertThat(actual.getDataSourceClassName(), is(HikariDataSource.class.getName())); + assertThat(actual.getProperties().get("driverClassName").toString(), is("org.h2.Driver")); + assertThat(actual.getProperties().get("jdbcUrl").toString(), is("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL")); + assertThat(actual.getProperties().get("username").toString(), is("root")); + assertThat(actual.getProperties().get("password").toString(), is("root")); + assertThat(actual.getProperties().get("jdbcUrl"), is(actual.getProperties().get("url"))); + assertThat(actual.getProperties().get("username"), is(actual.getProperties().get("user"))); + } } diff --git a/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java b/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java index 4319c12a611781593f03c696cd94032299d4e9e0..21756f5b2ed4aeb197a666652d852dc69d8415fa 100644 --- a/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java +++ b/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java @@ -51,6 +51,7 @@ public final class DataSourceConverter { } private static YamlDataSourceParameter createDataSourceParameter(final DataSourceConfiguration dataSourceConfiguration) { + bindAlias(dataSourceConfiguration); YamlDataSourceParameter result = new YamlDataSourceParameter(); for (Field each : result.getClass().getDeclaredFields()) { try { @@ -63,6 +64,14 @@ public final class DataSourceConverter { } return result; } + + private static void bindAlias(final DataSourceConfiguration dataSourceConfiguration) { + dataSourceConfiguration.addAlias("url", "jdbcUrl"); + dataSourceConfiguration.addAlias("user", "username"); + dataSourceConfiguration.addAlias("connectionTimeout", "connectionTimeoutMilliseconds"); + dataSourceConfiguration.addAlias("maxLifetime", "maxLifetimeMilliseconds"); + dataSourceConfiguration.addAlias("idleTimeout", "idleTimeoutMilliseconds"); + } /** * Get data source configuration map. @@ -80,12 +89,12 @@ public final class DataSourceConverter { private static DataSourceConfiguration createDataSourceConfiguration(final YamlDataSourceParameter dataSourceParameter) { DataSourceConfiguration result = new DataSourceConfiguration(HikariDataSource.class.getName()); - result.getProperties().put("url", dataSourceParameter.getUrl()); + result.getProperties().put("jdbcUrl", dataSourceParameter.getUrl()); result.getProperties().put("username", dataSourceParameter.getUsername()); result.getProperties().put("password", dataSourceParameter.getPassword()); - result.getProperties().put("connectionTimeoutMilliseconds", dataSourceParameter.getConnectionTimeoutMilliseconds()); - result.getProperties().put("idleTimeoutMilliseconds", dataSourceParameter.getIdleTimeoutMilliseconds()); - result.getProperties().put("maxLifetimeMilliseconds", dataSourceParameter.getMaxLifetimeMilliseconds()); + result.getProperties().put("connectionTimeout", dataSourceParameter.getConnectionTimeoutMilliseconds()); + result.getProperties().put("idleTimeout", dataSourceParameter.getIdleTimeoutMilliseconds()); + result.getProperties().put("maxLifetime", dataSourceParameter.getMaxLifetimeMilliseconds()); result.getProperties().put("maxPoolSize", dataSourceParameter.getMaxPoolSize()); result.getProperties().put("minPoolSize", dataSourceParameter.getMinPoolSize()); result.getProperties().put("maintenanceIntervalMilliseconds", dataSourceParameter.getMaintenanceIntervalMilliseconds()); diff --git a/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java b/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java index 2469b6b1b1e9046a4a2f681753b007a5fa6a1177..68009ca15778e3d59c21b1c12d282040ff05af32 100644 --- a/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java +++ b/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java @@ -38,7 +38,7 @@ public final class DataSourceConverterTest { dataSourceConfiguration0.getProperties().put("url", "jdbc:mysql://localhost:3306/demo_ds_0"); dataSourceConfigurationMap.put("ds_0", dataSourceConfiguration0); DataSourceConfiguration dataSourceConfiguration1 = new DataSourceConfiguration(HikariDataSource.class.getName()); - dataSourceConfiguration1.getProperties().put("url", "jdbc:mysql://localhost:3306/demo_ds_1"); + dataSourceConfiguration1.getProperties().put("jdbcUrl", "jdbc:mysql://localhost:3306/demo_ds_1"); dataSourceConfigurationMap.put("ds_1", dataSourceConfiguration1); Map actual = DataSourceConverter.getDataSourceParameterMap(dataSourceConfigurationMap); assertThat(actual.size(), is(2)); @@ -69,11 +69,11 @@ public final class DataSourceConverterTest { Map properties = actual.getProperties(); assertThat(properties.get("maxPoolSize"), CoreMatchers.is(50)); assertThat(properties.get("minPoolSize"), CoreMatchers.is(1)); - assertThat(properties.get("connectionTimeoutMilliseconds"), CoreMatchers.is(30 * 1000L)); - assertThat(properties.get("idleTimeoutMilliseconds"), CoreMatchers.is(60 * 1000L)); - assertThat(properties.get("maxLifetimeMilliseconds"), CoreMatchers.is(0L)); + assertThat(properties.get("connectionTimeout"), CoreMatchers.is(30 * 1000L)); + assertThat(properties.get("idleTimeout"), CoreMatchers.is(60 * 1000L)); + assertThat(properties.get("maxLifetime"), CoreMatchers.is(0L)); assertThat(properties.get("maintenanceIntervalMilliseconds"), CoreMatchers.is(30 * 1000L)); - assertThat(properties.get("url"), CoreMatchers.is("jdbc:mysql://localhost:3306/demo_ds")); + assertThat(properties.get("jdbcUrl"), CoreMatchers.is("jdbc:mysql://localhost:3306/demo_ds")); assertThat(properties.get("username"), CoreMatchers.is("root")); assertThat(properties.get("password"), CoreMatchers.is("root")); }