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