You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/07/14 14:54:44 UTC
[shardingsphere] branch master updated: Add ContextManagerBuilderParameter.getModeConfiguration (#19166)
This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 835877751b5 Add ContextManagerBuilderParameter.getModeConfiguration (#19166)
835877751b5 is described below
commit 835877751b54bf205fcc23d24062631ab0db9a47
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jul 14 22:54:35 2022 +0800
Add ContextManagerBuilderParameter.getModeConfiguration (#19166)
* Refactor MetaDataContexts.metaData from optional to required
* Add ContextManagerBuilderParameter.getModeConfiguration
---
.../manager/ContextManagerBuilderParameter.java | 11 +++++++++++
.../ContextManagerBuilderParameterTest.java | 23 ++++++++++++++++++++++
.../cluster/ClusterContextManagerBuilder.java | 8 ++++----
.../StandaloneContextManagerBuilder.java | 20 +++++++++----------
4 files changed, 47 insertions(+), 15 deletions(-)
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
index 00187db0848..74303ac747e 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameter.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.mode.manager;
+import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
@@ -35,6 +36,7 @@ import java.util.Properties;
@Getter
public final class ContextManagerBuilderParameter {
+ @Getter(AccessLevel.NONE)
private final ModeConfiguration modeConfig;
private final Map<String, DatabaseConfiguration> databaseConfigs;
@@ -56,4 +58,13 @@ public final class ContextManagerBuilderParameter {
return globalRuleConfigs.isEmpty() && props.isEmpty()
&& databaseConfigs.entrySet().stream().allMatch(entry -> entry.getValue().getDataSources().isEmpty() && entry.getValue().getRuleConfigurations().isEmpty());
}
+
+ /**
+ * Get mode configuration.
+ *
+ * @return mode configuration
+ */
+ public ModeConfiguration getModeConfiguration() {
+ return null == modeConfig ? new ModeConfiguration("Standalone", null, true) : modeConfig;
+ }
}
diff --git a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
index 298ba24e9fe..847a638a198 100644
--- a/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
+++ b/shardingsphere-mode/shardingsphere-mode-core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilderParameterTest.java
@@ -19,13 +19,19 @@ package org.apache.shardingsphere.mode.manager;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
+import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
+import org.apache.shardingsphere.infra.config.mode.PersistRepositoryConfiguration;
import org.junit.Test;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;
+import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -75,4 +81,21 @@ public final class ContextManagerBuilderParameterTest {
result.setProperty("foo", "foo_value");
return result;
}
+
+ @Test
+ public void assertGetDefaultModeConfiguration() {
+ ContextManagerBuilderParameter parameter = new ContextManagerBuilderParameter(null, Collections.emptyMap(), Collections.emptyList(), new Properties(), null, null);
+ assertThat(parameter.getModeConfiguration().getType(), is("Standalone"));
+ assertNull(parameter.getModeConfiguration().getRepository());
+ assertTrue(parameter.getModeConfiguration().isOverwrite());
+ }
+
+ @Test
+ public void assertGetModeConfiguration() {
+ ModeConfiguration modeConfig = new ModeConfiguration("Cluster", mock(PersistRepositoryConfiguration.class), false);
+ ContextManagerBuilderParameter parameter = new ContextManagerBuilderParameter(modeConfig, Collections.emptyMap(), Collections.emptyList(), new Properties(), null, null);
+ assertThat(parameter.getModeConfiguration().getType(), is("Cluster"));
+ assertNotNull(parameter.getModeConfiguration().getRepository());
+ assertFalse(parameter.getModeConfiguration().isOverwrite());
+ }
}
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 e7fccb980ef..0fbc0e05292 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
@@ -60,13 +60,13 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
@Override
public ContextManager build(final ContextManagerBuilderParameter parameter) throws SQLException {
- ScheduleContextFactory.getInstance().init(parameter.getInstanceMetaData().getId(), parameter.getModeConfig());
- ClusterPersistRepository repository = ClusterPersistRepositoryFactory.getInstance((ClusterPersistRepositoryConfiguration) parameter.getModeConfig().getRepository());
+ ScheduleContextFactory.getInstance().init(parameter.getInstanceMetaData().getId(), parameter.getModeConfiguration());
+ ClusterPersistRepository repository = ClusterPersistRepositoryFactory.getInstance((ClusterPersistRepositoryConfiguration) parameter.getModeConfiguration().getRepository());
MetaDataPersistService persistService = new MetaDataPersistService(repository);
persistConfigurations(persistService, parameter);
EventBusContext eventBusContext = new EventBusContext();
RegistryCenter registryCenter = new RegistryCenter(repository, eventBusContext);
- InstanceContext instanceContext = buildInstanceContext(registryCenter, parameter.getInstanceMetaData(), parameter.getModeConfig());
+ InstanceContext instanceContext = buildInstanceContext(registryCenter, parameter.getInstanceMetaData(), parameter.getModeConfiguration());
registryCenter.getRepository().watchSessionConnection(instanceContext);
MetaDataContexts metaDataContexts = buildMetaDataContexts(persistService, parameter, instanceContext);
persistMetaData(metaDataContexts);
@@ -76,7 +76,7 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
}
private void persistConfigurations(final MetaDataPersistService persistService, final ContextManagerBuilderParameter parameter) {
- boolean isOverwrite = parameter.getModeConfig().isOverwrite();
+ boolean isOverwrite = parameter.getModeConfiguration().isOverwrite();
if (!parameter.isEmpty()) {
persistService.persistConfigurations(parameter.getDatabaseConfigs(), parameter.getGlobalRuleConfigs(), parameter.getProps(), isOverwrite);
}
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 e706c291fb0..55bdc839f75 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.mode.manager.standalone;
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.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.eventbus.EventBusContext;
import org.apache.shardingsphere.infra.federation.optimizer.context.OptimizerContextFactory;
@@ -55,23 +54,22 @@ public final class StandaloneContextManagerBuilder implements ContextManagerBuil
@Override
public ContextManager build(final ContextManagerBuilderParameter parameter) throws SQLException {
- ModeConfiguration modeConfig = null == parameter.getModeConfig() ? new ModeConfiguration("Standalone", null, true) : parameter.getModeConfig();
- ScheduleContextFactory.getInstance().init(parameter.getInstanceMetaData().getId(), modeConfig);
- MetaDataPersistService persistService = new MetaDataPersistService(StandalonePersistRepositoryFactory.getInstance(modeConfig.getRepository()));
- persistConfigurations(persistService, parameter, modeConfig);
- InstanceContext instanceContext = buildInstanceContext(parameter, modeConfig);
+ ScheduleContextFactory.getInstance().init(parameter.getInstanceMetaData().getId(), parameter.getModeConfiguration());
+ MetaDataPersistService persistService = new MetaDataPersistService(StandalonePersistRepositoryFactory.getInstance(parameter.getModeConfiguration().getRepository()));
+ persistConfigurations(persistService, parameter);
+ InstanceContext instanceContext = buildInstanceContext(parameter);
return new ContextManager(buildMetaDataContexts(persistService, parameter, instanceContext), instanceContext);
}
- private void persistConfigurations(final MetaDataPersistService persistService, final ContextManagerBuilderParameter parameter, final ModeConfiguration modeConfig) {
+ private void persistConfigurations(final MetaDataPersistService persistService, final ContextManagerBuilderParameter parameter) {
if (!parameter.isEmpty()) {
- persistService.persistConfigurations(parameter.getDatabaseConfigs(), parameter.getGlobalRuleConfigs(), parameter.getProps(), modeConfig.isOverwrite());
+ persistService.persistConfigurations(parameter.getDatabaseConfigs(), parameter.getGlobalRuleConfigs(), parameter.getProps(), parameter.getModeConfiguration().isOverwrite());
}
}
- private InstanceContext buildInstanceContext(final ContextManagerBuilderParameter parameter, final ModeConfiguration modeConfig) {
- return new InstanceContext(new ComputeNodeInstance(parameter.getInstanceMetaData()), new StandaloneWorkerIdGenerator(), modeConfig, new StandaloneLockContext(),
- new EventBusContext());
+ private InstanceContext buildInstanceContext(final ContextManagerBuilderParameter parameter) {
+ return new InstanceContext(
+ new ComputeNodeInstance(parameter.getInstanceMetaData()), new StandaloneWorkerIdGenerator(), parameter.getModeConfiguration(), new StandaloneLockContext(), new EventBusContext());
}
private MetaDataContexts buildMetaDataContexts(final MetaDataPersistService persistService,