This is an automated email from the ASF dual-hosted git repository.

lidongdai pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 0feb144180 [Improvement-15260][dolphinscheduler-datasource-hana] add 
hana  related dependencies (#15260)
0feb144180 is described below

commit 0feb14418030ff98b49880f1fc762a7b13374944
Author: xujiaqiang <[email protected]>
AuthorDate: Tue Dec 12 17:11:27 2023 +0800

    [Improvement-15260][dolphinscheduler-datasource-hana] add hana  related 
dependencies (#15260)
    
    * add hana related dependencies
    
    * optimizing HANA data source bugs
    
    * run mvn spotless:apply
    
    * Fix hana datasource getValidationQuery()
    
    * Fix hana datasource testGetJdbcUrl()
    
    ---------
    
    Co-authored-by: xujiaqiang <“[email protected]”>
    Co-authored-by: David Zollo <[email protected]>
---
 dolphinscheduler-bom/pom.xml                       |  9 ++++
 .../common/constants/DataSourceConstants.java      |  2 +-
 .../dolphinscheduler-datasource-all/pom.xml        |  5 +++
 .../dolphinscheduler-datasource-hana/pom.xml       | 49 ++++++++++++++++++++++
 ...eClient.java => HanaAdHocDataSourceClient.java} |  7 ++--
 .../datasource/hana/HanaDataSourceChannel.java     | 12 ++++--
 ...Client.java => HanaPooledDataSourceClient.java} |  6 +--
 .../hana/param/HanaDataSourceProcessor.java        |  9 ++--
 .../hana/HanaDataSourceChannelFactoryTest.java     |  5 ++-
 .../datasource/hana/HanaDataSourceChannelTest.java | 12 +++---
 .../hana/param/HanaDataSourceProcessorTest.java    | 23 +++++-----
 .../hana/provider/JDBCDataSourceProviderTest.java  | 14 ++++---
 .../datasource/hana/utils/DataSourceUtilsTest.java | 38 ++++++++---------
 dolphinscheduler-datasource-plugin/pom.xml         |  1 +
 14 files changed, 132 insertions(+), 60 deletions(-)

diff --git a/dolphinscheduler-bom/pom.xml b/dolphinscheduler-bom/pom.xml
index 77b9d0c0c8..8829cdec3a 100644
--- a/dolphinscheduler-bom/pom.xml
+++ b/dolphinscheduler-bom/pom.xml
@@ -60,6 +60,7 @@
         <vertica-jdbc.version>12.0.4-0</vertica-jdbc.version>
         <oracle-jdbc.version>21.5.0.0</oracle-jdbc.version>
         <dameng-jdbc.version>8.1.2.79</dameng-jdbc.version>
+        <ngdbc.version>2.4.51</ngdbc.version>
         <slf4j.version>1.7.36</slf4j.version>
         <poi.version>4.1.2</poi.version>
         <javax.servlet-api.version>3.1.0</javax.servlet-api.version>
@@ -418,6 +419,14 @@
                 <artifactId>h2</artifactId>
                 <version>${h2.version}</version>
             </dependency>
+
+            <dependency>
+                <groupId>com.sap.cloud.db.jdbc</groupId>
+                <artifactId>ngdbc</artifactId>
+                <version>${ngdbc.version}</version>
+                <scope>test</scope>
+            </dependency>
+
             <!-- sl4j -->
             <dependency>
                 <groupId>org.slf4j</groupId>
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/constants/DataSourceConstants.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/constants/DataSourceConstants.java
index d9afab2c47..568eb8c6f5 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/constants/DataSourceConstants.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/constants/DataSourceConstants.java
@@ -65,7 +65,7 @@ public class DataSourceConstants {
     public static final String KYUUBI_VALIDATION_QUERY = "select 1";
     public static final String VERTICA_VALIDATION_QUERY = "select 1";
 
-    public static final String HANA_VALIDATION_QUERY = "select 1";
+    public static final String HANA_VALIDATION_QUERY = "select 1 from DUMMY";
 
     /**
      * jdbc url
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-all/pom.xml 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-all/pom.xml
index d1f39e1ad7..effe3c9abb 100644
--- a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-all/pom.xml
+++ b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-all/pom.xml
@@ -153,5 +153,10 @@
             <artifactId>dolphinscheduler-datasource-k8s</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.dolphinscheduler</groupId>
+            <artifactId>dolphinscheduler-datasource-hana</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/pom.xml 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/pom.xml
new file mode 100644
index 0000000000..e35249d962
--- /dev/null
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.dolphinscheduler</groupId>
+        <artifactId>dolphinscheduler-datasource-plugin</artifactId>
+        <version>dev-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>dolphinscheduler-datasource-hana</artifactId>
+    <packaging>jar</packaging>
+    <name>${project.artifactId}</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dolphinscheduler</groupId>
+            <artifactId>dolphinscheduler-spi</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dolphinscheduler</groupId>
+            <artifactId>dolphinscheduler-datasource-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sap.cloud.db.jdbc</groupId>
+            <artifactId>ngdbc</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceClient.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaAdHocDataSourceClient.java
similarity index 84%
copy from 
dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceClient.java
copy to 
dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaAdHocDataSourceClient.java
index 72806e42df..0cdb8fb265 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceClient.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaAdHocDataSourceClient.java
@@ -17,14 +17,13 @@
 
 package org.apache.dolphinscheduler.plugin.datasource.hana;
 
-import 
org.apache.dolphinscheduler.plugin.datasource.api.client.CommonDataSourceClient;
+import 
org.apache.dolphinscheduler.plugin.datasource.api.client.BaseAdHocDataSourceClient;
 import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
 import org.apache.dolphinscheduler.spi.enums.DbType;
 
-public class HanaDataSourceClient extends CommonDataSourceClient {
+public class HanaAdHocDataSourceClient extends BaseAdHocDataSourceClient {
 
-    public HanaDataSourceClient(BaseConnectionParam baseConnectionParam, 
DbType dbType) {
+    public HanaAdHocDataSourceClient(BaseConnectionParam baseConnectionParam, 
DbType dbType) {
         super(baseConnectionParam, dbType);
     }
-
 }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannel.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannel.java
index 9952ee4316..930d8b3bc5 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannel.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannel.java
@@ -17,15 +17,21 @@
 
 package org.apache.dolphinscheduler.plugin.datasource.hana;
 
+import org.apache.dolphinscheduler.spi.datasource.AdHocDataSourceClient;
 import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
 import org.apache.dolphinscheduler.spi.datasource.DataSourceChannel;
-import org.apache.dolphinscheduler.spi.datasource.DataSourceClient;
+import org.apache.dolphinscheduler.spi.datasource.PooledDataSourceClient;
 import org.apache.dolphinscheduler.spi.enums.DbType;
 
 public class HanaDataSourceChannel implements DataSourceChannel {
 
     @Override
-    public DataSourceClient createDataSourceClient(BaseConnectionParam 
baseConnectionParam, DbType dbType) {
-        return new HanaDataSourceClient(baseConnectionParam, dbType);
+    public AdHocDataSourceClient 
createAdHocDataSourceClient(BaseConnectionParam baseConnectionParam, DbType 
dbType) {
+        return new HanaAdHocDataSourceClient(baseConnectionParam, dbType);
+    }
+
+    @Override
+    public PooledDataSourceClient 
createPooledDataSourceClient(BaseConnectionParam baseConnectionParam, DbType 
dbType) {
+        return new HanaPooledDataSourceClient(baseConnectionParam, dbType);
     }
 }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceClient.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaPooledDataSourceClient.java
similarity index 84%
rename from 
dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceClient.java
rename to 
dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaPooledDataSourceClient.java
index 72806e42df..71da615431 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceClient.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaPooledDataSourceClient.java
@@ -17,13 +17,13 @@
 
 package org.apache.dolphinscheduler.plugin.datasource.hana;
 
-import 
org.apache.dolphinscheduler.plugin.datasource.api.client.CommonDataSourceClient;
+import 
org.apache.dolphinscheduler.plugin.datasource.api.client.BasePooledDataSourceClient;
 import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
 import org.apache.dolphinscheduler.spi.enums.DbType;
 
-public class HanaDataSourceClient extends CommonDataSourceClient {
+public class HanaPooledDataSourceClient extends BasePooledDataSourceClient {
 
-    public HanaDataSourceClient(BaseConnectionParam baseConnectionParam, 
DbType dbType) {
+    public HanaPooledDataSourceClient(BaseConnectionParam baseConnectionParam, 
DbType dbType) {
         super(baseConnectionParam, dbType);
     }
 
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
index 5c5da73aab..e6f59aece8 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
@@ -34,16 +34,13 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import com.google.auto.service.AutoService;
+
 @AutoService(DataSourceProcessor.class)
 public class HanaDataSourceProcessor extends AbstractDataSourceProcessor {
 
-    private final Logger logger = 
LoggerFactory.getLogger(HanaDataSourceProcessor.class);
-
     private static final String APPEND_PARAMS = "reconnect=true";
+
     @Override
     public BaseDataSourceParamDTO castDatasourceParamDTO(String paramJson) {
         return JSONUtils.parseObject(paramJson, HanaDataSourceParamDTO.class);
@@ -96,7 +93,7 @@ public class HanaDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public String getValidationQuery() {
-        return DataSourceConstants.COM_HANA_DB_JDBC_DRIVER;
+        return DataSourceConstants.HANA_VALIDATION_QUERY;
     }
 
     @Override
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelFactoryTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelFactoryTest.java
index 089b203f50..dfcee56ab9 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelFactoryTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelFactoryTest.java
@@ -18,13 +18,14 @@
 package org.apache.dolphinscheduler.plugin.datasource.hana;
 
 import org.apache.dolphinscheduler.spi.datasource.DataSourceChannel;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-public class HanaDataSourceChannelFactoryTest {
+class HanaDataSourceChannelFactoryTest {
 
     @Test
-    public void testCreate() {
+    void testCreate() {
         HanaDataSourceChannelFactory sourceChannelFactory = new 
HanaDataSourceChannelFactory();
         DataSourceChannel dataSourceChannel = sourceChannelFactory.create();
         Assertions.assertNotNull(dataSourceChannel);
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelTest.java
index e60e3bfc81..1c38ff2c65 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/HanaDataSourceChannelTest.java
@@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.plugin.datasource.hana;
 
 import 
org.apache.dolphinscheduler.plugin.datasource.hana.param.HanaConnectionParam;
 import org.apache.dolphinscheduler.spi.enums.DbType;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -26,13 +27,14 @@ import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
 @ExtendWith(MockitoExtension.class)
-public class HanaDataSourceChannelTest {
+class HanaDataSourceChannelTest {
 
     @Test
-    public void testCreateDataSourceClient() {
+    void testCreateDataSourceClient() {
         HanaDataSourceChannel sourceChannel = 
Mockito.mock(HanaDataSourceChannel.class);
-        HanaDataSourceClient dataSourceClient = 
Mockito.mock(HanaDataSourceClient.class);
-        Mockito.when(sourceChannel.createDataSourceClient(Mockito.any(), 
Mockito.any())).thenReturn(dataSourceClient);
-        Assertions.assertNotNull(sourceChannel.createDataSourceClient(new 
HanaConnectionParam(), DbType.HANA));
+        HanaPooledDataSourceClient dataSourceClient = 
Mockito.mock(HanaPooledDataSourceClient.class);
+        Mockito.when(sourceChannel.createPooledDataSourceClient(Mockito.any(), 
Mockito.any()))
+                .thenReturn(dataSourceClient);
+        
Assertions.assertNotNull(sourceChannel.createPooledDataSourceClient(new 
HanaConnectionParam(), DbType.HANA));
     }
 }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessorTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessorTest.java
index 8f6095b3b5..c457eb3e73 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessorTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessorTest.java
@@ -20,6 +20,10 @@ package 
org.apache.dolphinscheduler.plugin.datasource.hana.param;
 import org.apache.dolphinscheduler.common.constants.DataSourceConstants;
 import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
 import org.apache.dolphinscheduler.spi.enums.DbType;
+
+import java.util.HashMap;
+import java.util.Map;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -27,16 +31,13 @@ import org.mockito.MockedStatic;
 import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.util.HashMap;
-import java.util.Map;
-
 @ExtendWith(MockitoExtension.class)
-public class HanaDataSourceProcessorTest {
+class HanaDataSourceProcessorTest {
 
     private HanaDataSourceProcessor hanaDataSourceProcessor = new 
HanaDataSourceProcessor();
 
     @Test
-    public void testCreateConnectionParams() {
+    void testCreateConnectionParams() {
         Map<String, String> props = new HashMap<>();
         HanaDataSourceParamDTO mysqlDatasourceParamDTO = new 
HanaDataSourceParamDTO();
         mysqlDatasourceParamDTO.setUserName("root");
@@ -55,7 +56,7 @@ public class HanaDataSourceProcessorTest {
     }
 
     @Test
-    public void testCreateConnectionParams2() {
+    void testCreateConnectionParams2() {
         String connectionJson = 
"{\"user\":\"root\",\"password\":\"123456\",\"address\":\"jdbc:sap://localhost:30015\""
                 + 
",\"database\":\"default\",\"jdbcUrl\":\"jdbc:sap://localhost:30015?currentschema=default\"}";
         HanaConnectionParam connectionParams = (HanaConnectionParam) 
hanaDataSourceProcessor
@@ -65,13 +66,13 @@ public class HanaDataSourceProcessorTest {
     }
 
     @Test
-    public void testGetDatasourceDriver() {
+    void testGetDatasourceDriver() {
         Assertions.assertEquals(DataSourceConstants.COM_HANA_DB_JDBC_DRIVER,
                 hanaDataSourceProcessor.getDatasourceDriver());
     }
 
     @Test
-    public void testGetJdbcUrl() {
+    void testGetJdbcUrl() {
         HanaConnectionParam hanaConnectionParam = new HanaConnectionParam();
         
hanaConnectionParam.setJdbcUrl("jdbc:sap://localhost:30015?currentschema=default");
         Assertions.assertEquals(
@@ -80,18 +81,18 @@ public class HanaDataSourceProcessorTest {
     }
 
     @Test
-    public void testGetDbType() {
+    void testGetDbType() {
         Assertions.assertEquals(DbType.HANA, 
hanaDataSourceProcessor.getDbType());
     }
 
     @Test
-    public void testGetValidationQuery() {
+    void testGetValidationQuery() {
         Assertions.assertEquals(DataSourceConstants.HANA_VALIDATION_QUERY,
                 hanaDataSourceProcessor.getValidationQuery());
     }
 
     @Test
-    public void testGetDatasourceUniqueId() {
+    void testGetDatasourceUniqueId() {
         HanaConnectionParam mysqlConnectionParam = new HanaConnectionParam();
         
mysqlConnectionParam.setJdbcUrl("jdbc:sap://localhost:30015?currentschema=default");
         mysqlConnectionParam.setUser("root");
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/provider/JDBCDataSourceProviderTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/provider/JDBCDataSourceProviderTest.java
index cea4282e75..43e042fb82 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/provider/JDBCDataSourceProviderTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/provider/JDBCDataSourceProviderTest.java
@@ -17,10 +17,10 @@
 
 package org.apache.dolphinscheduler.plugin.datasource.hana.provider;
 
-import com.zaxxer.hikari.HikariDataSource;
 import 
org.apache.dolphinscheduler.plugin.datasource.api.provider.JDBCDataSourceProvider;
 import 
org.apache.dolphinscheduler.plugin.datasource.hana.param.HanaConnectionParam;
 import org.apache.dolphinscheduler.spi.enums.DbType;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -28,25 +28,27 @@ import org.mockito.MockedStatic;
 import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
+import com.zaxxer.hikari.HikariDataSource;
+
 @ExtendWith(MockitoExtension.class)
-public class JDBCDataSourceProviderTest {
+class JDBCDataSourceProviderTest {
 
     @Test
-    public void testCreateJdbcDataSource() {
+    void testCreateJdbcDataSource() {
         try (
                 MockedStatic<JDBCDataSourceProvider> 
mockedJDBCDataSourceProvider =
                         Mockito.mockStatic(JDBCDataSourceProvider.class)) {
             HikariDataSource dataSource = Mockito.mock(HikariDataSource.class);
             mockedJDBCDataSourceProvider
-                    .when(() -> 
JDBCDataSourceProvider.createJdbcDataSource(Mockito.any(), Mockito.any()))
+                    .when(() -> 
JDBCDataSourceProvider.createOneSessionJdbcDataSource(Mockito.any(), 
Mockito.any()))
                     .thenReturn(dataSource);
             Assertions.assertNotNull(
-                    JDBCDataSourceProvider.createJdbcDataSource(new 
HanaConnectionParam(), DbType.HANA));
+                    JDBCDataSourceProvider.createOneSessionJdbcDataSource(new 
HanaConnectionParam(), DbType.HANA));
         }
     }
 
     @Test
-    public void testCreateOneSessionJdbcDataSource() {
+    void testCreateOneSessionJdbcDataSource() {
         try (
                 MockedStatic<JDBCDataSourceProvider> 
mockedJDBCDataSourceProvider =
                         Mockito.mockStatic(JDBCDataSourceProvider.class)) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/utils/DataSourceUtilsTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/utils/DataSourceUtilsTest.java
index e7cf949e31..a11d746c87 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/utils/DataSourceUtilsTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hana/utils/DataSourceUtilsTest.java
@@ -27,6 +27,13 @@ import 
org.apache.dolphinscheduler.plugin.datasource.hana.param.HanaConnectionPa
 import 
org.apache.dolphinscheduler.plugin.datasource.hana.param.HanaDataSourceParamDTO;
 import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
 import org.apache.dolphinscheduler.spi.enums.DbType;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -34,16 +41,11 @@ import org.mockito.MockedStatic;
 import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import java.sql.Connection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-
 @ExtendWith(MockitoExtension.class)
-public class DataSourceUtilsTest {
+class DataSourceUtilsTest {
 
     @Test
-    public void testCheckDatasourceParam() {
+    void testCheckDatasourceParam() {
         HanaDataSourceParamDTO hanaDataSourceParamDTO = new 
HanaDataSourceParamDTO();
         hanaDataSourceParamDTO.setHost("localhost");
         hanaDataSourceParamDTO.setDatabase("default");
@@ -55,7 +57,7 @@ public class DataSourceUtilsTest {
     }
 
     @Test
-    public void testBuildConnectionParams() {
+    void testBuildConnectionParams() {
         HanaDataSourceParamDTO hanaDataSourceParamDTO = new 
HanaDataSourceParamDTO();
         hanaDataSourceParamDTO.setHost("localhost");
         hanaDataSourceParamDTO.setDatabase("default");
@@ -75,7 +77,7 @@ public class DataSourceUtilsTest {
     }
 
     @Test
-    public void testBuildConnectionParams2() {
+    void testBuildConnectionParams2() {
         HanaDataSourceParamDTO hanaDatasourceParamDTO = new 
HanaDataSourceParamDTO();
         hanaDatasourceParamDTO.setHost("localhost");
         hanaDatasourceParamDTO.setDatabase("default");
@@ -88,39 +90,37 @@ public class DataSourceUtilsTest {
     }
 
     @Test
-    public void testGetConnection() throws ExecutionException {
+    void testGetConnection() throws ExecutionException, SQLException {
         try (
                 MockedStatic<PropertyUtils> mockedStaticPropertyUtils = 
Mockito.mockStatic(PropertyUtils.class);
                 MockedStatic<DataSourceClientProvider> 
mockedStaticDataSourceClientProvider =
                         Mockito.mockStatic(DataSourceClientProvider.class)) {
             mockedStaticPropertyUtils.when(() -> 
PropertyUtils.getLong("kerberos.expire.time", 24L)).thenReturn(24L);
-            DataSourceClientProvider clientProvider = 
Mockito.mock(DataSourceClientProvider.class);
-            
mockedStaticDataSourceClientProvider.when(DataSourceClientProvider::getInstance).thenReturn(clientProvider);
 
             Connection connection = Mockito.mock(Connection.class);
-            Mockito.when(clientProvider.getConnection(Mockito.any(), 
Mockito.any())).thenReturn(connection);
 
+            
Mockito.when(DataSourceClientProvider.getAdHocConnection(Mockito.any(), 
Mockito.any()))
+                    .thenReturn(connection);
             HanaConnectionParam connectionParam = new HanaConnectionParam();
             connectionParam.setUser("root");
             connectionParam.setPassword("123456");
-            connection = 
DataSourceClientProvider.getInstance().getConnection(DbType.HANA, 
connectionParam);
 
             Assertions.assertNotNull(connection);
         }
     }
 
     @Test
-    public void testGetJdbcUrl() {
+    void testGetJdbcUrl() {
         HanaConnectionParam hanaConnectionParam = new HanaConnectionParam();
         hanaConnectionParam.setJdbcUrl("jdbc:sap://localhost:30015");
         String jdbcUrl = DataSourceUtils.getJdbcUrl(DbType.HANA, 
hanaConnectionParam);
         Assertions.assertEquals(
-                "jdbc:sap://localhost:30015?reconnect=true",
+                "jdbc:sap://localhost:30015&reconnect=true",
                 jdbcUrl);
     }
 
     @Test
-    public void testBuildDatasourceParamDTO() {
+    void testBuildDatasourceParamDTO() {
         HanaConnectionParam connectionParam = new HanaConnectionParam();
         connectionParam.setJdbcUrl(
                 "jdbc:sap://localhost:30015?reconnect=true");
@@ -134,12 +134,12 @@ public class DataSourceUtilsTest {
     }
 
     @Test
-    public void testGetDatasourceProcessor() {
+    void testGetDatasourceProcessor() {
         
Assertions.assertNotNull(DataSourceUtils.getDatasourceProcessor(DbType.HANA));
     }
 
     @Test
-    public void testGetDatasourceProcessorError() {
+    void testGetDatasourceProcessorError() {
         Assertions.assertThrows(Exception.class, () -> {
             DataSourceUtils.getDatasourceProcessor(null);
         });
diff --git a/dolphinscheduler-datasource-plugin/pom.xml 
b/dolphinscheduler-datasource-plugin/pom.xml
index f5c59cfab5..c30a6b4258 100644
--- a/dolphinscheduler-datasource-plugin/pom.xml
+++ b/dolphinscheduler-datasource-plugin/pom.xml
@@ -55,6 +55,7 @@
         <module>dolphinscheduler-datasource-doris</module>
         <module>dolphinscheduler-datasource-sagemaker</module>
         <module>dolphinscheduler-datasource-k8s</module>
+        <module>dolphinscheduler-datasource-hana</module>
     </modules>
 
     <dependencyManagement>

Reply via email to