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) {

Reply via email to