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 f24cecf35e9 Refactor ContextManager.createChangedDatabases() (#18845)
f24cecf35e9 is described below

commit f24cecf35e9abdc75e491842451a8fea73ee9d85
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jul 5 11:16:01 2022 +0800

    Refactor ContextManager.createChangedDatabases() (#18845)
---
 .../mode/manager/ContextManager.java               | 32 +++++++---------------
 1 file changed, 10 insertions(+), 22 deletions(-)

diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index bd73b765c6d..2fd3705e12c 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -305,7 +305,7 @@ public final class ContextManager implements AutoCloseable {
     }
     
     private MetaDataContexts createMetaDataContexts(final String databaseName, 
final Collection<RuleConfiguration> ruleConfigs) throws SQLException {
-        Map<String, ShardingSphereDatabase> changedDatabases = 
createChangedDatabases(databaseName, ruleConfigs);
+        Map<String, ShardingSphereDatabase> changedDatabases = 
createChangedDatabases(databaseName, null, ruleConfigs);
         ShardingSphereRuleMetaData changedGlobalMetaData = new 
ShardingSphereRuleMetaData(
                 
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 changedDatabases, instanceContext));
         return new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null),
@@ -314,7 +314,7 @@ public final class ContextManager implements AutoCloseable {
     }
     
     private MetaDataContexts createMetaDataContexts(final String databaseName, 
final SwitchingResource switchingResource) throws SQLException {
-        Map<String, ShardingSphereDatabase> changedDatabases = 
createChangedDatabases(databaseName, switchingResource);
+        Map<String, ShardingSphereDatabase> changedDatabases = 
createChangedDatabases(databaseName, switchingResource, null);
         ShardingSphereRuleMetaData changedGlobalMetaData = new 
ShardingSphereRuleMetaData(
                 
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 changedDatabases, instanceContext));
         return new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null),
@@ -331,28 +331,16 @@ public final class ContextManager implements 
AutoCloseable {
                 OptimizerContextFactory.create(changedDatabases, 
changedGlobalMetaData));
     }
     
-    private Map<String, ShardingSphereDatabase> createChangedDatabases(final 
String databaseName, final Collection<RuleConfiguration> ruleConfigs) throws 
SQLException {
-        ShardingSphereDatabase changedDatabase = 
ShardingSphereDatabasesFactory.create(databaseName,
-                new 
DataSourceProvidedDatabaseConfiguration(metaDataContexts.getMetaData().getDatabases().get(databaseName).getResource().getDataSources(),
 ruleConfigs),
-                metaDataContexts.getMetaData().getProps(), instanceContext);
-        Map<String, ShardingSphereDatabase> result = new 
LinkedHashMap<>(metaDataContexts.getMetaData().getDatabases());
-        result.put(databaseName, changedDatabase);
-        return result;
-    }
-    
-    private Map<String, ShardingSphereDatabase> createChangedDatabases(final 
String databaseName, final SwitchingResource switchingResource) throws 
SQLException {
-        DatabaseConfiguration databaseConfig = new 
DataSourceProvidedDatabaseConfiguration(
-                switchingResource.getNewDataSources(), 
metaDataContexts.getMetaData().getDatabases().get(databaseName).getRuleMetaData().getConfigurations());
-        ShardingSphereDatabase changedDatabase = 
ShardingSphereDatabasesFactory.create(databaseName, databaseConfig, 
metaDataContexts.getMetaData().getProps(), instanceContext);
-        Map<String, ShardingSphereDatabase> result = new 
LinkedHashMap<>(metaDataContexts.getMetaData().getDatabases());
-        result.put(databaseName, changedDatabase);
-        return result;
-    }
-    
     private Map<String, ShardingSphereDatabase> createChangedDatabases(final 
String databaseName,
                                                                        final 
SwitchingResource switchingResource, final Collection<RuleConfiguration> 
ruleConfigs) throws SQLException {
-        DatabaseConfiguration databaseConfig = new 
DataSourceProvidedDatabaseConfiguration(switchingResource.getNewDataSources(), 
ruleConfigs);
-        ShardingSphereDatabase changedDatabase = 
ShardingSphereDatabasesFactory.create(databaseName, databaseConfig, 
metaDataContexts.getMetaData().getProps(), instanceContext);
+        Map<String, DataSource> toBeCreatedDataSources = null == 
switchingResource
+                ? 
metaDataContexts.getMetaData().getDatabases().get(databaseName).getResource().getDataSources()
+                : switchingResource.getNewDataSources();
+        Collection<RuleConfiguration> toBeCreatedRuleConfigs = null == 
ruleConfigs
+                ? 
metaDataContexts.getMetaData().getDatabases().get(databaseName).getRuleMetaData().getConfigurations()
+                : ruleConfigs;
+        DatabaseConfiguration toBeCreatedDatabaseConfig = new 
DataSourceProvidedDatabaseConfiguration(toBeCreatedDataSources, 
toBeCreatedRuleConfigs);
+        ShardingSphereDatabase changedDatabase = 
ShardingSphereDatabasesFactory.create(databaseName, toBeCreatedDatabaseConfig, 
metaDataContexts.getMetaData().getProps(), instanceContext);
         Map<String, ShardingSphereDatabase> result = new 
LinkedHashMap<>(metaDataContexts.getMetaData().getDatabases());
         result.put(databaseName, changedDatabase);
         return result;

Reply via email to