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

Reply via email to