You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2022/06/23 22:33:38 UTC

[shardingsphere] branch master updated: Decouple RuleMetaData.configuration of SingleTableRulesQueryResultSet (#18555)

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 <zh...@apache.org>
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;
     }
 }