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

SbloodyS 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 8ff3558f1c [Improvement-18224][API] Migrate WorkerGroupService 
Map<String,Object> returns to typed returns (#18228)
8ff3558f1c is described below

commit 8ff3558f1c15b7dd7ba76b26a669333f6da775ef
Author: Wenjun Ruan <[email protected]>
AuthorDate: Sun May 10 16:50:59 2026 +0800

    [Improvement-18224][API] Migrate WorkerGroupService Map<String,Object> 
returns to typed returns (#18228)
---
 .../api/controller/WorkerGroupController.java      | 23 +++----
 .../api/service/WorkerGroupService.java            | 12 ++--
 .../api/service/impl/WorkerGroupServiceImpl.java   | 70 +++++++---------------
 .../api/service/WorkerGroupServiceTest.java        | 28 +++------
 4 files changed, 46 insertions(+), 87 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkerGroupController.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkerGroupController.java
index fb3212240a..b2518bd6f4 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkerGroupController.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkerGroupController.java
@@ -32,7 +32,8 @@ import org.apache.dolphinscheduler.dao.entity.User;
 import org.apache.dolphinscheduler.dao.entity.WorkerGroup;
 import org.apache.dolphinscheduler.plugin.task.api.utils.ParameterUtils;
 
-import java.util.Map;
+import java.util.List;
+import java.util.Set;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -126,9 +127,9 @@ public class WorkerGroupController extends BaseController {
     @GetMapping(value = "/all")
     @ResponseStatus(HttpStatus.OK)
     @ApiException(QUERY_WORKER_GROUP_FAIL)
-    public Result queryAllWorkerGroups(@Parameter(hidden = true) 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
-        Map<String, Object> result = 
workerGroupService.queryAllGroup(loginUser);
-        return returnDataList(result);
+    public Result<List<String>> queryAllWorkerGroups(@Parameter(hidden = true) 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+        List<String> workerGroupNames = 
workerGroupService.queryAllGroup(loginUser);
+        return Result.success(workerGroupNames);
     }
 
     /**
@@ -146,10 +147,10 @@ public class WorkerGroupController extends BaseController 
{
     @ResponseStatus(HttpStatus.OK)
     @ApiException(DELETE_WORKER_GROUP_FAIL)
     @OperatorLog(auditType = AuditType.WORKER_GROUP_DELETE)
-    public Result deleteWorkerGroupById(@Parameter(hidden = true) 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
-                                        @PathVariable("id") Integer id) {
-        Map<String, Object> result = 
workerGroupService.deleteWorkerGroupById(loginUser, id);
-        return returnDataList(result);
+    public Result<Void> deleteWorkerGroupById(@Parameter(hidden = true) 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+                                              @PathVariable("id") Integer id) {
+        workerGroupService.deleteWorkerGroupById(loginUser, id);
+        return Result.success();
     }
 
     /**
@@ -162,8 +163,8 @@ public class WorkerGroupController extends BaseController {
     @GetMapping(value = "/worker-address-list")
     @ResponseStatus(HttpStatus.OK)
     @ApiException(QUERY_WORKER_ADDRESS_LIST_FAIL)
-    public Result queryWorkerAddressList(@Parameter(hidden = true) 
@RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
-        Map<String, Object> result = workerGroupService.getWorkerAddressList();
-        return returnDataList(result);
+    public Result<Set<String>> queryWorkerAddressList(@Parameter(hidden = 
true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser) {
+        Set<String> workerAddressList = 
workerGroupService.getWorkerAddressList();
+        return Result.success(workerAddressList);
     }
 }
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkerGroupService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkerGroupService.java
index 575d103be2..e435ce447d 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkerGroupService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkerGroupService.java
@@ -24,6 +24,7 @@ import 
org.apache.dolphinscheduler.dao.entity.WorkerGroupPageDetail;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface WorkerGroupService {
 
@@ -54,24 +55,23 @@ public interface WorkerGroupService {
      * Query all worker group
      *
      * @param loginUser login user
-     * @return all worker group list
+     * @return distinct worker group names available to the user
      */
-    Map<String, Object> queryAllGroup(User loginUser);
+    List<String> queryAllGroup(User loginUser);
 
     /**
      * Delete worker group by id
      * @param loginUser login user
      * @param id worker group id
-     * @return delete result code
      */
-    Map<String, Object> deleteWorkerGroupById(User loginUser, Integer id);
+    void deleteWorkerGroupById(User loginUser, Integer id);
 
     /**
      * Query all worker address list
      *
-     * @return all worker address list
+     * @return all worker address set
      */
-    Map<String, Object> getWorkerAddressList();
+    Set<String> getWorkerAddressList();
 
     /**
      * Query worker group by workflow definition codes
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkerGroupServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkerGroupServiceImpl.java
index 331e0ba77a..bcedd7b7e4 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkerGroupServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkerGroupServiceImpl.java
@@ -58,7 +58,6 @@ import org.apache.commons.lang3.StringUtils;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -114,7 +113,6 @@ public class WorkerGroupServiceImpl extends BaseServiceImpl 
implements WorkerGro
                                        String name,
                                        String addrList,
                                        String description) {
-        Map<String, Object> result = new HashMap<>();
         if (!canOperatorPermissions(loginUser, null, 
AuthorizationType.WORKER_GROUP, WORKER_GROUP_CREATE)) {
             // todo: add permission exception
             throw new ServiceException(Status.USER_NO_OPERATION_PERM);
@@ -140,10 +138,6 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
                 if (workerGroup == null) {
                     throw new ServiceException(Status.WORKER_GROUP_NOT_EXIST, 
id);
                 }
-                // todo: Can we update the worker name?
-                if (!workerGroup.getName().equals(name)) {
-                    checkWorkerGroupDependencies(workerGroup, result);
-                }
                 workerGroup.setName(name);
                 workerGroup.setAddrList(addrList);
                 workerGroup.setUpdateTime(now);
@@ -159,23 +153,19 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
     }
 
     /**
-     * check if the worker group has any dependent tasks,schedulers or 
environments.
-     *
-     * @param workerGroup worker group
-     * @return boolean
+     * check if the worker group has any dependent tasks, schedulers or 
environments;
+     * throws ServiceException with the matching status if any dependency is 
found.
      */
-    private boolean checkWorkerGroupDependencies(WorkerGroup workerGroup, 
Map<String, Object> result) {
+    private void checkWorkerGroupDependencies(WorkerGroup workerGroup) {
         // check if the worker group has any dependent tasks
         List<TaskDefinition> taskDefinitions = taskDefinitionMapper.selectList(
                 new 
QueryWrapper<TaskDefinition>().lambda().eq(TaskDefinition::getWorkerGroup, 
workerGroup.getName()));
 
         if (CollectionUtils.isNotEmpty(taskDefinitions)) {
-            List<String> taskNames = 
taskDefinitions.stream().limit(3).map(taskDefinition -> 
taskDefinition.getName())
+            List<String> taskNames = 
taskDefinitions.stream().limit(3).map(TaskDefinition::getName)
                     .collect(Collectors.toList());
-
-            putMsg(result, Status.WORKER_GROUP_DEPENDENT_TASK_EXISTS, 
taskDefinitions.size(),
+            throw new 
ServiceException(Status.WORKER_GROUP_DEPENDENT_TASK_EXISTS, 
taskDefinitions.size(),
                     JSONUtils.toJsonString(taskNames));
-            return true;
         }
 
         // check if the worker group has any dependent schedulers
@@ -187,10 +177,8 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
                     .map(schedule -> 
workflowDefinitionMapper.queryByCode(schedule.getWorkflowDefinitionCode())
                             .getName())
                     .collect(Collectors.toList());
-
-            putMsg(result, Status.WORKER_GROUP_DEPENDENT_SCHEDULER_EXISTS, 
schedules.size(),
+            throw new 
ServiceException(Status.WORKER_GROUP_DEPENDENT_SCHEDULER_EXISTS, 
schedules.size(),
                     JSONUtils.toJsonString(workflowDefinitionNames));
-            return true;
         }
 
         // check if the worker group has any dependent environments
@@ -199,11 +187,9 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
                         
.lambda().eq(EnvironmentWorkerGroupRelation::getWorkerGroup, 
workerGroup.getName()));
 
         if (CollectionUtils.isNotEmpty(environmentWorkerGroupRelations)) {
-            putMsg(result, Status.WORKER_GROUP_DEPENDENT_ENVIRONMENT_EXISTS, 
environmentWorkerGroupRelations.size());
-            return true;
+            throw new 
ServiceException(Status.WORKER_GROUP_DEPENDENT_ENVIRONMENT_EXISTS,
+                    environmentWorkerGroupRelations.size());
         }
-
-        return false;
     }
 
     private void checkWorkerGroupAddrList(String workerGroupAddress) {
@@ -282,12 +268,11 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
     /**
      * query all worker group
      *
-     * @param loginUser
-     * @return all worker group list
+     * @param loginUser login user
+     * @return distinct worker group names available to the user
      */
     @Override
-    public Map<String, Object> queryAllGroup(User loginUser) {
-        Map<String, Object> result = new HashMap<>();
+    public List<String> queryAllGroup(User loginUser) {
         List<WorkerGroupPageDetail> workerGroups;
         if (loginUser.getUserType().equals(UserType.ADMIN_USER)) {
             workerGroups = getUiWorkerGroupPageDetails(null);
@@ -303,9 +288,7 @@ public class WorkerGroupServiceImpl extends BaseServiceImpl 
implements WorkerGro
                 .map(WorkerGroup::getName)
                 .collect(Collectors.toList());
         availableWorkerGroupList.addAll(configWorkerGroupNames);
-        result.put(Constants.DATA_LIST, 
availableWorkerGroupList.stream().distinct().collect(Collectors.toList()));
-        putMsg(result, Status.SUCCESS);
-        return result;
+        return 
availableWorkerGroupList.stream().distinct().collect(Collectors.toList());
     }
 
     private List<WorkerGroupPageDetail> 
getUiWorkerGroupPageDetails(List<Integer> ids) {
@@ -328,21 +311,17 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
      * delete worker group by id
      *
      * @param id worker group id
-     * @return delete result code
      */
     @Override
     @Transactional
-    public Map<String, Object> deleteWorkerGroupById(User loginUser, Integer 
id) {
-        Map<String, Object> result = new HashMap<>();
+    public void deleteWorkerGroupById(User loginUser, Integer id) {
         if (!canOperatorPermissions(loginUser, null, 
AuthorizationType.WORKER_GROUP, WORKER_GROUP_DELETE)) {
-            putMsg(result, Status.USER_NO_OPERATION_PERM);
-            return result;
+            throw new ServiceException(Status.USER_NO_OPERATION_PERM);
         }
         WorkerGroup workerGroup = workerGroupDao.queryById(id);
         if (workerGroup == null) {
             log.error("Worker group does not exist, workerGroupId:{}.", id);
-            putMsg(result, Status.DELETE_WORKER_GROUP_NOT_EXIST);
-            return result;
+            throw new ServiceException(Status.DELETE_WORKER_GROUP_NOT_EXIST);
         }
         List<WorkflowInstance> workflowInstances = 
workflowInstanceMapper.queryByWorkerGroupNameAndStatus(
                 workerGroup.getName(),
@@ -353,34 +332,25 @@ public class WorkerGroupServiceImpl extends 
BaseServiceImpl implements WorkerGro
             log.warn(
                     "Delete worker group failed because there are {} 
workflowInstances are using it, workflowInstanceIds:{}.",
                     workflowInstances.size(), workflowInstanceIds);
-            putMsg(result, Status.DELETE_WORKER_GROUP_BY_ID_FAIL, 
workflowInstances.size());
-            return result;
+            throw new ServiceException(Status.DELETE_WORKER_GROUP_BY_ID_FAIL, 
workflowInstances.size());
         }
 
-        if (checkWorkerGroupDependencies(workerGroup, result)) {
-            return result;
-        }
+        checkWorkerGroupDependencies(workerGroup);
 
         workerGroupDao.deleteById(id);
         boardCastToMasterThatWorkerGroupChanged();
 
         log.info("Delete worker group complete, workerGroupName:{}.", 
workerGroup.getName());
-        putMsg(result, Status.SUCCESS);
-        return result;
     }
 
     /**
      * query all worker address list
      *
-     * @return all worker address list
+     * @return all worker address set
      */
     @Override
-    public Map<String, Object> getWorkerAddressList() {
-        Map<String, Object> result = new HashMap<>();
-        Set<String> serverNodeList = 
registryClient.getServerNodeSet(RegistryNodeType.WORKER);
-        result.put(Constants.DATA_LIST, serverNodeList);
-        putMsg(result, Status.SUCCESS);
-        return result;
+    public Set<String> getWorkerAddressList() {
+        return registryClient.getServerNodeSet(RegistryNodeType.WORKER);
     }
 
     @Override
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkerGroupServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkerGroupServiceTest.java
index 851cc8ac7b..7d8d6d142d 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkerGroupServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkerGroupServiceTest.java
@@ -29,7 +29,6 @@ import 
org.apache.dolphinscheduler.api.permission.ResourcePermissionCheckService
 import org.apache.dolphinscheduler.api.service.impl.BaseServiceImpl;
 import org.apache.dolphinscheduler.api.service.impl.WorkerGroupServiceImpl;
 import org.apache.dolphinscheduler.api.utils.Result;
-import org.apache.dolphinscheduler.common.constants.Constants;
 import org.apache.dolphinscheduler.common.enums.AuthorizationType;
 import org.apache.dolphinscheduler.common.enums.UserType;
 import org.apache.dolphinscheduler.common.enums.WorkflowExecutionStatus;
@@ -204,9 +203,8 @@ public class WorkerGroupServiceTest {
 
     @Test
     public void testQueryAllGroup() {
-        Map<String, Object> result = 
workerGroupService.queryAllGroup(getLoginUser());
-        List<String> workerGroups = (List<String>) 
result.get(Constants.DATA_LIST);
-        Assertions.assertEquals(workerGroups.size(), 0);
+        List<String> workerGroups = 
workerGroupService.queryAllGroup(getLoginUser());
+        Assertions.assertEquals(0, workerGroups.size());
     }
 
     @Test
@@ -218,9 +216,8 @@ public class WorkerGroupServiceTest {
                 baseServiceLogger)).thenReturn(true);
         when(workerGroupDao.queryById(1)).thenReturn(null);
 
-        Map<String, Object> notExistResult = 
workerGroupService.deleteWorkerGroupById(loginUser, 1);
-        Assertions.assertEquals(Status.DELETE_WORKER_GROUP_NOT_EXIST.getCode(),
-                ((Status) notExistResult.get(Constants.STATUS)).getCode());
+        assertThrowsServiceException(Status.DELETE_WORKER_GROUP_NOT_EXIST,
+                () -> workerGroupService.deleteWorkerGroupById(loginUser, 1));
     }
 
     @Test
@@ -240,9 +237,8 @@ public class WorkerGroupServiceTest {
                 WorkflowExecutionStatus.NOT_TERMINAL_STATES))
                         .thenReturn(workflowInstances);
 
-        Map<String, Object> deleteFailed = 
workerGroupService.deleteWorkerGroupById(loginUser, 1);
-        
Assertions.assertEquals(Status.DELETE_WORKER_GROUP_BY_ID_FAIL.getCode(),
-                ((Status) deleteFailed.get(Constants.STATUS)).getCode());
+        assertThrowsServiceException(Status.DELETE_WORKER_GROUP_BY_ID_FAIL,
+                () -> workerGroupService.deleteWorkerGroupById(loginUser, 1));
     }
 
     @Test
@@ -257,24 +253,16 @@ public class WorkerGroupServiceTest {
         
when(workflowInstanceMapper.queryByWorkerGroupNameAndStatus(workerGroup.getName(),
                 WorkflowExecutionStatus.NOT_TERMINAL_STATES)).thenReturn(null);
 
-        when(workerGroupDao.deleteById(1)).thenReturn(true);
-
-        
when(environmentWorkerGroupRelationMapper.queryByWorkerGroupName(workerGroup.getName()))
-                .thenReturn(null);
-
         when(taskDefinitionMapper.selectList(Mockito.any())).thenReturn(null);
 
         when(scheduleMapper.selectList(Mockito.any())).thenReturn(null);
 
-        Map<String, Object> successResult = 
workerGroupService.deleteWorkerGroupById(loginUser, 1);
-        Assertions.assertEquals(Status.SUCCESS.getCode(),
-                ((Status) successResult.get(Constants.STATUS)).getCode());
+        assertDoesNotThrow(() -> 
workerGroupService.deleteWorkerGroupById(loginUser, 1));
     }
 
     @Test
     public void testQueryAllGroupWithDefault() {
-        Map<String, Object> result = 
workerGroupService.queryAllGroup(getLoginUser());
-        List<String> workerGroups = (List<String>) 
result.get(Constants.DATA_LIST);
+        List<String> workerGroups = 
workerGroupService.queryAllGroup(getLoginUser());
         Assertions.assertEquals(0, workerGroups.size());
     }
 

Reply via email to