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();