This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 50be70f033b Add MetaDataContextsInitFactory (#34400)
50be70f033b is described below
commit 50be70f033b4df14919439985d98ac63f4d90e6f
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jan 19 18:06:16 2025 +0800
Add MetaDataContextsInitFactory (#34400)
* Add MetaDataContextsInitFactory
* Add MetaDataContextsInitFactory
* Add MetaDataContextsInitFactory
---
.../metadata/factory/MetaDataContextsFactory.java | 12 +++--
.../factory/init/MetaDataContextsInitFactory.java | 60 ++++++++++++++++++++++
...lConfigurationMetaDataContextsInitFactory.java} | 32 +++---------
...RegisterCenterMetaDataContextsInitFactory.java} | 32 +++---------
4 files changed, 79 insertions(+), 57 deletions(-)
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
index 9ada96c58eb..646d595a0e9 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/MetaDataContextsFactory.java
@@ -36,8 +36,9 @@ import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSpher
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import
org.apache.shardingsphere.mode.metadata.factory.type.LocalConfigurationMetaDataContextsFactory;
-import
org.apache.shardingsphere.mode.metadata.factory.type.RegisterCenterMetaDataContextsFactory;
+import
org.apache.shardingsphere.mode.metadata.factory.init.MetaDataContextsInitFactory;
+import
org.apache.shardingsphere.mode.metadata.factory.init.type.LocalConfigurationMetaDataContextsInitFactory;
+import
org.apache.shardingsphere.mode.metadata.factory.init.type.RegisterCenterMetaDataContextsInitFactory;
import org.apache.shardingsphere.mode.metadata.manager.SwitchingResource;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -67,9 +68,10 @@ public final class MetaDataContextsFactory {
* @throws SQLException SQL exception
*/
public MetaDataContexts create(final ContextManagerBuilderParameter param)
throws SQLException {
- return containsRegisteredDatabases()
- ? new RegisterCenterMetaDataContextsFactory(persistService,
instanceContext).create(param)
- : new
LocalConfigurationMetaDataContextsFactory(persistService,
instanceContext).create(param);
+ MetaDataContextsInitFactory initFactory = containsRegisteredDatabases()
+ ? new
RegisterCenterMetaDataContextsInitFactory(persistService, instanceContext)
+ : new
LocalConfigurationMetaDataContextsInitFactory(persistService, instanceContext);
+ return initFactory.create(param);
}
private boolean containsRegisteredDatabases() {
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java
new file mode 100644
index 00000000000..bc4a55c83cf
--- /dev/null
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/MetaDataContextsInitFactory.java
@@ -0,0 +1,60 @@
+/*
+ * 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.factory.init;
+
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
+import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsFactory;
+import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
+import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
+import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
+
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Meta data contexts init factory.
+ */
+public abstract class MetaDataContextsInitFactory {
+
+ /**
+ * Create meta data contexts.
+ *
+ * @param param context manager builder parameter
+ * @return created meta data contexts
+ * @throws SQLException SQL exception
+ */
+ public abstract MetaDataContexts create(ContextManagerBuilderParameter
param) throws SQLException;
+
+ protected final MetaDataContexts create(final
Collection<RuleConfiguration> globalRuleConfigs, final Map<String, DataSource>
globalDataSources,
+ final
Collection<ShardingSphereDatabase> databases, final ConfigurationProperties
props, final MetaDataPersistService persistService) {
+ Collection<ShardingSphereRule> globalRules =
GlobalRulesBuilder.buildRules(globalRuleConfigs, databases, props);
+ ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, new ResourceMetaData(globalDataSources), new
RuleMetaData(globalRules), props);
+ ShardingSphereStatistics statistics =
ShardingSphereStatisticsFactory.create(metaData,
persistService.getShardingSphereDataPersistService().load(metaData));
+ return new MetaDataContexts(metaData, statistics);
+ }
+}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/type/LocalConfigurationMetaDataContextsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java
similarity index 70%
rename from
mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/type/LocalConfigurationMetaDataContextsFactory.java
rename to
mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java
index 23b3aaa4440..0059a3e6c98 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/type/LocalConfigurationMetaDataContextsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/LocalConfigurationMetaDataContextsInitFactory.java
@@ -15,26 +15,20 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.metadata.factory.type;
+package org.apache.shardingsphere.mode.metadata.factory.init.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
-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.ResourceMetaData;
-import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsFactory;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import
org.apache.shardingsphere.mode.metadata.factory.init.MetaDataContextsInitFactory;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import javax.sql.DataSource;
@@ -46,39 +40,25 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
- * Local configuration meta data contexts factory.
+ * Local configuration meta data contexts init factory.
*/
@RequiredArgsConstructor
-public final class LocalConfigurationMetaDataContextsFactory {
+public final class LocalConfigurationMetaDataContextsInitFactory extends
MetaDataContextsInitFactory {
private final MetaDataPersistService persistService;
private final ComputeNodeInstanceContext instanceContext;
- /**
- * Create meta data contexts.
- *
- * @param param context manager builder parameter
- * @return meta data contexts
- * @throws SQLException SQL exception
- */
+ @Override
public MetaDataContexts create(final ContextManagerBuilderParameter param)
throws SQLException {
ConfigurationProperties props = new
ConfigurationProperties(param.getProps());
Collection<ShardingSphereDatabase> databases =
ShardingSphereDatabasesFactory.create(param.getDatabaseConfigs(), props,
instanceContext);
- MetaDataContexts result =
createMetaDataContexts(param.getGlobalRuleConfigs(),
param.getGlobalDataSources(), databases, props);
+ MetaDataContexts result = create(param.getGlobalRuleConfigs(),
param.getGlobalDataSources(), databases, props, persistService);
persistDatabaseConfigurations(result, param);
persistMetaData(result);
return result;
}
- private MetaDataContexts createMetaDataContexts(final
Collection<RuleConfiguration> globalRuleConfigs, final Map<String, DataSource>
globalDataSources,
- final
Collection<ShardingSphereDatabase> databases, final ConfigurationProperties
props) {
- Collection<ShardingSphereRule> globalRules =
GlobalRulesBuilder.buildRules(globalRuleConfigs, databases, props);
- ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, new ResourceMetaData(globalDataSources), new
RuleMetaData(globalRules), props);
- ShardingSphereStatistics statistics =
ShardingSphereStatisticsFactory.create(metaData,
persistService.getShardingSphereDataPersistService().load(metaData));
- return new MetaDataContexts(metaData, statistics);
- }
-
private void persistDatabaseConfigurations(final MetaDataContexts
metadataContexts, final ContextManagerBuilderParameter param) {
Collection<RuleConfiguration> globalRuleConfigs =
metadataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations();
persistService.persistGlobalRuleConfiguration(globalRuleConfigs,
param.getProps());
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/type/RegisterCenterMetaDataContextsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
similarity index 73%
rename from
mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/type/RegisterCenterMetaDataContextsFactory.java
rename to
mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
index 42461ec3d14..56943f0f10b 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/type/RegisterCenterMetaDataContextsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/factory/init/type/RegisterCenterMetaDataContextsInitFactory.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.metadata.factory.type;
+package org.apache.shardingsphere.mode.metadata.factory.init.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
@@ -26,18 +26,12 @@ import
org.apache.shardingsphere.infra.datasource.pool.config.DataSourceConfigur
import
org.apache.shardingsphere.infra.datasource.pool.destroyer.DataSourcePoolDestroyer;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
import
org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
-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.ResourceMetaData;
-import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsFactory;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import
org.apache.shardingsphere.mode.metadata.factory.init.MetaDataContextsInitFactory;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import javax.sql.DataSource;
@@ -47,22 +41,16 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
- * Register center meta data contexts factory.
+ * Register center meta data contexts init factory.
*/
@RequiredArgsConstructor
-public final class RegisterCenterMetaDataContextsFactory {
+public final class RegisterCenterMetaDataContextsInitFactory extends
MetaDataContextsInitFactory {
private final MetaDataPersistService persistService;
private final ComputeNodeInstanceContext instanceContext;
- /**
- * Create meta data contexts.
- *
- * @param param context manager builder parameter
- * @return meta data contexts
- * @throws SQLException SQL exception
- */
+ @Override
public MetaDataContexts create(final ContextManagerBuilderParameter param)
throws SQLException {
Map<String, DatabaseConfiguration> effectiveDatabaseConfigs =
createEffectiveDatabaseConfigurations(getDatabaseNames(param.getDatabaseConfigs()),
param.getDatabaseConfigs());
Collection<RuleConfiguration> globalRuleConfigs =
persistService.getGlobalRuleService().load();
@@ -70,7 +58,7 @@ public final class RegisterCenterMetaDataContextsFactory {
Map<String, DataSource> globalDataSources =
param.getGlobalDataSources();
ConfigurationProperties props = new
ConfigurationProperties(persistService.getPropsService().load());
Collection<ShardingSphereDatabase> databases =
ShardingSphereDatabasesFactory.create(effectiveDatabaseConfigs,
loadSchemas(effectiveDatabaseConfigs.keySet()), props, instanceContext);
- return createMetaDataContexts(globalRuleConfigs, globalDataSources,
databases, props);
+ return create(globalRuleConfigs, globalDataSources, databases, props,
persistService);
}
private Collection<String> getDatabaseNames(final Map<String,
DatabaseConfiguration> databaseConfigs) {
@@ -99,12 +87,4 @@ public final class RegisterCenterMetaDataContextsFactory {
private Map<String, Collection<ShardingSphereSchema>> loadSchemas(final
Collection<String> databaseNames) {
return databaseNames.stream().collect(Collectors.toMap(each -> each,
each -> persistService.getDatabaseMetaDataFacade().getSchema().load(each)));
}
-
- private MetaDataContexts createMetaDataContexts(final
Collection<RuleConfiguration> globalRuleConfigs, final Map<String, DataSource>
globalDataSources,
- final
Collection<ShardingSphereDatabase> databases, final ConfigurationProperties
props) {
- Collection<ShardingSphereRule> globalRules =
GlobalRulesBuilder.buildRules(globalRuleConfigs, databases, props);
- ShardingSphereMetaData metaData = new
ShardingSphereMetaData(databases, new ResourceMetaData(globalDataSources), new
RuleMetaData(globalRules), props);
- ShardingSphereStatistics statistics =
ShardingSphereStatisticsFactory.create(metaData,
persistService.getShardingSphereDataPersistService().load(metaData));
- return new MetaDataContexts(metaData, statistics);
- }
}