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 f5ee13d7b20 Refactor SingleTableRule.assignNewDataSourceName() (#18342)
f5ee13d7b20 is described below

commit f5ee13d7b2070d23e30189057847bddde22389a7
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jun 13 22:27:55 2022 +0800

    Refactor SingleTableRule.assignNewDataSourceName() (#18342)
    
    * Refactor ReadwriteSplittingRuleQueryResultSet
    
    * Refactor SingleTableRule.assignNewDataSourceName()
    
    * Refactor SingleTableRuleTest
    
    * Refactor SingleTableRuleTest
---
 .../engine/SingleTableStandardRouteEngine.java     | 56 +++++++---------------
 .../singletable/rule/SingleTableRule.java          | 27 ++++++-----
 .../singletable/rule/SingleTableRuleTest.java      | 37 +++++++-------
 .../rule/builder/SingleTableRuleBuilderTest.java   |  6 ---
 4 files changed, 51 insertions(+), 75 deletions(-)

diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
index 343511cdd7d..02c0a143381 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
@@ -31,13 +31,11 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTable
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -80,48 +78,18 @@ public final class SingleTableStandardRouteEngine 
implements SingleTableRouteEng
     }
     
     private void route0(final RouteContext routeContext, final SingleTableRule 
rule) {
-        if (isTableDDLStatement() || 
rule.isAllTablesInSameDataSource(routeContext, singleTableNames)) {
-            Collection<QualifiedTable> existSingleTables = 
rule.getSingleTableNames(singleTableNames);
-            if (!existSingleTables.isEmpty()) {
-                fillRouteContext(rule, routeContext, existSingleTables);
-            } else {
-                RouteUnit routeUnit = rule.getDefaultDataSource().isPresent() 
? getDefaultRouteUnit(rule.getDefaultDataSource().get()) : 
getRandomRouteUnit(rule);
-                routeContext.getRouteUnits().add(routeUnit);
-            }
+        if (sqlStatement instanceof CreateTableStatement) {
+            String dataSourceName = rule.assignNewDataSourceName();
+            String tableName = 
singleTableNames.iterator().next().getTableName();
+            routeContext.getRouteUnits().add(new RouteUnit(new 
RouteMapper(dataSourceName, dataSourceName), Collections.singleton(new 
RouteMapper(tableName, tableName))));
+        } else if (sqlStatement instanceof AlterTableStatement || sqlStatement 
instanceof DropTableStatement || rule.isAllTablesInSameDataSource(routeContext, 
singleTableNames)) {
+            fillRouteContext(rule, routeContext, 
rule.getSingleTableNames(singleTableNames));
         } else {
             decorateFederationRouteContext(routeContext);
             fillRouteContext(rule, routeContext, singleTableNames);
         }
     }
     
-    private void decorateFederationRouteContext(final RouteContext 
routeContext) {
-        RouteContext newRouteContext = new RouteContext();
-        for (RouteUnit each : routeContext.getRouteUnits()) {
-            newRouteContext.putRouteUnit(each.getDataSourceMapper(), 
each.getTableMappers());
-        }
-        routeContext.setFederated(true);
-        routeContext.getRouteUnits().clear();
-        routeContext.getOriginalDataNodes().clear();
-        routeContext.getRouteUnits().addAll(newRouteContext.getRouteUnits());
-        
routeContext.getOriginalDataNodes().addAll(newRouteContext.getOriginalDataNodes());
-    }
-    
-    private boolean isTableDDLStatement() {
-        return sqlStatement instanceof CreateTableStatement || sqlStatement 
instanceof AlterTableStatement || sqlStatement instanceof DropTableStatement;
-    }
-    
-    private RouteUnit getRandomRouteUnit(final SingleTableRule 
singleTableRule) {
-        Collection<String> dataSourceNames = 
singleTableRule.getDataSourceNames();
-        String dataSource = new 
ArrayList<>(dataSourceNames).get(ThreadLocalRandom.current().nextInt(dataSourceNames.size()));
-        String table = singleTableNames.iterator().next().getTableName();
-        return new RouteUnit(new RouteMapper(dataSource, dataSource), 
Collections.singleton(new RouteMapper(table, table)));
-    }
-    
-    private RouteUnit getDefaultRouteUnit(final String dataSource) {
-        String table = singleTableNames.iterator().next().getTableName();
-        return new RouteUnit(new RouteMapper(dataSource, dataSource), 
Collections.singleton(new RouteMapper(table, table)));
-    }
-    
     private void fillRouteContext(final SingleTableRule singleTableRule, final 
RouteContext routeContext, final Collection<QualifiedTable> logicTables) {
         for (QualifiedTable each : logicTables) {
             String tableName = each.getTableName();
@@ -133,4 +101,16 @@ public final class SingleTableStandardRouteEngine 
implements SingleTableRouteEng
             routeContext.putRouteUnit(new RouteMapper(dataSource, dataSource), 
Collections.singletonList(new RouteMapper(tableName, tableName)));
         }
     }
+    
+    private void decorateFederationRouteContext(final RouteContext 
routeContext) {
+        RouteContext newRouteContext = new RouteContext();
+        for (RouteUnit each : routeContext.getRouteUnits()) {
+            newRouteContext.putRouteUnit(each.getDataSourceMapper(), 
each.getTableMappers());
+        }
+        routeContext.setFederated(true);
+        routeContext.getRouteUnits().clear();
+        routeContext.getOriginalDataNodes().clear();
+        routeContext.getRouteUnits().addAll(newRouteContext.getRouteUnits());
+        
routeContext.getOriginalDataNodes().addAll(newRouteContext.getOriginalDataNodes());
+    }
 }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
index ee8ce87308a..20c2e7e765e 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
@@ -36,6 +36,7 @@ import 
org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration
 import 
org.apache.shardingsphere.singletable.datanode.SingleTableDataNodeLoader;
 
 import javax.sql.DataSource;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -46,29 +47,31 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.TreeSet;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
 /**
  * Single table rule.
  */
-@Getter
 public final class SingleTableRule implements DatabaseRule, 
DataNodeContainedRule, TableContainedRule, MutableDataNodeRule, ExportableRule {
     
-    private String defaultDataSource;
+    private final String defaultDataSource;
     
+    @Getter
     private final Collection<String> dataSourceNames;
     
+    @Getter
     private final Map<String, Collection<DataNode>> singleTableDataNodes;
     
     private final Map<String, String> tableNames;
     
     public SingleTableRule(final SingleTableRuleConfiguration config, final 
String databaseName, final DatabaseType databaseType,
                            final Map<String, DataSource> dataSourceMap, final 
Collection<ShardingSphereRule> builtRules, final ConfigurationProperties props) 
{
+        defaultDataSource = config.getDefaultDataSource().orElse(null);
         Map<String, DataSource> aggregateDataSourceMap = 
getAggregateDataSourceMap(dataSourceMap, builtRules);
         dataSourceNames = aggregateDataSourceMap.keySet();
         singleTableDataNodes = SingleTableDataNodeLoader.load(databaseName, 
databaseType, aggregateDataSourceMap, getExcludedTables(builtRules), props);
         tableNames = 
singleTableDataNodes.entrySet().stream().collect(Collectors.toConcurrentMap(Entry::getKey,
 entry -> entry.getValue().iterator().next().getTableName()));
-        config.getDefaultDataSource().ifPresent(optional -> defaultDataSource 
= optional);
     }
     
     private Map<String, DataSource> getAggregateDataSourceMap(final 
Map<String, DataSource> dataSourceMap, final Collection<ShardingSphereRule> 
builtRules) {
@@ -94,6 +97,15 @@ public final class SingleTableRule implements DatabaseRule, 
DataNodeContainedRul
         return result;
     }
     
+    /**
+     * Assign new data source name.
+     *
+     * @return assigned data source name
+     */
+    public String assignNewDataSourceName() {
+        return null == defaultDataSource ? new 
ArrayList<>(dataSourceNames).get(ThreadLocalRandom.current().nextInt(dataSourceNames.size()))
 : defaultDataSource;
+    }
+    
     /**
      * Judge whether single tables are in same data source or not.
      *
@@ -141,15 +153,6 @@ public final class SingleTableRule implements 
DatabaseRule, DataNodeContainedRul
         return true;
     }
     
-    /**
-     * Get default data source.
-     *
-     * @return default data source
-     */
-    public Optional<String> getDefaultDataSource() {
-        return Optional.ofNullable(defaultDataSource);
-    }
-    
     /**
      * Get single table names.
      *
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
index ba966648017..a19dca6bf95 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
@@ -92,7 +92,7 @@ public final class SingleTableRuleTest {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         
when(dataNodeContainedRule.getAllTables()).thenReturn(Arrays.asList("t_order", 
"t_order_0", "t_order_1"));
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Map<String, Collection<DataNode>> actual = 
singleTableRule.getSingleTableDataNodes();
         assertThat(actual.size(), is(2));
         assertTrue(actual.containsKey("employee"));
@@ -104,7 +104,7 @@ public final class SingleTableRuleTest {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         
when(dataNodeContainedRule.getAllTables()).thenReturn(Arrays.asList("T_ORDER", 
"T_ORDER_0", "T_ORDER_1"));
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Map<String, Collection<DataNode>> actual = 
singleTableRule.getSingleTableDataNodes();
         assertThat(actual.size(), is(2));
         assertTrue(actual.containsKey("employee"));
@@ -115,7 +115,7 @@ public final class SingleTableRuleTest {
     public void assertFindSingleTableDataNode() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Optional<DataNode> actual = 
singleTableRule.findSingleTableDataNode(DefaultDatabase.LOGIC_NAME, "employee");
         assertTrue(actual.isPresent());
         assertThat(actual.get().getDataSourceName(), is("ds_0"));
@@ -126,7 +126,7 @@ public final class SingleTableRuleTest {
     public void assertFindSingleTableDataNodeWithUpperCase() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Optional<DataNode> actual = 
singleTableRule.findSingleTableDataNode(DefaultDatabase.LOGIC_NAME, "EMPLOYEE");
         assertTrue(actual.isPresent());
         assertThat(actual.get().getDataSourceName(), is("ds_0"));
@@ -137,7 +137,7 @@ public final class SingleTableRuleTest {
     public void assertIsSingleTablesInSameDataSource() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Collection<QualifiedTable> singleTableNames = new LinkedList<>();
         singleTableNames.add(new QualifiedTable(DefaultDatabase.LOGIC_NAME, 
"employee"));
         
assertTrue(singleTableRule.isSingleTablesInSameDataSource(singleTableNames));
@@ -154,26 +154,25 @@ public final class SingleTableRuleTest {
         routeContext.putRouteUnit(dataSourceMapper, tableMappers);
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         assertTrue(singleTableRule.isAllTablesInSameDataSource(routeContext, 
singleTableNames));
     }
     
     @Test
-    public void assertGetDefaultDataSource() {
+    public void assertAssignNewDataSourceName() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRuleConfiguration singleTableRuleConfig = new 
SingleTableRuleConfiguration();
         singleTableRuleConfig.setDefaultDataSource("ds_0");
         SingleTableRule singleTableRule = new 
SingleTableRule(singleTableRuleConfig, DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
-        assertTrue(singleTableRule.getDefaultDataSource().isPresent());
-        assertThat(singleTableRule.getDefaultDataSource().get(), is("ds_0"));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+        assertThat(singleTableRule.assignNewDataSourceName(), is("ds_0"));
     }
     
     @Test
     public void assertGetSingleTableNames() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Collection<QualifiedTable> tableNames = new LinkedList<>();
         tableNames.add(new QualifiedTable(DefaultDatabase.LOGIC_NAME, 
"employee"));
         
assertThat(singleTableRule.getSingleTableNames(tableNames).iterator().next().getSchemaName(),
 is(DefaultDatabase.LOGIC_NAME));
@@ -184,7 +183,7 @@ public final class SingleTableRuleTest {
     public void assertPut() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         String tableName = "teacher";
         String dataSourceName = "ds_0";
         singleTableRule.put(dataSourceName, DefaultDatabase.LOGIC_NAME, 
tableName);
@@ -203,7 +202,7 @@ public final class SingleTableRuleTest {
     public void assertRemove() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         String tableName = "employee";
         singleTableRule.remove(DefaultDatabase.LOGIC_NAME, tableName);
         Collection<QualifiedTable> tableNames = new LinkedList<>();
@@ -218,7 +217,7 @@ public final class SingleTableRuleTest {
     public void assertGetAllDataNodes() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         assertTrue(singleTableRule.getAllDataNodes().containsKey("employee"));
         assertTrue(singleTableRule.getAllDataNodes().containsKey("student"));
         assertTrue(singleTableRule.getAllDataNodes().containsKey("t_order_0"));
@@ -229,7 +228,7 @@ public final class SingleTableRuleTest {
     public void assertGetDataNodesByTableName() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         Collection<DataNode> actual = 
singleTableRule.getDataNodesByTableName("EMPLOYEE");
         assertThat(actual.size(), is(1));
         DataNode dataNode = actual.iterator().next();
@@ -241,7 +240,7 @@ public final class SingleTableRuleTest {
     public void assertFindFirstActualTable() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         String logicTable = "employee";
         
assertFalse(singleTableRule.findFirstActualTable(logicTable).isPresent());
     }
@@ -250,7 +249,7 @@ public final class SingleTableRuleTest {
     public void assertIsNeedAccumulate() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         assertFalse(singleTableRule.isNeedAccumulate(Collections.emptyList()));
     }
     
@@ -258,7 +257,7 @@ public final class SingleTableRuleTest {
     public void assertFindLogicTableByActualTable() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         String actualTable = "student";
         
assertFalse(singleTableRule.findLogicTableByActualTable(actualTable).isPresent());
     }
@@ -267,7 +266,7 @@ public final class SingleTableRuleTest {
     public void assertFindActualTableByCatalog() {
         DataNodeContainedRule dataNodeContainedRule = 
mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new 
SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, 
mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new 
ConfigurationProperties(new Properties()));
         String catalog = "employee";
         String logicTable = "t_order_0";
         assertFalse(singleTableRule.findActualTableByCatalog(catalog, 
logicTable).isPresent());
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
index 50a725fee2a..945f6445910 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
@@ -32,10 +32,7 @@ import java.util.Collections;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
 public final class SingleTableRuleBuilderTest {
@@ -49,7 +46,6 @@ public final class SingleTableRuleBuilderTest {
         ShardingSphereRule shardingSphereRule = mock(ShardingSphereRule.class);
         DatabaseRule databaseRule = builder.build(config, "", 
Collections.emptyMap(), Collections.singletonList(shardingSphereRule), new 
ConfigurationProperties(createProperties()));
         assertThat(databaseRule, instanceOf(SingleTableRule.class));
-        assertFalse(((SingleTableRule) 
databaseRule).getDefaultDataSource().isPresent());
     }
     
     @SuppressWarnings({"rawtypes", "unchecked"})
@@ -62,8 +58,6 @@ public final class SingleTableRuleBuilderTest {
         config.setDefaultDataSource("ds_0");
         DatabaseRule databaseRule = builder.build(config, "", 
Collections.emptyMap(), Collections.singletonList(shardingSphereRule), new 
ConfigurationProperties(createProperties()));
         assertThat(databaseRule, instanceOf(SingleTableRule.class));
-        assertTrue(((SingleTableRule) 
databaseRule).getDefaultDataSource().isPresent());
-        assertThat(((SingleTableRule) 
databaseRule).getDefaultDataSource().get(), is("ds_0"));
     }
     
     private Properties createProperties() {

Reply via email to