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 f7bc6b1f0f7 Refactor EncryptRule.configuration (#29999)
f7bc6b1f0f7 is described below
commit f7bc6b1f0f72f0990c243402a3319fbc8335e452
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Feb 5 13:01:31 2024 +0800
Refactor EncryptRule.configuration (#29999)
---
.../org/apache/shardingsphere/encrypt/rule/EncryptRule.java | 3 +--
.../encrypt/rule/changed/EncryptTableChangedProcessor.java | 2 +-
.../encrypt/rule/changed/EncryptorChangedProcessor.java | 2 +-
.../distsql/handler/query/ShowEncryptRuleExecutor.java | 3 +--
.../distsql/handler/update/AlterEncryptRuleExecutor.java | 7 +++----
.../distsql/handler/update/CreateEncryptRuleExecutor.java | 2 +-
.../distsql/handler/update/DropEncryptRuleExecutor.java | 12 +++++-------
.../distsql/handler/query/ShowEncryptRuleExecutorTest.java | 3 +--
.../distsql/rql/ShowRulesUsedStorageUnitExecutor.java | 9 ++-------
9 files changed, 16 insertions(+), 27 deletions(-)
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
index 5f749f99abe..86e99a2d976 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java
@@ -24,7 +24,6 @@ import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfigu
import
org.apache.shardingsphere.encrypt.exception.algorithm.MismatchedEncryptAlgorithmTypeException;
import
org.apache.shardingsphere.encrypt.exception.metadata.EncryptTableNotFoundException;
import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import org.apache.shardingsphere.infra.rule.identifier.scope.DatabaseRule;
import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
@@ -43,7 +42,7 @@ public final class EncryptRule implements DatabaseRule,
TableContainedRule {
private final String databaseName;
@Getter
- private final RuleConfiguration configuration;
+ private final EncryptRuleConfiguration configuration;
private final Map<String, EncryptTable> tables = new LinkedHashMap<>();
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptTableChangedProcessor.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptTableChangedProcessor.java
index 0fdb0b8f0f3..24e4a23e633 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptTableChangedProcessor.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptTableChangedProcessor.java
@@ -46,7 +46,7 @@ public final class EncryptTableChangedProcessor implements
RuleItemConfiguration
@Override
public EncryptRuleConfiguration findRuleConfiguration(final
ShardingSphereDatabase database) {
return database.getRuleMetaData().findSingleRule(EncryptRule.class)
- .map(optional ->
getEncryptRuleConfiguration((EncryptRuleConfiguration)
optional.getConfiguration()))
+ .map(optional ->
getEncryptRuleConfiguration(optional.getConfiguration()))
.orElseGet(() -> new EncryptRuleConfiguration(new
LinkedList<>(), new LinkedHashMap<>()));
}
diff --git
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptorChangedProcessor.java
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptorChangedProcessor.java
index 61754482952..10ca606cbe3 100644
---
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptorChangedProcessor.java
+++
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/changed/EncryptorChangedProcessor.java
@@ -47,7 +47,7 @@ public final class EncryptorChangedProcessor implements
RuleItemConfigurationCha
@Override
public EncryptRuleConfiguration findRuleConfiguration(final
ShardingSphereDatabase database) {
return database.getRuleMetaData().findSingleRule(EncryptRule.class)
- .map(optional ->
getEncryptRuleConfiguration((EncryptRuleConfiguration)
optional.getConfiguration()))
+ .map(optional ->
getEncryptRuleConfiguration(optional.getConfiguration()))
.orElseGet(() -> new EncryptRuleConfiguration(new
LinkedList<>(), new LinkedHashMap<>()));
}
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 e0b24f91d7b..44efc7ef0e1 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
@@ -53,8 +53,7 @@ public final class ShowEncryptRuleExecutor implements
DistSQLQueryExecutor<ShowE
@Override
public Collection<LocalDataQueryResultRow> getRows(final
ShowEncryptRulesStatement sqlStatement, final ContextManager contextManager) {
- EncryptRuleConfiguration ruleConfig = (EncryptRuleConfiguration)
rule.getConfiguration();
- return buildData(ruleConfig, sqlStatement);
+ return buildData(rule.getConfiguration(), sqlStatement);
}
private Collection<LocalDataQueryResultRow> buildData(final
EncryptRuleConfiguration ruleConfig, final ShowEncryptRulesStatement
sqlStatement) {
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutor.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutor.java
index 8d1f2ca4f2f..3cae2f17285 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutor.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutor.java
@@ -65,8 +65,7 @@ public final class AlterEncryptRuleExecutor implements
DatabaseRuleAlterExecutor
}
private void checkToBeAlteredRules(final AlterEncryptRuleStatement
sqlStatement) {
- Collection<String> currentEncryptTableNames =
((EncryptRuleConfiguration) rule.getConfiguration()).getTables()
-
.stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
+ Collection<String> currentEncryptTableNames =
rule.getConfiguration().getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
Collection<String> notExistEncryptTableNames =
getToBeAlteredEncryptTableNames(sqlStatement).stream().filter(each ->
!currentEncryptTableNames.contains(each)).collect(Collectors.toList());
if (!notExistEncryptTableNames.isEmpty()) {
throw new MissingRequiredRuleException("Encrypt",
database.getName(), notExistEncryptTableNames);
@@ -111,8 +110,8 @@ public final class AlterEncryptRuleExecutor implements
DatabaseRuleAlterExecutor
@Override
public EncryptRuleConfiguration buildToBeDroppedRuleConfiguration(final
EncryptRuleConfiguration toBeAlteredRuleConfig) {
Map<String, AlgorithmConfiguration> toBeDroppedEncryptors = new
HashMap<>();
- Collection<String> unusedEncryptor =
UnusedAlgorithmFinder.findUnusedEncryptor((EncryptRuleConfiguration)
rule.getConfiguration());
- unusedEncryptor.forEach(each -> toBeDroppedEncryptors.put(each,
((EncryptRuleConfiguration)
rule.getConfiguration()).getEncryptors().get(each)));
+ Collection<String> unusedEncryptor =
UnusedAlgorithmFinder.findUnusedEncryptor(rule.getConfiguration());
+ unusedEncryptor.forEach(each -> toBeDroppedEncryptors.put(each,
rule.getConfiguration().getEncryptors().get(each)));
return new EncryptRuleConfiguration(Collections.emptyList(),
toBeDroppedEncryptors);
}
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutor.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutor.java
index ef5c97f2517..b9bfb7be464 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutor.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutor.java
@@ -71,7 +71,7 @@ public final class CreateEncryptRuleExecutor implements
DatabaseRuleCreateExecut
private Collection<String> getDuplicatedRuleNames(final
CreateEncryptRuleStatement sqlStatement) {
Collection<String> currentRuleNames = new LinkedHashSet<>();
if (null != rule) {
- currentRuleNames = ((EncryptRuleConfiguration)
rule.getConfiguration()).getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet());
+ currentRuleNames =
rule.getConfiguration().getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet());
}
return
sqlStatement.getRules().stream().map(EncryptRuleSegment::getTableName).filter(currentRuleNames::contains).collect(Collectors.toSet());
}
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
index dd92d227e75..e4fb6cc6d1b 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleExecutor.java
@@ -56,7 +56,7 @@ public final class DropEncryptRuleExecutor implements
DatabaseRuleDropExecutor<D
}
private void checkToBeDroppedEncryptTableNames(final
DropEncryptRuleStatement sqlStatement) {
- Collection<String> currentEncryptTableNames =
((EncryptRuleConfiguration) rule.getConfiguration()).getTables()
+ Collection<String> currentEncryptTableNames =
rule.getConfiguration().getTables()
.stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toList());
Collection<String> notExistedTableNames =
sqlStatement.getTables().stream().filter(each ->
!currentEncryptTableNames.contains(each)).collect(Collectors.toList());
ShardingSpherePreconditions.checkState(notExistedTableNames.isEmpty(),
() -> new MissingRequiredRuleException("Encrypt", database.getName(),
notExistedTableNames));
@@ -64,8 +64,7 @@ public final class DropEncryptRuleExecutor implements
DatabaseRuleDropExecutor<D
@Override
public boolean hasAnyOneToBeDropped(final DropEncryptRuleStatement
sqlStatement) {
- return !Collections.disjoint(
- ((EncryptRuleConfiguration)
rule.getConfiguration()).getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getTables());
+ return
!Collections.disjoint(rule.getConfiguration().getTables().stream().map(EncryptTableRuleConfiguration::getName).collect(Collectors.toSet()),
sqlStatement.getTables());
}
@Override
@@ -76,8 +75,7 @@ public final class DropEncryptRuleExecutor implements
DatabaseRuleDropExecutor<D
toBeDroppedTables.add(new EncryptTableRuleConfiguration(each,
Collections.emptyList()));
dropRule(each);
}
- UnusedAlgorithmFinder.findUnusedEncryptor((EncryptRuleConfiguration)
rule.getConfiguration())
- .forEach(each -> toBeDroppedEncryptors.put(each,
((EncryptRuleConfiguration)
rule.getConfiguration()).getEncryptors().get(each)));
+
UnusedAlgorithmFinder.findUnusedEncryptor(rule.getConfiguration()).forEach(each
-> toBeDroppedEncryptors.put(each,
rule.getConfiguration().getEncryptors().get(each)));
return new EncryptRuleConfiguration(toBeDroppedTables,
toBeDroppedEncryptors);
}
@@ -89,9 +87,9 @@ public final class DropEncryptRuleExecutor implements
DatabaseRuleDropExecutor<D
}
private void dropRule(final String ruleName) {
- Optional<EncryptTableRuleConfiguration> encryptTableRuleConfig =
((EncryptRuleConfiguration) rule.getConfiguration()).getTables().stream()
+ Optional<EncryptTableRuleConfiguration> encryptTableRuleConfig =
rule.getConfiguration().getTables().stream()
.filter(each -> each.getName().equals(ruleName)).findAny();
- encryptTableRuleConfig.ifPresent(optional ->
((EncryptRuleConfiguration)
rule.getConfiguration()).getTables().remove(encryptTableRuleConfig.get()));
+ encryptTableRuleConfig.ifPresent(optional ->
rule.getConfiguration().getTables().remove(encryptTableRuleConfig.get()));
}
private void dropUnusedEncryptor(final EncryptRuleConfiguration
currentRuleConfig) {
diff --git
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
index c6efffa2f77..45c47b1483b 100644
---
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
+++
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
@@ -24,7 +24,6 @@ import
org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfigu
import
org.apache.shardingsphere.encrypt.distsql.statement.ShowEncryptRulesStatement;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.junit.jupiter.api.Test;
@@ -64,7 +63,7 @@ class ShowEncryptRuleExecutorTest {
assertThat(row.getCell(11), is(""));
}
- private RuleConfiguration getRuleConfiguration() {
+ private EncryptRuleConfiguration getRuleConfiguration() {
EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_cipher", "test"));
encryptColumnRuleConfig.setAssistedQuery(new
EncryptColumnItemRuleConfiguration("user_assisted",
"foo_assist_query_encryptor"));
encryptColumnRuleConfig.setLikeQuery(new
EncryptColumnItemRuleConfiguration("user_like", "foo_like_encryptor"));
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
index bbcab6f8ac7..8abd8425126 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/ShowRulesUsedStorageUnitExecutor.java
@@ -21,7 +21,6 @@ import lombok.Setter;
import
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
import
org.apache.shardingsphere.distsql.handler.type.query.DistSQLQueryExecutor;
import
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowRulesUsedStorageUnitStatement;
-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;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -117,12 +116,8 @@ public final class ShowRulesUsedStorageUnitExecutor
implements DistSQLQueryExecu
}
private Collection<LocalDataQueryResultRow> getEncryptData(final
ShardingSphereDatabase database) {
- Optional<EncryptRule> rule =
database.getRuleMetaData().findSingleRule(EncryptRule.class);
- if (!rule.isPresent()) {
- return Collections.emptyList();
- }
- EncryptRuleConfiguration ruleConfig = (EncryptRuleConfiguration)
rule.get().getConfiguration();
- return ruleConfig.getTables().stream().map(each -> buildRow(ENCRYPT,
each.getName())).collect(Collectors.toList());
+ return database.getRuleMetaData().findSingleRule(EncryptRule.class)
+ .map(optional ->
optional.getConfiguration().getTables().stream().map(each -> buildRow(ENCRYPT,
each.getName())).collect(Collectors.toList())).orElse(Collections.emptyList());
}
private Collection<LocalDataQueryResultRow> getShadowData(final
ShardingSphereDatabase database, final String resourceName) {