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

casion pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/linkis.git


The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
     new 352078c74 Optimize for query datasource env http api (#4096)
352078c74 is described below

commit 352078c74025e1d90c26ca7c6f1d530a22c35223
Author: chenmutime <[email protected]>
AuthorDate: Mon Feb 13 09:57:08 2023 +0800

    Optimize for query datasource env http api (#4096)
    
    * query datasource info by name and envId
    
    * Adding unit test that query DataSourceInfo by datasourceName and envId
    
    * fix DsInfoQueryRequest
    
    ---------
    
    Co-authored-by: v_minminghe <[email protected]>
    Co-authored-by: casionone <[email protected]>
---
 .../common/protocol/DsmQueryProtocol.scala         |  4 +-
 .../core/service/DataSourceInfoService.java        | 13 ++++
 .../service/impl/DataSourceInfoServiceImpl.java    | 46 ++++++++++----
 .../core/receivers/DsmReceiver.scala               | 14 ++++-
 .../core/service/DataSourceInfoServiceTest.java    | 17 +++++
 .../query/server/restful/MetadataQueryRestful.java | 16 +++--
 .../query/server/service/MetadataQueryService.java | 43 +++++++++++++
 .../service/impl/MetadataQueryServiceImpl.java     | 72 +++++++++++++++++++++-
 .../server/restful/MetadataQueryRestfulTest.java   | 18 +++---
 9 files changed, 216 insertions(+), 27 deletions(-)

diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/common/src/main/scala/org/apache/linkis/datasourcemanager/common/protocol/DsmQueryProtocol.scala
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/common/src/main/scala/org/apache/linkis/datasourcemanager/common/protocol/DsmQueryProtocol.scala
index 2370def30..5112726fa 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/common/src/main/scala/org/apache/linkis/datasourcemanager/common/protocol/DsmQueryProtocol.scala
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/common/src/main/scala/org/apache/linkis/datasourcemanager/common/protocol/DsmQueryProtocol.scala
@@ -29,8 +29,10 @@ trait DsmQueryProtocol extends RequestProtocol {}
 /**
  * Query request of Data Source Information
  * @param id
+ *   datasource id
  */
-case class DsInfoQueryRequest(id: String, name: String, system: String) 
extends DsmQueryProtocol {
+case class DsInfoQueryRequest(id: String, name: String, system: String, envId: 
String = null)
+    extends DsmQueryProtocol {
 
   def isValid: Boolean = {
     (Option(id).isDefined || Option(name).isDefined) && 
Option(system).isDefined
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoService.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoService.java
index 7413697c7..a6d62f940 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoService.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoService.java
@@ -240,6 +240,19 @@ public interface DataSourceInfoService {
    * @return
    */
   DataSource getDataSourceInfoForConnect(String dataSourceName) throws 
JsonErrorException;
+
+  /**
+   * get datasource info for connect for published version by name and env, if 
there is a dependency
+   * environment, merge datasource parameter and environment parameter.
+   *
+   * @param dataSourceName
+   * @param envId
+   * @return
+   * @throws JsonErrorException
+   */
+  DataSource getDataSourceInfoForConnect(String dataSourceName, String envId)
+      throws JsonErrorException;
+
   /**
    * get datasource info for connect, if there is a dependency environment, 
merge datasource
    * parameter and environment parameter.
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/impl/DataSourceInfoServiceImpl.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/impl/DataSourceInfoServiceImpl.java
index 2ef19ca97..7fa488014 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/impl/DataSourceInfoServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/java/org/apache/linkis/datasourcemanager/core/service/impl/DataSourceInfoServiceImpl.java
@@ -142,7 +142,7 @@ public class DataSourceInfoServiceImpl implements 
DataSourceInfoService {
     DataSource dataSource = dataSourceDao.selectOneDetail(dataSourceId);
     if (Objects.nonNull(dataSource)) {
       mergeVersionParams(dataSource, dataSource.getPublishedVersionId());
-      mergeEnvParams(dataSource);
+      mergeEnvParamsByDefault(dataSource);
     }
     return dataSource;
   }
@@ -152,31 +152,53 @@ public class DataSourceInfoServiceImpl implements 
DataSourceInfoService {
     DataSource dataSource = 
dataSourceDao.selectOneDetailByName(dataSourceName);
     if (Objects.nonNull(dataSource)) {
       mergeVersionParams(dataSource, dataSource.getPublishedVersionId());
-      mergeEnvParams(dataSource);
+      mergeEnvParamsByDefault(dataSource);
     }
     return dataSource;
   }
 
-  private void mergeEnvParams(DataSource dataSource) {
+  @Override
+  public DataSource getDataSourceInfoForConnect(String dataSourceName, String 
envId) {
+    DataSource dataSource = 
dataSourceDao.selectOneDetailByName(dataSourceName);
+    if (Objects.nonNull(dataSource)) {
+      mergeVersionParams(dataSource, dataSource.getPublishedVersionId());
+      mergeEnvParamsByEnvId(dataSource, envId);
+    }
+    return dataSource;
+  }
+
+  private void mergeEnvParamsByEnvId(DataSource dataSource, String 
specialEnvId) {
+    List<String> envIdList = getEnvIdsFrom(dataSource);
+    if (envIdList.contains(specialEnvId)) {
+      addEnvParamsToDataSource(Long.valueOf(specialEnvId), dataSource);
+    }
+  }
+
+  private void mergeEnvParamsByDefault(DataSource dataSource) {
+    List<String> envIdList = getEnvIdsFrom(dataSource);
+    if (CollectionUtils.isNotEmpty(envIdList)) {
+      addEnvParamsToDataSource(Long.valueOf(envIdList.get(0)), dataSource);
+    }
+  }
+
+  private List<String> getEnvIdsFrom(DataSource dataSource) {
     Map<String, Object> connectParams = dataSource.getConnectParams();
     if (connectParams.containsKey("envId")) {
-      Long envId = Long.valueOf(connectParams.get("envId").toString());
+      String envId = connectParams.get("envId").toString();
       // remove envId for connect
       connectParams.remove("envId");
-      addEnvParamsToDataSource(envId, dataSource);
-    }
-    //    if exists multi env
-    if (connectParams.containsKey("envIdArray")) {
+      return Arrays.asList(envId);
+    } else if (connectParams.containsKey("envIdArray")) {
+      //    if exists multi env
       Object envIdArray = connectParams.get("envIdArray");
       if (envIdArray instanceof List) {
         List<String> envIdList = (List<String>) envIdArray;
-        if (CollectionUtils.isNotEmpty(envIdList)) {
-          addEnvParamsToDataSource(Long.valueOf(envIdList.get(0)), dataSource);
-        }
         // remove envIdArray for connect
         connectParams.remove("envIdArray");
+        return envIdList;
       }
     }
+    return Collections.emptyList();
   }
 
   /**
@@ -192,7 +214,7 @@ public class DataSourceInfoServiceImpl implements 
DataSourceInfoService {
     DataSource dataSource = dataSourceDao.selectOneDetail(dataSourceId);
     if (Objects.nonNull(dataSource)) {
       mergeVersionParams(dataSource, version);
-      mergeEnvParams(dataSource);
+      mergeEnvParamsByDefault(dataSource);
     }
     return dataSource;
   }
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/scala/org/apache/linkis/datasourcemanager/core/receivers/DsmReceiver.scala
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/scala/org/apache/linkis/datasourcemanager/core/receivers/DsmReceiver.scala
index a1cc8406b..52eb8d938 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/scala/org/apache/linkis/datasourcemanager/core/receivers/DsmReceiver.scala
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/main/scala/org/apache/linkis/datasourcemanager/core/receivers/DsmReceiver.scala
@@ -27,12 +27,16 @@ import org.apache.linkis.datasourcemanager.core.service.{
 }
 import org.apache.linkis.rpc.message.annotation.Receiver
 
+import org.apache.commons.lang3.StringUtils
+
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Component
 
 import java.text.MessageFormat
 import java.util
 
+import scala.tools.scalap.scalax.util.StringUtil
+
 import org.slf4j.LoggerFactory
 
 @Component
@@ -51,7 +55,15 @@ class DsmReceiver {
     if (dsInfoQueryRequest.isValid) {
       Utils.tryCatch {
         var dataSource: DataSource = null
-        if (Option(dsInfoQueryRequest.name).isDefined) {
+        if (Option(dsInfoQueryRequest.name).isDefined && 
Option(dsInfoQueryRequest.envId).isDefined) {
+            logger.info(
+              "Try to get dataSource by dataSourceName:" + 
dsInfoQueryRequest.name + ", envId:" + dsInfoQueryRequest.envId
+            )
+          dataSource = dataSourceInfoService.getDataSourceInfoForConnect(
+            dsInfoQueryRequest.name,
+            dsInfoQueryRequest.envId
+          )
+        } else if (Option(dsInfoQueryRequest.name).isDefined) {
           logger.info("Try to get dataSource by dataSourceName:" + 
dsInfoQueryRequest.name)
           dataSource = 
dataSourceInfoService.getDataSourceInfoForConnect(dsInfoQueryRequest.name)
         } else if (dsInfoQueryRequest.id.toLong > 0) {
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoServiceTest.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoServiceTest.java
index a2a5e6713..300b2bd3b 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoServiceTest.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/service/DataSourceInfoServiceTest.java
@@ -182,6 +182,23 @@ public class DataSourceInfoServiceTest {
     assertTrue("{a=b}".equals(res));
   }
 
+  @Test
+  void testGetDataSourceInfoForConnectByNameAndEnvId() {
+    DataSource dataSource = buildDataSource();
+    
Mockito.when(dataSourceDao.selectOneDetailByName(dataSource.getDataSourceName()))
+        .thenReturn(dataSource);
+    Mockito.when(
+            dataSourceVersionDao.selectOneVersion(
+                dataSource.getId(), dataSource.getPublishedVersionId()))
+        .thenReturn("{\"a\":\"b\"}");
+    String res =
+        dataSourceInfoService
+            .getDataSourceInfoForConnect(dataSource.getDataSourceName(), "1")
+            .getConnectParams()
+            .toString();
+    assertTrue("{a=b}".equals(res));
+  }
+
   @Test
   void testGetDataSourceInfoForConnectByIdAndVerId() {
     DataSource dataSource = buildDataSource();
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestful.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestful.java
index 6a3189faf..b8d2d58ab 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestful.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestful.java
@@ -98,11 +98,13 @@ public class MetadataQueryRestful {
   @ApiOperation(value = "getDatabases", notes = "get databases", response = 
Message.class)
   @ApiImplicitParams({
     @ApiImplicitParam(name = "dataSourceName", required = true, dataType = 
"String"),
+    @ApiImplicitParam(name = "envId", required = false, dataType = "String"),
     @ApiImplicitParam(name = "system", required = true, dataType = "String")
   })
   @RequestMapping(value = "/getDatabases", method = RequestMethod.GET)
   public Message getDatabases(
       @RequestParam("dataSourceName") String dataSourceName,
+      @RequestParam(value = "envId", required = false) String envId,
       @RequestParam("system") String system,
       HttpServletRequest request) {
     try {
@@ -119,7 +121,8 @@ public class MetadataQueryRestful {
           ModuleUserUtils.getOperationUser(
               request, "getDatabases, dataSourceName:" + dataSourceName);
       List<String> databases =
-          metadataQueryService.getDatabasesByDsName(dataSourceName, system, 
userName);
+          metadataQueryService.getDatabasesByDsNameAndEnvId(
+              dataSourceName, system, userName, envId);
       return Message.ok().data("dbs", databases);
     } catch (Exception e) {
       return errorToResponseMessage(
@@ -135,12 +138,14 @@ public class MetadataQueryRestful {
   @ApiOperation(value = "getTables", notes = "get tables", response = 
Message.class)
   @ApiImplicitParams({
     @ApiImplicitParam(name = "dataSourceName", required = true, dataType = 
"String"),
+    @ApiImplicitParam(name = "envId", required = false, dataType = "String"),
     @ApiImplicitParam(name = "system", required = true, dataType = "String"),
     @ApiImplicitParam(name = "database", required = true, dataType = "String")
   })
   @RequestMapping(value = "/getTables", method = RequestMethod.GET)
   public Message getTables(
       @RequestParam("dataSourceName") String dataSourceName,
+      @RequestParam(value = "envId", required = false) String envId,
       @RequestParam("database") String database,
       @RequestParam("system") String system,
       HttpServletRequest request) {
@@ -160,7 +165,8 @@ public class MetadataQueryRestful {
       String userName =
           ModuleUserUtils.getOperationUser(request, "getTables, 
dataSourceName:" + dataSourceName);
       List<String> tables =
-          metadataQueryService.getTablesByDsName(dataSourceName, database, 
system, userName);
+          metadataQueryService.getTablesByDsNameAndEnvId(
+              dataSourceName, database, system, userName, envId);
       return Message.ok().data("tables", tables);
     } catch (Exception e) {
       return errorToResponseMessage(
@@ -350,6 +356,7 @@ public class MetadataQueryRestful {
   @ApiOperation(value = "getColumns", notes = "get columns", response = 
Message.class)
   @ApiImplicitParams({
     @ApiImplicitParam(name = "dataSourceName", required = true, dataType = 
"String"),
+    @ApiImplicitParam(name = "envId", required = false, dataType = "String"),
     @ApiImplicitParam(name = "system", required = true, dataType = "String"),
     @ApiImplicitParam(name = "database", required = true, dataType = "String"),
     @ApiImplicitParam(name = "table", required = true, dataType = "String")
@@ -357,6 +364,7 @@ public class MetadataQueryRestful {
   @RequestMapping(value = "/getColumns", method = RequestMethod.GET)
   public Message getColumns(
       @RequestParam("dataSourceName") String dataSourceName,
+      @RequestParam(value = "envId", required = false) String envId,
       @RequestParam("database") String database,
       @RequestParam("table") String table,
       @RequestParam("system") String system,
@@ -382,8 +390,8 @@ public class MetadataQueryRestful {
           ModuleUserUtils.getOperationUser(request, "getColumns, 
dataSourceName:" + dataSourceName);
 
       List<MetaColumnInfo> columns =
-          metadataQueryService.getColumnsByDsName(
-              dataSourceName, database, table, system, userName);
+          metadataQueryService.getColumnsByDsNameAndEnvId(
+              dataSourceName, database, table, system, userName, envId);
       return Message.ok().data("columns", columns);
     } catch (Exception e) {
       return errorToResponseMessage(
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/MetadataQueryService.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/MetadataQueryService.java
index c0edbb422..f156058ec 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/MetadataQueryService.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/MetadataQueryService.java
@@ -135,6 +135,17 @@ public interface MetadataQueryService {
   List<String> getDatabasesByDsName(String dataSourceName, String system, 
String userName)
       throws ErrorException;
 
+  /**
+   * @param dataSourceName
+   * @param system
+   * @param userName
+   * @param envId
+   * @return
+   * @throws ErrorException
+   */
+  List<String> getDatabasesByDsNameAndEnvId(
+      String dataSourceName, String system, String userName, String envId) 
throws ErrorException;
+
   /**
    * @param dataSourceName data source name
    * @param system system
@@ -144,6 +155,19 @@ public interface MetadataQueryService {
   List<String> getTablesByDsName(
       String dataSourceName, String database, String system, String userName) 
throws ErrorException;
 
+  /**
+   * @param dataSourceName
+   * @param database
+   * @param system
+   * @param userName
+   * @param envId
+   * @return
+   * @throws ErrorException
+   */
+  List<String> getTablesByDsNameAndEnvId(
+      String dataSourceName, String database, String system, String userName, 
String envId)
+      throws ErrorException;
+
   /**
    * @param dataSourceName data source name
    * @param database database
@@ -199,4 +223,23 @@ public interface MetadataQueryService {
   List<MetaColumnInfo> getColumnsByDsName(
       String dataSourceName, String database, String table, String system, 
String userName)
       throws ErrorException;
+
+  /**
+   * @param dataSourceName
+   * @param database
+   * @param table
+   * @param system
+   * @param userName
+   * @param envId
+   * @return
+   * @throws ErrorException
+   */
+  List<MetaColumnInfo> getColumnsByDsNameAndEnvId(
+      String dataSourceName,
+      String database,
+      String table,
+      String system,
+      String userName,
+      String envId)
+      throws ErrorException;
 }
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
index f71fc71c3..caf5c02bc 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
@@ -202,6 +202,21 @@ public class MetadataQueryServiceImpl implements 
MetadataQueryService {
     return new ArrayList<>();
   }
 
+  @Override
+  public List<String> getDatabasesByDsNameAndEnvId(
+      String dataSourceName, String system, String userName, String envId) 
throws ErrorException {
+    DsInfoResponse dsInfoResponse =
+        queryDataSourceInfoByNameAndEnvId(dataSourceName, system, userName, 
envId);
+    if (StringUtils.isNotBlank(dsInfoResponse.dsType())) {
+      return invokeMetaMethod(
+          dsInfoResponse.dsType(),
+          "getDatabases",
+          new Object[] {dsInfoResponse.creator(), dsInfoResponse.params()},
+          List.class);
+    }
+    return new ArrayList<>();
+  }
+
   @Override
   public Map<String, String> getConnectionInfoByDsName(
       String dataSourceName, Map<String, String> queryParams, String system, 
String userName)
@@ -232,6 +247,22 @@ public class MetadataQueryServiceImpl implements 
MetadataQueryService {
     return new ArrayList<>();
   }
 
+  @Override
+  public List<String> getTablesByDsNameAndEnvId(
+      String dataSourceName, String database, String system, String userName, 
String envId)
+      throws ErrorException {
+    DsInfoResponse dsInfoResponse =
+        queryDataSourceInfoByNameAndEnvId(dataSourceName, system, userName, 
envId);
+    if (StringUtils.isNotBlank(dsInfoResponse.dsType())) {
+      return invokeMetaMethod(
+          dsInfoResponse.dsType(),
+          "getTables",
+          new Object[] {dsInfoResponse.creator(), dsInfoResponse.params(), 
database},
+          List.class);
+    }
+    return new ArrayList<>();
+  }
+
   @Override
   public Map<String, String> getPartitionPropsByDsName(
       String dataSourceName,
@@ -306,6 +337,27 @@ public class MetadataQueryServiceImpl implements 
MetadataQueryService {
     return new ArrayList<>();
   }
 
+  @Override
+  public List<MetaColumnInfo> getColumnsByDsNameAndEnvId(
+      String dataSourceName,
+      String database,
+      String table,
+      String system,
+      String userName,
+      String envId)
+      throws ErrorException {
+    DsInfoResponse dsInfoResponse =
+        queryDataSourceInfoByNameAndEnvId(dataSourceName, system, userName, 
envId);
+    if (StringUtils.isNotBlank(dsInfoResponse.dsType())) {
+      return invokeMetaMethod(
+          dsInfoResponse.dsType(),
+          "getColumns",
+          new Object[] {dsInfoResponse.creator(), dsInfoResponse.params(), 
database, table},
+          List.class);
+    }
+    return new ArrayList<>();
+  }
+
   /**
    * Request to get data source information (type and connection parameters)
    *
@@ -319,7 +371,7 @@ public class MetadataQueryServiceImpl implements 
MetadataQueryService {
       throws ErrorException {
     Object rpcResult = null;
     try {
-      rpcResult = dataSourceRpcSender.ask(new DsInfoQueryRequest(dataSourceId, 
null, system));
+      rpcResult = dataSourceRpcSender.ask(new DsInfoQueryRequest(dataSourceId, 
null, system, null));
     } catch (Exception e) {
       throw new ErrorException(-1, "Remote Service Error[远端服务出错, 联系运维处理]");
     }
@@ -353,12 +405,28 @@ public class MetadataQueryServiceImpl implements 
MetadataQueryService {
    */
   public DsInfoResponse queryDataSourceInfoByName(
       String dataSourceName, String system, String userName) throws 
ErrorException {
+    return queryDataSourceInfoByNameAndEnvId(dataSourceName, system, userName, 
null);
+  }
+
+  /**
+   * Request to get data source information (type and connection parameters)
+   *
+   * @param dataSourceName
+   * @param system
+   * @param userName
+   * @param envId
+   * @return
+   * @throws ErrorException
+   */
+  public DsInfoResponse queryDataSourceInfoByNameAndEnvId(
+      String dataSourceName, String system, String userName, String envId) 
throws ErrorException {
     Object rpcResult = null;
     boolean useDefault = false;
     try {
       rpcResult = reqGetDefaultDataSource(dataSourceName);
       if (Objects.isNull(rpcResult)) {
-        rpcResult = dataSourceRpcSender.ask(new DsInfoQueryRequest(null, 
dataSourceName, system));
+        rpcResult =
+            dataSourceRpcSender.ask(new DsInfoQueryRequest(null, 
dataSourceName, system, envId));
       } else {
         useDefault = true;
       }
diff --git 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/test/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestfulTest.java
 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/test/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestfulTest.java
index 56cff3470..3e12e6a1e 100644
--- 
a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/test/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestfulTest.java
+++ 
b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/test/java/org/apache/linkis/metadata/query/server/restful/MetadataQueryRestfulTest.java
@@ -95,14 +95,16 @@ class MetadataQueryRestfulTest {
           MessageStatus.ERROR() == res.getStatus()
               && res.getMessage().contains("'system' is missing"));
       params.set("system", system);
-      Mockito.when(metadataQueryService.getDatabasesByDsName(dataSourceName, 
system, "hadoop"))
+      Mockito.when(
+              metadataQueryService.getDatabasesByDsNameAndEnvId(
+                  dataSourceName, system, "hadoop", null))
           .thenReturn(new ArrayList<>());
       res = mvcUtils.getMessage(mvcUtils.buildMvcResultGet(url, params));
       Assertions.assertTrue(MessageStatus.SUCCESS() == res.getStatus());
 
       Mockito.doThrow(new ErrorException(1, ""))
           .when(metadataQueryService)
-          .getDatabasesByDsName(dataSourceName, system, "hadoop");
+          .getDatabasesByDsNameAndEnvId(dataSourceName, system, "hadoop", 
null);
 
       res = mvcUtils.getMessage(mvcUtils.buildMvcResultGet(url, params));
       Assertions.assertTrue(
@@ -134,14 +136,16 @@ class MetadataQueryRestfulTest {
             && res.getMessage().contains("'system' is missing"));
 
     params.set("system", system);
-    Mockito.when(metadataQueryService.getTablesByDsName(dataSourceName, 
database, system, "hadoop"))
+    Mockito.when(
+            metadataQueryService.getTablesByDsNameAndEnvId(
+                dataSourceName, database, system, "hadoop", null))
         .thenReturn(new ArrayList<>());
     res = mvcUtils.getMessage(mvcUtils.buildMvcResultGet(url, params));
     Assertions.assertTrue(MessageStatus.SUCCESS() == res.getStatus());
 
     Mockito.doThrow(new ErrorException(1, ""))
         .when(metadataQueryService)
-        .getTablesByDsName(dataSourceName, database, system, "hadoop");
+        .getTablesByDsNameAndEnvId(dataSourceName, database, system, "hadoop", 
null);
     res = mvcUtils.getMessage(mvcUtils.buildMvcResultGet(url, params));
     Assertions.assertTrue(
         MessageStatus.ERROR() == res.getStatus()
@@ -302,15 +306,15 @@ class MetadataQueryRestfulTest {
 
       params.set("system", system);
       Mockito.when(
-              metadataQueryService.getColumnsByDsName(
-                  dataSourceName, database, table, system, "hadoop"))
+              metadataQueryService.getColumnsByDsNameAndEnvId(
+                  dataSourceName, database, table, system, "hadoop", null))
           .thenReturn(new ArrayList<>());
       res = mvcUtils.getMessage(mvcUtils.buildMvcResultGet(url, params));
       Assertions.assertTrue(MessageStatus.SUCCESS() == res.getStatus());
 
       Mockito.doThrow(new ErrorException(1, ""))
           .when(metadataQueryService)
-          .getColumnsByDsName(dataSourceName, database, table, system, 
"hadoop");
+          .getColumnsByDsNameAndEnvId(dataSourceName, database, table, system, 
"hadoop", null);
       res = mvcUtils.getMessage(mvcUtils.buildMvcResultGet(url, params));
       Assertions.assertTrue(
           MessageStatus.ERROR() == res.getStatus()


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to