This is an automated email from the ASF dual-hosted git repository.
qiulu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 6e1edab Refactor YAML data source configuration swapper (#9488)
6e1edab is described below
commit 6e1edabaf72febc11bafa03ddd240b808e485abc
Author: Haoran Meng <[email protected]>
AuthorDate: Wed Feb 24 15:45:41 2021 +0800
Refactor YAML data source configuration swapper (#9488)
---
.../yaml/config/YamlConfigurationConverter.java | 9 +++---
.../YamlDataSourceRuleConfigurationWrap.java | 3 +-
.../yaml/config/YamlDataSourceConfiguration.java | 36 ----------------------
.../YamlDataSourceConfigurationSwapper.java | 30 +-----------------
.../YamlDataSourceConfigurationSwapperTest.java | 25 +++++++--------
.../ShardingSphereJDBCDataSourceConfiguration.java | 2 +-
.../shardingsphere/scaling/core/util/JDBCUtil.java | 4 +--
.../scaling/core/util/JobConfigurationUtil.java | 5 ++-
.../scaling/core/util/JDBCUtilTest.java | 6 ++--
9 files changed, 26 insertions(+), 94 deletions(-)
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
index 74e6b98..23e0e27 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlConfigurationConverter.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration
import
org.apache.shardingsphere.infra.metadata.auth.builtin.yaml.config.YamlUserRuleConfiguration;
import
org.apache.shardingsphere.infra.metadata.auth.builtin.yaml.swapper.UserRuleYamlSwapper;
import
org.apache.shardingsphere.infra.metadata.auth.model.user.ShardingSphereUser;
-import org.apache.shardingsphere.infra.yaml.config.YamlDataSourceConfiguration;
import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
import
org.apache.shardingsphere.infra.yaml.swapper.YamlDataSourceConfigurationSwapper;
@@ -71,8 +70,8 @@ public final class YamlConfigurationConverter {
* @param yamlDataSourceConfigs YAML data source configurations
* @return data source configurations
*/
- public static Map<String, DataSourceConfiguration>
convertDataSourceConfigurations(final Map<String, YamlDataSourceConfiguration>
yamlDataSourceConfigs) {
- return Maps.transformValues(yamlDataSourceConfigs, new
YamlDataSourceConfigurationSwapper()::swapToObject);
+ public static Map<String, DataSourceConfiguration>
convertDataSourceConfigurations(final Map<String, Map<String, Object>>
yamlDataSourceConfigs) {
+ return Maps.transformValues(yamlDataSourceConfigs, new
YamlDataSourceConfigurationSwapper()::swapToObjectFromMap);
}
/**
@@ -81,8 +80,8 @@ public final class YamlConfigurationConverter {
* @param yamlDataSources YAML data sources
* @return data sources
*/
- public static Map<String, DataSource> convertDataSources(final Map<String,
YamlDataSourceConfiguration> yamlDataSources) {
- return new
YamlDataSourceConfigurationSwapper().swapToDataSourcesFromYaml(yamlDataSources);
+ public static Map<String, DataSource> convertDataSources(final Map<String,
Map<String, Object>> yamlDataSources) {
+ return new
YamlDataSourceConfigurationSwapper().swapToDataSources(yamlDataSources);
}
/**
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlDataSourceRuleConfigurationWrap.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlDataSourceRuleConfigurationWrap.java
index 70b9a71..4bca368 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlDataSourceRuleConfigurationWrap.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlDataSourceRuleConfigurationWrap.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.governance.core.yaml.config;
import lombok.Getter;
import lombok.Setter;
import org.apache.shardingsphere.infra.yaml.config.YamlConfiguration;
-import org.apache.shardingsphere.infra.yaml.config.YamlDataSourceConfiguration;
import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
import java.util.Collection;
@@ -34,7 +33,7 @@ import java.util.Map;
@Setter
public final class YamlDataSourceRuleConfigurationWrap implements
YamlConfiguration {
- private Map<String, YamlDataSourceConfiguration> dataSources;
+ private Map<String, Map<String, Object>> dataSources;
private Collection<YamlRuleConfiguration> rules = new LinkedList<>();
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/YamlDataSourceConfiguration.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/YamlDataSourceConfiguration.java
deleted file mode 100644
index dfbf255..0000000
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/config/YamlDataSourceConfiguration.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.yaml.config;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Data source configuration for YAML.
- */
-@Getter
-@Setter
-public final class YamlDataSourceConfiguration implements YamlConfiguration {
-
- private String dataSourceClassName;
-
- private Map<String, Object> props = new HashMap<>();
-}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapper.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapper.java
index faee485..20269f3 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapper.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapper.java
@@ -21,7 +21,6 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
-import org.apache.shardingsphere.infra.yaml.config.YamlDataSourceConfiguration;
import javax.sql.DataSource;
import java.util.HashMap;
@@ -32,25 +31,10 @@ import java.util.stream.Collectors;
/**
* Yaml data source configuration swapper.
*/
-public final class YamlDataSourceConfigurationSwapper implements
YamlConfigurationSwapper<YamlDataSourceConfiguration, DataSourceConfiguration> {
+public final class YamlDataSourceConfigurationSwapper {
private static final String YAML_DATA_SOURCE_CLASS_NAME =
"dataSourceClassName";
- @Override
- public YamlDataSourceConfiguration swapToYamlConfiguration(final
DataSourceConfiguration config) {
- YamlDataSourceConfiguration result = new YamlDataSourceConfiguration();
- result.setDataSourceClassName(config.getDataSourceClassName());
- result.setProps(config.getProps());
- return result;
- }
-
- @Override
- public DataSourceConfiguration swapToObject(final
YamlDataSourceConfiguration yamlConfig) {
- DataSourceConfiguration result = new
DataSourceConfiguration(yamlConfig.getDataSourceClassName());
- result.getProps().putAll(yamlConfig.getProps());
- return result;
- }
-
/**
* Swap to data sources from YAML data sources.
*
@@ -80,18 +64,6 @@ public final class YamlDataSourceConfigurationSwapper
implements YamlConfigurati
}
/**
- * Swap to data sources from YAML data sources.
- *
- * @param yamlDataSources YAML data sources
- * @return data sources
- */
- public Map<String, DataSource> swapToDataSourcesFromYaml(final Map<String,
YamlDataSourceConfiguration> yamlDataSources) {
- Map<String, DataSourceConfiguration> dataSourceConfigMap =
yamlDataSources.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey, entry ->
swapToObject(entry.getValue())));
- return DataSourceConverter.getDataSourceMap(dataSourceConfigMap);
- }
-
- /**
* Swap to map from data source configuration.
*
* @param config data source configuration
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapperTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapperTest.java
index 45abdaa..cd93700 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapperTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/swapper/YamlDataSourceConfigurationSwapperTest.java
@@ -18,9 +18,11 @@
package org.apache.shardingsphere.infra.yaml.swapper;
import
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.yaml.config.YamlDataSourceConfiguration;
import org.junit.Test;
+import java.util.HashMap;
+import java.util.Map;
+
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -29,24 +31,23 @@ public final class YamlDataSourceConfigurationSwapperTest {
private final YamlDataSourceConfigurationSwapper
yamlDataSourceConfigurationSwapper = new YamlDataSourceConfigurationSwapper();
@Test
- public void assertSwapToYamlConfiguration() {
+ public void assertSwapToMap() {
DataSourceConfiguration dataSourceConfig = new
DataSourceConfiguration("xxx.jdbc.driver");
dataSourceConfig.getProps().put("url", "xx:xxx");
dataSourceConfig.getProps().put("username", "root");
- YamlDataSourceConfiguration actual =
yamlDataSourceConfigurationSwapper.swapToYamlConfiguration(dataSourceConfig);
- assertThat(actual.getDataSourceClassName(), is("xxx.jdbc.driver"));
- assertThat(actual.getProps().size(), is(2));
- assertThat(actual.getProps().get("url").toString(), is("xx:xxx"));
- assertThat(actual.getProps().get("username").toString(), is("root"));
+ Map<String, Object> actual =
yamlDataSourceConfigurationSwapper.swapToMap(dataSourceConfig);
+ assertThat(actual.get("dataSourceClassName"), is("xxx.jdbc.driver"));
+ assertThat(actual.get("url").toString(), is("xx:xxx"));
+ assertThat(actual.get("username").toString(), is("root"));
}
@Test
public void assertSwapToConfiguration() {
- YamlDataSourceConfiguration yamlConfig = new
YamlDataSourceConfiguration();
- yamlConfig.setDataSourceClassName("xxx.jdbc.driver");
- yamlConfig.getProps().put("url", "xx:xxx");
- yamlConfig.getProps().put("username", "root");
- DataSourceConfiguration actual =
yamlDataSourceConfigurationSwapper.swapToObject(yamlConfig);
+ Map<String, Object> yamlConfig = new HashMap<>(3, 1);
+ yamlConfig.put("dataSourceClassName", "xxx.jdbc.driver");
+ yamlConfig.put("url", "xx:xxx");
+ yamlConfig.put("username", "root");
+ DataSourceConfiguration actual =
yamlDataSourceConfigurationSwapper.swapToObjectFromMap(yamlConfig);
assertThat(actual.getDataSourceClassName(), is("xxx.jdbc.driver"));
assertThat(actual.getProps().size(), is(2));
assertThat(actual.getProps().get("url").toString(), is("xx:xxx"));
diff --git
a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/config/datasource/ShardingSphereJDBCDataSourceConfiguration.java
b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/config/datasource/ShardingSphereJDBCDataSourceConfiguration.java
index bbf2777..cc74674 100644
---
a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/config/datasource/ShardingSphereJDBCDataSourceConfiguration.java
+++
b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/config/datasource/ShardingSphereJDBCDataSourceConfiguration.java
@@ -52,7 +52,7 @@ public final class ShardingSphereJDBCDataSourceConfiguration
implements ScalingD
public ShardingSphereJDBCDataSourceConfiguration(final String parameter) {
this.parameter = parameter;
dataSourceRuleConfig = YamlEngine.unmarshal(parameter,
YamlDataSourceRuleConfigurationWrap.class);
- Map<String, Object> props =
dataSourceRuleConfig.getDataSources().values().iterator().next().getProps();
+ Map<String, Object> props =
dataSourceRuleConfig.getDataSources().values().iterator().next();
databaseType =
DatabaseTypeRegistry.getDatabaseTypeByURL(props.getOrDefault("url",
props.get("jdbcUrl")).toString());
}
diff --git
a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JDBCUtil.java
b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JDBCUtil.java
index 0eb40d3..53242ee 100644
---
a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JDBCUtil.java
+++
b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JDBCUtil.java
@@ -53,8 +53,8 @@ public final class JDBCUtil {
private static void append(final ShardingSphereJDBCDataSourceConfiguration
dataSourceConfig, final Map<String, String> parameters) {
dataSourceConfig.getDataSourceRuleConfig().getDataSources()
.forEach((key, value) -> {
- String jdbcUrlKey = value.getProps().containsKey("url") ?
"url" : "jdbcUrl";
- value.getProps().replace(jdbcUrlKey,
append(value.getProps().get(jdbcUrlKey).toString(), parameters));
+ String jdbcUrlKey = value.containsKey("url") ? "url" :
"jdbcUrl";
+ value.replace(jdbcUrlKey,
append(value.get(jdbcUrlKey).toString(), parameters));
});
}
diff --git
a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JobConfigurationUtil.java
b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JobConfigurationUtil.java
index db98375..e034c16 100644
---
a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JobConfigurationUtil.java
+++
b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/util/JobConfigurationUtil.java
@@ -27,7 +27,6 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import
org.apache.shardingsphere.governance.core.yaml.config.YamlConfigurationConverter;
-import org.apache.shardingsphere.infra.yaml.config.YamlDataSourceConfiguration;
import
org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceRuleConfigurationWrap;
import
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
@@ -142,10 +141,10 @@ public final class JobConfigurationUtil {
return result;
}
- private static Map<String, String> getDataSourceUrlMap(final Map<String,
YamlDataSourceConfiguration> dataSources) {
+ private static Map<String, String> getDataSourceUrlMap(final Map<String,
Map<String, Object>> dataSources) {
return dataSources.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> {
- JdbcUri uri = new
JdbcUri(entry.getValue().getProps().getOrDefault("url",
entry.getValue().getProps().get("jdbcUrl")).toString());
+ JdbcUri uri = new
JdbcUri(entry.getValue().getOrDefault("url",
entry.getValue().get("jdbcUrl")).toString());
return String.format("%s/%s", uri.getHost(),
uri.getDatabase());
}));
}
diff --git
a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/util/JDBCUtilTest.java
b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/util/JDBCUtilTest.java
index 6753df7..09fd32f 100644
---
a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/util/JDBCUtilTest.java
+++
b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/util/JDBCUtilTest.java
@@ -51,11 +51,9 @@ public final class JDBCUtilTest {
return "dataSources:\n"
+ " ds_1:\n"
+ " dataSourceClassName:
com.zaxxer.hikari.HikariDataSource\n"
- + " props:\n"
- + " url:
jdbc:mysql://192.168.0.2:3306/scaling?serverTimezone=UTC&useSSL=false\n"
+ + " url:
jdbc:mysql://192.168.0.2:3306/scaling?serverTimezone=UTC&useSSL=false\n"
+ " ds_0:\n"
+ " dataSourceClassName:
com.zaxxer.hikari.HikariDataSource\n"
- + " props:\n"
- + " url:
jdbc:mysql://192.168.0.1:3306/scaling?serverTimezone=UTC&useSSL=false\n";
+ + " url:
jdbc:mysql://192.168.0.1:3306/scaling?serverTimezone=UTC&useSSL=false\n";
}
}