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 ee70a1b9f18 Fix sonar issue of TokenUtilsTest (#25671)
ee70a1b9f18 is described below
commit ee70a1b9f18748c6e9ac2f4e884f64e8f9b2ace8
Author: Liang Zhang <[email protected]>
AuthorDate: Mon May 15 12:25:44 2023 +0800
Fix sonar issue of TokenUtilsTest (#25671)
---
.../rewrite/token/pojo/ConstraintToken.java | 2 +-
.../sharding/rewrite/token/pojo/CursorToken.java | 2 +-
.../sharding/rewrite/token/pojo/IndexToken.java | 2 +-
.../sharding/rewrite/token/pojo/TableToken.java | 2 +-
.../sharding/rewrite/token/pojo/TokenUtils.java | 6 +++---
.../rewrite/token/pojo/TokenUtilsTest.java | 25 ++++++++++++++++------
6 files changed, 26 insertions(+), 13 deletions(-)
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
index 38146e854c3..2c79b8b57f0 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
@@ -57,7 +57,7 @@ public final class ConstraintToken extends SQLToken
implements Substitutable, Ro
private String getConstraintValue(final RouteUnit routeUnit) {
StringBuilder result = new StringBuilder(identifier.getValue());
- Map<String, String> logicAndActualTables =
TokenUtils.getLogicAndActualTables(routeUnit, sqlStatementContext,
shardingRule);
+ Map<String, String> logicAndActualTables =
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext,
shardingRule);
sqlStatementContext.getTablesContext().getTableNames().stream().findFirst().map(optional
-> logicAndActualTables.get(optional.toLowerCase()))
.ifPresent(optional -> result.append('_').append(optional));
return result.toString();
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
index 7541f77386e..5e0884713d9 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/CursorToken.java
@@ -58,7 +58,7 @@ public final class CursorToken extends SQLToken implements
Substitutable, RouteU
}
private String getCursorValue(final RouteUnit routeUnit) {
- Map<String, String> logicAndActualTables =
TokenUtils.getLogicAndActualTables(routeUnit, sqlStatementContext,
shardingRule);
+ Map<String, String> logicAndActualTables =
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext,
shardingRule);
String actualTableName = logicAndActualTables.isEmpty() ? null :
logicAndActualTables.values().iterator().next();
return Strings.isNullOrEmpty(actualTableName) ? identifier.getValue()
: identifier.getValue() + "_" + actualTableName;
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
index 64088f713fc..aa708480bcc 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
@@ -69,7 +69,7 @@ public final class IndexToken extends SQLToken implements
Substitutable, RouteUn
}
private String getIndexValue(final RouteUnit routeUnit) {
- Map<String, String> logicAndActualTables =
TokenUtils.getLogicAndActualTables(routeUnit, sqlStatementContext,
shardingRule);
+ Map<String, String> logicAndActualTables =
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext,
shardingRule);
String actualTableName =
findLogicTableNameFromMetaData(identifier.getValue()).map(logicAndActualTables::get)
.orElseGet(() ->
logicAndActualTables.values().stream().findFirst().orElse(null));
return IndexMetaDataUtils.getActualIndexName(identifier.getValue(),
actualTableName);
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TableToken.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TableToken.java
index f4d86a3f4cc..ce7c6a5cb63 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TableToken.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TableToken.java
@@ -50,7 +50,7 @@ public final class TableToken extends SQLToken implements
Substitutable, RouteUn
@Override
public String toString(final RouteUnit routeUnit) {
- String actualTableName = TokenUtils.getLogicAndActualTables(routeUnit,
sqlStatementContext, shardingRule).get(tableName.getValue().toLowerCase());
+ String actualTableName =
TokenUtils.getLogicAndActualTableMap(routeUnit, sqlStatementContext,
shardingRule).get(tableName.getValue().toLowerCase());
actualTableName = null == actualTableName ?
tableName.getValue().toLowerCase() : actualTableName;
return tableName.getQuoteCharacter().wrap(actualTableName);
}
diff --git
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
index 75ea35900f1..cf2666cad65 100644
---
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
+++
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtils.java
@@ -29,20 +29,20 @@ import java.util.HashMap;
import java.util.Map;
/**
- * Token utility class.
+ * Token utils.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class TokenUtils {
/**
- * Get logic table and actual table.
+ * Get logic and actual table map.
*
* @param routeUnit route unit
* @param sqlStatementContext SQL statement context
* @param shardingRule sharding rule
* @return key is logic table name, values is actual table belong to this
data source
*/
- public static Map<String, String> getLogicAndActualTables(final RouteUnit
routeUnit, final SQLStatementContext<?> sqlStatementContext, final ShardingRule
shardingRule) {
+ public static Map<String, String> getLogicAndActualTableMap(final
RouteUnit routeUnit, final SQLStatementContext<?> sqlStatementContext, final
ShardingRule shardingRule) {
Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
Map<String, String> result = new HashMap<>(tableNames.size(), 1);
for (RouteMapper each : routeUnit.getTableMappers()) {
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
index 0b05624c532..e227c36f0e9 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/TokenUtilsTest.java
@@ -24,26 +24,39 @@ import
org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.junit.jupiter.api.Test;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class TokenUtilsTest {
@Test
void assertGetLogicAndActualTablesFromRouteUnit() {
- assertThat(TokenUtils.getLogicAndActualTables(getRouteUnit(),
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS),
mock(ShardingRule.class)).get("logic_order_table"), is("table_order_0"));
+ Map<String, String> actual =
TokenUtils.getLogicAndActualTableMap(getRouteUnit(), mockSQLStatementContext(),
mockShardingRule());
+ assertThat(actual.get("foo_table"), is("foo_table_0"));
+ assertThat(actual.get("bar_table"), is("bar_table_0"));
}
- @Test
- void assertGetLogicAndActualTablesFromShardingRule() {
- // TODO add more test case
+ private RouteUnit getRouteUnit() {
+ return new RouteUnit(new RouteMapper(DefaultDatabase.LOGIC_NAME,
"ds_0"), Collections.singleton(new RouteMapper("foo_table", "foo_table_0")));
}
- private RouteUnit getRouteUnit() {
- return new RouteUnit(new RouteMapper(DefaultDatabase.LOGIC_NAME,
"ds_0"), Collections.singleton(new RouteMapper("LOGIC_ORDER_TABLE",
"table_order_0")));
+ private static SQLStatementContext<?> mockSQLStatementContext() {
+ SQLStatementContext<?> result = mock(SQLStatementContext.class,
RETURNS_DEEP_STUBS);
+
when(result.getTablesContext().getTableNames()).thenReturn(Arrays.asList("foo_table",
"bar_table"));
+ return result;
+ }
+
+ private static ShardingRule mockShardingRule() {
+ ShardingRule result = mock(ShardingRule.class);
+
when(result.getLogicAndActualTablesFromBindingTable(DefaultDatabase.LOGIC_NAME,
"foo_table", "foo_table_0", Arrays.asList("foo_table", "bar_table")))
+ .thenReturn(Collections.singletonMap("bar_table",
"bar_table_0"));
+ return result;
}
}