You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2024/03/10 13:41:44 UTC
(shardingsphere) branch master updated: Add MaskImportRuleConfigurationProvider (#30437)
This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 4f4174b050c Add MaskImportRuleConfigurationProvider (#30437)
4f4174b050c is described below
commit 4f4174b050c652262384de1d18322f1ac2ee2068
Author: yx9o <ya...@163.com>
AuthorDate: Sun Mar 10 21:41:36 2024 +0800
Add MaskImportRuleConfigurationProvider (#30437)
* Add MaskImportRuleConfigurationProvider
* Update
---
.../MaskImportRuleConfigurationProvider.java | 41 ++++++++++++++--------
...le.spi.database.ImportRuleConfigurationProvider | 18 ++++++++++
.../YamlDatabaseConfigurationImportExecutor.java | 15 +-------
3 files changed, 45 insertions(+), 29 deletions(-)
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskImportRuleConfigurationProvider.java
similarity index 72%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java
rename to features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskImportRuleConfigurationProvider.java
index 9b23ad96b48..735910d7dc2 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java
+++ b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/provider/MaskImportRuleConfigurationProvider.java
@@ -15,16 +15,21 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.common.checker;
+package org.apache.shardingsphere.mask.distsql.handler.provider;
+import org.apache.shardingsphere.distsql.handler.engine.update.ral.rule.spi.database.ImportRuleConfigurationProvider;
import org.apache.shardingsphere.distsql.handler.exception.algorithm.MissingRequiredAlgorithmException;
import org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import org.apache.shardingsphere.infra.instance.InstanceContext;
+import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.rule.identifier.scope.DatabaseRule;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mask.api.config.MaskRuleConfiguration;
import org.apache.shardingsphere.mask.api.config.rule.MaskColumnRuleConfiguration;
import org.apache.shardingsphere.mask.api.config.rule.MaskTableRuleConfiguration;
+import org.apache.shardingsphere.mask.rule.MaskRule;
import org.apache.shardingsphere.mask.spi.MaskAlgorithm;
import java.util.Collection;
@@ -33,23 +38,24 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
- * Mask rule configuration import checker.
+ * Mask import rule configuration provider.
*/
-public final class MaskRuleConfigurationImportChecker {
+public final class MaskImportRuleConfigurationProvider implements ImportRuleConfigurationProvider {
- /**
- * Check mask rule configuration.
- *
- * @param database database
- * @param currentRuleConfig current rule configuration
- */
- public void check(final ShardingSphereDatabase database, final MaskRuleConfiguration currentRuleConfig) {
- if (null == database || null == currentRuleConfig) {
+ @Override
+ public void check(final ShardingSphereDatabase database, final RuleConfiguration ruleConfig) {
+ if (null == database || null == ruleConfig) {
return;
}
- checkTables(currentRuleConfig, database.getName());
- checkMaskAlgorithms(currentRuleConfig);
- checkMaskAlgorithmsExisted(currentRuleConfig, database.getName());
+ MaskRuleConfiguration maskRuleConfig = (MaskRuleConfiguration) ruleConfig;
+ checkTables(maskRuleConfig, database.getName());
+ checkMaskAlgorithms(maskRuleConfig);
+ checkMaskAlgorithmsExisted(maskRuleConfig, database.getName());
+ }
+
+ @Override
+ public DatabaseRule build(final ShardingSphereDatabase database, final RuleConfiguration ruleConfig, final InstanceContext instanceContext) {
+ return new MaskRule((MaskRuleConfiguration) ruleConfig);
}
private void checkTables(final MaskRuleConfiguration currentRuleConfig, final String databaseName) {
@@ -71,4 +77,9 @@ public final class MaskRuleConfigurationImportChecker {
notExistedAlgorithms.removeIf(maskAlgorithms::contains);
ShardingSpherePreconditions.checkState(notExistedAlgorithms.isEmpty(), () -> new MissingRequiredAlgorithmException(databaseName, notExistedAlgorithms));
}
+
+ @Override
+ public Class<? extends RuleConfiguration> getType() {
+ return MaskRuleConfiguration.class;
+ }
}
diff --git a/features/mask/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.update.ral.rule.spi.database.ImportRuleConfigurationProvider b/features/mask/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.update.ral.rule.spi.database.ImportRuleConfigurationProvider
new file mode 100644
index 00000000000..04b5da428c0
--- /dev/null
+++ b/features/mask/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.engine.update.ral.rule.spi.database.ImportRuleConfigurationProvider
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+org.apache.shardingsphere.mask.distsql.handler.provider.MaskImportRuleConfigurationProvider
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
index dc3363f5026..509322df912 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/YamlDatabaseConfigurationImportExecutor.java
@@ -41,8 +41,6 @@ import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
import org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapper;
-import org.apache.shardingsphere.mask.api.config.MaskRuleConfiguration;
-import org.apache.shardingsphere.mask.rule.MaskRule;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.proxy.backend.config.yaml.YamlProxyDataSourceConfiguration;
@@ -50,7 +48,6 @@ import org.apache.shardingsphere.proxy.backend.config.yaml.YamlProxyDatabaseConf
import org.apache.shardingsphere.proxy.backend.config.yaml.swapper.YamlProxyDataSourceConfigurationSwapper;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.exception.MissingDatabaseNameException;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.common.checker.MaskRuleConfigurationImportChecker;
import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
import org.apache.shardingsphere.single.rule.SingleRule;
@@ -70,8 +67,6 @@ import java.util.stream.Collectors;
*/
public final class YamlDatabaseConfigurationImportExecutor {
- private final MaskRuleConfigurationImportChecker maskRuleConfigImportChecker = new MaskRuleConfigurationImportChecker();
-
private final YamlProxyDataSourceConfigurationSwapper dataSourceConfigSwapper = new YamlProxyDataSourceConfigurationSwapper();
private final DataSourcePoolPropertiesValidator validateHandler = new DataSourcePoolPropertiesValidator();
@@ -146,9 +141,7 @@ public final class YamlDatabaseConfigurationImportExecutor {
}
private void addRule(final Collection<RuleConfiguration> ruleConfigs, final RuleConfiguration ruleConfig, final ShardingSphereDatabase database) {
- if (ruleConfig instanceof MaskRuleConfiguration) {
- addMaskRuleConfiguration((MaskRuleConfiguration) ruleConfig, ruleConfigs, database);
- } else if (ruleConfig instanceof BroadcastRuleConfiguration) {
+ if (ruleConfig instanceof BroadcastRuleConfiguration) {
addBroadcastRuleConfiguration((BroadcastRuleConfiguration) ruleConfig, ruleConfigs, database);
} else if (ruleConfig instanceof SingleRuleConfiguration) {
addSingleRuleConfiguration((SingleRuleConfiguration) ruleConfig, ruleConfigs, database);
@@ -171,12 +164,6 @@ public final class YamlDatabaseConfigurationImportExecutor {
return result;
}
- private void addMaskRuleConfiguration(final MaskRuleConfiguration ruleConfig, final Collection<RuleConfiguration> ruleConfigs, final ShardingSphereDatabase database) {
- maskRuleConfigImportChecker.check(database, ruleConfig);
- ruleConfigs.add(ruleConfig);
- database.getRuleMetaData().getRules().add(new MaskRule(ruleConfig));
- }
-
private void addBroadcastRuleConfiguration(final BroadcastRuleConfiguration ruleConfig, final Collection<RuleConfiguration> ruleConfigs, final ShardingSphereDatabase database) {
ruleConfigs.add(ruleConfig);
database.getRuleMetaData().getRules().add(new BroadcastRule(ruleConfig, database.getName(),