This is an automated email from the ASF dual-hosted git repository.

menghaoran 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 abe8c569d34 Remove MetaDataContextsBuilder (#18610)
abe8c569d34 is described below

commit abe8c569d34f4a7cb9ddc3b9717087f1ed6e7523
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jun 26 19:22:12 2022 +0800

    Remove MetaDataContextsBuilder (#18610)
---
 .../mode/manager/ContextManager.java               | 52 ++++++++----
 .../mode/metadata/MetaDataContextsBuilder.java     | 61 --------------
 .../mode/metadata/MetaDataContextsBuilderTest.java | 97 ----------------------
 .../cluster/ClusterContextManagerBuilder.java      | 22 +++--
 .../memory/MemoryContextManagerBuilder.java        | 17 ++--
 .../StandaloneContextManagerBuilder.java           | 34 ++++----
 6 files changed, 80 insertions(+), 203 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 a3fdd39ed0e..0ca6073489c 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
@@ -30,11 +30,13 @@ import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCre
 import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import 
org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
 import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
+import 
org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContextFactory;
 import 
org.apache.shardingsphere.infra.federation.optimizer.context.planner.OptimizerPlannerContextFactory;
 import 
org.apache.shardingsphere.infra.federation.optimizer.metadata.FederationDatabaseMetaData;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResource;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilder;
@@ -50,7 +52,6 @@ import 
org.apache.shardingsphere.infra.rule.identifier.type.InstanceAwareRule;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
 import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder;
 
 import javax.sql.DataSource;
 import java.sql.SQLException;
@@ -133,10 +134,13 @@ public final class ContextManager implements 
AutoCloseable {
     }
     
     private MetaDataContexts createMetaDataContext(final String databaseName) 
throws SQLException {
-        MetaDataContextsBuilder builder = new MetaDataContextsBuilder(
-                Collections.singletonMap(databaseName, new 
DataSourceProvidedDatabaseConfiguration(new HashMap<>(), new LinkedList<>())),
-                
metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), 
metaDataContexts.getMetaData().getProps());
-        return 
builder.build(metaDataContexts.getPersistService().orElse(null));
+        ConfigurationProperties props = 
metaDataContexts.getMetaData().getProps();
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(
+                Collections.singletonMap(databaseName, new 
DataSourceProvidedDatabaseConfiguration(new HashMap<>(), new LinkedList<>())), 
props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(
+                
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 databases));
+        return new MetaDataContexts(
+                metaDataContexts.getPersistService().orElse(null), new 
ShardingSphereMetaData(databases, globalMetaData, props), 
OptimizerContextFactory.create(databases, globalMetaData));
     }
     
     /**
@@ -560,19 +564,25 @@ public final class ContextManager implements 
AutoCloseable {
                                                                             
final Map<String, DataSourceProperties> addedDataSourceProps) throws 
SQLException {
         Map<String, DataSource> dataSourceMap = new 
HashMap<>(originalDatabase.getResource().getDataSources());
         
dataSourceMap.putAll(DataSourcePoolCreator.create(addedDataSourceProps));
+        ConfigurationProperties props = 
metaDataContexts.getMetaData().getProps();
         DatabaseConfiguration databaseConfig = new 
DataSourceProvidedDatabaseConfiguration(dataSourceMap, 
originalDatabase.getRuleMetaData().getConfigurations());
-        MetaDataContextsBuilder builder = new 
MetaDataContextsBuilder(Collections.singletonMap(originalDatabase.getName(), 
databaseConfig),
-                
metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), 
metaDataContexts.getMetaData().getProps());
-        MetaDataContexts result = 
builder.build(metaDataContexts.getPersistService().orElse(null));
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(Collections.singletonMap(originalDatabase.getName(),
 databaseConfig), props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(
+                
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 databases));
+        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, globalMetaData, props);
+        MetaDataContexts result = new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData, 
OptimizerContextFactory.create(databases, globalMetaData));
         persistMetaData(result);
         return result;
     }
     
     private MetaDataContexts buildChangedMetaDataContext(final 
ShardingSphereDatabase originalDatabase, final Collection<RuleConfiguration> 
ruleConfigs) throws SQLException {
-        MetaDataContextsBuilder builder = new MetaDataContextsBuilder(
-                Collections.singletonMap(originalDatabase.getName(), new 
DataSourceProvidedDatabaseConfiguration(originalDatabase.getResource().getDataSources(),
 ruleConfigs)),
-                
metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), 
metaDataContexts.getMetaData().getProps());
-        MetaDataContexts result = 
builder.build(metaDataContexts.getPersistService().orElse(null));
+        ConfigurationProperties props = 
metaDataContexts.getMetaData().getProps();
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(
+                Collections.singletonMap(originalDatabase.getName(), new 
DataSourceProvidedDatabaseConfiguration(originalDatabase.getResource().getDataSources(),
 ruleConfigs)), props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(
+                
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 databases));
+        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, globalMetaData, props);
+        MetaDataContexts result = new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData, 
OptimizerContextFactory.create(databases, globalMetaData));
         persistMetaData(result);
         return result;
     }
@@ -584,9 +594,12 @@ public final class ContextManager implements AutoCloseable 
{
         DatabaseConfiguration databaseConfig = new 
DataSourceProvidedDatabaseConfiguration(
                 
getNewDataSources(originalDatabase.getResource().getDataSources(), 
getAddedDataSources(originalDatabase, newDataSourceProps), changedDataSources, 
deletedDataSources),
                 originalDatabase.getRuleMetaData().getConfigurations());
-        MetaDataContextsBuilder builder = new 
MetaDataContextsBuilder(Collections.singletonMap(originalDatabase.getName(), 
databaseConfig),
-                
metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), 
metaDataContexts.getMetaData().getProps());
-        MetaDataContexts result = 
builder.build(metaDataContexts.getPersistService().orElse(null));
+        ConfigurationProperties props = 
metaDataContexts.getMetaData().getProps();
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(Collections.singletonMap(originalDatabase.getName(),
 databaseConfig), props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(
+                
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 databases));
+        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, globalMetaData, props);
+        MetaDataContexts result = new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData, 
OptimizerContextFactory.create(databases, globalMetaData));
         persistMetaData(result);
         return result;
     }
@@ -597,9 +610,12 @@ public final class ContextManager implements AutoCloseable 
{
         Map<String, DataSource> changedDataSources = 
buildChangedDataSources(originalDatabase, newDataSourceProps);
         DatabaseConfiguration databaseConfig = new 
DataSourceProvidedDatabaseConfiguration(getNewDataSources(originalDatabase.getResource().getDataSources(),
                 getAddedDataSources(originalDatabase, newDataSourceProps), 
changedDataSources, deletedDataSources), ruleConfigs);
-        MetaDataContextsBuilder builder = new 
MetaDataContextsBuilder(Collections.singletonMap(originalDatabase.getName(), 
databaseConfig),
-                
metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(), 
metaDataContexts.getMetaData().getProps());
-        MetaDataContexts result = 
builder.build(metaDataContexts.getPersistService().orElse(null));
+        ConfigurationProperties props = 
metaDataContexts.getMetaData().getProps();
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(Collections.singletonMap(originalDatabase.getName(),
 databaseConfig), props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(
+                
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 databases));
+        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, globalMetaData, props);
+        MetaDataContexts result = new 
MetaDataContexts(metaDataContexts.getPersistService().orElse(null), metaData, 
OptimizerContextFactory.create(databases, globalMetaData));
         persistMetaData(result);
         return result;
     }
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
deleted file mode 100644
index 0489c7e37fc..00000000000
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.mode.metadata;
-
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import 
org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContextFactory;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
-import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
-import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-
-import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Meta data contexts builder.
- */
-@RequiredArgsConstructor
-public final class MetaDataContextsBuilder {
-    
-    private final Map<String, DatabaseConfiguration> databaseConfigMap;
-    
-    private final Collection<RuleConfiguration> globalRuleConfigs;
-    
-    private final ConfigurationProperties props;
-    
-    /**
-     * Build meta data contexts.
-     * 
-     * @param persistService meta data persist service
-     * @exception SQLException SQL exception
-     * @return meta data contexts
-     */
-    public MetaDataContexts build(final MetaDataPersistService persistService) 
throws SQLException {
-        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(databaseConfigMap, props);
-        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(GlobalRulesBuilder.buildRules(globalRuleConfigs, 
databases));
-        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, globalMetaData, props);
-        return new MetaDataContexts(persistService, metaData, 
OptimizerContextFactory.create(databases, globalMetaData));
-    }
-}
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilderTest.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilderTest.java
deleted file mode 100644
index be00f8456b9..00000000000
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilderTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.mode.metadata;
-
-import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
-import org.apache.shardingsphere.authority.rule.AuthorityRule;
-import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
-import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
-import 
org.apache.shardingsphere.infra.config.database.impl.DataSourceProvidedDatabaseConfiguration;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.mode.metadata.fixture.FixtureRule;
-import 
org.apache.shardingsphere.mode.metadata.fixture.FixtureRuleConfiguration;
-import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.parser.rule.SQLParserRule;
-import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
-import org.apache.shardingsphere.transaction.rule.TransactionRule;
-import org.junit.Test;
-
-import java.sql.SQLException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Properties;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-public final class MetaDataContextsBuilderTest {
-    
-    @Test
-    public void assertBuildWithAuthorityRuleConfigurations() throws 
SQLException {
-        Properties props = new Properties();
-        
props.setProperty(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE.getKey(), "1");
-        ShardingSphereUser user = new ShardingSphereUser("root", "root", "");
-        AuthorityRuleConfiguration authorityRuleConfig = new 
AuthorityRuleConfiguration(Collections.singleton(user),
-                new ShardingSphereAlgorithmConfiguration("ALL_PERMITTED", new 
Properties()));
-        DatabaseConfiguration databaseConfig = new 
DataSourceProvidedDatabaseConfiguration(Collections.emptyMap(), 
Collections.singleton(new FixtureRuleConfiguration()));
-        MetaDataContexts actual = new MetaDataContextsBuilder(
-                Collections.singletonMap("logic_db", databaseConfig), 
Collections.singleton(authorityRuleConfig), new 
ConfigurationProperties(props)).build(mock(MetaDataPersistService.class));
-        assertRules(actual);
-        
assertTrue(actual.getMetaData().getDatabases().get("logic_db").getResource().getDataSources().isEmpty());
-        assertThat(actual.getMetaData().getProps().getProps().size(), is(1));
-        
assertThat(actual.getMetaData().getProps().getValue(ConfigurationPropertyKey.KERNEL_EXECUTOR_SIZE),
 is(1));
-    }
-    
-    private void assertRules(final MetaDataContexts actual) {
-        Collection<ShardingSphereRule> rules = 
actual.getMetaData().getDatabases().get("logic_db").getRuleMetaData().getRules();
-        assertThat(rules.size(), is(1));
-        assertThat(rules.iterator().next(), instanceOf(FixtureRule.class));
-    }
-    
-    @Test
-    public void assertBuildWithoutGlobalRuleConfigurations() throws 
SQLException {
-        MetaDataContexts actual = new MetaDataContextsBuilder(
-                Collections.emptyMap(), Collections.emptyList(), new 
ConfigurationProperties(new 
Properties())).build(mock(MetaDataPersistService.class));
-        
assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().size(), 
is(4));
-        
assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().stream().filter(each
 -> each instanceof AuthorityRule).count(), is(1L));
-        
assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().stream().filter(each
 -> each instanceof TransactionRule).count(), is(1L));
-        
assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().stream().filter(each
 -> each instanceof SQLParserRule).count(), is(1L));
-        
assertThat(actual.getMetaData().getGlobalRuleMetaData().getRules().stream().filter(each
 -> each instanceof SQLTranslatorRule).count(), is(1L));
-    }
-    
-    @Test
-    public void assertBuildWithEmptyRuleConfigurations() throws SQLException {
-        MetaDataContexts actual = new MetaDataContextsBuilder(
-                Collections.emptyMap(), Collections.emptyList(), new 
ConfigurationProperties(new 
Properties())).build(mock(MetaDataPersistService.class));
-        assertThat(actual.getMetaData().getDatabases().size(), is(4));
-        
assertTrue(actual.getMetaData().getDatabases().containsKey("information_schema"));
-        
assertTrue(actual.getMetaData().getDatabases().containsKey("performance_schema"));
-        assertTrue(actual.getMetaData().getDatabases().containsKey("mysql"));
-        assertTrue(actual.getMetaData().getDatabases().containsKey("sys"));
-        
assertTrue(actual.getMetaData().getDatabases().get("information_schema").getRuleMetaData().getRules().isEmpty());
-        
assertTrue(actual.getMetaData().getDatabases().get("performance_schema").getRuleMetaData().getRules().isEmpty());
-        
assertTrue(actual.getMetaData().getDatabases().get("mysql").getRuleMetaData().getRules().isEmpty());
-        
assertTrue(actual.getMetaData().getDatabases().get("sys").getRuleMetaData().getRules().isEmpty());
-    }
-}
diff --git 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
index fe5a68c2af6..2cadba9b810 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-cluster-mode/shardingsphere-cluster-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
@@ -22,10 +22,16 @@ import 
org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
 import 
org.apache.shardingsphere.infra.config.database.impl.DataSourceProvidedDatabaseConfiguration;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import 
org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContextFactory;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.definition.InstanceDefinition;
 import org.apache.shardingsphere.infra.instance.definition.InstanceType;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
+import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
@@ -34,7 +40,6 @@ import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.RegistryCenter
 import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.lock.DistributedLockContext;
 import 
org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.workerid.generator.ClusterWorkerIdGenerator;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
 import 
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
@@ -59,7 +64,7 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
         MetaDataPersistService persistService = new 
MetaDataPersistService(repository);
         persistConfigurations(persistService, parameter);
         RegistryCenter registryCenter = new RegistryCenter(repository);
-        MetaDataContexts metaDataContexts = 
createMetaDataContextsBuilder(persistService, parameter).build(persistService);
+        MetaDataContexts metaDataContexts = 
createMetaDataContexts(persistService, parameter);
         persistMetaData(metaDataContexts);
         ContextManager result = createContextManager(repository, 
registryCenter, parameter.getInstanceDefinition(), metaDataContexts, 
parameter.getModeConfig());
         registerOnline(persistService, parameter, result, registryCenter);
@@ -73,14 +78,15 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
         }
     }
     
-    private MetaDataContextsBuilder createMetaDataContextsBuilder(final 
MetaDataPersistService metaDataPersistService, final 
ContextManagerBuilderParameter parameter) {
+    private MetaDataContexts createMetaDataContexts(final 
MetaDataPersistService persistService, final ContextManagerBuilderParameter 
parameter) throws SQLException {
         Collection<String> databaseNames = InstanceType.JDBC == 
parameter.getInstanceDefinition().getInstanceType()
                 ? parameter.getDatabaseConfigs().keySet()
-                : 
metaDataPersistService.getSchemaMetaDataService().loadAllDatabaseNames();
-        Map<String, DatabaseConfiguration> databaseConfigMap = 
getDatabaseConfigMap(databaseNames, metaDataPersistService, parameter);
-        Collection<RuleConfiguration> globalRuleConfigs = 
metaDataPersistService.getGlobalRuleService().load();
-        ConfigurationProperties props = new 
ConfigurationProperties(metaDataPersistService.getPropsService().load());
-        return new MetaDataContextsBuilder(databaseConfigMap, 
globalRuleConfigs, props);
+                : 
persistService.getSchemaMetaDataService().loadAllDatabaseNames();
+        Collection<RuleConfiguration> globalRuleConfigs = 
persistService.getGlobalRuleService().load();
+        ConfigurationProperties props = new 
ConfigurationProperties(persistService.getPropsService().load());
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(getDatabaseConfigMap(databaseNames, 
persistService, parameter), props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(GlobalRulesBuilder.buildRules(globalRuleConfigs, 
databases));
+        return new MetaDataContexts(persistService, new 
ShardingSphereMetaData(databases, globalMetaData, props), 
OptimizerContextFactory.create(databases, globalMetaData));
     }
     
     private Map<String, DatabaseConfiguration> getDatabaseConfigMap(final 
Collection<String> databaseNames, final MetaDataPersistService 
metaDataPersistService,
diff --git 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/MemoryContextManagerBuilder.java
 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/MemoryContextManagerBuilder.java
index ee213b354ff..a7142d9c77a 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/MemoryContextManagerBuilder.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-memory-mode/shardingsphere-memory-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/memory/MemoryContextManagerBuilder.java
@@ -19,17 +19,23 @@ package org.apache.shardingsphere.mode.manager.memory;
 
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import 
org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContextFactory;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
+import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import org.apache.shardingsphere.mode.manager.memory.lock.MemoryLockContext;
 import 
org.apache.shardingsphere.mode.manager.memory.workerid.generator.MemoryWorkerIdGenerator;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder;
 
 import java.sql.SQLException;
+import java.util.Map;
 import java.util.Optional;
 
 /**
@@ -39,10 +45,11 @@ public final class MemoryContextManagerBuilder implements 
ContextManagerBuilder
     
     @Override
     public ContextManager build(final ContextManagerBuilderParameter 
parameter) throws SQLException {
-        MetaDataContexts metaDataContexts = new MetaDataContextsBuilder(
-                parameter.getDatabaseConfigs(), 
parameter.getGlobalRuleConfigs(), new 
ConfigurationProperties(parameter.getProps())).build(null);
-        InstanceContext instanceContext = buildInstanceContext(parameter);
-        return new ContextManager(metaDataContexts, instanceContext);
+        ConfigurationProperties props = new 
ConfigurationProperties(parameter.getProps());
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(parameter.getDatabaseConfigs(), props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(GlobalRulesBuilder.buildRules(parameter.getGlobalRuleConfigs(),
 databases));
+        MetaDataContexts metaDataContexts = new MetaDataContexts(null, new 
ShardingSphereMetaData(databases, globalMetaData, props), 
OptimizerContextFactory.create(databases, globalMetaData));
+        return new ContextManager(metaDataContexts, 
buildInstanceContext(parameter));
     }
     
     private InstanceContext buildInstanceContext(final 
ContextManagerBuilderParameter parameter) {
diff --git 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
index b558ee1ce15..cd26f9fe329 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-type/shardingsphere-standalone-mode/shardingsphere-standalone-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
@@ -21,16 +21,21 @@ import 
org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
 import 
org.apache.shardingsphere.infra.config.database.impl.DataSourceProvidedDatabaseConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import 
org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContextFactory;
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.definition.InstanceType;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
+import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import 
org.apache.shardingsphere.mode.manager.standalone.lock.StandaloneLockContext;
 import 
org.apache.shardingsphere.mode.manager.standalone.workerid.generator.StandaloneWorkerIdGenerator;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.MetaDataContextsBuilder;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepositoryFactory;
 
@@ -47,9 +52,9 @@ public final class StandaloneContextManagerBuilder implements 
ContextManagerBuil
     
     @Override
     public ContextManager build(final ContextManagerBuilderParameter 
parameter) throws SQLException {
-        MetaDataPersistService metaDataPersistService = new 
MetaDataPersistService(StandalonePersistRepositoryFactory.getInstance(parameter.getModeConfig().getRepository()));
-        persistConfigurations(metaDataPersistService, parameter);
-        MetaDataContexts metaDataContexts = 
createMetaDataContextsBuilder(metaDataPersistService, 
parameter).build(metaDataPersistService);
+        MetaDataPersistService persistService = new 
MetaDataPersistService(StandalonePersistRepositoryFactory.getInstance(parameter.getModeConfig().getRepository()));
+        persistConfigurations(persistService, parameter);
+        MetaDataContexts metaDataContexts = 
createMetaDataContexts(persistService, parameter);
         return createContextManager(parameter, metaDataContexts);
     }
     
@@ -59,14 +64,16 @@ public final class StandaloneContextManagerBuilder 
implements ContextManagerBuil
         }
     }
     
-    private MetaDataContextsBuilder createMetaDataContextsBuilder(final 
MetaDataPersistService metaDataPersistService, final 
ContextManagerBuilderParameter parameter) {
+    private MetaDataContexts createMetaDataContexts(final 
MetaDataPersistService persistService, final ContextManagerBuilderParameter 
parameter) throws SQLException {
         Collection<String> databaseNames = InstanceType.JDBC == 
parameter.getInstanceDefinition().getInstanceType()
                 ? parameter.getDatabaseConfigs().keySet()
-                : 
metaDataPersistService.getSchemaMetaDataService().loadAllDatabaseNames();
-        Map<String, DatabaseConfiguration> databaseConfigMap = 
getDatabaseConfigMap(databaseNames, metaDataPersistService, parameter);
-        Collection<RuleConfiguration> globalRuleConfigs = 
metaDataPersistService.getGlobalRuleService().load();
-        ConfigurationProperties props = new 
ConfigurationProperties(metaDataPersistService.getPropsService().load());
-        return new MetaDataContextsBuilder(databaseConfigMap, 
globalRuleConfigs, props);
+                : 
persistService.getSchemaMetaDataService().loadAllDatabaseNames();
+        Map<String, DatabaseConfiguration> databaseConfigMap = 
getDatabaseConfigMap(databaseNames, persistService, parameter);
+        Collection<RuleConfiguration> globalRuleConfigs = 
persistService.getGlobalRuleService().load();
+        ConfigurationProperties props = new 
ConfigurationProperties(persistService.getPropsService().load());
+        Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(databaseConfigMap, props);
+        ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(GlobalRulesBuilder.buildRules(globalRuleConfigs, 
databases));
+        return new MetaDataContexts(persistService, new 
ShardingSphereMetaData(databases, globalMetaData, props), 
OptimizerContextFactory.create(databases, globalMetaData));
     }
     
     private Map<String, DatabaseConfiguration> getDatabaseConfigMap(final 
Collection<String> databaseNames, final MetaDataPersistService 
metaDataPersistService,
@@ -84,10 +91,9 @@ public final class StandaloneContextManagerBuilder 
implements ContextManagerBuil
     }
     
     private ContextManager createContextManager(final 
ContextManagerBuilderParameter parameter, final MetaDataContexts 
metaDataContexts) {
-        InstanceContext instanceContext = new InstanceContext(new 
ComputeNodeInstance(parameter.getInstanceDefinition()), new 
StandaloneWorkerIdGenerator(), parameter.getModeConfig(),
-                new StandaloneLockContext());
-        ContextManager result = new ContextManager(metaDataContexts, 
instanceContext);
-        return result;
+        InstanceContext instanceContext = new InstanceContext(
+                new ComputeNodeInstance(parameter.getInstanceDefinition()), 
new StandaloneWorkerIdGenerator(), parameter.getModeConfig(), new 
StandaloneLockContext());
+        return new ContextManager(metaDataContexts, instanceContext);
     }
     
     @Override

Reply via email to