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