diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java index 87d8d4bfddc3c7c1c74faab8c5a00a3dce4024b3..04584cce4dababf92444659d21aceb3687dae4ae 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java +++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java @@ -35,7 +35,7 @@ import org.apache.shardingsphere.proxy.backend.response.query.QueryData; import org.apache.shardingsphere.proxy.backend.response.update.UpdateResponse; import org.apache.shardingsphere.proxy.backend.schema.ProxySchemaContexts; import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler; -import org.apache.shardingsphere.proxy.config.util.DataSourceConverter; +import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter; import org.apache.shardingsphere.proxy.config.yaml.YamlDataSourceParameter; import org.apache.shardingsphere.proxy.convert.CreateDataSourcesStatementContextConverter; import org.apache.shardingsphere.rdl.parser.binder.context.CreateDataSourcesStatementContext; @@ -99,7 +99,8 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler { private BackendResponse execute(final CreateDataSourcesStatementContext context) { Map parameters = new CreateDataSourcesStatementContextConverter().convert(context); - Map dataSources = DataSourceConverter.getDataSourceConfigurationMap(DataSourceConverter.getDataSourceParameterMap2(parameters)); + Map dataSources = DataSourceParameterConverter.getDataSourceConfigurationMap( + DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(parameters)); // TODO Need to get the executed feedback from registry center for returning. ShardingSphereEventBus.getInstance().post(new DataSourceEvent(backendConnection.getSchema(), dataSources)); UpdateResponse result = new UpdateResponse(); diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/governance/GovernanceBootstrap.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/governance/GovernanceBootstrap.java index 90a4d795bf8fd1e99e12b93dc78d54a09b1cdcee..fa886b16ccd0c512eeb26eb1176dee52d53b2c33 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/governance/GovernanceBootstrap.java +++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/governance/GovernanceBootstrap.java @@ -28,7 +28,7 @@ import org.apache.shardingsphere.governance.core.common.yaml.swapper.GovernanceC import org.apache.shardingsphere.governance.core.facade.GovernanceFacade; import org.apache.shardingsphere.proxy.config.ProxyConfiguration; import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration; -import org.apache.shardingsphere.proxy.config.util.DataSourceConverter; +import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter; import org.apache.shardingsphere.proxy.config.yaml.YamlProxyRuleConfiguration; import org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration; @@ -77,7 +77,8 @@ public final class GovernanceBootstrap { private Map> getDataSourceConfigurationMap(final Map ruleConfigs) { Map> result = new LinkedHashMap<>(ruleConfigs.size(), 1); for (Entry entry : ruleConfigs.entrySet()) { - result.put(entry.getKey(), DataSourceConverter.getDataSourceConfigurationMap(DataSourceConverter.getDataSourceParameterMap2(entry.getValue().getDataSources()))); + result.put(entry.getKey(), + DataSourceParameterConverter.getDataSourceConfigurationMap(DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(entry.getValue().getDataSources()))); } return result; } @@ -99,7 +100,7 @@ public final class GovernanceBootstrap { private Map> loadDataSourceParametersMap(final Collection schemaNames) { Map> result = new LinkedHashMap<>(schemaNames.size(), 1); for (String each : schemaNames) { - result.put(each, DataSourceConverter.getDataSourceParameterMap(governanceFacade.getConfigCenter().loadDataSourceConfigurations(each))); + result.put(each, DataSourceParameterConverter.getDataSourceParameterMap(governanceFacade.getConfigCenter().loadDataSourceConfigurations(each))); } return result; } diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/util/DataSourceConverter.java b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/util/DataSourceParameterConverter.java similarity index 95% rename from shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/util/DataSourceConverter.java rename to shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/util/DataSourceParameterConverter.java index 6a6c24b2ac66f5f37c8b4de05cdbfbc57327b045..fb318693d406ed84107713602d6c92e9bf32565b 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/util/DataSourceConverter.java +++ b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/util/DataSourceParameterConverter.java @@ -34,7 +34,7 @@ import java.util.stream.Collectors; * Data source parameter converter. */ @NoArgsConstructor(access = AccessLevel.PRIVATE) -public final class DataSourceConverter { +public final class DataSourceParameterConverter { /** * Get data source parameter map. @@ -48,16 +48,31 @@ public final class DataSourceConverter { } /** - * Get data source parameter map. + * Get data source parameter map from YAML configuration. * * @param dataSourceParameters yaml data source parameters * @return data source parameter map */ - public static Map getDataSourceParameterMap2(final Map dataSourceParameters) { + public static Map getDataSourceParameterMapFromYamlConfiguration(final Map dataSourceParameters) { return dataSourceParameters.entrySet().stream() .collect(Collectors.toMap(Entry::getKey, entry -> createDataSourceParameter(entry.getValue()), (oldVal, currVal) -> oldVal, LinkedHashMap::new)); } + private static DataSourceParameter createDataSourceParameter(final DataSourceConfiguration dataSourceConfig) { + bindSynonym(dataSourceConfig); + DataSourceParameter result = new DataSourceParameter(); + for (Field each : result.getClass().getDeclaredFields()) { + try { + each.setAccessible(true); + if (dataSourceConfig.getProps().containsKey(each.getName())) { + each.set(result, dataSourceConfig.getProps().get(each.getName())); + } + } catch (final ReflectiveOperationException ignored) { + } + } + return result; + } + private static DataSourceParameter createDataSourceParameter(final YamlDataSourceParameter yamlDataSourceParameter) { DataSourceParameter result = new DataSourceParameter(); result.setConnectionTimeoutMilliseconds(yamlDataSourceParameter.getConnectionTimeoutMilliseconds()); @@ -73,21 +88,6 @@ public final class DataSourceConverter { return result; } - private static DataSourceParameter createDataSourceParameter(final DataSourceConfiguration dataSourceConfig) { - bindSynonym(dataSourceConfig); - DataSourceParameter result = new DataSourceParameter(); - for (Field each : result.getClass().getDeclaredFields()) { - try { - each.setAccessible(true); - if (dataSourceConfig.getProps().containsKey(each.getName())) { - each.set(result, dataSourceConfig.getProps().get(each.getName())); - } - } catch (final ReflectiveOperationException ignored) { - } - } - return result; - } - private static void bindSynonym(final DataSourceConfiguration dataSourceConfiguration) { dataSourceConfiguration.addPropertySynonym("url", "jdbcUrl"); dataSourceConfiguration.addPropertySynonym("user", "username"); @@ -99,7 +99,7 @@ public final class DataSourceConverter { /** * Get data source configuration map. * - * @param dataSourceParameterMap data source map + * @param dataSourceParameterMap data source parameter map * @return data source configuration map */ public static Map getDataSourceConfigurationMap(final Map dataSourceParameterMap) { diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java index 27495890cdd319ea299e52d699921096c57d116d..b1770c1210ddcdaf9e11d5c295b3cb018698fafd 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java +++ b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java @@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper import org.apache.shardingsphere.infra.context.schema.DataSourceParameter; import org.apache.shardingsphere.proxy.config.ProxyConfiguration; import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration; -import org.apache.shardingsphere.proxy.config.util.DataSourceConverter; +import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter; import org.apache.shardingsphere.proxy.config.yaml.YamlProxyRuleConfiguration; import java.util.Collection; @@ -58,6 +58,7 @@ public final class YamlProxyConfigurationSwapper { } private Map> getDataSourceParametersMap(final Map yamlRuleConfigurations) { - return yamlRuleConfigurations.entrySet().stream().collect(Collectors.toMap(Entry::getKey, entry -> DataSourceConverter.getDataSourceParameterMap2(entry.getValue().getDataSources()))); + return yamlRuleConfigurations.entrySet().stream().collect( + Collectors.toMap(Entry::getKey, entry -> DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(entry.getValue().getDataSources()))); } } diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/util/DataSourceConverterTest.java b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/util/DataSourceParameterConverterTest.java similarity index 68% rename from shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/util/DataSourceConverterTest.java rename to shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/util/DataSourceParameterConverterTest.java index d5335517749929dc289a1c3f2ebb9904ae968502..92e84fe811f3fb0a74b49d2f71acce20d7b2a6bb 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/util/DataSourceConverterTest.java +++ b/shardingsphere-proxy/shardingsphere-proxy-common/src/test/java/org/apache/shardingsphere/proxy/config/util/DataSourceParameterConverterTest.java @@ -22,16 +22,13 @@ import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration import org.apache.shardingsphere.infra.context.schema.DataSourceParameter; import org.junit.Test; -import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -public final class DataSourceConverterTest { +public final class DataSourceParameterConverterTest { @Test public void assertGetDataSourceParameterMap() { @@ -42,7 +39,7 @@ public final class DataSourceConverterTest { DataSourceConfiguration dataSourceConfiguration1 = new DataSourceConfiguration(HikariDataSource.class.getName()); dataSourceConfiguration1.getProps().put("jdbcUrl", "jdbc:mysql://localhost:3306/demo_ds_1"); dataSourceConfigurationMap.put("ds_1", dataSourceConfiguration1); - Map actual = DataSourceConverter.getDataSourceParameterMap(dataSourceConfigurationMap); + Map actual = DataSourceParameterConverter.getDataSourceParameterMap(dataSourceConfigurationMap); assertThat(actual.size(), is(2)); assertThat(actual.get("ds_0").getUrl(), is("jdbc:mysql://localhost:3306/demo_ds_0")); assertThat(actual.get("ds_1").getUrl(), is("jdbc:mysql://localhost:3306/demo_ds_1")); @@ -53,7 +50,7 @@ public final class DataSourceConverterTest { Map dataSourceParameterMap = new HashMap<>(2, 1); dataSourceParameterMap.put("ds_0", crateDataSourceParameter()); dataSourceParameterMap.put("ds_1", crateDataSourceParameter()); - Map actual = DataSourceConverter.getDataSourceConfigurationMap(dataSourceParameterMap); + Map actual = DataSourceParameterConverter.getDataSourceConfigurationMap(dataSourceParameterMap); assertThat(actual.size(), is(2)); assertParameter(actual.get("ds_0")); assertParameter(actual.get("ds_1")); @@ -79,32 +76,4 @@ public final class DataSourceConverterTest { assertThat(props.get("username"), is("root")); assertThat(props.get("password"), is("root")); } - - private DataSource createDataSource() { - HikariDataSource hikariDataSource = new HikariDataSource(); - hikariDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/demo_ds"); - hikariDataSource.setUsername("root"); - hikariDataSource.setPassword("root"); - hikariDataSource.setConnectionTimeout(30 * 1000L); - hikariDataSource.setIdleTimeout(60 * 1000L); - hikariDataSource.setMaxLifetime(0L); - hikariDataSource.setMaximumPoolSize(50); - hikariDataSource.setMinimumIdle(1); - hikariDataSource.setReadOnly(true); - return hikariDataSource; - } - - private void assertDataSourceParameter(final DataSourceParameter actual) { - assertNotNull(actual); - assertThat(actual.getUrl(), is("jdbc:mysql://localhost:3306/demo_ds")); - assertThat(actual.getUsername(), is("root")); - assertThat(actual.getPassword(), is("root")); - assertThat(actual.getConnectionTimeoutMilliseconds(), is(30 * 1000L)); - assertThat(actual.getIdleTimeoutMilliseconds(), is(60 * 1000L)); - assertThat(actual.getMaxLifetimeMilliseconds(), is(0L)); - assertThat(actual.getMaintenanceIntervalMilliseconds(), is(30 * 1000L)); - assertThat(actual.getMaxPoolSize(), is(50)); - assertThat(actual.getMinPoolSize(), is(1)); - assertTrue(actual.isReadOnly()); - } }