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 e1152b2  Refactor AbstractBootstrapInitializer (#11485)
e1152b2 is described below

commit e1152b25b61251fa3e1a004a1a5dc3242b0e3843
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jul 24 20:01:20 2021 +0800

    Refactor AbstractBootstrapInitializer (#11485)
---
 .../org/apache/shardingsphere/proxy/Bootstrap.java | 15 ++++++++++++-
 .../impl/AbstractBootstrapInitializer.java         | 21 ++++++++++++------
 .../impl/GovernanceBootstrapInitializer.java       | 25 ++++++++++------------
 .../impl/StandardBootstrapInitializer.java         | 13 +++++------
 .../impl/GovernanceBootstrapInitializerTest.java   |  2 +-
 .../impl/StandardBootstrapInitializerTest.java     |  3 ++-
 6 files changed, 48 insertions(+), 31 deletions(-)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/Bootstrap.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/Bootstrap.java
index b7c2847..b961123 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/Bootstrap.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/Bootstrap.java
@@ -19,6 +19,12 @@ package org.apache.shardingsphere.proxy;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.governance.core.registry.RegistryCenterRepositoryFactory;
+import 
org.apache.shardingsphere.governance.core.yaml.swapper.GovernanceConfigurationYamlSwapper;
+import 
org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
+import 
org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository;
+import 
org.apache.shardingsphere.infra.config.persist.repository.ConfigCenterRepository;
+import 
org.apache.shardingsphere.infra.config.persist.repository.LocalConfigCenterRepository;
 import org.apache.shardingsphere.proxy.arguments.BootstrapArguments;
 import org.apache.shardingsphere.proxy.config.ProxyConfigurationLoader;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
@@ -49,6 +55,13 @@ public final class Bootstrap {
     }
     
     private static BootstrapInitializer createBootstrapInitializer(final 
YamlProxyConfiguration yamlConfig) {
-        return null == yamlConfig.getServerConfiguration().getGovernance() ? 
new StandardBootstrapInitializer() : new GovernanceBootstrapInitializer();
+        if (null == yamlConfig.getServerConfiguration().getGovernance()) {
+            // TODO load from SPI
+            ConfigCenterRepository repository = new 
LocalConfigCenterRepository();
+            return new StandardBootstrapInitializer(repository);
+        }
+        GovernanceConfiguration governanceConfig = new 
GovernanceConfigurationYamlSwapper().swapToObject(yamlConfig.getServerConfiguration().getGovernance());
+        RegistryCenterRepository repository = 
RegistryCenterRepositoryFactory.newInstance(governanceConfig);
+        return new GovernanceBootstrapInitializer(repository);
     }
 }
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 9db5e7e..570daeb 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
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.proxy.initializer.impl;
 
+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;
@@ -25,6 +26,7 @@ import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration
 import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 import org.apache.shardingsphere.infra.config.persist.ConfigCenter;
+import 
org.apache.shardingsphere.infra.config.persist.repository.ConfigCenterRepository;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
 import 
org.apache.shardingsphere.infra.context.metadata.MetaDataContextsBuilder;
@@ -64,6 +66,13 @@ public abstract class AbstractBootstrapInitializer 
implements BootstrapInitializ
     
     private final ShardingSphereProxy shardingSphereProxy = new 
ShardingSphereProxy();
     
+    @Getter
+    private final ConfigCenter configCenter;
+    
+    public AbstractBootstrapInitializer(final ConfigCenterRepository 
repository) {
+        configCenter = new ConfigCenter(repository);
+    }
+    
     @Override
     public final void init(final YamlProxyConfiguration yamlConfig, final int 
port) throws SQLException {
         ProxyConfiguration proxyConfig = getProxyConfiguration(yamlConfig);
@@ -145,7 +154,7 @@ public abstract class AbstractBootstrapInitializer 
implements BootstrapInitializ
     
     protected abstract void initScalingWorker(YamlProxyConfiguration 
yamlConfig);
     
-    protected final void persistConfigurations(final ConfigCenter 
configCenter, final YamlProxyConfiguration yamlConfig, final boolean overwrite) 
{
+    protected final void persistConfigurations(final YamlProxyConfiguration 
yamlConfig, final boolean overwrite) {
         YamlProxyServerConfiguration serverConfig = 
yamlConfig.getServerConfiguration();
         Map<String, YamlProxyRuleConfiguration> ruleConfigs = 
yamlConfig.getRuleConfigurations();
         if (!isEmptyLocalConfiguration(serverConfig, ruleConfigs)) {
@@ -177,21 +186,21 @@ public abstract class AbstractBootstrapInitializer 
implements BootstrapInitializ
         return new 
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(globalRuleConfigs);
     }
     
-    protected final ProxyConfiguration loadProxyConfiguration(final 
ConfigCenter configCenter) {
+    protected final ProxyConfiguration loadProxyConfiguration() {
         Collection<String> schemaNames = 
configCenter.getSchemaMetaDataService().loadAllNames();
-        Map<String, Map<String, DataSourceParameter>> schemaDataSources = 
loadDataSourceParametersMap(configCenter, schemaNames);
-        Map<String, Collection<RuleConfiguration>> schemaRuleConfigs = 
loadSchemaRules(configCenter, schemaNames);
+        Map<String, Map<String, DataSourceParameter>> schemaDataSources = 
loadDataSourceParametersMap(schemaNames);
+        Map<String, Collection<RuleConfiguration>> schemaRuleConfigs = 
loadSchemaRules(schemaNames);
         Collection<RuleConfiguration> globalRuleConfigs = 
configCenter.getGlobalRuleService().load();
         Properties props = configCenter.getPropsService().load();
         return new ProxyConfiguration(schemaDataSources, schemaRuleConfigs, 
globalRuleConfigs, props);
     }
     
-    private Map<String, Map<String, DataSourceParameter>> 
loadDataSourceParametersMap(final ConfigCenter configCenter, final 
Collection<String> schemaNames) {
+    private Map<String, Map<String, DataSourceParameter>> 
loadDataSourceParametersMap(final Collection<String> schemaNames) {
         return schemaNames.stream().collect(Collectors.toMap(each -> each, 
             each -> 
DataSourceParameterConverter.getDataSourceParameterMap(configCenter.getDataSourceService().load(each)),
 (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
     }
     
-    private Map<String, Collection<RuleConfiguration>> loadSchemaRules(final 
ConfigCenter configCenter, final Collection<String> schemaNames) {
+    private Map<String, Collection<RuleConfiguration>> loadSchemaRules(final 
Collection<String> schemaNames) {
         return schemaNames.stream().collect(Collectors.toMap(each -> each, 
each -> configCenter.getSchemaRuleService().load(each), (oldValue, 
currentValue) -> oldValue, LinkedHashMap::new));
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
index a40c7e4..0f93aaf 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
@@ -20,12 +20,9 @@ package org.apache.shardingsphere.proxy.initializer.impl;
 import 
org.apache.shardingsphere.governance.context.metadata.GovernanceMetaDataContexts;
 import 
org.apache.shardingsphere.governance.context.transaction.GovernanceTransactionContexts;
 import org.apache.shardingsphere.governance.core.registry.RegistryCenter;
-import 
org.apache.shardingsphere.governance.core.registry.RegistryCenterRepositoryFactory;
 import 
org.apache.shardingsphere.governance.core.yaml.pojo.YamlGovernanceConfiguration;
 import 
org.apache.shardingsphere.governance.core.yaml.swapper.GovernanceConfigurationYamlSwapper;
-import 
org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
 import 
org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository;
-import org.apache.shardingsphere.infra.config.persist.ConfigCenter;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
 import 
org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
@@ -46,30 +43,30 @@ import java.util.stream.Stream;
  */
 public final class GovernanceBootstrapInitializer extends 
AbstractBootstrapInitializer {
     
-    private volatile RegistryCenterRepository repository;
+    private final RegistryCenterRepository repository;
     
-    private volatile ConfigCenter configCenter;
+    private final RegistryCenter registryCenter;
     
-    private volatile RegistryCenter registryCenter;
+    public GovernanceBootstrapInitializer(final RegistryCenterRepository 
repository) {
+        super(repository);
+        this.repository = repository;
+        registryCenter = new RegistryCenter(repository);
+    }
     
     @Override
     protected ProxyConfiguration getProxyConfiguration(final 
YamlProxyConfiguration yamlConfig) {
-        GovernanceConfiguration governanceConfig = new 
GovernanceConfigurationYamlSwapper().swapToObject(yamlConfig.getServerConfiguration().getGovernance());
-        repository = 
RegistryCenterRepositoryFactory.newInstance(governanceConfig);
-        configCenter = new ConfigCenter(repository);
-        registryCenter = new RegistryCenter(repository);
-        persistConfigurations(configCenter, yamlConfig, 
yamlConfig.getServerConfiguration().getGovernance().isOverwrite());
+        persistConfigurations(yamlConfig, 
yamlConfig.getServerConfiguration().getGovernance().isOverwrite());
         registryCenter.onlineInstance(getSchemaNames(yamlConfig));
-        return loadProxyConfiguration(configCenter);
+        return loadProxyConfiguration();
     }
     
     private Set<String> getSchemaNames(final YamlProxyConfiguration 
yamlConfig) {
-        return 
Stream.of(configCenter.getSchemaMetaDataService().loadAllNames(), 
yamlConfig.getRuleConfigurations().keySet()).flatMap(Collection::stream).collect(Collectors.toSet());
+        return 
Stream.of(getConfigCenter().getSchemaMetaDataService().loadAllNames(), 
yamlConfig.getRuleConfigurations().keySet()).flatMap(Collection::stream).collect(Collectors.toSet());
     }
     
     @Override
     protected MetaDataContexts decorateMetaDataContexts(final MetaDataContexts 
metaDataContexts) {
-        return new GovernanceMetaDataContexts((StandardMetaDataContexts) 
metaDataContexts, configCenter, registryCenter, repository);
+        return new GovernanceMetaDataContexts((StandardMetaDataContexts) 
metaDataContexts, getConfigCenter(), registryCenter, repository);
     }
     
     @Override
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
index 29179b2..0d01170 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
@@ -20,9 +20,7 @@ package org.apache.shardingsphere.proxy.initializer.impl;
 import 
org.apache.shardingsphere.governance.context.transaction.GovernanceTransactionContexts;
 import 
org.apache.shardingsphere.governance.core.yaml.pojo.YamlGovernanceConfiguration;
 import 
org.apache.shardingsphere.governance.core.yaml.swapper.GovernanceConfigurationYamlSwapper;
-import org.apache.shardingsphere.infra.config.persist.ConfigCenter;
 import 
org.apache.shardingsphere.infra.config.persist.repository.ConfigCenterRepository;
-import 
org.apache.shardingsphere.infra.config.persist.repository.LocalConfigCenterRepository;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
@@ -39,15 +37,14 @@ import java.util.Optional;
  */
 public final class StandardBootstrapInitializer extends 
AbstractBootstrapInitializer {
     
-    private volatile ConfigCenter configCenter;
+    public StandardBootstrapInitializer(final ConfigCenterRepository 
repository) {
+        super(repository);
+    }
     
     @Override
     protected ProxyConfiguration getProxyConfiguration(final 
YamlProxyConfiguration yamlConfig) {
-        // TODO load from SPI
-        ConfigCenterRepository repository = new LocalConfigCenterRepository();
-        configCenter = new ConfigCenter(repository);
-        persistConfigurations(configCenter, yamlConfig, false);
-        ProxyConfiguration result = loadProxyConfiguration(configCenter);
+        persistConfigurations(yamlConfig, false);
+        ProxyConfiguration result = loadProxyConfiguration();
         return (result.getSchemaDataSources().isEmpty()) ? new 
YamlProxyConfigurationSwapper().swap(yamlConfig) : result;
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
index 755ecca..78646ed 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializerTest.java
@@ -207,6 +207,6 @@ public final class GovernanceBootstrapInitializerTest 
extends AbstractBootstrapI
     
     @Override
     protected void prepareSpecifiedInitializer() {
-        setInitializer(new GovernanceBootstrapInitializer());
+        setInitializer(new 
GovernanceBootstrapInitializer(registryCenterRepository));
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
index 3cbb123..edbd38b 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializerTest.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.authority.yaml.config.YamlAuthorityRuleConfigur
 import 
org.apache.shardingsphere.governance.context.transaction.GovernanceTransactionContexts;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
+import 
org.apache.shardingsphere.infra.config.persist.repository.ConfigCenterRepository;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
@@ -209,6 +210,6 @@ public final class StandardBootstrapInitializerTest extends 
AbstractBootstrapIni
     }
     
     protected void prepareSpecifiedInitializer() {
-        setInitializer(new StandardBootstrapInitializer());
+        setInitializer(new 
StandardBootstrapInitializer(mock(ConfigCenterRepository.class)));
     }
 }

Reply via email to