This is an automated email from the ASF dual-hosted git repository.

panjuan 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 d764b37  Decouple YamlProxyConfigurationSwapper and embedded Map 
(#15222)
d764b37 is described below

commit d764b371fba090fca0a1fdf8f5f92bdfca842da3
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 31 12:58:14 2022 +0800

    Decouple YamlProxyConfigurationSwapper and embedded Map (#15222)
---
 .../swapper/YamlProxyConfigurationSwapper.java     | 53 ++++++++--------------
 .../YamlProxyDataSourceConfigurationSwapper.java   | 49 ++++++++++++++++++++
 2 files changed, 67 insertions(+), 35 deletions(-)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
index 52b4ee5..df37412 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyConfigurationSwapper.java
@@ -19,9 +19,7 @@ package org.apache.shardingsphere.proxy.config.yaml.swapper;
 
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.schema.impl.DataSourceGeneratedSchemaConfiguration;
-import 
org.apache.shardingsphere.infra.datasource.config.ConnectionConfiguration;
 import 
org.apache.shardingsphere.infra.datasource.config.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.datasource.config.PoolConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.ProxyGlobalConfiguration;
@@ -33,14 +31,16 @@ import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.stream.Collectors;
 
 /**
  * YAML proxy configuration swapper.
  */
 public final class YamlProxyConfigurationSwapper {
     
+    private final YamlProxyDataSourceConfigurationSwapper 
dataSourceConfigSwapper = new YamlProxyDataSourceConfigurationSwapper();
+    
+    private final YamlRuleConfigurationSwapperEngine ruleConfigSwapperEngine = 
new YamlRuleConfigurationSwapperEngine();
+    
     /**
      * Swap YAML proxy configuration to proxy configuration.
      * 
@@ -48,44 +48,27 @@ public final class YamlProxyConfigurationSwapper {
      * @return proxy configuration
      */
     public ProxyConfiguration swap(final YamlProxyConfiguration yamlConfig) {
-        Map<String, Map<String, DataSourceConfiguration>> 
schemaDataSourceConfigs = 
getDataSourceConfigurationMap(yamlConfig.getSchemaConfigurations());
-        Map<String, Collection<RuleConfiguration>> schemaConfigs = 
getSchemaConfigurations(yamlConfig.getSchemaConfigurations());
-        Map<String, DataSourceGeneratedSchemaConfiguration> 
schemaConfigurations = new LinkedHashMap<>(schemaDataSourceConfigs.size(), 1);
-        for (Entry<String, Map<String, DataSourceConfiguration>> entry : 
schemaDataSourceConfigs.entrySet()) {
-            schemaConfigurations.put(entry.getKey(), new 
DataSourceGeneratedSchemaConfiguration(entry.getValue(), 
schemaConfigs.get(entry.getKey())));
-        }
-        Collection<RuleConfiguration> globalRules = new 
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(yamlConfig.getServerConfiguration().getRules());
-        Properties props = yamlConfig.getServerConfiguration().getProps();
-        return new ProxyConfiguration(schemaConfigurations, new 
ProxyGlobalConfiguration(globalRules, props, 
yamlConfig.getServerConfiguration().getLabels()));
+        Map<String, DataSourceGeneratedSchemaConfiguration> schemaConfigs = 
swapSchemaConfigurations(yamlConfig);
+        ProxyGlobalConfiguration globalConfig = new 
ProxyGlobalConfiguration(ruleConfigSwapperEngine.swapToRuleConfigurations(yamlConfig.getServerConfiguration().getRules()),
 
+                yamlConfig.getServerConfiguration().getProps(), 
yamlConfig.getServerConfiguration().getLabels());
+        return new ProxyConfiguration(schemaConfigs, globalConfig);
     }
     
-    private Map<String, Map<String, DataSourceConfiguration>> 
getDataSourceConfigurationMap(final Map<String, YamlProxySchemaConfiguration> 
yamlSchemaConfigs) {
-        Map<String, Map<String, DataSourceConfiguration>> result = new 
LinkedHashMap<>(yamlSchemaConfigs.size(), 1);
-        for (Entry<String, YamlProxySchemaConfiguration> entry : 
yamlSchemaConfigs.entrySet()) {
-            result.put(entry.getKey(), 
getDataSourceConfigurations(entry.getValue().getDataSources()));
+    private Map<String, DataSourceGeneratedSchemaConfiguration> 
swapSchemaConfigurations(final YamlProxyConfiguration yamlConfig) {
+        Map<String, DataSourceGeneratedSchemaConfiguration> result = new 
LinkedHashMap<>(yamlConfig.getSchemaConfigurations().size(), 1);
+        for (Entry<String, YamlProxySchemaConfiguration> entry : 
yamlConfig.getSchemaConfigurations().entrySet()) {
+            Map<String, DataSourceConfiguration> schemaDataSourceConfigs = 
swapDataSourceConfigurations(entry.getValue().getDataSources());
+            Collection<RuleConfiguration> schemaRuleConfigs = 
ruleConfigSwapperEngine.swapToRuleConfigurations(entry.getValue().getRules());
+            result.put(entry.getKey(), new 
DataSourceGeneratedSchemaConfiguration(schemaDataSourceConfigs, 
schemaRuleConfigs));
         }
         return result;
     }
     
-    private Map<String, DataSourceConfiguration> 
getDataSourceConfigurations(final Map<String, YamlProxyDataSourceConfiguration> 
yamlDataSourceConfigs) {
-        Map<String, DataSourceConfiguration> result = new 
LinkedHashMap<>(yamlDataSourceConfigs.size(), 1);
-        for (Entry<String, YamlProxyDataSourceConfiguration> entry : 
yamlDataSourceConfigs.entrySet()) {
-            result.put(entry.getKey(), 
getDataSourceConfiguration(entry.getValue()));
+    private Map<String, DataSourceConfiguration> 
swapDataSourceConfigurations(final Map<String, 
YamlProxyDataSourceConfiguration> yamlConfigs) {
+        Map<String, DataSourceConfiguration> result = new 
LinkedHashMap<>(yamlConfigs.size(), 1);
+        for (Entry<String, YamlProxyDataSourceConfiguration> entry : 
yamlConfigs.entrySet()) {
+            result.put(entry.getKey(), 
dataSourceConfigSwapper.swap(entry.getValue()));
         }
         return result;
     }
-    
-    private DataSourceConfiguration getDataSourceConfiguration(final 
YamlProxyDataSourceConfiguration yamlDataSourceConfig) {
-        ConnectionConfiguration connectionConfig = new 
ConnectionConfiguration(yamlDataSourceConfig.getUrl(), 
yamlDataSourceConfig.getUsername(), yamlDataSourceConfig.getPassword());
-        PoolConfiguration poolConfig = new 
PoolConfiguration(yamlDataSourceConfig.getConnectionTimeoutMilliseconds(), 
yamlDataSourceConfig.getIdleTimeoutMilliseconds(),
-                yamlDataSourceConfig.getMaxLifetimeMilliseconds(), 
yamlDataSourceConfig.getMaxPoolSize(), yamlDataSourceConfig.getMinPoolSize(), 
yamlDataSourceConfig.getReadOnly(),
-                yamlDataSourceConfig.getCustomPoolProps());
-        return new DataSourceConfiguration(connectionConfig, poolConfig);
-    }
-    
-    private Map<String, Collection<RuleConfiguration>> 
getSchemaConfigurations(final Map<String, YamlProxySchemaConfiguration> 
yamlSchemaConfigs) {
-        YamlRuleConfigurationSwapperEngine swapperEngine = new 
YamlRuleConfigurationSwapperEngine();
-        return 
yamlSchemaConfigs.entrySet().stream().collect(Collectors.toMap(Entry::getKey, 
-            entry -> 
swapperEngine.swapToRuleConfigurations(entry.getValue().getRules()), (oldValue, 
currentValue) -> oldValue, LinkedHashMap::new));
-    }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyDataSourceConfigurationSwapper.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyDataSourceConfigurationSwapper.java
new file mode 100644
index 0000000..ad9916a
--- /dev/null
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/config/yaml/swapper/YamlProxyDataSourceConfigurationSwapper.java
@@ -0,0 +1,49 @@
+/*
+ * 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.proxy.config.yaml.swapper;
+
+import 
org.apache.shardingsphere.infra.datasource.config.ConnectionConfiguration;
+import 
org.apache.shardingsphere.infra.datasource.config.DataSourceConfiguration;
+import org.apache.shardingsphere.infra.datasource.config.PoolConfiguration;
+import 
org.apache.shardingsphere.proxy.config.yaml.YamlProxyDataSourceConfiguration;
+
+/**
+ * YAML proxy data source configuration swapper.
+ */
+public final class YamlProxyDataSourceConfigurationSwapper {
+    
+    /**
+     * Swap YAML proxy data source configuration to data source configuration.
+     * 
+     * @param yamlConfig YAML proxy data source configuration
+     * @return data source configuration
+     */
+    public DataSourceConfiguration swap(final YamlProxyDataSourceConfiguration 
yamlConfig) {
+        return new 
DataSourceConfiguration(swapConnectionConfiguration(yamlConfig), 
swapPoolConfiguration(yamlConfig));
+    }
+    
+    private ConnectionConfiguration swapConnectionConfiguration(final 
YamlProxyDataSourceConfiguration yamlConfig) {
+        return new ConnectionConfiguration(yamlConfig.getUrl(), 
yamlConfig.getUsername(), yamlConfig.getPassword());
+    }
+    
+    private PoolConfiguration swapPoolConfiguration(final 
YamlProxyDataSourceConfiguration yamlConfig) {
+        return new 
PoolConfiguration(yamlConfig.getConnectionTimeoutMilliseconds(), 
yamlConfig.getIdleTimeoutMilliseconds(),
+                yamlConfig.getMaxLifetimeMilliseconds(), 
yamlConfig.getMaxPoolSize(), yamlConfig.getMinPoolSize(), 
yamlConfig.getReadOnly(),
+                yamlConfig.getCustomPoolProps());
+    }
+}

Reply via email to