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

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


The following commit(s) were added to refs/heads/dev by this push:
     new 44770a8  [fix #2442] It will give a error tip that resource not exist 
exwhen update resources.  (#2483)
44770a8 is described below

commit 44770a876797394e544c69c31c0a87609bc25586
Author: lgcareer <[email protected]>
AuthorDate: Thu Apr 23 14:24:22 2020 +0800

    [fix #2442] It will give a error tip that resource not exist exwhen update 
resources.  (#2483)
    
    * fix #2442 and remove unavailable code
    
    * revert verifyResourceName method
    
    * Add ServiceException
    
    * add ServiceExceptionTest
    
    * update ServiceExceptionTest
    
    * add ServiceExceptionTest in pom
---
 .../api/exceptions/ServiceException.java           | 56 +++++++++++++++++++++
 .../api/service/ResourcesService.java              | 58 ++++++----------------
 .../api/exceptions/ServiceExceptionTest.java       | 46 +++++++++++++++++
 pom.xml                                            |  1 +
 4 files changed, 119 insertions(+), 42 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/exceptions/ServiceException.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/exceptions/ServiceException.java
new file mode 100644
index 0000000..5669e6c
--- /dev/null
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/exceptions/ServiceException.java
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.api.exceptions;
+
+import org.apache.dolphinscheduler.api.enums.Status;
+
+
+/**
+ * service exception
+ */
+public class ServiceException extends RuntimeException {
+
+    /**
+     * code
+     */
+    private Integer code;
+
+    public ServiceException() {
+    }
+
+    public ServiceException(Status status) {
+        super(status.getMsg());
+        this.code = status.getCode();
+    }
+
+    public ServiceException(Integer code,String message) {
+        super(message);
+        this.code = code;
+    }
+
+    public ServiceException(String message) {
+        super(message);
+    }
+
+    public Integer getCode() {
+        return this.code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+}
\ No newline at end of file
diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
index c98b7c3..a2af47b 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ResourcesService.java
@@ -26,6 +26,7 @@ import 
org.apache.dolphinscheduler.api.dto.resources.filter.ResourceFilter;
 import 
org.apache.dolphinscheduler.api.dto.resources.visitor.ResourceTreeVisitor;
 import org.apache.dolphinscheduler.api.dto.resources.visitor.Visitor;
 import org.apache.dolphinscheduler.api.enums.Status;
+import org.apache.dolphinscheduler.api.exceptions.ServiceException;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.api.utils.Result;
 import org.apache.dolphinscheduler.common.Constants;
@@ -234,9 +235,6 @@ public class ResourcesService extends BaseService {
         }
 
         Date now = new Date();
-
-
-
         Resource resource = new 
Resource(pid,name,fullName,false,desc,file.getOriginalFilename(),loginUser.getId(),type,file.getSize(),now,now);
 
         try {
@@ -342,7 +340,6 @@ public class ResourcesService extends BaseService {
         String originResourceName = resource.getAlias();
         if (!resource.isDirectory()) {
             //get the file suffix
-
             String suffix = 
originResourceName.substring(originResourceName.lastIndexOf("."));
 
             //if the name without suffix then add it ,else use the origin name
@@ -352,7 +349,7 @@ public class ResourcesService extends BaseService {
         }
 
         // updateResource data
-        List<Integer> childrenResource = listAllChildren(resource);
+        List<Integer> childrenResource = listAllChildren(resource,false);
         String oldFullName = resource.getFullName();
         Date now = new Date();
 
@@ -385,16 +382,16 @@ public class ResourcesService extends BaseService {
             result.setData(resultMap);
         } catch (Exception e) {
             logger.error(Status.UPDATE_RESOURCE_ERROR.getMsg(), e);
-            throw new RuntimeException(Status.UPDATE_RESOURCE_ERROR.getMsg());
+            throw new ServiceException(Status.UPDATE_RESOURCE_ERROR);
         }
         // if name unchanged, return directly without moving on HDFS
         if (originResourceName.equals(name)) {
             return result;
         }
 
-        // get file hdfs path
-        // delete hdfs file by type
+        // get the path of origin file in hdfs
         String originHdfsFileName = 
HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,originFullName);
+        // get the path of dest file in hdfs
         String destHdfsFileName = 
HadoopUtils.getHdfsFileName(resource.getType(),tenantCode,fullName);
 
         try {
@@ -408,6 +405,7 @@ public class ResourcesService extends BaseService {
         } catch (Exception e) {
             logger.error(MessageFormat.format("hdfs copy {0} -> {1} fail", 
originHdfsFileName, destHdfsFileName), e);
             putMsg(result,Status.HDFS_COPY_FAIL);
+            throw new ServiceException(Status.HDFS_COPY_FAIL);
         }
 
         return result;
@@ -543,34 +541,6 @@ public class ResourcesService extends BaseService {
     }
 
     /**
-     * get all resources
-     * @param loginUser     login user
-     * @return all resource set
-     */
-    /*private Set<Resource> getAllResources(User loginUser, ResourceType type) 
{
-        int userId = loginUser.getId();
-        boolean listChildren = true;
-        if(isAdmin(loginUser)){
-            userId = 0;
-            listChildren = false;
-        }
-        List<Resource> resourceList = 
resourcesMapper.queryResourceListAuthored(userId, type.ordinal());
-        Set<Resource> allResourceList = new HashSet<>(resourceList);
-        if (listChildren) {
-            Set<Integer> authorizedIds = new HashSet<>();
-            List<Resource> authorizedDirecoty = 
resourceList.stream().filter(t->t.getUserId() != loginUser.getId() && 
t.isDirectory()).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(authorizedDirecoty)) {
-                for(Resource resource : authorizedDirecoty){
-                    authorizedIds.addAll(listAllChildren(resource));
-                }
-                List<Resource> childrenResources = 
resourcesMapper.listResourceByIds(authorizedIds.toArray(new 
Integer[authorizedIds.size()]));
-                allResourceList.addAll(childrenResources);
-            }
-        }
-        return allResourceList;
-    }*/
-
-    /**
      * query resource list
      *
      * @param loginUser login user
@@ -580,8 +550,11 @@ public class ResourcesService extends BaseService {
     public Map<String, Object> queryResourceJarList(User loginUser, 
ResourceType type) {
 
         Map<String, Object> result = new HashMap<>(5);
-
-        List<Resource> allResourceList = 
resourcesMapper.queryResourceListAuthored(loginUser.getId(), type.ordinal(),0);
+        int userId = loginUser.getId();
+        if(isAdmin(loginUser)){
+            userId = 0;
+        }
+        List<Resource> allResourceList = 
resourcesMapper.queryResourceListAuthored(userId, type.ordinal(),0);
         List<Resource> resources = new ResourceFilter(".jar",new 
ArrayList<>(allResourceList)).filter();
         Visitor resourceTreeVisitor = new ResourceTreeVisitor(resources);
         result.put(Constants.DATA_LIST, 
resourceTreeVisitor.visit().getChildren());
@@ -631,7 +604,7 @@ public class ResourcesService extends BaseService {
         Map<Integer, Set<Integer>> resourceProcessMap = 
ResourceProcessDefinitionUtils.getResourceProcessDefinitionMap(list);
         Set<Integer> resourceIdSet = resourceProcessMap.keySet();
         // get all children of the resource
-        List<Integer> allChildren = listAllChildren(resource);
+        List<Integer> allChildren = listAllChildren(resource,true);
         Integer[] needDeleteResourceIdArray = allChildren.toArray(new 
Integer[allChildren.size()]);
 
         //if resource type is UDF,need check whether it is bound by UDF functon
@@ -1193,12 +1166,13 @@ public class ResourcesService extends BaseService {
 
     /**
      * list all children id
-     * @param resource resource
+     * @param resource    resource
+     * @param containSelf whether add self to children list
      * @return all children id
      */
-    List<Integer> listAllChildren(Resource resource){
+    List<Integer> listAllChildren(Resource resource,boolean containSelf){
         List<Integer> childList = new ArrayList<>();
-        if (resource.getId() != -1) {
+        if (resource.getId() != -1 && containSelf) {
             childList.add(resource.getId());
         }
 
diff --git 
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/exceptions/ServiceExceptionTest.java
 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/exceptions/ServiceExceptionTest.java
new file mode 100644
index 0000000..a574253
--- /dev/null
+++ 
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/exceptions/ServiceExceptionTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.dolphinscheduler.api.exceptions;
+
+import org.apache.dolphinscheduler.api.enums.Status;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ServiceExceptionTest {
+    @Test
+    public void getCodeTest(){
+        ServiceException serviceException = new ServiceException();
+        Assert.assertNull(serviceException.getCode());
+
+        serviceException = new ServiceException(Status.ALERT_GROUP_EXIST);
+        Assert.assertNotNull(serviceException.getCode());
+
+        serviceException = new ServiceException(10012, "alarm group already 
exists");
+        Assert.assertNotNull(serviceException.getCode());
+    }
+    @Test
+    public void getMessageTest(){
+        ServiceException serviceException = new ServiceException();
+        Assert.assertNull(serviceException.getMessage());
+
+        serviceException = new ServiceException(Status.ALERT_GROUP_EXIST);
+        Assert.assertNotNull(serviceException.getMessage());
+
+        serviceException = new ServiceException(10012, "alarm group already 
exists");
+        Assert.assertNotNull(serviceException.getMessage());
+    }
+}
diff --git a/pom.xml b/pom.xml
index 053652f..8f81e2a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -695,6 +695,7 @@
                         <include>**/api/enums/testGetEnum.java</include>
                         <include>**/api/enums/StatusTest.java</include>
                         
<include>**/api/exceptions/ApiExceptionHandlerTest.java</include>
+                        
<include>**/api/exceptions/ServiceExceptionTest.java</include>
                         
<include>**/api/interceptor/LoginHandlerInterceptorTest.java</include>
                         
<include>**/api/security/PasswordAuthenticatorTest.java</include>
                         
<include>**/api/security/SecurityConfigTest.java</include>

Reply via email to