This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 d99b5e1fce1 Add more test cases on DatabaseTypeRegistry (#33229)
d99b5e1fce1 is described below
commit d99b5e1fce1e0dfbae398afac5c207e1aff3bfc0
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Oct 13 21:36:48 2024 +0800
Add more test cases on DatabaseTypeRegistry (#33229)
* Add more test cases on DatabaseTypeRegistry
* Refactor ResultSetMapper
* Refactor ResultSetMapper
---
.../infra/database/core/resultset/ResultSetMapper.java | 14 +++++++-------
.../infra/database/core/type/DatabaseTypeRegistryTest.java | 13 +++++++++----
2 files changed, 16 insertions(+), 11 deletions(-)
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/resultset/ResultSetMapper.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/resultset/ResultSetMapper.java
index 9113f58efd7..4912c0f7714 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/resultset/ResultSetMapper.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/resultset/ResultSetMapper.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.database.core.resultset;
+import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
@@ -25,17 +26,15 @@ import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
+import java.util.Optional;
/**
* Result set mapper.
*/
+@RequiredArgsConstructor
public final class ResultSetMapper {
- private final DialectResultSetMapper dialectLoader;
-
- public ResultSetMapper(final DatabaseType databaseType) {
- dialectLoader =
DatabaseTypedSPILoader.findService(DialectResultSetMapper.class,
databaseType).orElse(null);
- }
+ private final DatabaseType databaseType;
/**
* Load result set value.
@@ -46,13 +45,14 @@ public final class ResultSetMapper {
* @throws SQLException SQL exception
*/
public Object load(final ResultSet resultSet, final int columnIndex)
throws SQLException {
+ Optional<DialectResultSetMapper> dialectLoader =
DatabaseTypedSPILoader.findService(DialectResultSetMapper.class, databaseType);
ResultSetMetaData metaData = resultSet.getMetaData();
switch (metaData.getColumnType(columnIndex)) {
case Types.BOOLEAN:
return resultSet.getBoolean(columnIndex);
case Types.TINYINT:
case Types.SMALLINT:
- return null == dialectLoader ?
Integer.valueOf(resultSet.getInt(columnIndex)) :
dialectLoader.getSmallintValue(resultSet, columnIndex);
+ return dialectLoader.isPresent() ?
dialectLoader.get().getSmallintValue(resultSet, columnIndex) :
Integer.valueOf(resultSet.getInt(columnIndex));
case Types.INTEGER:
if (metaData.isSigned(columnIndex)) {
return resultSet.getInt(columnIndex);
@@ -75,7 +75,7 @@ public final class ResultSetMapper {
case Types.LONGVARCHAR:
return resultSet.getString(columnIndex);
case Types.DATE:
- return null == dialectLoader ? resultSet.getDate(columnIndex)
: dialectLoader.getDateValue(resultSet, columnIndex);
+ return dialectLoader.isPresent() ?
dialectLoader.get().getDateValue(resultSet, columnIndex) :
resultSet.getDate(columnIndex);
case Types.TIME:
return resultSet.getTime(columnIndex);
case Types.TIMESTAMP:
diff --git
a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistryTest.java
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistryTest.java
index fbe369fd9cb..2e883945437 100644
---
a/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistryTest.java
+++
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/type/DatabaseTypeRegistryTest.java
@@ -20,19 +20,24 @@ package org.apache.shardingsphere.infra.database.core.type;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.Test;
-import java.util.Collection;
import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
class DatabaseTypeRegistryTest {
@Test
- void assertGetAllBranchDatabaseTypes() {
- Collection<DatabaseType> actual = new
DatabaseTypeRegistry(TypedSPILoader.getService(DatabaseType.class,
"TRUNK")).getAllBranchDatabaseTypes();
- assertThat(actual,
is(Collections.singletonList(TypedSPILoader.getService(DatabaseType.class,
"BRANCH"))));
+ void assertGetAllBranchDatabaseTypesWithTrunkType() {
+ assertThat(new
DatabaseTypeRegistry(TypedSPILoader.getService(DatabaseType.class,
"TRUNK")).getAllBranchDatabaseTypes(),
+
is(Collections.singletonList(TypedSPILoader.getService(DatabaseType.class,
"BRANCH"))));
+ }
+
+ @Test
+ void assertGetAllBranchDatabaseTypesWithBranchType() {
+ assertTrue(new
DatabaseTypeRegistry(TypedSPILoader.getService(DatabaseType.class,
"BRANCH")).getAllBranchDatabaseTypes().isEmpty());
}
@Test