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());
+ }
+}