This is an automated email from the ASF dual-hosted git repository. menghaoran pushed a commit to branch api-refactor in repository https://gitbox.apache.org/repos/asf/shardingsphere-ui.git
commit c1bf0bafa9b2e98ae7e4917d1d791125f3a78be7 Author: menghaoranss <[email protected]> AuthorDate: Thu Jun 17 18:04:57 2021 +0800 Refactor referenced API --- pom.xml | 22 ++++++- shardingsphere-ui-backend/pom.xml | 18 +++++- .../ui/servcie/RegistryCenterService.java | 12 +--- .../ui/servcie/impl/GovernanceServiceImpl.java | 71 +++++++++++++--------- .../impl/ProxyAuthenticationServiceImpl.java | 14 +++-- .../ui/servcie/impl/RegistryCenterServiceImpl.java | 14 +---- .../impl/ShardingPropertiesServiceImpl.java | 9 +-- .../ui/servcie/impl/ShardingSchemaServiceImpl.java | 50 +++++++-------- .../ui/util/CenterRepositoryFactory.java | 23 ++++--- shardingsphere-ui-distribution/pom.xml | 2 +- .../shardingsphere-ui-bin-distribution/pom.xml | 2 +- .../shardingsphere-ui-src-distribution/pom.xml | 2 +- shardingsphere-ui-frontend/pom.xml | 2 +- 13 files changed, 136 insertions(+), 105 deletions(-) diff --git a/pom.xml b/pom.xml index eacaddc..67b066c 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ </parent> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-ui</artifactId> - <version>5.0.0-beta-SNAPSHOT</version> + <version>5.0.0-RC1-SNAPSHOT</version> <packaging>pom</packaging> <name>${project.artifactId}</name> @@ -83,6 +83,26 @@ <artifactId>shardingsphere-governance-repository-etcd</artifactId> <version>${shardingsphere.version}</version> </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-readwrite-splitting-core</artifactId> + <version>${shardingsphere.version}</version> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-encrypt-core</artifactId> + <version>${shardingsphere.version}</version> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-db-discovery-core</artifactId> + <version>${shardingsphere.version}</version> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-shadow-core</artifactId> + <version>${shardingsphere.version}</version> + </dependency> </dependencies> </dependencyManagement> diff --git a/shardingsphere-ui-backend/pom.xml b/shardingsphere-ui-backend/pom.xml index 6436ba4..4639c38 100644 --- a/shardingsphere-ui-backend/pom.xml +++ b/shardingsphere-ui-backend/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-ui</artifactId> - <version>5.0.0-beta-SNAPSHOT</version> + <version>5.0.0-RC1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-ui-backend</artifactId> <name>${project.artifactId}</name> @@ -47,6 +47,22 @@ </dependency> <dependency> <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-readwrite-splitting-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-encrypt-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-db-discovery-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> + <artifactId>shardingsphere-shadow-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-governance-core</artifactId> </dependency> <dependency> diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/RegistryCenterService.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/RegistryCenterService.java index 460e0d6..6b64207 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/RegistryCenterService.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/RegistryCenterService.java @@ -17,8 +17,7 @@ package org.apache.shardingsphere.ui.servcie; -import org.apache.shardingsphere.governance.core.registry.RegistryCenterNode; -import org.apache.shardingsphere.governance.repository.api.RegistryRepository; +import org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository; /** * Registry center service. @@ -30,12 +29,5 @@ public interface RegistryCenterService { * * @return registry center */ - RegistryRepository getActivatedRegistryCenter(); - - /** - * Get activated state node. - * - * @return state node - */ - RegistryCenterNode getActivatedStateNode(); + RegistryCenterRepository getActivatedRegistryCenter(); } diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/GovernanceServiceImpl.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/GovernanceServiceImpl.java index 8284ca9..12d2eb9 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/GovernanceServiceImpl.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/GovernanceServiceImpl.java @@ -19,11 +19,15 @@ package org.apache.shardingsphere.ui.servcie.impl; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; -import org.apache.shardingsphere.governance.core.registry.RegistryCenterNodeStatus; -import org.apache.shardingsphere.governance.core.yaml.config.YamlConfigurationConverter; +import com.google.common.base.Strings; +import org.apache.shardingsphere.governance.core.registry.state.ResourceState; +import org.apache.shardingsphere.governance.core.registry.state.node.StatesNode; import org.apache.shardingsphere.infra.config.RuleConfiguration; -import org.apache.shardingsphere.readwrite.splitting.api.ReadWriteSplittingRuleConfiguration; -import org.apache.shardingsphere.readwrite.splitting.api.rule.ReadWriteSplittingDataSourceRuleConfiguration; +import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration; +import org.apache.shardingsphere.infra.yaml.engine.YamlEngine; +import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine; +import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration; +import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration; import org.apache.shardingsphere.ui.common.dto.InstanceDTO; import org.apache.shardingsphere.ui.common.dto.ReadDataSourceDTO; import org.apache.shardingsphere.ui.servcie.GovernanceService; @@ -57,16 +61,16 @@ public final class GovernanceServiceImpl implements GovernanceService { List<String> instanceIds = registryCenterService.getActivatedRegistryCenter().getChildrenKeys(getInstancesNodeFullRootPath()); Collection<InstanceDTO> result = new ArrayList<>(instanceIds.size()); for (String instanceId : instanceIds) { - String value = registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getProxyNodePath(instanceId)); - result.add(new InstanceDTO(instanceId, !RegistryCenterNodeStatus.DISABLED.toString().equalsIgnoreCase(value))); + String value = registryCenterService.getActivatedRegistryCenter().get(StatesNode.getProxyNodePath(instanceId)); + result.add(new InstanceDTO(instanceId, !ResourceState.DISABLED.toString().equalsIgnoreCase(value))); } return result; } @Override public void updateInstanceStatus(final String instanceId, final boolean enabled) { - String value = enabled ? "" : RegistryCenterNodeStatus.DISABLED.toString(); - registryCenterService.getActivatedRegistryCenter().persist(registryCenterService.getActivatedStateNode().getProxyNodePath(instanceId), value); + String value = enabled ? "" : ResourceState.DISABLED.toString(); + registryCenterService.getActivatedRegistryCenter().persist(StatesNode.getProxyNodePath(instanceId), value); } @Override @@ -79,7 +83,7 @@ public final class GovernanceServiceImpl implements GovernanceService { } if (configData.contains("!SHARDING")) { handleShardingRuleConfiguration(result, configData, schemaName); - } else if (configData.contains("!READ_WRITE_SPLITTING")) { + } else if (configData.contains("!READWRITE_SPLITTING")) { handleMasterSlaveRuleConfiguration(result, configData, schemaName); } } @@ -88,60 +92,67 @@ public final class GovernanceServiceImpl implements GovernanceService { @Override public void updateReadDataSourceStatus(final String schemaNames, final String readDataSourceName, final boolean enabled) { - String value = enabled ? "" : RegistryCenterNodeStatus.DISABLED.toString(); - registryCenterService.getActivatedRegistryCenter().persist(registryCenterService.getActivatedStateNode().getDataSourcePath(schemaNames, readDataSourceName), value); + String value = enabled ? "" : ResourceState.DISABLED.toString(); + registryCenterService.getActivatedRegistryCenter().persist(StatesNode.getDataSourcePath(schemaNames, readDataSourceName), value); } private String getInstancesNodeFullRootPath() { - String result = registryCenterService.getActivatedStateNode().getProxyNodePath(""); + String result = StatesNode.getProxyNodePath(""); return result.substring(0, result.length() - 1); } private void handleShardingRuleConfiguration(final Collection<ReadDataSourceDTO> readDataSourceDTOS, final String configData, final String schemaName) { - Collection<RuleConfiguration> configurations = YamlConfigurationConverter.convertRuleConfigurations(configData); - Collection<ReadWriteSplittingRuleConfiguration> readWriteSplittingRuleConfigurations = configurations.stream().filter( - config -> config instanceof ReadWriteSplittingRuleConfiguration).map(config -> (ReadWriteSplittingRuleConfiguration) config).collect(Collectors.toList()); - for (ReadWriteSplittingRuleConfiguration readWriteSplittingRuleConfiguration : readWriteSplittingRuleConfigurations) { - addSlaveDataSource(readDataSourceDTOS, readWriteSplittingRuleConfiguration, schemaName); + Collection<RuleConfiguration> configurations = getRuleConfigurations(configData); + Collection<ReadwriteSplittingRuleConfiguration> readWriteSplittingRuleConfigurations = configurations.stream().filter( + config -> config instanceof ReadwriteSplittingRuleConfiguration).map(config -> (ReadwriteSplittingRuleConfiguration) config).collect(Collectors.toList()); + for (ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfiguration : readWriteSplittingRuleConfigurations) { + addSlaveDataSource(readDataSourceDTOS, readwriteSplittingRuleConfiguration, schemaName); } } private void handleMasterSlaveRuleConfiguration(final Collection<ReadDataSourceDTO> readDataSourceDTOS, final String configData, final String schemaName) { - ReadWriteSplittingRuleConfiguration readWriteSplittingRuleConfiguration = loadPrimaryReadRuleConfiguration(configData); - addSlaveDataSource(readDataSourceDTOS, readWriteSplittingRuleConfiguration, schemaName); + ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfiguration = loadReadwriteSplittingRuleConfiguration(configData); + addSlaveDataSource(readDataSourceDTOS, readwriteSplittingRuleConfiguration, schemaName); } - private ReadWriteSplittingRuleConfiguration loadPrimaryReadRuleConfiguration(final String configData) { - Collection<RuleConfiguration> ruleConfigurations = YamlConfigurationConverter.convertRuleConfigurations(configData); - Optional<ReadWriteSplittingRuleConfiguration> result = ruleConfigurations.stream().filter( - each -> each instanceof ReadWriteSplittingRuleConfiguration).map(ruleConfiguration -> (ReadWriteSplittingRuleConfiguration) ruleConfiguration).findFirst(); + private ReadwriteSplittingRuleConfiguration loadReadwriteSplittingRuleConfiguration(final String configData) { + Collection<RuleConfiguration> ruleConfigurations = getRuleConfigurations(configData); + Optional<ReadwriteSplittingRuleConfiguration> result = ruleConfigurations.stream().filter( + each -> each instanceof ReadwriteSplittingRuleConfiguration).map(ruleConfiguration -> (ReadwriteSplittingRuleConfiguration) ruleConfiguration).findFirst(); Preconditions.checkState(result.isPresent()); return result.get(); } - private void addSlaveDataSource(final Collection<ReadDataSourceDTO> readDataSourceDTOS, final ReadWriteSplittingRuleConfiguration readWriteSplittingRuleConfiguration, final String schemaName) { + private void addSlaveDataSource(final Collection<ReadDataSourceDTO> readDataSourceDTOS, final ReadwriteSplittingRuleConfiguration readwriteSplittingRuleConfiguration, final String schemaName) { Collection<String> disabledSchemaDataSourceNames = getDisabledSchemaDataSourceNames(); - for (ReadWriteSplittingDataSourceRuleConfiguration each : readWriteSplittingRuleConfiguration.getDataSources()) { + for (ReadwriteSplittingDataSourceRuleConfiguration each : readwriteSplittingRuleConfiguration.getDataSources()) { readDataSourceDTOS.addAll(getReadDataSourceDTOS(schemaName, disabledSchemaDataSourceNames, each)); } } - private Collection<ReadDataSourceDTO> getReadDataSourceDTOS(final String schemaName, final Collection<String> disabledSchemaDataSourceNames, final ReadWriteSplittingDataSourceRuleConfiguration group) { + private Collection<ReadDataSourceDTO> getReadDataSourceDTOS(final String schemaName, final Collection<String> disabledSchemaDataSourceNames, + final ReadwriteSplittingDataSourceRuleConfiguration group) { Collection<ReadDataSourceDTO> result = new LinkedList<>(); for (String each : group.getReadDataSourceNames()) { result.add(new ReadDataSourceDTO(schemaName, group.getWriteDataSourceName(), each, !disabledSchemaDataSourceNames.contains(schemaName + "." + each))); } return result; } + + private Collection<RuleConfiguration> getRuleConfigurations(final String yamlContent) { + Collection<YamlRuleConfiguration> rules = Strings.isNullOrEmpty(yamlContent) + ? new LinkedList<>() : YamlEngine.unmarshal(yamlContent, Collection.class); + return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(rules); + } private Collection<String> getDisabledSchemaDataSourceNames() { List<String> result = new ArrayList<>(); - List<String> schemaNames = registryCenterService.getActivatedRegistryCenter().getChildrenKeys(registryCenterService.getActivatedStateNode().getDataNodesPath()); + List<String> schemaNames = registryCenterService.getActivatedRegistryCenter().getChildrenKeys(StatesNode.getDataNodesPath()); for (String schemaName : schemaNames) { - List<String> dataSourceNames = registryCenterService.getActivatedRegistryCenter().getChildrenKeys(registryCenterService.getActivatedStateNode().getSchemaPath(schemaName)); + List<String> dataSourceNames = registryCenterService.getActivatedRegistryCenter().getChildrenKeys(StatesNode.getSchemaPath(schemaName)); for (String dataSourceName : dataSourceNames) { - String value = registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getDataSourcePath(schemaName, dataSourceName)); - if (RegistryCenterNodeStatus.DISABLED.toString().equalsIgnoreCase(value)) { + String value = registryCenterService.getActivatedRegistryCenter().get(StatesNode.getDataSourcePath(schemaName, dataSourceName)); + if (ResourceState.DISABLED.toString().equalsIgnoreCase(value)) { result.add(Joiner.on(".").join(schemaName, dataSourceName)); } } diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ProxyAuthenticationServiceImpl.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ProxyAuthenticationServiceImpl.java index 4543759..2307808 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ProxyAuthenticationServiceImpl.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ProxyAuthenticationServiceImpl.java @@ -17,12 +17,17 @@ package org.apache.shardingsphere.ui.servcie.impl; -import org.apache.shardingsphere.governance.core.yaml.config.YamlConfigurationConverter; +import com.google.common.base.Preconditions; +import org.apache.shardingsphere.governance.core.registry.config.node.GlobalNode; +import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration; +import org.apache.shardingsphere.infra.yaml.engine.YamlEngine; import org.apache.shardingsphere.ui.servcie.ProxyAuthenticationService; import org.apache.shardingsphere.ui.servcie.RegistryCenterService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collection; + /** * Implementation of sharding proxy authentication service. */ @@ -34,19 +39,20 @@ public final class ProxyAuthenticationServiceImpl implements ProxyAuthentication @Override public String getAuthentication() { - return registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getAuthenticationPath()); + return registryCenterService.getActivatedRegistryCenter().get(GlobalNode.getGlobalRuleNode()); } @Override public void updateAuthentication(final String authentication) { checkAuthenticationConfiguration(authentication); registryCenterService.getActivatedRegistryCenter() - .persist(registryCenterService.getActivatedStateNode().getAuthenticationPath(), authentication); + .persist(GlobalNode.getGlobalRuleNode(), authentication); } private void checkAuthenticationConfiguration(final String data) { try { - YamlConfigurationConverter.convertUserRule(data); + Collection<YamlRuleConfiguration> globalRuleConfigs = YamlEngine.unmarshal(data, Collection.class); + Preconditions.checkState(!globalRuleConfigs.isEmpty()); // CHECKSTYLE:OFF } catch (final Exception ex) { // CHECKSTYLE:ON diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/RegistryCenterServiceImpl.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/RegistryCenterServiceImpl.java index 02aad71..ac56fed 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/RegistryCenterServiceImpl.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/RegistryCenterServiceImpl.java @@ -17,8 +17,7 @@ package org.apache.shardingsphere.ui.servcie.impl; -import org.apache.shardingsphere.governance.core.registry.RegistryCenterNode; -import org.apache.shardingsphere.governance.repository.api.RegistryRepository; +import org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository; import org.apache.shardingsphere.ui.common.domain.CenterConfig; import org.apache.shardingsphere.ui.common.exception.ShardingSphereUIException; import org.apache.shardingsphere.ui.servcie.CenterConfigService; @@ -39,20 +38,11 @@ public final class RegistryCenterServiceImpl implements RegistryCenterService { private CenterConfigService centerConfigService; @Override - public RegistryRepository getActivatedRegistryCenter() { + public RegistryCenterRepository getActivatedRegistryCenter() { Optional<CenterConfig> optional = centerConfigService.loadActivated(); if (optional.isPresent()) { return CenterRepositoryFactory.createRegistryRepository(optional.get()); } throw new ShardingSphereUIException(ShardingSphereUIException.SERVER_ERROR, "No activated registry center!"); } - - @Override - public RegistryCenterNode getActivatedStateNode() { - Optional<CenterConfig> optional = centerConfigService.loadActivated(); - if (optional.isPresent()) { - return new RegistryCenterNode(); - } - throw new ShardingSphereUIException(ShardingSphereUIException.SERVER_ERROR, "No activated registry center!"); - } } diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingPropertiesServiceImpl.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingPropertiesServiceImpl.java index 62edefe..9073e2b 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingPropertiesServiceImpl.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingPropertiesServiceImpl.java @@ -17,8 +17,9 @@ package org.apache.shardingsphere.ui.servcie.impl; -import org.apache.shardingsphere.governance.core.yaml.config.YamlConfigurationConverter; +import org.apache.shardingsphere.governance.core.registry.config.node.GlobalNode; import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties; +import org.apache.shardingsphere.infra.yaml.engine.YamlEngine; import org.apache.shardingsphere.ui.servcie.RegistryCenterService; import org.apache.shardingsphere.ui.servcie.ShardingPropertiesService; import org.springframework.stereotype.Service; @@ -37,18 +38,18 @@ public final class ShardingPropertiesServiceImpl implements ShardingPropertiesSe @Override public String loadShardingProperties() { - return registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getPropsPath()); + return registryCenterService.getActivatedRegistryCenter().get(GlobalNode.getPropsPath()); } @Override public void updateShardingProperties(final String configData) { checkShardingProperties(configData); - registryCenterService.getActivatedRegistryCenter().persist(registryCenterService.getActivatedStateNode().getPropsPath(), configData); + registryCenterService.getActivatedRegistryCenter().persist(GlobalNode.getPropsPath(), configData); } private void checkShardingProperties(final String configData) { try { - Properties props = YamlConfigurationConverter.convertProperties(configData); + Properties props = YamlEngine.unmarshal(configData, Properties.class); new ConfigurationProperties(props); // CHECKSTYLE:OFF } catch (final Exception ex) { diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingSchemaServiceImpl.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingSchemaServiceImpl.java index 7ebba13..c903677 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingSchemaServiceImpl.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/servcie/impl/ShardingSchemaServiceImpl.java @@ -21,9 +21,11 @@ import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.base.Strings; -import org.apache.shardingsphere.governance.core.yaml.config.YamlConfigurationConverter; -import org.apache.shardingsphere.governance.repository.api.RegistryRepository; +import org.apache.shardingsphere.governance.core.registry.config.node.SchemaMetadataNode; +import org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository; import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration; +import org.apache.shardingsphere.infra.yaml.engine.YamlEngine; +import org.apache.shardingsphere.infra.yaml.swapper.YamlDataSourceConfigurationSwapper; import org.apache.shardingsphere.ui.servcie.RegistryCenterService; import org.apache.shardingsphere.ui.servcie.ShardingSchemaService; import org.springframework.stereotype.Service; @@ -31,8 +33,11 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * Implementation of sharding schema service. @@ -45,17 +50,17 @@ public final class ShardingSchemaServiceImpl implements ShardingSchemaService { @Override public Collection<String> getAllSchemaNames() { - return registryCenterService.getActivatedRegistryCenter().getChildrenKeys(registryCenterService.getActivatedStateNode().getMetadataNodePath()); + return registryCenterService.getActivatedRegistryCenter().getChildrenKeys(SchemaMetadataNode.getMetadataNodePath()); } @Override public String getRuleConfiguration(final String schemaName) { - return registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getRulePath(schemaName)); + return registryCenterService.getActivatedRegistryCenter().get(SchemaMetadataNode.getRulePath(schemaName)); } @Override public String getDataSourceConfiguration(final String schemaName) { - return registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getMetadataDataSourcePath(schemaName)); + return registryCenterService.getActivatedRegistryCenter().get(SchemaMetadataNode.getMetadataDataSourcePath(schemaName)); } @Override @@ -77,29 +82,28 @@ public final class ShardingSchemaServiceImpl implements ShardingSchemaService { checkDataSourceConfiguration(dataSourceConfiguration); persistRuleConfiguration(schemaName, ruleConfiguration); persistDataSourceConfiguration(schemaName, dataSourceConfiguration); - persistSchemaName(schemaName); } @Override public void deleteSchemaConfiguration(final String schemaName) { - RegistryRepository registryRepository = registryCenterService.getActivatedRegistryCenter(); - String schemaNamePath = registryCenterService.getActivatedStateNode().getSchemaNamePath(schemaName); + RegistryCenterRepository registryRepository = registryCenterService.getActivatedRegistryCenter(); + String schemaNamePath = SchemaMetadataNode.getSchemaNamePath(schemaName); registryRepository.delete(schemaNamePath); - String schemaNames = registryCenterService.getActivatedRegistryCenter().get(registryCenterService.getActivatedStateNode().getMetadataNodePath()); + String schemaNames = registryCenterService.getActivatedRegistryCenter().get(SchemaMetadataNode.getMetadataNodePath()); List<String> schemaNameList = new ArrayList<>(Splitter.on(",").splitToList(schemaNames)); schemaNameList.remove(schemaName); - registryRepository.persist(registryCenterService.getActivatedStateNode().getMetadataNodePath(), Joiner.on(",").join(schemaNameList)); + registryRepository.persist(SchemaMetadataNode.getMetadataNodePath(), Joiner.on(",").join(schemaNameList)); } @Override public String getMetadataConfiguration(final String schemaName) { return registryCenterService.getActivatedRegistryCenter().get( - registryCenterService.getActivatedStateNode().getSchemaPath(schemaName)); + SchemaMetadataNode.getMetadataSchemaPath(schemaName)); } private void checkRuleConfiguration(final String configData) { try { - YamlConfigurationConverter.convertRuleConfigurations(configData); + YamlEngine.unmarshal(configData, Collection.class); // CHECKSTYLE:OFF } catch (final Exception ex) { // CHECKSTYLE:ON @@ -108,13 +112,16 @@ public final class ShardingSchemaServiceImpl implements ShardingSchemaService { } private void persistRuleConfiguration(final String schemaName, final String ruleConfiguration) { - registryCenterService.getActivatedRegistryCenter().persist(registryCenterService.getActivatedStateNode().getRulePath(schemaName), ruleConfiguration); + registryCenterService.getActivatedRegistryCenter().persist(SchemaMetadataNode.getRulePath(schemaName), ruleConfiguration); } private void checkDataSourceConfiguration(final String configData) { try { - Map<String, DataSourceConfiguration> dataSourceConfigs = YamlConfigurationConverter.convertDataSourceConfigurations(configData); - Preconditions.checkState(!dataSourceConfigs.isEmpty(), "data source configuration is invalid."); + Map<String, Map<String, Object>> yamlDataSources = YamlEngine.unmarshal(configData, Map.class); + Map<String, DataSourceConfiguration> dataSourceConfigs = yamlDataSources.isEmpty() ? new HashMap<>() + : yamlDataSources.entrySet().stream().collect(Collectors.toMap( + Map.Entry::getKey, entry -> new YamlDataSourceConfigurationSwapper().swapToDataSourceConfiguration(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)); + Preconditions.checkState(!dataSourceConfigs.isEmpty()); // CHECKSTYLE:OFF } catch (final Exception ex) { // CHECKSTYLE:ON @@ -123,22 +130,11 @@ public final class ShardingSchemaServiceImpl implements ShardingSchemaService { } private void persistDataSourceConfiguration(final String schemaName, final String dataSourceConfiguration) { - registryCenterService.getActivatedRegistryCenter().persist(registryCenterService.getActivatedStateNode().getMetadataDataSourcePath(schemaName), dataSourceConfiguration); + registryCenterService.getActivatedRegistryCenter().persist(SchemaMetadataNode.getMetadataDataSourcePath(schemaName), dataSourceConfiguration); } private void checkSchemaName(final String schemaName, final Collection<String> existedSchemaNames) { Preconditions.checkArgument(!Strings.isNullOrEmpty(schemaName), "schema name is invalid."); Preconditions.checkArgument(!existedSchemaNames.contains(schemaName), "schema name already exists."); } - - private void persistSchemaName(final String schemaName) { - RegistryRepository registryRepository = registryCenterService.getActivatedRegistryCenter(); - String schemaPath = registryCenterService.getActivatedStateNode().getMetadataNodePath(); - String schemaNames = registryRepository.get(schemaPath); - List<String> schemaNameList = Strings.isNullOrEmpty(schemaNames) ? new ArrayList<>() : new ArrayList<>(Splitter.on(",").splitToList(schemaNames)); - if (!schemaNameList.contains(schemaName)) { - schemaNameList.add(schemaName); - registryRepository.persist(schemaPath, Joiner.on(",").join(schemaNameList)); - } - } } diff --git a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/util/CenterRepositoryFactory.java b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/util/CenterRepositoryFactory.java index 2cb67d1..93ba50d 100644 --- a/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/util/CenterRepositoryFactory.java +++ b/shardingsphere-ui-backend/src/main/java/org/apache/shardingsphere/ui/util/CenterRepositoryFactory.java @@ -19,10 +19,9 @@ package org.apache.shardingsphere.ui.util; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import org.apache.shardingsphere.governance.repository.api.GovernanceRepository; -import org.apache.shardingsphere.governance.repository.api.RegistryRepository; -import org.apache.shardingsphere.governance.repository.api.config.GovernanceCenterConfiguration; +import org.apache.shardingsphere.governance.repository.api.config.RegistryCenterConfiguration; import org.apache.shardingsphere.governance.repository.etcd.EtcdRepository; +import org.apache.shardingsphere.governance.repository.spi.RegistryCenterRepository; import org.apache.shardingsphere.governance.repository.zookeeper.CuratorZookeeperRepository; import org.apache.shardingsphere.ui.common.constant.InstanceType; import org.apache.shardingsphere.ui.common.domain.CenterConfig; @@ -36,33 +35,33 @@ import java.util.concurrent.ConcurrentHashMap; @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class CenterRepositoryFactory { - private static final ConcurrentHashMap<String, RegistryRepository> REGISTRY_REPOSITORY_MAP = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap<String, RegistryCenterRepository> REGISTRY_REPOSITORY_MAP = new ConcurrentHashMap<>(); /** - * Create registry repository. + * Create registry center repository. * * @param config center config * @return registry repository */ - public static RegistryRepository createRegistryRepository(final CenterConfig config) { - RegistryRepository result = REGISTRY_REPOSITORY_MAP.get(config.getName()); + public static RegistryCenterRepository createRegistryRepository(final CenterConfig config) { + RegistryCenterRepository result = REGISTRY_REPOSITORY_MAP.get(config.getName()); if (null != result) { return result; } - result = (RegistryRepository) createGovernanceRepository(config.getInstanceType()); + result = createGovernanceRepository(config.getInstanceType()); result.init(config.getGovernanceName(), convert(config)); REGISTRY_REPOSITORY_MAP.put(config.getName(), result); return result; } - private static GovernanceCenterConfiguration convert(final CenterConfig config) { - GovernanceCenterConfiguration result = new GovernanceCenterConfiguration(config.getInstanceType(), config.getServerLists(), new Properties()); + private static RegistryCenterConfiguration convert(final CenterConfig config) { + RegistryCenterConfiguration result = new RegistryCenterConfiguration(config.getInstanceType(), config.getServerLists(), new Properties()); result.getProps().put("digest", config.getDigest()); return result; } - private static GovernanceRepository createGovernanceRepository(final String instanceType) { - RegistryRepository result; + private static RegistryCenterRepository createGovernanceRepository(final String instanceType) { + RegistryCenterRepository result; InstanceType type = InstanceType.nameOf(instanceType); switch (type) { case ZOOKEEPER: diff --git a/shardingsphere-ui-distribution/pom.xml b/shardingsphere-ui-distribution/pom.xml index c16f37c..b25d5be 100644 --- a/shardingsphere-ui-distribution/pom.xml +++ b/shardingsphere-ui-distribution/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-ui</artifactId> - <version>5.0.0-beta-SNAPSHOT</version> + <version>5.0.0-RC1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-ui-distribution</artifactId> <name>${project.artifactId}</name> diff --git a/shardingsphere-ui-distribution/shardingsphere-ui-bin-distribution/pom.xml b/shardingsphere-ui-distribution/shardingsphere-ui-bin-distribution/pom.xml index ad964c6..8a57590 100644 --- a/shardingsphere-ui-distribution/shardingsphere-ui-bin-distribution/pom.xml +++ b/shardingsphere-ui-distribution/shardingsphere-ui-bin-distribution/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-ui-distribution</artifactId> - <version>5.0.0-beta-SNAPSHOT</version> + <version>5.0.0-RC1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-ui-bin-distribution</artifactId> <name>${project.artifactId}</name> diff --git a/shardingsphere-ui-distribution/shardingsphere-ui-src-distribution/pom.xml b/shardingsphere-ui-distribution/shardingsphere-ui-src-distribution/pom.xml index 6b4bfdc..c623a42 100644 --- a/shardingsphere-ui-distribution/shardingsphere-ui-src-distribution/pom.xml +++ b/shardingsphere-ui-distribution/shardingsphere-ui-src-distribution/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-ui-distribution</artifactId> - <version>5.0.0-beta-SNAPSHOT</version> + <version>5.0.0-RC1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-ui-src-distribution</artifactId> <name>${project.artifactId}</name> diff --git a/shardingsphere-ui-frontend/pom.xml b/shardingsphere-ui-frontend/pom.xml index 51fa4d3..0d29091 100644 --- a/shardingsphere-ui-frontend/pom.xml +++ b/shardingsphere-ui-frontend/pom.xml @@ -21,7 +21,7 @@ <parent> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-ui</artifactId> - <version>5.0.0-beta-SNAPSHOT</version> + <version>5.0.0-RC1-SNAPSHOT</version> </parent> <artifactId>shardingsphere-ui-frontend</artifactId> <name>${project.artifactId}</name>
