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

caishunfeng 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 1ffb5d6  [DS-7896][fix] Fixed when a non-admin user creates a udf 
function, resources other than .jar will be displayed in the UDF resource 
(#8458)
1ffb5d6 is described below

commit 1ffb5d6e8d6512ee0be958069e8bbd1c105b2989
Author: Sunny Lei <[email protected]>
AuthorDate: Thu Feb 24 18:17:25 2022 +0800

    [DS-7896][fix] Fixed when a non-admin user creates a udf function, 
resources other than .jar will be displayed in the UDF resource (#8458)
    
    This closes #7892
---
 .../api/service/impl/ResourcesServiceImpl.java     |  5 +++-
 .../api/service/ResourcesServiceTest.java          | 27 ++++++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
index 9892dd5..22621a5 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java
@@ -1346,9 +1346,12 @@ public class ResourcesServiceImpl extends 
BaseServiceImpl implements ResourcesSe
             // query resource relation
             relationResources = queryResourceList(userId, 0);
         }
+        // filter by resource type
+        List<Resource> relationTypeResources =
+                relationResources.stream().filter(rs -> rs.getType() == 
type).collect(Collectors.toList());
 
         List<Resource> ownResourceList = 
resourcesMapper.queryResourceListAuthored(userId, type.ordinal());
-        ownResourceList.addAll(relationResources);
+        ownResourceList.addAll(relationTypeResources);
 
         return ownResourceList;
     }
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
index f438f63..6f78772 100644
--- 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ResourcesServiceTest.java
@@ -42,6 +42,7 @@ import org.apache.commons.collections.CollectionUtils;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -293,6 +294,19 @@ public class ResourcesServiceTest {
         Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
         List<Resource> resourceList = (List<Resource>) 
result.get(Constants.DATA_LIST);
         Assert.assertTrue(CollectionUtils.isNotEmpty(resourceList));
+
+        // test udf
+        loginUser.setUserType(UserType.GENERAL_USER);
+        Mockito.when(resourceUserMapper.queryResourcesIdListByUserIdAndPerm(0, 
0))
+                .thenReturn(Arrays.asList(Integer.valueOf(10), 
Integer.valueOf(11)));
+        
Mockito.when(resourcesMapper.queryResourceListById(Arrays.asList(Integer.valueOf(10),
 Integer.valueOf(11))))
+                .thenReturn(Arrays.asList(getResource(10, ResourceType.FILE), 
getResource(11, ResourceType.UDF)));
+        Mockito.when(resourcesMapper.queryResourceListAuthored(0, 
1)).thenReturn(getResourceList());
+        result = resourcesService.queryResourceList(loginUser, 
ResourceType.UDF);
+        logger.info(result.toString());
+        Assert.assertEquals(Status.SUCCESS, result.get(Constants.STATUS));
+        resourceList = (List<Resource>) result.get(Constants.DATA_LIST);
+        Assert.assertTrue(resourceList.size() == 4);
     }
 
     @Test
@@ -755,6 +769,19 @@ public class ResourcesServiceTest {
         return resource;
     }
 
+    private Resource getResource(int resourceId,ResourceType type) {
+
+        Resource resource = new Resource();
+        resource.setId(resourceId);
+        resource.setPid(-1);
+        resource.setUserId(1);
+        resource.setDescription("ResourcesServiceTest.jar");
+        resource.setAlias("ResourcesServiceTest.jar");
+        resource.setFullName("/ResourcesServiceTest.jar");
+        resource.setType(type);
+        return resource;
+    }
+
     private Resource getUdfResource() {
 
         Resource resource = new Resource();

Reply via email to