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;
}
}