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 2021/05/21 10:07:08 UTC

[shardingsphere] branch master updated: Refactor EncryptRuleStatementConverter (#10424)

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

zhangliang 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 a74aff2  Refactor EncryptRuleStatementConverter (#10424)
a74aff2 is described below

commit a74aff2cb9312afd6c067ddb0663604cd017a766
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Fri May 21 18:06:42 2021 +0800

    Refactor EncryptRuleStatementConverter (#10424)
    
    Co-authored-by: menghaoranss <me...@apache.org>
---
 ...erter.java => EncryptRuleStatementConverter.java} | 20 +++++++++-----------
 ...t.java => EncryptRuleStatementConverterTest.java} |  6 +++---
 .../rdl/impl/AlterEncryptRuleBackendHandler.java     |  4 ++--
 .../rdl/impl/CreateEncryptRuleBackendHandler.java    |  4 ++--
 4 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleConverter.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
similarity index 82%
rename from shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleConverter.java
rename to shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
index 4c6123f..cf9dfdc 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleConverter.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/main/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverter.java
@@ -29,9 +29,9 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
- * Encrypt rule converter.
+ * Encrypt rule statement converter.
  */
-public final class EncryptRuleConverter {
+public final class EncryptRuleStatementConverter {
 
     /**
      * Convert collection of encrypt rule segments to YAML encrypt rule configuration.
@@ -41,11 +41,9 @@ public final class EncryptRuleConverter {
      */
     public static YamlEncryptRuleConfiguration convert(final Collection<EncryptRuleSegment> encryptRules) {
         YamlEncryptRuleConfiguration result = new YamlEncryptRuleConfiguration();
-        result.getTables().putAll(encryptRules.stream().map(EncryptRuleConverter::buildYamlEncryptTableRuleConfiguration)
+        result.getTables().putAll(encryptRules.stream().map(EncryptRuleStatementConverter::buildYamlEncryptTableRuleConfiguration)
                 .collect(Collectors.toMap(YamlEncryptTableRuleConfiguration::getName, each -> each)));
-        for (EncryptRuleSegment encryptRuleSegment : encryptRules) {
-            result.getEncryptors().putAll(buildYamlShardingSphereAlgorithmConfigurations(encryptRuleSegment));
-        }
+        encryptRules.forEach(each -> result.getEncryptors().putAll(buildYamlShardingSphereAlgorithmConfigurations(each)));
         return result;
     }
 
@@ -63,13 +61,13 @@ public final class EncryptRuleConverter {
         result.setLogicColumn(encryptColumnSegment.getName());
         result.setCipherColumn(encryptColumnSegment.getCipherColumn());
         result.setPlainColumn(encryptColumnSegment.getPlainColumn());
-        result.setEncryptorName(getEncryptorName(tableName, encryptColumnSegment.getName(), encryptColumnSegment.getEncryptor().getAlgorithmName()));
+        result.setEncryptorName(getEncryptorName(tableName, encryptColumnSegment.getName()));
         return result;
     }
 
     private static Map<String, YamlShardingSphereAlgorithmConfiguration> buildYamlShardingSphereAlgorithmConfigurations(final EncryptRuleSegment encryptRuleSegment) {
-        return encryptRuleSegment.getColumns().stream().collect(Collectors.toMap(EncryptColumnSegment::getName, each -> buildYamlShardingSphereAlgorithmConfiguration(each)))
-                .entrySet().stream().collect(Collectors.toMap(entry -> getEncryptorName(encryptRuleSegment.getTableName(), entry.getKey(), entry.getValue().getType()), entry -> entry.getValue()));
+        return encryptRuleSegment.getColumns().stream().collect(Collectors
+                .toMap(each -> getEncryptorName(encryptRuleSegment.getTableName(), each.getName()), each -> buildYamlShardingSphereAlgorithmConfiguration(each)));
     }
 
     private static YamlShardingSphereAlgorithmConfiguration buildYamlShardingSphereAlgorithmConfiguration(final EncryptColumnSegment encryptColumnSegment) {
@@ -79,7 +77,7 @@ public final class EncryptRuleConverter {
         return result;
     }
 
-    private static String getEncryptorName(final String tableName, final String columnName, final String encryptorAlgorithmName) {
-        return String.format("%s_%s_%s", tableName, columnName, encryptorAlgorithmName);
+    private static String getEncryptorName(final String tableName, final String columnName) {
+        return String.format("%s_%s", tableName, columnName);
     }
 }
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleConverterTest.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
similarity index 96%
rename from shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleConverterTest.java
rename to shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
index 11da81e..8107e7c 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleConverterTest.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-common/src/test/java/org/apache/shardingsphere/encrypt/yaml/converter/EncryptRuleStatementConverterTest.java
@@ -31,11 +31,11 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.hamcrest.CoreMatchers.is;
 
-public final class EncryptRuleConverterTest {
+public final class EncryptRuleStatementConverterTest {
 
     @Test
     public void assertCovert() {
-        YamlEncryptRuleConfiguration encryptRuleConfiguration = EncryptRuleConverter.convert(Collections
+        YamlEncryptRuleConfiguration encryptRuleConfiguration = EncryptRuleStatementConverter.convert(Collections
                 .singleton(new EncryptRuleSegment("t_encrypt", buildColumns())));
         assertNotNull(encryptRuleConfiguration);
         assertThat(encryptRuleConfiguration.getTables().keySet(), is(Collections.singleton("t_encrypt")));
@@ -44,7 +44,7 @@ public final class EncryptRuleConverterTest {
         assertThat(encryptRuleConfiguration.getTables().get("t_encrypt").getColumns().get("user_id").getLogicColumn(), is("user_id"));
         assertThat(encryptRuleConfiguration.getTables().get("t_encrypt").getColumns().get("user_id").getCipherColumn(), is("user_cipher"));
         assertThat(encryptRuleConfiguration.getTables().get("t_encrypt").getColumns().get("user_id").getPlainColumn(), is("user_plain"));
-        assertThat(encryptRuleConfiguration.getTables().get("t_encrypt").getColumns().get("user_id").getEncryptorName(), is("t_encrypt_user_id_MD5"));
+        assertThat(encryptRuleConfiguration.getTables().get("t_encrypt").getColumns().get("user_id").getEncryptorName(), is("t_encrypt_user_id"));
     }
 
     private Collection<EncryptColumnSegment> buildColumns() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
index 1844571..3874904 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterEncryptRuleBackendHandler.java
@@ -23,7 +23,7 @@ import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import org.apache.shardingsphere.encrypt.api.config.rule.EncryptTableRuleConfiguration;
 import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
 import org.apache.shardingsphere.encrypt.yaml.config.YamlEncryptRuleConfiguration;
-import org.apache.shardingsphere.encrypt.yaml.converter.EncryptRuleConverter;
+import org.apache.shardingsphere.encrypt.yaml.converter.EncryptRuleStatementConverter;
 import org.apache.shardingsphere.governance.core.registry.listener.event.rule.RuleConfigurationsAlteredEvent;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
@@ -102,7 +102,7 @@ public final class AlterEncryptRuleBackendHandler extends SchemaRequiredBackendH
     
     private YamlEncryptRuleConfiguration alter(final EncryptRuleConfiguration encryptRuleConfiguration, final AlterEncryptRuleStatement sqlStatement) {
         YamlEncryptRuleConfiguration alterYamlEncryptRuleConfiguration
-                = EncryptRuleConverter.convert(sqlStatement.getEncryptRules());
+                = EncryptRuleStatementConverter.convert(sqlStatement.getEncryptRules());
         YamlEncryptRuleConfiguration result = new YamlRuleConfigurationSwapperEngine()
                 .swapToYamlRuleConfigurations(Collections.singletonList(encryptRuleConfiguration)).stream()
                 .map(each -> (YamlEncryptRuleConfiguration) each).findFirst().get();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
index 81747b9..e65e35a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateEncryptRuleBackendHandler.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.create.impl.Create
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
 import org.apache.shardingsphere.encrypt.yaml.config.YamlEncryptRuleConfiguration;
-import org.apache.shardingsphere.encrypt.yaml.converter.EncryptRuleConverter;
+import org.apache.shardingsphere.encrypt.yaml.converter.EncryptRuleStatementConverter;
 import org.apache.shardingsphere.governance.core.registry.listener.event.rule.RuleConfigurationsAlteredEvent;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
@@ -53,7 +53,7 @@ public final class CreateEncryptRuleBackendHandler extends SchemaRequiredBackend
     @Override
     public ResponseHeader execute(final String schemaName, final CreateEncryptRuleStatement sqlStatement) {
         check(schemaName, sqlStatement);
-        YamlEncryptRuleConfiguration config = EncryptRuleConverter.convert(sqlStatement.getEncryptRules());
+        YamlEncryptRuleConfiguration config = EncryptRuleStatementConverter.convert(sqlStatement.getEncryptRules());
         Collection<RuleConfiguration> rules = new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(Collections.singleton(config));
         post(schemaName, rules);
         return new UpdateResponseHeader(sqlStatement);