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

duanzhengqiang 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 5f7a8ed9592 Refactor ResultDecoratorEngine (#17965)
5f7a8ed9592 is described below

commit 5f7a8ed959276575c0438d88e952fd79996fd27e
Author: Liang Zhang <[email protected]>
AuthorDate: Thu May 26 15:45:07 2022 +0800

    Refactor ResultDecoratorEngine (#17965)
    
    * Refactor MergeEngine
    
    * Refactor MergeEngine
    
    * Refactor ResultDecoratorEngine
    
    * Fix test case
---
 .../encrypt/merge/EncryptResultDecoratorEngine.java          |  5 ++---
 .../encrypt/merge/dql/EncryptAlgorithmMetaData.java          |  4 +---
 .../encrypt/merge/EncryptResultDecoratorEngineTest.java      | 12 +++---------
 .../encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java      | 10 +++++-----
 .../org/apache/shardingsphere/infra/merge/MergeEngine.java   |  6 ++----
 .../infra/merge/engine/decorator/ResultDecoratorEngine.java  |  6 +-----
 .../fixture/decorator/ResultDecoratorEngineFixture.java      |  3 +--
 7 files changed, 15 insertions(+), 31 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
index fed9daaa551..925574d3e9c 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngine.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.encrypt.rule.EncryptRule;
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
 import 
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEngine;
 import 
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
@@ -38,10 +37,10 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatemen
 public final class EncryptResultDecoratorEngine implements 
ResultDecoratorEngine<EncryptRule> {
     
     @Override
-    public ResultDecorator<?> newInstance(final DatabaseType databaseType, 
final String databaseName, final ShardingSphereDatabase database,
+    public ResultDecorator<?> newInstance(final ShardingSphereDatabase 
database,
                                           final EncryptRule encryptRule, final 
ConfigurationProperties props, final SQLStatementContext<?> 
sqlStatementContext) {
         if (sqlStatementContext instanceof SelectStatementContext) {
-            EncryptAlgorithmMetaData algorithmMetaData = new 
EncryptAlgorithmMetaData(databaseName, database, encryptRule, 
(SelectStatementContext) sqlStatementContext);
+            EncryptAlgorithmMetaData algorithmMetaData = new 
EncryptAlgorithmMetaData(database, encryptRule, (SelectStatementContext) 
sqlStatementContext);
             return new EncryptDQLResultDecorator(algorithmMetaData);
         }
         if (sqlStatementContext.getSqlStatement() instanceof DALStatement) {
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
index df086485d6b..9b8d8381cf6 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java
@@ -40,8 +40,6 @@ import java.util.Optional;
 @RequiredArgsConstructor
 public final class EncryptAlgorithmMetaData {
     
-    private final String databaseName;
-    
     private final ShardingSphereDatabase database;
     
     private final EncryptRule encryptRule;
@@ -86,7 +84,7 @@ public final class EncryptAlgorithmMetaData {
         Map<String, String> expressionTableNames = 
tablesContext.findTableNamesByColumnProjection(
                 Collections.singletonList(columnProjection.get()), 
database.getSchemas().get(schemaName));
         Optional<String> tableName = findTableName(columnProjection.get(), 
expressionTableNames);
-        return tableName.map(optional -> 
EncryptContextBuilder.build(databaseName, schemaName, optional, 
columnProjection.get().getName(), encryptRule));
+        return tableName.map(optional -> 
EncryptContextBuilder.build(database.getName(), schemaName, optional, 
columnProjection.get().getName(), encryptRule));
     }
     
     private Optional<ColumnProjection> findColumnProjection(final int 
columnIndex) {
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
index 644765ad8fa..de36d58eca5 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/EncryptResultDecoratorEngineTest.java
@@ -25,8 +25,6 @@ import 
org.apache.shardingsphere.infra.binder.statement.dal.ExplainStatementCont
 import 
org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.DefaultDatabase;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngineFactory;
 import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
 import 
org.apache.shardingsphere.infra.merge.engine.decorator.impl.TransparentResultDecorator;
@@ -52,17 +50,13 @@ public final class EncryptResultDecoratorEngineTest {
     @Mock
     private EncryptRule rule;
     
-    @Mock
-    private DatabaseType databaseType;
-    
     @Mock
     private ShardingSphereDatabase database;
     
     @Test
     public void assertNewInstanceWithSelectStatement() {
         EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine) 
ResultProcessEngineFactory.getInstances(Collections.singleton(rule)).get(rule);
-        ResultDecorator<?> actual = engine.newInstance(
-                databaseType, DefaultDatabase.LOGIC_NAME, database, rule, 
mock(ConfigurationProperties.class), mock(SelectStatementContext.class, 
RETURNS_DEEP_STUBS));
+        ResultDecorator<?> actual = engine.newInstance(database, rule, 
mock(ConfigurationProperties.class), mock(SelectStatementContext.class, 
RETURNS_DEEP_STUBS));
         assertThat(actual, instanceOf(EncryptDQLResultDecorator.class));
     }
     
@@ -71,14 +65,14 @@ public final class EncryptResultDecoratorEngineTest {
         SQLStatementContext<ExplainStatement> sqlStatementContext = 
mock(ExplainStatementContext.class);
         
when(sqlStatementContext.getSqlStatement()).thenReturn(mock(MySQLExplainStatement.class));
         EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine) 
ResultProcessEngineFactory.getInstances(Collections.singleton(rule)).get(rule);
-        ResultDecorator<?> actual = engine.newInstance(databaseType, 
DefaultDatabase.LOGIC_NAME, database, rule, 
mock(ConfigurationProperties.class), sqlStatementContext);
+        ResultDecorator<?> actual = engine.newInstance(database, rule, 
mock(ConfigurationProperties.class), sqlStatementContext);
         assertThat(actual, instanceOf(EncryptDALResultDecorator.class));
     }
     
     @Test
     public void assertNewInstanceWithOtherStatement() {
         EncryptResultDecoratorEngine engine = (EncryptResultDecoratorEngine) 
ResultProcessEngineFactory.getInstances(Collections.singleton(rule)).get(rule);
-        ResultDecorator<?> actual = engine.newInstance(databaseType, 
DefaultDatabase.LOGIC_NAME, database, rule, 
mock(ConfigurationProperties.class), mock(InsertStatementContext.class));
+        ResultDecorator<?> actual = engine.newInstance(database, rule, 
mock(ConfigurationProperties.class), mock(InsertStatementContext.class));
         assertThat(actual, instanceOf(TransparentResultDecorator.class));
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
index f31479a4189..5b0620f12e7 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaDataTest.java
@@ -96,7 +96,7 @@ public final class EncryptAlgorithmMetaDataTest {
         Map<String, String> columnTableNames = new HashMap<>();
         columnTableNames.put(columnProjection.getExpression(), "t_order");
         
when(tablesContext.findTableNamesByColumnProjection(Collections.singletonList(columnProjection),
 schema)).thenReturn(columnTableNames);
-        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(DefaultDatabase.LOGIC_NAME, database, encryptRule, 
selectStatementContext);
+        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(database, encryptRule, selectStatementContext);
         Optional<EncryptContext> actual = 
encryptAlgorithmMetaData.findEncryptContext(1);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getDatabaseName(), 
is(DefaultDatabase.LOGIC_NAME));
@@ -109,7 +109,7 @@ public final class EncryptAlgorithmMetaDataTest {
         
when(tablesContext.findTableNamesByColumnProjection(Collections.singletonList(columnProjection),
 schema)).thenReturn(Collections.emptyMap());
         when(tablesContext.getTableNames()).thenReturn(Arrays.asList("t_user", 
"t_user_item", "t_order_item"));
         when(encryptRule.findEncryptor("t_order_item", 
"id")).thenReturn(Optional.of(encryptAlgorithm));
-        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(DefaultDatabase.LOGIC_NAME, database, encryptRule, 
selectStatementContext);
+        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(database, encryptRule, selectStatementContext);
         Optional<EncryptContext> actual = 
encryptAlgorithmMetaData.findEncryptContext(1);
         assertTrue(actual.isPresent());
         assertThat(actual.get().getDatabaseName(), 
is(DefaultDatabase.LOGIC_NAME));
@@ -120,7 +120,7 @@ public final class EncryptAlgorithmMetaDataTest {
     @Test
     public void assertFindEncryptContextWhenColumnProjectionIsNotExist() {
         
when(projectionsContext.getExpandProjections()).thenReturn(Collections.singletonList(mock(DerivedProjection.class)));
-        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(DefaultDatabase.LOGIC_NAME, database, encryptRule, 
selectStatementContext);
+        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(database, encryptRule, selectStatementContext);
         Optional<EncryptContext> actual = 
encryptAlgorithmMetaData.findEncryptContext(1);
         assertFalse(actual.isPresent());
     }
@@ -129,7 +129,7 @@ public final class EncryptAlgorithmMetaDataTest {
     @Test
     public void assertFindEncryptor() {
         when(encryptRule.findEncryptor("t_order", 
"id")).thenReturn(Optional.of(encryptAlgorithm));
-        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(DefaultDatabase.LOGIC_NAME, database, encryptRule, 
selectStatementContext);
+        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(database, encryptRule, selectStatementContext);
         Optional<EncryptAlgorithm> actualEncryptor = 
encryptAlgorithmMetaData.findEncryptor("t_order", "id");
         assertTrue(actualEncryptor.isPresent());
         assertThat(actualEncryptor.get().getType(), is("MD5"));
@@ -138,7 +138,7 @@ public final class EncryptAlgorithmMetaDataTest {
     @Test
     public void assertIsQueryWithCipherColumn() {
         when(encryptRule.isQueryWithCipherColumn("t_order", 
"id")).thenReturn(true);
-        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(DefaultDatabase.LOGIC_NAME, database, encryptRule, 
selectStatementContext);
+        EncryptAlgorithmMetaData encryptAlgorithmMetaData = new 
EncryptAlgorithmMetaData(database, encryptRule, selectStatementContext);
         assertTrue(encryptAlgorithmMetaData.isQueryWithCipherColumn("t_order", 
"id"));
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
 
b/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
index 900fbad925b..8f0bf0408f2 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
@@ -86,8 +86,7 @@ public final class MergeEngine {
         MergedResult result = null;
         for (Entry<ShardingSphereRule, ResultProcessEngine> entry : 
engines.entrySet()) {
             if (entry.getValue() instanceof ResultDecoratorEngine) {
-                ResultDecorator resultDecorator = ((ResultDecoratorEngine) 
entry.getValue()).newInstance(
-                        database.getResource().getDatabaseType(), 
database.getName(), database, entry.getKey(), props, sqlStatementContext);
+                ResultDecorator resultDecorator = ((ResultDecoratorEngine) 
entry.getValue()).newInstance(database, entry.getKey(), props, 
sqlStatementContext);
                 result = null == result ? 
resultDecorator.decorate(mergedResult, sqlStatementContext, entry.getKey()) : 
resultDecorator.decorate(result, sqlStatementContext, entry.getKey());
             }
         }
@@ -99,8 +98,7 @@ public final class MergeEngine {
         MergedResult result = null;
         for (Entry<ShardingSphereRule, ResultProcessEngine> entry : 
engines.entrySet()) {
             if (entry.getValue() instanceof ResultDecoratorEngine) {
-                ResultDecorator resultDecorator = ((ResultDecoratorEngine) 
entry.getValue()).newInstance(
-                        database.getResource().getDatabaseType(), 
database.getName(), database, entry.getKey(), props, sqlStatementContext);
+                ResultDecorator resultDecorator = ((ResultDecoratorEngine) 
entry.getValue()).newInstance(database, entry.getKey(), props, 
sqlStatementContext);
                 result = null == result ? 
resultDecorator.decorate(queryResult, sqlStatementContext, entry.getKey()) : 
resultDecorator.decorate(result, sqlStatementContext, entry.getKey());
             }
         }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
 
b/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
index 78cfc4c809e..b6a1a73790d 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecoratorEngine.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.infra.merge.engine.decorator;
 
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.merge.engine.ResultProcessEngine;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
@@ -34,14 +33,11 @@ public interface ResultDecoratorEngine<T extends 
ShardingSphereRule> extends Res
     /**
      * Create new instance of result decorator.
      * 
-     * @param databaseType database type
-     * @param databaseName database name
      * @param database database
      * @param rule rule
      * @param props configuration properties
      * @param sqlStatementContext SQL statement context
      * @return created instance
      */
-    ResultDecorator<?> newInstance(DatabaseType databaseType, String 
databaseName,
-                                   ShardingSphereDatabase database, T rule, 
ConfigurationProperties props, SQLStatementContext<?> sqlStatementContext);
+    ResultDecorator<?> newInstance(ShardingSphereDatabase database, T rule, 
ConfigurationProperties props, SQLStatementContext<?> sqlStatementContext);
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
 
b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
index 93f883d27ce..1dafc5f330f 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorEngineFixture.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.infra.merge.fixture.decorator;
 
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
 import 
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecoratorEngine;
 import org.apache.shardingsphere.infra.merge.fixture.rule.DecoratorRuleFixture;
@@ -28,7 +27,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 public final class ResultDecoratorEngineFixture implements 
ResultDecoratorEngine<DecoratorRuleFixture> {
     
     @Override
-    public ResultDecorator<?> newInstance(final DatabaseType databaseType, 
final String databaseName, final ShardingSphereDatabase database,
+    public ResultDecorator<?> newInstance(final ShardingSphereDatabase 
database,
                                           final DecoratorRuleFixture rule, 
final ConfigurationProperties props, final SQLStatementContext<?> 
sqlStatementContext) {
         return new ResultDecoratorFixture();
     }

Reply via email to