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 2023/05/12 05:43:17 UTC
[shardingsphere] branch master updated: Refactor CompatibleEncryptRuleConfiguration convert to EncryptRuleConfiguration logic (#25601)
This is an automated email from the ASF dual-hosted git repository.
zhonghongsheng 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 567faccc79d Refactor CompatibleEncryptRuleConfiguration convert to EncryptRuleConfiguration logic (#25601)
567faccc79d is described below
commit 567faccc79df39a378b4faccf2518d25d9f0c41d
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Fri May 12 13:43:10 2023 +0800
Refactor CompatibleEncryptRuleConfiguration convert to EncryptRuleConfiguration logic (#25601)
---
.../encrypt/api/config/CompatibleEncryptRuleConfiguration.java | 9 +++++++++
.../checker/CompatibleEncryptRuleConfigurationChecker.java | 3 +--
.../encrypt/distsql/handler/query/ShowEncryptRuleExecutor.java | 6 +++++-
.../update/AlterCompatibleEncryptRuleStatementUpdater.java | 5 ++---
.../update/CreateCompatibleEncryptRuleStatementUpdater.java | 7 +++----
.../update/DropCompatibleEncryptRuleStatementUpdater.java | 7 +++----
.../distsql/ral/queryable/ConvertYamlConfigurationExecutor.java | 3 +++
.../distsql/rql/rule/ShowRulesUsedStorageUnitExecutor.java | 7 +++++--
.../apache/shardingsphere/proxy/backend/util/ExportUtils.java | 3 +++
.../backend/util/YamlDatabaseConfigurationImportExecutor.java | 2 ++
10 files changed, 36 insertions(+), 16 deletions(-)
diff --git a/features/encrypt/api/src/main/java/org/apache/shardingsphere/encrypt/api/config/CompatibleEncryptRuleConfiguration.java b/features/encrypt/api/src/main/java/org/apache/shardingsphere/encrypt/api/config/CompatibleEncryptRuleConfiguration.java
index b5f3eac0261..54c3612b194 100644
--- a/features/encrypt/api/src/main/java/org/apache/shardingsphere/encrypt/api/config/CompatibleEncryptRuleConfiguration.java
+++ b/features/encrypt/api/src/main/java/org/apache/shardingsphere/encrypt/api/config/CompatibleEncryptRuleConfiguration.java
@@ -40,4 +40,13 @@ public final class CompatibleEncryptRuleConfiguration implements DatabaseRuleCon
private final Collection<EncryptTableRuleConfiguration> tables;
private final Map<String, AlgorithmConfiguration> encryptors;
+
+ /**
+ * Convert to encrypt rule configuration.
+ *
+ * @return encrypt rule configuration
+ */
+ public EncryptRuleConfiguration convertToEncryptRuleConfiguration() {
+ return new EncryptRuleConfiguration(tables, encryptors);
+ }
}
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/CompatibleEncryptRuleConfigurationChecker.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/CompatibleEncryptRuleConfigurationChecker.java
index fab7d6d4eb7..ae31292024d 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/CompatibleEncryptRuleConfigurationChecker.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/checker/CompatibleEncryptRuleConfigurationChecker.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.encrypt.checker;
import org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
-import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.constant.EncryptOrder;
import org.apache.shardingsphere.infra.config.rule.checker.RuleConfigurationChecker;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
@@ -39,7 +38,7 @@ public final class CompatibleEncryptRuleConfigurationChecker implements RuleConf
@Override
public void check(final String databaseName, final CompatibleEncryptRuleConfiguration config, final Map<String, DataSource> dataSourceMap, final Collection<ShardingSphereRule> rules) {
- delegate.check(databaseName, new EncryptRuleConfiguration(config.getTables(), config.getEncryptors()), dataSourceMap, rules);
+ delegate.check(databaseName, config.convertToEncryptRuleConfiguration(), dataSourceMap, rules);
}
@Override
diff --git a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutor.java b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutor.java
index 1f74f43ab98..b5c9ba6f240 100644
--- a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutor.java
+++ b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutor.java
@@ -18,6 +18,7 @@
package org.apache.shardingsphere.encrypt.distsql.handler.query;
import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
+import org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnItemRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
@@ -47,7 +48,10 @@ public final class ShowEncryptRuleExecutor implements RQLExecutor<ShowEncryptRul
Optional<EncryptRule> rule = database.getRuleMetaData().findSingleRule(EncryptRule.class);
Collection<LocalDataQueryResultRow> result = new LinkedList<>();
if (rule.isPresent()) {
- result = buildData((EncryptRuleConfiguration) rule.get().getConfiguration(), sqlStatement);
+ EncryptRuleConfiguration ruleConfig = rule.get().getConfiguration() instanceof CompatibleEncryptRuleConfiguration
+ ? ((CompatibleEncryptRuleConfiguration) rule.get().getConfiguration()).convertToEncryptRuleConfiguration()
+ : (EncryptRuleConfiguration) rule.get().getConfiguration();
+ result = buildData(ruleConfig, sqlStatement);
}
return result;
}
diff --git a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterCompatibleEncryptRuleStatementUpdater.java b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterCompatibleEncryptRuleStatementUpdater.java
index 92a9262ac24..958924088d6 100644
--- a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterCompatibleEncryptRuleStatementUpdater.java
+++ b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterCompatibleEncryptRuleStatementUpdater.java
@@ -35,7 +35,7 @@ public final class AlterCompatibleEncryptRuleStatementUpdater implements RuleDef
@Override
public void checkSQLStatement(final ShardingSphereDatabase database, final AlterEncryptRuleStatement sqlStatement, final CompatibleEncryptRuleConfiguration currentRuleConfig) {
- delegate.checkSQLStatement(database, sqlStatement, new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()));
+ delegate.checkSQLStatement(database, sqlStatement, currentRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
@@ -46,8 +46,7 @@ public final class AlterCompatibleEncryptRuleStatementUpdater implements RuleDef
@Override
public void updateCurrentRuleConfiguration(final CompatibleEncryptRuleConfiguration currentRuleConfig, final CompatibleEncryptRuleConfiguration toBeAlteredRuleConfig) {
- delegate.updateCurrentRuleConfiguration(new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()),
- new EncryptRuleConfiguration(toBeAlteredRuleConfig.getTables(), toBeAlteredRuleConfig.getEncryptors()));
+ delegate.updateCurrentRuleConfiguration(currentRuleConfig.convertToEncryptRuleConfiguration(), toBeAlteredRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
diff --git a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateCompatibleEncryptRuleStatementUpdater.java b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateCompatibleEncryptRuleStatementUpdater.java
index d80d34878be..267aa586ad4 100644
--- a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateCompatibleEncryptRuleStatementUpdater.java
+++ b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateCompatibleEncryptRuleStatementUpdater.java
@@ -35,19 +35,18 @@ public final class CreateCompatibleEncryptRuleStatementUpdater implements RuleDe
@Override
public void checkSQLStatement(final ShardingSphereDatabase database, final CreateEncryptRuleStatement sqlStatement, final CompatibleEncryptRuleConfiguration currentRuleConfig) {
- delegate.checkSQLStatement(database, sqlStatement, new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()));
+ delegate.checkSQLStatement(database, sqlStatement, currentRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
public CompatibleEncryptRuleConfiguration buildToBeCreatedRuleConfiguration(final CompatibleEncryptRuleConfiguration currentRuleConfig, final CreateEncryptRuleStatement sqlStatement) {
- EncryptRuleConfiguration ruleConfig = delegate.buildToBeCreatedRuleConfiguration(new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()), sqlStatement);
+ EncryptRuleConfiguration ruleConfig = delegate.buildToBeCreatedRuleConfiguration(currentRuleConfig.convertToEncryptRuleConfiguration(), sqlStatement);
return new CompatibleEncryptRuleConfiguration(ruleConfig.getTables(), ruleConfig.getEncryptors());
}
@Override
public void updateCurrentRuleConfiguration(final CompatibleEncryptRuleConfiguration currentRuleConfig, final CompatibleEncryptRuleConfiguration toBeCreatedRuleConfig) {
- delegate.updateCurrentRuleConfiguration(new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()),
- new EncryptRuleConfiguration(toBeCreatedRuleConfig.getTables(), toBeCreatedRuleConfig.getEncryptors()));
+ delegate.updateCurrentRuleConfiguration(currentRuleConfig.convertToEncryptRuleConfiguration(), toBeCreatedRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
diff --git a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
index 0707dfe5356..743c2510fbb 100644
--- a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
+++ b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropCompatibleEncryptRuleStatementUpdater.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.encrypt.distsql.handler.update;
import org.apache.shardingsphere.distsql.handler.update.RuleDefinitionDropUpdater;
import org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
-import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.distsql.parser.statement.DropEncryptRuleStatement;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -35,17 +34,17 @@ public final class DropCompatibleEncryptRuleStatementUpdater implements RuleDefi
@Override
public void checkSQLStatement(final ShardingSphereDatabase database, final DropEncryptRuleStatement sqlStatement, final CompatibleEncryptRuleConfiguration currentRuleConfig) {
- delegate.checkSQLStatement(database, sqlStatement, new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()));
+ delegate.checkSQLStatement(database, sqlStatement, currentRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
public boolean hasAnyOneToBeDropped(final DropEncryptRuleStatement sqlStatement, final CompatibleEncryptRuleConfiguration currentRuleConfig) {
- return delegate.hasAnyOneToBeDropped(sqlStatement, new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()));
+ return delegate.hasAnyOneToBeDropped(sqlStatement, currentRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
public boolean updateCurrentRuleConfiguration(final DropEncryptRuleStatement sqlStatement, final CompatibleEncryptRuleConfiguration currentRuleConfig) {
- return delegate.updateCurrentRuleConfiguration(sqlStatement, new EncryptRuleConfiguration(currentRuleConfig.getTables(), currentRuleConfig.getEncryptors()));
+ return delegate.updateCurrentRuleConfiguration(sqlStatement, currentRuleConfig.convertToEncryptRuleConfiguration());
}
@Override
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
index 2937a10e091..e997a73523f 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
@@ -22,6 +22,7 @@ import com.google.common.base.Strings;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.shardingsphere.distsql.handler.ral.query.QueryableRALExecutor;
import org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ConvertYamlConfigurationStatement;
+import org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnItemRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.rule.EncryptColumnRuleConfiguration;
@@ -118,6 +119,8 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
appendReadWriteSplittingDistSQL((ReadwriteSplittingRuleConfiguration) each, result);
} else if (each instanceof EncryptRuleConfiguration) {
appendEncryptDistSQL((EncryptRuleConfiguration) each, result);
+ } else if (each instanceof CompatibleEncryptRuleConfiguration) {
+ appendEncryptDistSQL(((CompatibleEncryptRuleConfiguration) each).convertToEncryptRuleConfiguration(), result);
} else if (each instanceof ShadowRuleConfiguration) {
appendShadowDistSQL((ShadowRuleConfiguration) each, result);
} else if (each instanceof MaskRuleConfiguration) {
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowRulesUsedStorageUnitExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowRulesUsedStorageUnitExecutor.java
index 8f3f2318a15..da27fe07e7c 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowRulesUsedStorageUnitExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowRulesUsedStorageUnitExecutor.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesUsedStorageUnitStatement;
+import org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
@@ -110,8 +111,10 @@ public final class ShowRulesUsedStorageUnitExecutor implements RQLExecutor<ShowR
if (!rule.isPresent()) {
return Collections.emptyList();
}
- EncryptRuleConfiguration config = (EncryptRuleConfiguration) rule.get().getConfiguration();
- return config.getTables().stream().map(each -> buildRow(ENCRYPT, each.getName())).collect(Collectors.toList());
+ EncryptRuleConfiguration ruleConfig =
+ rule.get().getConfiguration() instanceof CompatibleEncryptRuleConfiguration ? ((CompatibleEncryptRuleConfiguration) rule.get().getConfiguration()).convertToEncryptRuleConfiguration()
+ : (EncryptRuleConfiguration) rule.get().getConfiguration();
+ return ruleConfig.getTables().stream().map(each -> buildRow(ENCRYPT, each.getName())).collect(Collectors.toList());
}
private Collection<LocalDataQueryResultRow> getShadowData(final ShardingSphereDatabase database, final String resourceName) {
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java
index 654d8ba8c1e..d55e1cb9d98 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.proxy.backend.util;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.encrypt.api.config.CompatibleEncryptRuleConfiguration;
import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
@@ -129,6 +130,8 @@ public final class ExportUtils {
return ((ReadwriteSplittingRuleConfiguration) ruleConfig).getDataSources().isEmpty();
} else if (ruleConfig instanceof EncryptRuleConfiguration) {
return ((EncryptRuleConfiguration) ruleConfig).getTables().isEmpty();
+ } else if (ruleConfig instanceof CompatibleEncryptRuleConfiguration) {
+ return ((CompatibleEncryptRuleConfiguration) ruleConfig).getTables().isEmpty();
} else if (ruleConfig instanceof ShadowRuleConfiguration) {
return ((ShadowRuleConfiguration) ruleConfig).getTables().isEmpty();
} else if (ruleConfig instanceof MaskRuleConfiguration) {
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 64797ac90b9..d3cd88f069b 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
@@ -212,6 +212,8 @@ public final class YamlDatabaseConfigurationImportExecutor {
ruleConfigs.forEach(each -> addReadwriteSplittingRuleConfiguration((ReadwriteSplittingRuleConfiguration) each, allRuleConfigs, database));
} else if (ruleConfig instanceof EncryptRuleConfiguration) {
ruleConfigs.forEach(each -> addEncryptRuleConfiguration((EncryptRuleConfiguration) each, allRuleConfigs, database));
+ } else if (ruleConfig instanceof CompatibleEncryptRuleConfiguration) {
+ ruleConfigs.forEach(each -> addEncryptRuleConfiguration(((CompatibleEncryptRuleConfiguration) each).convertToEncryptRuleConfiguration(), allRuleConfigs, database));
} else if (ruleConfig instanceof ShadowRuleConfiguration) {
ruleConfigs.forEach(each -> addShadowRuleConfiguration((ShadowRuleConfiguration) each, allRuleConfigs, database));
} else if (ruleConfig instanceof MaskRuleConfiguration) {