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";
     }
 }

Reply via email to