未验证 提交 40d1344e 编写于 作者: J Juan Pan(Trista) 提交者: GitHub

Merge pull request #7260 from terrymanu/dev

Rename DataSourceParameterConverter
...@@ -35,7 +35,7 @@ import org.apache.shardingsphere.proxy.backend.response.query.QueryData; ...@@ -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.response.update.UpdateResponse;
import org.apache.shardingsphere.proxy.backend.schema.ProxySchemaContexts; import org.apache.shardingsphere.proxy.backend.schema.ProxySchemaContexts;
import org.apache.shardingsphere.proxy.backend.text.TextProtocolBackendHandler; 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.config.yaml.YamlDataSourceParameter;
import org.apache.shardingsphere.proxy.convert.CreateDataSourcesStatementContextConverter; import org.apache.shardingsphere.proxy.convert.CreateDataSourcesStatementContextConverter;
import org.apache.shardingsphere.rdl.parser.binder.context.CreateDataSourcesStatementContext; import org.apache.shardingsphere.rdl.parser.binder.context.CreateDataSourcesStatementContext;
...@@ -99,7 +99,8 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler { ...@@ -99,7 +99,8 @@ public final class RDLBackendHandler implements TextProtocolBackendHandler {
private BackendResponse execute(final CreateDataSourcesStatementContext context) { private BackendResponse execute(final CreateDataSourcesStatementContext context) {
Map<String, YamlDataSourceParameter> parameters = new CreateDataSourcesStatementContextConverter().convert(context); Map<String, YamlDataSourceParameter> parameters = new CreateDataSourcesStatementContextConverter().convert(context);
Map<String, DataSourceConfiguration> dataSources = DataSourceConverter.getDataSourceConfigurationMap(DataSourceConverter.getDataSourceParameterMap2(parameters)); Map<String, DataSourceConfiguration> dataSources = DataSourceParameterConverter.getDataSourceConfigurationMap(
DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(parameters));
// TODO Need to get the executed feedback from registry center for returning. // TODO Need to get the executed feedback from registry center for returning.
ShardingSphereEventBus.getInstance().post(new DataSourceEvent(backendConnection.getSchema(), dataSources)); ShardingSphereEventBus.getInstance().post(new DataSourceEvent(backendConnection.getSchema(), dataSources));
UpdateResponse result = new UpdateResponse(); UpdateResponse result = new UpdateResponse();
......
...@@ -28,7 +28,7 @@ import org.apache.shardingsphere.governance.core.common.yaml.swapper.GovernanceC ...@@ -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.governance.core.facade.GovernanceFacade;
import org.apache.shardingsphere.proxy.config.ProxyConfiguration; import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration; 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.YamlProxyRuleConfiguration;
import org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration; import org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration;
...@@ -77,7 +77,8 @@ public final class GovernanceBootstrap { ...@@ -77,7 +77,8 @@ public final class GovernanceBootstrap {
private Map<String, Map<String, DataSourceConfiguration>> getDataSourceConfigurationMap(final Map<String, YamlProxyRuleConfiguration> ruleConfigs) { private Map<String, Map<String, DataSourceConfiguration>> getDataSourceConfigurationMap(final Map<String, YamlProxyRuleConfiguration> ruleConfigs) {
Map<String, Map<String, DataSourceConfiguration>> result = new LinkedHashMap<>(ruleConfigs.size(), 1); Map<String, Map<String, DataSourceConfiguration>> result = new LinkedHashMap<>(ruleConfigs.size(), 1);
for (Entry<String, YamlProxyRuleConfiguration> entry : ruleConfigs.entrySet()) { for (Entry<String, YamlProxyRuleConfiguration> 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; return result;
} }
...@@ -99,7 +100,7 @@ public final class GovernanceBootstrap { ...@@ -99,7 +100,7 @@ public final class GovernanceBootstrap {
private Map<String, Map<String, DataSourceParameter>> loadDataSourceParametersMap(final Collection<String> schemaNames) { private Map<String, Map<String, DataSourceParameter>> loadDataSourceParametersMap(final Collection<String> schemaNames) {
Map<String, Map<String, DataSourceParameter>> result = new LinkedHashMap<>(schemaNames.size(), 1); Map<String, Map<String, DataSourceParameter>> result = new LinkedHashMap<>(schemaNames.size(), 1);
for (String each : schemaNames) { for (String each : schemaNames) {
result.put(each, DataSourceConverter.getDataSourceParameterMap(governanceFacade.getConfigCenter().loadDataSourceConfigurations(each))); result.put(each, DataSourceParameterConverter.getDataSourceParameterMap(governanceFacade.getConfigCenter().loadDataSourceConfigurations(each)));
} }
return result; return result;
} }
......
...@@ -34,7 +34,7 @@ import java.util.stream.Collectors; ...@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
* Data source parameter converter. * Data source parameter converter.
*/ */
@NoArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class DataSourceConverter { public final class DataSourceParameterConverter {
/** /**
* Get data source parameter map. * Get data source parameter map.
...@@ -48,16 +48,31 @@ public final class DataSourceConverter { ...@@ -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 * @param dataSourceParameters yaml data source parameters
* @return data source parameter map * @return data source parameter map
*/ */
public static Map<String, DataSourceParameter> getDataSourceParameterMap2(final Map<String, YamlDataSourceParameter> dataSourceParameters) { public static Map<String, DataSourceParameter> getDataSourceParameterMapFromYamlConfiguration(final Map<String, YamlDataSourceParameter> dataSourceParameters) {
return dataSourceParameters.entrySet().stream() return dataSourceParameters.entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, entry -> createDataSourceParameter(entry.getValue()), (oldVal, currVal) -> oldVal, LinkedHashMap::new)); .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) { private static DataSourceParameter createDataSourceParameter(final YamlDataSourceParameter yamlDataSourceParameter) {
DataSourceParameter result = new DataSourceParameter(); DataSourceParameter result = new DataSourceParameter();
result.setConnectionTimeoutMilliseconds(yamlDataSourceParameter.getConnectionTimeoutMilliseconds()); result.setConnectionTimeoutMilliseconds(yamlDataSourceParameter.getConnectionTimeoutMilliseconds());
...@@ -73,21 +88,6 @@ public final class DataSourceConverter { ...@@ -73,21 +88,6 @@ public final class DataSourceConverter {
return result; 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) { private static void bindSynonym(final DataSourceConfiguration dataSourceConfiguration) {
dataSourceConfiguration.addPropertySynonym("url", "jdbcUrl"); dataSourceConfiguration.addPropertySynonym("url", "jdbcUrl");
dataSourceConfiguration.addPropertySynonym("user", "username"); dataSourceConfiguration.addPropertySynonym("user", "username");
...@@ -99,7 +99,7 @@ public final class DataSourceConverter { ...@@ -99,7 +99,7 @@ public final class DataSourceConverter {
/** /**
* Get data source configuration map. * Get data source configuration map.
* *
* @param dataSourceParameterMap data source map * @param dataSourceParameterMap data source parameter map
* @return data source configuration map * @return data source configuration map
*/ */
public static Map<String, DataSourceConfiguration> getDataSourceConfigurationMap(final Map<String, DataSourceParameter> dataSourceParameterMap) { public static Map<String, DataSourceConfiguration> getDataSourceConfigurationMap(final Map<String, DataSourceParameter> dataSourceParameterMap) {
......
...@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper ...@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
import org.apache.shardingsphere.infra.context.schema.DataSourceParameter; import org.apache.shardingsphere.infra.context.schema.DataSourceParameter;
import org.apache.shardingsphere.proxy.config.ProxyConfiguration; import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration; 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.YamlProxyRuleConfiguration;
import java.util.Collection; import java.util.Collection;
...@@ -58,6 +58,7 @@ public final class YamlProxyConfigurationSwapper { ...@@ -58,6 +58,7 @@ public final class YamlProxyConfigurationSwapper {
} }
private Map<String, Map<String, DataSourceParameter>> getDataSourceParametersMap(final Map<String, YamlProxyRuleConfiguration> yamlRuleConfigurations) { private Map<String, Map<String, DataSourceParameter>> getDataSourceParametersMap(final Map<String, YamlProxyRuleConfiguration> 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())));
} }
} }
...@@ -22,16 +22,13 @@ import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration ...@@ -22,16 +22,13 @@ import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration
import org.apache.shardingsphere.infra.context.schema.DataSourceParameter; import org.apache.shardingsphere.infra.context.schema.DataSourceParameter;
import org.junit.Test; import org.junit.Test;
import javax.sql.DataSource;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
public final class DataSourceConverterTest { public final class DataSourceParameterConverterTest {
@Test @Test
public void assertGetDataSourceParameterMap() { public void assertGetDataSourceParameterMap() {
...@@ -42,7 +39,7 @@ public final class DataSourceConverterTest { ...@@ -42,7 +39,7 @@ public final class DataSourceConverterTest {
DataSourceConfiguration dataSourceConfiguration1 = new DataSourceConfiguration(HikariDataSource.class.getName()); DataSourceConfiguration dataSourceConfiguration1 = new DataSourceConfiguration(HikariDataSource.class.getName());
dataSourceConfiguration1.getProps().put("jdbcUrl", "jdbc:mysql://localhost:3306/demo_ds_1"); dataSourceConfiguration1.getProps().put("jdbcUrl", "jdbc:mysql://localhost:3306/demo_ds_1");
dataSourceConfigurationMap.put("ds_1", dataSourceConfiguration1); dataSourceConfigurationMap.put("ds_1", dataSourceConfiguration1);
Map<String, DataSourceParameter> actual = DataSourceConverter.getDataSourceParameterMap(dataSourceConfigurationMap); Map<String, DataSourceParameter> actual = DataSourceParameterConverter.getDataSourceParameterMap(dataSourceConfigurationMap);
assertThat(actual.size(), is(2)); assertThat(actual.size(), is(2));
assertThat(actual.get("ds_0").getUrl(), is("jdbc:mysql://localhost:3306/demo_ds_0")); 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")); assertThat(actual.get("ds_1").getUrl(), is("jdbc:mysql://localhost:3306/demo_ds_1"));
...@@ -53,7 +50,7 @@ public final class DataSourceConverterTest { ...@@ -53,7 +50,7 @@ public final class DataSourceConverterTest {
Map<String, DataSourceParameter> dataSourceParameterMap = new HashMap<>(2, 1); Map<String, DataSourceParameter> dataSourceParameterMap = new HashMap<>(2, 1);
dataSourceParameterMap.put("ds_0", crateDataSourceParameter()); dataSourceParameterMap.put("ds_0", crateDataSourceParameter());
dataSourceParameterMap.put("ds_1", crateDataSourceParameter()); dataSourceParameterMap.put("ds_1", crateDataSourceParameter());
Map<String, DataSourceConfiguration> actual = DataSourceConverter.getDataSourceConfigurationMap(dataSourceParameterMap); Map<String, DataSourceConfiguration> actual = DataSourceParameterConverter.getDataSourceConfigurationMap(dataSourceParameterMap);
assertThat(actual.size(), is(2)); assertThat(actual.size(), is(2));
assertParameter(actual.get("ds_0")); assertParameter(actual.get("ds_0"));
assertParameter(actual.get("ds_1")); assertParameter(actual.get("ds_1"));
...@@ -79,32 +76,4 @@ public final class DataSourceConverterTest { ...@@ -79,32 +76,4 @@ public final class DataSourceConverterTest {
assertThat(props.get("username"), is("root")); assertThat(props.get("username"), is("root"));
assertThat(props.get("password"), 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());
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册