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

menghaoran 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 ef8433923c8 Decouple RuleMetaData.configuration of 
SingleTableRulesQueryResultSet (#18555)
ef8433923c8 is described below

commit ef8433923c886f27080d1bb9990b4c4a9e4fa57d
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jun 24 06:33:27 2022 +0800

    Decouple RuleMetaData.configuration of SingleTableRulesQueryResultSet 
(#18555)
---
 .../rql/rule/SingleTableRulesQueryResultSet.java   |  8 +++---
 .../rql/SingleTableRulesQueryResultSetTest.java    | 31 ++++++++++------------
 2 files changed, 17 insertions(+), 22 deletions(-)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
index 1427f1cf20b..78eeef12d86 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
@@ -20,14 +20,13 @@ package 
org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule;
 import 
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
 import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
+import org.apache.shardingsphere.singletable.rule.SingleTableRule;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.Optional;
 
 /**
  * Query result set for show single table rules.
@@ -38,9 +37,8 @@ public final class SingleTableRulesQueryResultSet implements 
DistSQLResultSet {
     
     @Override
     public void init(final ShardingSphereDatabase database, final SQLStatement 
sqlStatement) {
-        Optional<SingleTableRuleConfiguration> ruleConfig = 
database.getRuleMetaData().getConfigurations().stream()
-                .filter(each -> each instanceof 
SingleTableRuleConfiguration).map(each -> (SingleTableRuleConfiguration) 
each).findAny();
-        
ruleConfig.flatMap(SingleTableRuleConfiguration::getDefaultDataSource).ifPresent(optional
 -> data = Collections.singletonList(optional).iterator());
+        SingleTableRule rule = 
database.getRuleMetaData().getSingleRule(SingleTableRule.class);
+        rule.getConfiguration().getDefaultDataSource().ifPresent(optional -> 
data = Collections.singleton(optional).iterator());
     }
     
     @Override
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
index 1a6e62dcc32..d0a65462297 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
@@ -20,17 +20,13 @@ package 
org.apache.shardingsphere.proxy.backend.text.distsql.rql;
 import 
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
 import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import 
org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.SingleTableRulesQueryResultSet;
 import 
org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
-import org.junit.Before;
+import org.apache.shardingsphere.singletable.rule.SingleTableRule;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -38,25 +34,26 @@ import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-@RunWith(MockitoJUnitRunner.class)
 public final class SingleTableRulesQueryResultSetTest {
     
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private ShardingSphereDatabase database;
-    
-    @Before
-    public void before() {
-        
when(database.getRuleMetaData().getConfigurations()).thenReturn(Collections.singletonList(new
 SingleTableRuleConfiguration("ds_0")));
-    }
-    
     @Test
     public void assertGetRowData() {
         DistSQLResultSet resultSet = new SingleTableRulesQueryResultSet();
-        resultSet.init(database, mock(ShowSingleTableStatement.class));
+        resultSet.init(mockDatabase(), mock(ShowSingleTableStatement.class));
         Collection<Object> actual = resultSet.getRowData();
         assertThat(actual.size(), is(2));
         Iterator<Object> rowData = actual.iterator();
         assertThat(rowData.next(), is("default"));
-        assertThat(rowData.next(), is("ds_0"));
+        assertThat(rowData.next(), is("foo_ds"));
+    }
+    
+    private ShardingSphereDatabase mockDatabase() {
+        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class);
+        SingleTableRule rule = mock(SingleTableRule.class);
+        when(rule.getConfiguration()).thenReturn(new 
SingleTableRuleConfiguration("foo_ds"));
+        ShardingSphereRuleMetaData ruleMetaData = 
mock(ShardingSphereRuleMetaData.class);
+        
when(ruleMetaData.getSingleRule(SingleTableRule.class)).thenReturn(rule);
+        when(result.getRuleMetaData()).thenReturn(ruleMetaData);
+        return result;
     }
 }

Reply via email to