This is an automated email from the ASF dual-hosted git repository.
kirs 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 c67083f [Improvement-4257][api] Increase
"queryProcessDefinitionByName" API (#4390)
c67083f is described below
commit c67083f028820b035ebbd789fc29efa26dd3152a
Author: yy0812 <[email protected]>
AuthorDate: Wed Jan 6 18:27:30 2021 +0800
[Improvement-4257][api] Increase "queryProcessDefinitionByName" API (#4390)
* 1. Increase "queryProcessDefinitionByName" API.
2. Will queryProcessDefinitionById api "PROCESS_INSTANCE_EXIST" state is
modified to "PROCESS_DEFINE_NOT_EXIST".
* Correct spelling mistakes in words
* Logging should not be vulnerable to injection attacks
Co-authored-by: yinyong <[email protected]>
---
.../controller/ProcessDefinitionController.java | 26 ++++++++++++++-
.../api/service/ProcessDefinitionService.java | 13 ++++++++
.../service/impl/ProcessDefinitionServiceImpl.java | 24 +++++++++++++-
.../src/main/resources/i18n/messages.properties | 1 +
.../api/service/ProcessDefinitionServiceTest.java | 37 +++++++++++++++++++++-
5 files changed, 98 insertions(+), 3 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
index 1c13c13..8cfbc32 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionController.java
@@ -42,6 +42,7 @@ import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.utils.ParameterUtils;
import org.apache.dolphinscheduler.common.utils.StringUtils;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.User;
import java.util.ArrayList;
@@ -372,7 +373,7 @@ public class ProcessDefinitionController extends
BaseController {
}
/**
- * query datail of process definition
+ * query datail of process definition by id
*
* @param loginUser login user
* @param projectName project name
@@ -397,6 +398,29 @@ public class ProcessDefinitionController extends
BaseController {
}
/**
+ * query datail of process definition by name
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processDefinitionName process definition name
+ * @return process definition detail
+ */
+ @ApiOperation(value = "queryProcessDefinitionByName", notes =
"QUERY_PROCESS_DEFINITION_BY_NAME_NOTES")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "processDefinitionName", value =
"PROCESS_DEFINITION_ID", required = true, dataType = "String")
+ })
+ @GetMapping(value = "/select-by-name")
+ @ResponseStatus(HttpStatus.OK)
+ @ApiException(QUERY_DATAIL_OF_PROCESS_DEFINITION_ERROR)
+ public Result<ProcessDefinition> queryProcessDefinitionByName(@ApiIgnore
@RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+
@ApiParam(name = "projectName", value = "PROJECT_NAME", required = true)
@PathVariable String projectName,
+
@RequestParam("processDefinitionName") String processDefinitionName
+ ) {
+ Map<String, Object> result =
processDefinitionService.queryProcessDefinitionByName(loginUser, projectName,
processDefinitionName);
+ return returnDataList(result);
+ }
+
+ /**
* query Process definition list
*
* @param loginUser login user
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
index f6f786b..37d8560 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionService.java
@@ -96,6 +96,19 @@ public interface ProcessDefinitionService {
Integer processId);
/**
+ * query datail of process definition
+ *
+ * @param loginUser login user
+ * @param projectName project name
+ * @param processDefinitionName process definition name
+ * @return process definition detail
+ */
+
+ Map<String, Object> queryProcessDefinitionByName(User loginUser,
+ String projectName,
+ String
processDefinitionName);
+
+ /**
* batch copy process definition
*
* @param loginUser loginUser
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
index e4b01e4..245d33b 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProcessDefinitionServiceImpl.java
@@ -349,7 +349,29 @@ public class ProcessDefinitionServiceImpl extends
BaseService implements
ProcessDefinition processDefinition =
processDefineMapper.selectById(processId);
if (processDefinition == null) {
- putMsg(result, Status.PROCESS_INSTANCE_NOT_EXIST, processId);
+ putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST, processId);
+ } else {
+ result.put(Constants.DATA_LIST, processDefinition);
+ putMsg(result, Status.SUCCESS);
+ }
+ return result;
+ }
+
+ @Override
+ public Map<String, Object> queryProcessDefinitionByName(User loginUser,
String projectName, String processDefinitionName) {
+
+ Map<String, Object> result = new HashMap<>();
+ Project project = projectMapper.queryByName(projectName);
+
+ Map<String, Object> checkResult =
projectService.checkProjectAndAuth(loginUser, project, projectName);
+ Status resultStatus = (Status) checkResult.get(Constants.STATUS);
+ if (resultStatus != Status.SUCCESS) {
+ return checkResult;
+ }
+
+ ProcessDefinition processDefinition =
processDefineMapper.queryByDefineName(project.getId(),processDefinitionName);
+ if (processDefinition == null) {
+ putMsg(result, Status.PROCESS_DEFINE_NOT_EXIST,
processDefinitionName);
} else {
result.put(Constants.DATA_LIST, processDefinition);
putMsg(result, Status.SUCCESS);
diff --git a/dolphinscheduler-api/src/main/resources/i18n/messages.properties
b/dolphinscheduler-api/src/main/resources/i18n/messages.properties
index 4d5055b..5837cfa 100644
--- a/dolphinscheduler-api/src/main/resources/i18n/messages.properties
+++ b/dolphinscheduler-api/src/main/resources/i18n/messages.properties
@@ -172,6 +172,7 @@ PROCESS_DEFINITION_ID=process definition id
PROCESS_DEFINITION_IDS=process definition ids
RELEASE_PROCESS_DEFINITION_NOTES=release process definition
QUERY_PROCESS_DEFINITION_BY_ID_NOTES=query process definition by id
+QUERY_PROCESS_DEFINITION_BY_NAME_NOTES=query process definition by name
QUERY_PROCESS_DEFINITION_LIST_NOTES=query process definition list
QUERY_PROCESS_DEFINITION_LIST_PAGING_NOTES=query process definition list paging
QUERY_ALL_DEFINITION_LIST_NOTES=query all definition list
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
index e197e56..89d8b86 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/ProcessDefinitionServiceTest.java
@@ -341,7 +341,7 @@ public class ProcessDefinitionServiceTest {
Mockito.when(processDefineMapper.selectById(1)).thenReturn(null);
Map<String, Object> instanceNotexitRes =
processDefinitionService.queryProcessDefinitionById(loginUser,
"project_test1", 1);
- Assert.assertEquals(Status.PROCESS_INSTANCE_NOT_EXIST,
instanceNotexitRes.get(Constants.STATUS));
+ Assert.assertEquals(Status.PROCESS_DEFINE_NOT_EXIST,
instanceNotexitRes.get(Constants.STATUS));
//instance exit
Mockito.when(processDefineMapper.selectById(46)).thenReturn(getProcessDefinition());
@@ -351,6 +351,41 @@ public class ProcessDefinitionServiceTest {
}
@Test
+ public void testQueryProcessDefinitionByName() {
+ String projectName = "project_test1";
+
Mockito.when(projectMapper.queryByName(projectName)).thenReturn(getProject(projectName));
+
+ Project project = getProject(projectName);
+
+ User loginUser = new User();
+ loginUser.setId(-1);
+ loginUser.setUserType(UserType.GENERAL_USER);
+
+ Map<String, Object> result = new HashMap<>();
+ putMsg(result, Status.PROJECT_NOT_FOUNT, projectName);
+
+ //project check auth fail
+ Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
projectName)).thenReturn(result);
+ Map<String, Object> map =
processDefinitionService.queryProcessDefinitionByName(loginUser,
+ "project_test1", "test_def");
+ Assert.assertEquals(Status.PROJECT_NOT_FOUNT,
map.get(Constants.STATUS));
+
+ //project check auth success, instance not exist
+ putMsg(result, Status.SUCCESS, projectName);
+ Mockito.when(projectService.checkProjectAndAuth(loginUser, project,
projectName)).thenReturn(result);
+
Mockito.when(processDefineMapper.queryByDefineName(project.getId(),"test_def")).thenReturn(null);
+ Map<String, Object> instanceNotexitRes =
processDefinitionService.queryProcessDefinitionByName(loginUser,
+ "project_test1", "test_def");
+ Assert.assertEquals(Status.PROCESS_DEFINE_NOT_EXIST,
instanceNotexitRes.get(Constants.STATUS));
+
+ //instance exit
+
Mockito.when(processDefineMapper.queryByDefineName(project.getId(),"test")).thenReturn(getProcessDefinition());
+ Map<String, Object> successRes =
processDefinitionService.queryProcessDefinitionByName(loginUser,
+ "project_test1", "test");
+ Assert.assertEquals(Status.SUCCESS, successRes.get(Constants.STATUS));
+ }
+
+ @Test
public void testBatchCopyProcessDefinition() {
String projectName = "project_test1";