You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2021/08/17 13:23:10 UTC
[shardingsphere] branch master updated: Pull up common logic to
AbstractBootstrapInitializer (#11864)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 70f8fc7 Pull up common logic to AbstractBootstrapInitializer (#11864)
70f8fc7 is described below
commit 70f8fc75d8e43961eb8de6ffd591194462be75e7
Author: Liang Zhang <te...@163.com>
AuthorDate: Tue Aug 17 21:22:37 2021 +0800
Pull up common logic to AbstractBootstrapInitializer (#11864)
* Refactor AbstractBootstrapInitializer
* Refactor AbstractBootstrapInitializer
---
.../governance/context/ClusterContextManager.java | 1 +
.../initializer/BootstrapInitializerFactory.java | 4 +-
.../impl/AbstractBootstrapInitializer.java | 90 ++++++----------------
.../impl/ClusterBootstrapInitializer.java | 59 +-------------
.../impl/MemoryBootstrapInitializer.java | 34 +-------
.../impl/StandaloneBootstrapInitializer.java | 39 +---------
6 files changed, 36 insertions(+), 191 deletions(-)
diff --git a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/ClusterContextManager.java b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/ClusterContextManager.java
index bb60107..dfe4e36 100644
--- a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/ClusterContextManager.java
+++ b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/ClusterContextManager.java
@@ -103,6 +103,7 @@ public final class ClusterContextManager implements ContextManager {
disableDataSources();
persistMetaData();
lock = createShardingSphereLock(registryCenter.getRepository());
+ registryCenter.onlineInstance(metaDataContexts.getAllSchemaNames());
}
private void disableDataSources() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializerFactory.java
index 8e19870..1fac766 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializerFactory.java
@@ -42,10 +42,10 @@ public final class BootstrapInitializerFactory {
public static BootstrapInitializer newInstance(final ShardingSphereMode mode, final boolean overwrite) {
// TODO split to pluggable SPI
if (mode instanceof StandaloneMode) {
- return new StandaloneBootstrapInitializer(mode, overwrite);
+ return new StandaloneBootstrapInitializer(mode);
}
if (mode instanceof ClusterMode) {
- return new ClusterBootstrapInitializer(mode, overwrite);
+ return new ClusterBootstrapInitializer(mode);
}
return new MemoryBootstrapInitializer(mode);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
index d7300f0..7856ef0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
@@ -21,21 +21,16 @@ import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLServerInfo;
import org.apache.shardingsphere.db.protocol.postgresql.constant.PostgreSQLServerInfo;
-import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.config.condition.PreConditionRuleConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
import org.apache.shardingsphere.infra.context.manager.ContextManager;
+import org.apache.shardingsphere.infra.context.manager.ContextManagerBuilder;
import org.apache.shardingsphere.infra.mode.ShardingSphereMode;
import org.apache.shardingsphere.infra.persist.DistMetaDataPersistService;
-import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRuleConfiguration;
-import org.apache.shardingsphere.infra.yaml.config.swapper.YamlRuleConfigurationSwapperEngine;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
-import org.apache.shardingsphere.proxy.config.yaml.YamlProxyRuleConfiguration;
-import org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration;
import org.apache.shardingsphere.proxy.config.yaml.swapper.YamlProxyConfigurationSwapper;
import org.apache.shardingsphere.proxy.database.DatabaseServerInfo;
import org.apache.shardingsphere.proxy.initializer.BootstrapInitializer;
@@ -43,13 +38,10 @@ import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
import javax.sql.DataSource;
import java.sql.SQLException;
-import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
-import java.util.Properties;
-import java.util.stream.Collectors;
/**
* Abstract bootstrap initializer.
@@ -70,14 +62,32 @@ public abstract class AbstractBootstrapInitializer implements BootstrapInitializ
@Override
public final void init(final YamlProxyConfiguration yamlConfig) throws SQLException {
ProxyConfiguration proxyConfig = new YamlProxyConfigurationSwapper().swap(yamlConfig);
- ContextManager contextManager = createContextManager(mode, proxyConfig);
+ boolean isOverwrite = null == yamlConfig.getServerConfiguration().getMode() || yamlConfig.getServerConfiguration().getMode().isOverwrite();
+ ContextManager contextManager = createContextManagerBuilder().build(
+ mode, getDataSourcesMap(proxyConfig.getSchemaDataSources()), proxyConfig.getSchemaRules(), proxyConfig.getGlobalRules(), proxyConfig.getProps(), isOverwrite);
ProxyContext.getInstance().init(contextManager);
setDatabaseServerInfo();
initScalingInternal(yamlConfig);
- postInit(yamlConfig);
}
- protected abstract ContextManager createContextManager(ShardingSphereMode mode, ProxyConfiguration proxyConfig) throws SQLException;
+ protected abstract ContextManagerBuilder createContextManagerBuilder();
+
+ // TODO add DataSourceParameter param to ContextManagerBuilder to avoid re-build data source
+ private Map<String, Map<String, DataSource>> getDataSourcesMap(final Map<String, Map<String, DataSourceParameter>> dataSourceParametersMap) {
+ Map<String, Map<String, DataSource>> result = new LinkedHashMap<>(dataSourceParametersMap.size(), 1);
+ for (Entry<String, Map<String, DataSourceParameter>> entry : dataSourceParametersMap.entrySet()) {
+ result.put(entry.getKey(), getDataSourceMap(DataSourceParameterConverter.getDataSourceConfigurationMap(entry.getValue())));
+ }
+ return result;
+ }
+
+ private Map<String, DataSource> getDataSourceMap(final Map<String, DataSourceConfiguration> dataSourceConfigMap) {
+ Map<String, DataSource> result = new LinkedHashMap<>(dataSourceConfigMap.size(), 1);
+ for (Entry<String, DataSourceConfiguration> entry : dataSourceConfigMap.entrySet()) {
+ result.put(entry.getKey(), entry.getValue().createDataSource());
+ }
+ return result;
+ }
private void setDatabaseServerInfo() {
findBackendDataSource().ifPresent(dataSourceSample -> {
@@ -118,60 +128,4 @@ public abstract class AbstractBootstrapInitializer implements BootstrapInitializ
}
protected abstract void initScaling(YamlProxyConfiguration yamlConfig);
-
- protected final void persistConfigurations(final YamlProxyConfiguration yamlConfig, final boolean overwrite) {
- YamlProxyServerConfiguration serverConfig = yamlConfig.getServerConfiguration();
- Map<String, YamlProxyRuleConfiguration> ruleConfigs = yamlConfig.getRuleConfigurations();
- if (!isEmptyLocalConfiguration(serverConfig, ruleConfigs) && null != distMetaDataPersistService) {
- distMetaDataPersistService.persistConfigurations(getDataSourceConfigurationMap(ruleConfigs),
- getSchemaRuleConfigurations(ruleConfigs), getGlobalRuleConfigurations(serverConfig.getRules()), serverConfig.getProps(), overwrite);
- }
- }
-
- private boolean isEmptyLocalConfiguration(final YamlProxyServerConfiguration serverConfig, final Map<String, YamlProxyRuleConfiguration> ruleConfigs) {
- return ruleConfigs.isEmpty() && serverConfig.getRules().isEmpty() && serverConfig.getProps().isEmpty();
- }
-
- private Map<String, Map<String, DataSourceConfiguration>> getDataSourceConfigurationMap(final Map<String, YamlProxyRuleConfiguration> ruleConfigs) {
- Map<String, Map<String, DataSourceConfiguration>> result = new LinkedHashMap<>(ruleConfigs.size(), 1);
- for (Entry<String, YamlProxyRuleConfiguration> entry : ruleConfigs.entrySet()) {
- result.put(entry.getKey(),
- DataSourceParameterConverter.getDataSourceConfigurationMap(DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(entry.getValue().getDataSources())));
- }
- return result;
- }
-
- private Map<String, Collection<RuleConfiguration>> getSchemaRuleConfigurations(final Map<String, YamlProxyRuleConfiguration> yamlRuleConfigs) {
- YamlRuleConfigurationSwapperEngine swapperEngine = new YamlRuleConfigurationSwapperEngine();
- return yamlRuleConfigs.entrySet().stream().collect(Collectors.toMap(Entry::getKey,
- entry -> swapperEngine.swapToRuleConfigurations(entry.getValue().getRules()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
- }
-
- private Collection<RuleConfiguration> getGlobalRuleConfigurations(final Collection<YamlRuleConfiguration> globalRuleConfigs) {
- return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(globalRuleConfigs).stream().filter(
- each -> !(each instanceof PreConditionRuleConfiguration)).collect(Collectors.toList());
- }
-
- protected final ProxyConfiguration loadProxyConfiguration() {
- Collection<String> schemaNames = distMetaDataPersistService.getSchemaMetaDataService().loadAllNames();
- Map<String, Map<String, DataSourceParameter>> schemaDataSources = loadDataSourceParametersMap(schemaNames);
- Map<String, Collection<RuleConfiguration>> schemaRuleConfigs = loadSchemaRules(schemaNames);
- Collection<RuleConfiguration> globalRuleConfigs = distMetaDataPersistService.getGlobalRuleService().load();
- Properties props = distMetaDataPersistService.getPropsService().load();
- return new ProxyConfiguration(schemaDataSources, schemaRuleConfigs, globalRuleConfigs, props);
- }
-
- private Map<String, Map<String, DataSourceParameter>> loadDataSourceParametersMap(final Collection<String> schemaNames) {
- return schemaNames.stream().collect(Collectors.toMap(each -> each,
- each -> DataSourceParameterConverter.getDataSourceParameterMap(distMetaDataPersistService.getDataSourceService()
- .load(each)), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
- }
-
- private Map<String, Collection<RuleConfiguration>> loadSchemaRules(final Collection<String> schemaNames) {
- return schemaNames.stream().collect(Collectors.toMap(
- each -> each, each -> distMetaDataPersistService.getSchemaRuleService().load(each), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
- }
-
- protected void postInit(final YamlProxyConfiguration yamlConfig) {
- }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/ClusterBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/ClusterBootstrapInitializer.java
index abd7587..5b81806 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/ClusterBootstrapInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/ClusterBootstrapInitializer.java
@@ -17,71 +17,30 @@
package org.apache.shardingsphere.proxy.initializer.impl;
-import com.google.common.base.Preconditions;
import org.apache.shardingsphere.governance.context.ClusterContextManagerBuilder;
-import org.apache.shardingsphere.governance.core.registry.RegistryCenter;
-import org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
-import org.apache.shardingsphere.infra.context.manager.ContextManager;
+import org.apache.shardingsphere.infra.context.manager.ContextManagerBuilder;
import org.apache.shardingsphere.infra.mode.ShardingSphereMode;
import org.apache.shardingsphere.infra.yaml.config.pojo.mode.YamlModeConfiguration;
import org.apache.shardingsphere.infra.yaml.config.swapper.mode.ModeConfigurationYamlSwapper;
-import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
-import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
import org.apache.shardingsphere.scaling.core.api.ScalingWorker;
import org.apache.shardingsphere.scaling.core.config.ScalingContext;
import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
-import javax.sql.DataSource;
-import java.sql.SQLException;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
/**
* Cluster bootstrap initializer.
*/
public final class ClusterBootstrapInitializer extends AbstractBootstrapInitializer {
- private final RegistryCenter registryCenter;
-
- private final boolean isOverwrite;
-
- public ClusterBootstrapInitializer(final ShardingSphereMode mode, final boolean isOverwrite) {
+ public ClusterBootstrapInitializer(final ShardingSphereMode mode) {
super(mode);
- Preconditions.checkState(mode.getPersistRepository().isPresent());
- registryCenter = new RegistryCenter((RegistryCenterRepository) mode.getPersistRepository().get());
- this.isOverwrite = isOverwrite;
}
@Override
- protected ContextManager createContextManager(final ShardingSphereMode mode, final ProxyConfiguration proxyConfig) throws SQLException {
- return new ClusterContextManagerBuilder().build(
- mode, getDataSourcesMap(proxyConfig.getSchemaDataSources()), proxyConfig.getSchemaRules(), proxyConfig.getGlobalRules(), proxyConfig.getProps(), isOverwrite);
- }
-
- // TODO add DataSourceParameter param to ContextManagerBuilder to avoid re-build data source
- private Map<String, Map<String, DataSource>> getDataSourcesMap(final Map<String, Map<String, DataSourceParameter>> dataSourceParametersMap) {
- Map<String, Map<String, DataSource>> result = new LinkedHashMap<>(dataSourceParametersMap.size(), 1);
- for (Entry<String, Map<String, DataSourceParameter>> entry : dataSourceParametersMap.entrySet()) {
- result.put(entry.getKey(), getDataSourceMap(DataSourceParameterConverter.getDataSourceConfigurationMap(entry.getValue())));
- }
- return result;
- }
-
- private Map<String, DataSource> getDataSourceMap(final Map<String, DataSourceConfiguration> dataSourceConfigMap) {
- Map<String, DataSource> result = new LinkedHashMap<>(dataSourceConfigMap.size(), 1);
- for (Entry<String, DataSourceConfiguration> entry : dataSourceConfigMap.entrySet()) {
- result.put(entry.getKey(), entry.getValue().createDataSource());
- }
- return result;
+ protected ContextManagerBuilder createContextManagerBuilder() {
+ return new ClusterContextManagerBuilder();
}
@Override
@@ -98,14 +57,4 @@ public final class ClusterBootstrapInitializer extends AbstractBootstrapInitiali
ScalingContext.getInstance().init(scalingConfig);
ScalingWorker.init();
}
-
- @Override
- protected void postInit(final YamlProxyConfiguration yamlConfig) {
- registryCenter.onlineInstance(getSchemaNames(yamlConfig));
- }
-
- private Set<String> getSchemaNames(final YamlProxyConfiguration yamlConfig) {
- return Stream.of(getDistMetaDataPersistService().getSchemaMetaDataService().loadAllNames(),
- yamlConfig.getRuleConfigurations().keySet()).flatMap(Collection::stream).collect(Collectors.toSet());
- }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/MemoryBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/MemoryBootstrapInitializer.java
index d18b9b6..de08591 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/MemoryBootstrapInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/MemoryBootstrapInitializer.java
@@ -17,22 +17,12 @@
package org.apache.shardingsphere.proxy.initializer.impl;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
-import org.apache.shardingsphere.infra.context.manager.ContextManager;
+import org.apache.shardingsphere.infra.context.manager.ContextManagerBuilder;
import org.apache.shardingsphere.infra.context.manager.impl.MemoryContextManagerBuilder;
import org.apache.shardingsphere.infra.mode.ShardingSphereMode;
-import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
-import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
import org.apache.shardingsphere.scaling.core.config.ScalingContext;
-import javax.sql.DataSource;
-import java.sql.SQLException;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
/**
* Memory bootstrap initializer.
*/
@@ -43,26 +33,8 @@ public final class MemoryBootstrapInitializer extends AbstractBootstrapInitializ
}
@Override
- protected ContextManager createContextManager(final ShardingSphereMode mode, final ProxyConfiguration proxyConfig) throws SQLException {
- return new MemoryContextManagerBuilder().build(
- mode, getDataSourcesMap(proxyConfig.getSchemaDataSources()), proxyConfig.getSchemaRules(), proxyConfig.getGlobalRules(), proxyConfig.getProps(), true);
- }
-
- // TODO add DataSourceParameter param to ContextManagerBuilder to avoid re-build data source
- private Map<String, Map<String, DataSource>> getDataSourcesMap(final Map<String, Map<String, DataSourceParameter>> dataSourceParametersMap) {
- Map<String, Map<String, DataSource>> result = new LinkedHashMap<>(dataSourceParametersMap.size(), 1);
- for (Entry<String, Map<String, DataSourceParameter>> entry : dataSourceParametersMap.entrySet()) {
- result.put(entry.getKey(), getDataSourceMap(DataSourceParameterConverter.getDataSourceConfigurationMap(entry.getValue())));
- }
- return result;
- }
-
- private Map<String, DataSource> getDataSourceMap(final Map<String, DataSourceConfiguration> dataSourceConfigMap) {
- Map<String, DataSource> result = new LinkedHashMap<>(dataSourceConfigMap.size(), 1);
- for (Entry<String, DataSourceConfiguration> entry : dataSourceConfigMap.entrySet()) {
- result.put(entry.getKey(), entry.getValue().createDataSource());
- }
- return result;
+ protected ContextManagerBuilder createContextManagerBuilder() {
+ return new MemoryContextManagerBuilder();
}
@Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandaloneBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandaloneBootstrapInitializer.java
index 43a41e3..be12376 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandaloneBootstrapInitializer.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandaloneBootstrapInitializer.java
@@ -17,55 +17,24 @@
package org.apache.shardingsphere.proxy.initializer.impl;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
-import org.apache.shardingsphere.infra.context.manager.ContextManager;
+import org.apache.shardingsphere.infra.context.manager.ContextManagerBuilder;
import org.apache.shardingsphere.infra.context.manager.impl.StandaloneContextManagerBuilder;
import org.apache.shardingsphere.infra.mode.ShardingSphereMode;
-import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
-import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
import org.apache.shardingsphere.scaling.core.config.ScalingContext;
-import javax.sql.DataSource;
-import java.sql.SQLException;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
/**
* Standalone bootstrap initializer.
*/
public final class StandaloneBootstrapInitializer extends AbstractBootstrapInitializer {
- private final boolean isOverwrite;
-
- public StandaloneBootstrapInitializer(final ShardingSphereMode mode, final boolean isOverwrite) {
+ public StandaloneBootstrapInitializer(final ShardingSphereMode mode) {
super(mode);
- this.isOverwrite = isOverwrite;
}
@Override
- protected ContextManager createContextManager(final ShardingSphereMode mode, final ProxyConfiguration proxyConfig) throws SQLException {
- return new StandaloneContextManagerBuilder().build(
- mode, getDataSourcesMap(proxyConfig.getSchemaDataSources()), proxyConfig.getSchemaRules(), proxyConfig.getGlobalRules(), proxyConfig.getProps(), isOverwrite);
- }
-
- // TODO add DataSourceParameter param to ContextManagerBuilder to avoid re-build data source
- private Map<String, Map<String, DataSource>> getDataSourcesMap(final Map<String, Map<String, DataSourceParameter>> dataSourceParametersMap) {
- Map<String, Map<String, DataSource>> result = new LinkedHashMap<>(dataSourceParametersMap.size(), 1);
- for (Entry<String, Map<String, DataSourceParameter>> entry : dataSourceParametersMap.entrySet()) {
- result.put(entry.getKey(), getDataSourceMap(DataSourceParameterConverter.getDataSourceConfigurationMap(entry.getValue())));
- }
- return result;
- }
-
- private Map<String, DataSource> getDataSourceMap(final Map<String, DataSourceConfiguration> dataSourceConfigMap) {
- Map<String, DataSource> result = new LinkedHashMap<>(dataSourceConfigMap.size(), 1);
- for (Entry<String, DataSourceConfiguration> entry : dataSourceConfigMap.entrySet()) {
- result.put(entry.getKey(), entry.getValue().createDataSource());
- }
- return result;
+ protected ContextManagerBuilder createContextManagerBuilder() {
+ return new StandaloneContextManagerBuilder();
}
@Override