You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/06/22 08:45:51 UTC

[shardingsphere] branch master updated: Remove useless fields of EncryptRule (#26495)

This is an automated email from the ASF dual-hosted git repository.

panjuan 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 245434f3cf8 Remove useless fields of EncryptRule (#26495)
245434f3cf8 is described below

commit 245434f3cf89605e0fa909c3faf58d1ed95c231a
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jun 22 16:45:43 2023 +0800

    Remove useless fields of EncryptRule (#26495)
---
 .../shardingsphere/encrypt/rule/EncryptRule.java   | 53 +++++++++++++++-------
 1 file changed, 36 insertions(+), 17 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 210bb096014..3994676d2a6 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
@@ -47,24 +47,24 @@ public final class EncryptRule implements DatabaseRule, TableContainedRule {
     @Getter
     private final RuleConfiguration configuration;
     
-    @SuppressWarnings("rawtypes")
-    private final Map<String, StandardEncryptAlgorithm> standardEncryptors = new LinkedHashMap<>();
-    
-    @SuppressWarnings("rawtypes")
-    private final Map<String, AssistedEncryptAlgorithm> assistedEncryptors = new LinkedHashMap<>();
-    
-    @SuppressWarnings("rawtypes")
-    private final Map<String, LikeEncryptAlgorithm> likeEncryptors = new LinkedHashMap<>();
-    
     private final Map<String, EncryptTable> tables = new LinkedHashMap<>();
     
     private final TableNamesMapper tableNamesMapper = new TableNamesMapper();
     
     public EncryptRule(final EncryptRuleConfiguration ruleConfig) {
         configuration = ruleConfig;
-        ruleConfig.getEncryptors().forEach((key, value) -> putAllEncryptors(key, TypedSPILoader.getService(EncryptAlgorithm.class, value.getType(), value.getProps())));
+        @SuppressWarnings("rawtypes")
+        Map<String, StandardEncryptAlgorithm> standardEncryptors = new LinkedHashMap<>();
+        @SuppressWarnings("rawtypes")
+        Map<String, AssistedEncryptAlgorithm> assistedEncryptors = new LinkedHashMap<>();
+        @SuppressWarnings("rawtypes")
+        Map<String, LikeEncryptAlgorithm> likeEncryptors = new LinkedHashMap<>();
+        ruleConfig.getEncryptors().forEach((key, value) -> putAllEncryptors(
+                key, TypedSPILoader.getService(EncryptAlgorithm.class, value.getType(), value.getProps()), standardEncryptors, assistedEncryptors, likeEncryptors));
         for (EncryptTableRuleConfiguration each : ruleConfig.getTables()) {
-            each.getColumns().forEach(this::checkEncryptAlgorithmType);
+            each.getColumns().forEach(columnRuleConfig -> checkStandardEncryptorType(columnRuleConfig, standardEncryptors));
+            each.getColumns().forEach(columnRuleConfig -> checkAssistedQueryEncryptorType(columnRuleConfig, assistedEncryptors));
+            each.getColumns().forEach(columnRuleConfig -> checkLikeQueryEncryptorType(columnRuleConfig, likeEncryptors));
             tables.put(each.getName().toLowerCase(), new EncryptTable(each, standardEncryptors, assistedEncryptors, likeEncryptors));
             tableNamesMapper.put(each.getName());
         }
@@ -78,16 +78,26 @@ public final class EncryptRule implements DatabaseRule, TableContainedRule {
     @Deprecated
     public EncryptRule(final CompatibleEncryptRuleConfiguration ruleConfig) {
         configuration = ruleConfig;
-        ruleConfig.getEncryptors().forEach((key, value) -> putAllEncryptors(key, TypedSPILoader.getService(EncryptAlgorithm.class, value.getType(), value.getProps())));
+        @SuppressWarnings("rawtypes")
+        Map<String, StandardEncryptAlgorithm> standardEncryptors = new LinkedHashMap<>();
+        @SuppressWarnings("rawtypes")
+        Map<String, AssistedEncryptAlgorithm> assistedEncryptors = new LinkedHashMap<>();
+        @SuppressWarnings("rawtypes")
+        Map<String, LikeEncryptAlgorithm> likeEncryptors = new LinkedHashMap<>();
+        ruleConfig.getEncryptors().forEach((key, value) -> putAllEncryptors(
+                key, TypedSPILoader.getService(EncryptAlgorithm.class, value.getType(), value.getProps()), standardEncryptors, assistedEncryptors, likeEncryptors));
         for (EncryptTableRuleConfiguration each : ruleConfig.getTables()) {
-            each.getColumns().forEach(this::checkEncryptAlgorithmType);
+            each.getColumns().forEach(columnRuleConfig -> checkStandardEncryptorType(columnRuleConfig, standardEncryptors));
+            each.getColumns().forEach(columnRuleConfig -> checkAssistedQueryEncryptorType(columnRuleConfig, assistedEncryptors));
+            each.getColumns().forEach(columnRuleConfig -> checkLikeQueryEncryptorType(columnRuleConfig, likeEncryptors));
             tables.put(each.getName().toLowerCase(), new EncryptTable(each, standardEncryptors, assistedEncryptors, likeEncryptors));
             tableNamesMapper.put(each.getName());
         }
     }
     
     @SuppressWarnings("rawtypes")
-    private void putAllEncryptors(final String encryptorName, final EncryptAlgorithm algorithm) {
+    private void putAllEncryptors(final String encryptorName, final EncryptAlgorithm algorithm, final Map<String, StandardEncryptAlgorithm> standardEncryptors,
+                                  final Map<String, AssistedEncryptAlgorithm> assistedEncryptors, final Map<String, LikeEncryptAlgorithm> likeEncryptors) {
         if (algorithm instanceof StandardEncryptAlgorithm) {
             standardEncryptors.put(encryptorName, (StandardEncryptAlgorithm) algorithm);
         }
@@ -99,15 +109,24 @@ public final class EncryptRule implements DatabaseRule, TableContainedRule {
         }
     }
     
-    private void checkEncryptAlgorithmType(final EncryptColumnRuleConfiguration columnRuleConfig) {
+    @SuppressWarnings("rawtypes")
+    private void checkStandardEncryptorType(final EncryptColumnRuleConfiguration columnRuleConfig, final Map<String, StandardEncryptAlgorithm> standardEncryptors) {
         ShardingSpherePreconditions.checkState(standardEncryptors.containsKey(columnRuleConfig.getCipher().getEncryptorName()),
                 () -> new MismatchedEncryptAlgorithmTypeException("Cipher", columnRuleConfig.getCipher().getEncryptorName(), StandardEncryptAlgorithm.class.getSimpleName()));
-        columnRuleConfig.getLikeQuery().ifPresent(optional -> ShardingSpherePreconditions.checkState(likeEncryptors.containsKey(optional.getEncryptorName()),
-                () -> new MismatchedEncryptAlgorithmTypeException("Like query", optional.getEncryptorName(), LikeEncryptAlgorithm.class.getSimpleName())));
+    }
+    
+    @SuppressWarnings("rawtypes")
+    private void checkAssistedQueryEncryptorType(final EncryptColumnRuleConfiguration columnRuleConfig, final Map<String, AssistedEncryptAlgorithm> assistedEncryptors) {
         columnRuleConfig.getAssistedQuery().ifPresent(optional -> ShardingSpherePreconditions.checkState(assistedEncryptors.containsKey(optional.getEncryptorName()),
                 () -> new MismatchedEncryptAlgorithmTypeException("Assisted query", optional.getEncryptorName(), AssistedEncryptAlgorithm.class.getSimpleName())));
     }
     
+    @SuppressWarnings("rawtypes")
+    private void checkLikeQueryEncryptorType(final EncryptColumnRuleConfiguration columnRuleConfig, final Map<String, LikeEncryptAlgorithm> likeEncryptors) {
+        columnRuleConfig.getLikeQuery().ifPresent(optional -> ShardingSpherePreconditions.checkState(likeEncryptors.containsKey(optional.getEncryptorName()),
+                () -> new MismatchedEncryptAlgorithmTypeException("Like query", optional.getEncryptorName(), LikeEncryptAlgorithm.class.getSimpleName())));
+    }
+    
     /**
      * Find encrypt table.
      *