Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@
import org.apache.dolphinscheduler.api.exceptions.ApiException;
import org.apache.dolphinscheduler.api.service.TaskDefinitionService;
import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.api.vo.TaskDefinitionVO;
import org.apache.dolphinscheduler.common.constants.Constants;
import org.apache.dolphinscheduler.common.enums.ReleaseState;
import org.apache.dolphinscheduler.dao.entity.User;

import java.util.Map;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -84,14 +85,14 @@
@ResponseStatus(HttpStatus.OK)
@ApiException(UPDATE_TASK_DEFINITION_ERROR)
@OperatorLog(auditType = AuditType.TASK_UPDATE)
public Result updateTaskWithUpstream(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code,
@RequestParam(value = "taskDefinitionJsonObj", required = true) String taskDefinitionJsonObj,
@RequestParam(value = "upstreamCodes", required = false) String upstreamCodes) {
Map<String, Object> result = taskDefinitionService.updateTaskWithUpstream(loginUser, projectCode, code,
public Result<Long> updateTaskWithUpstream(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code,
@RequestParam(value = "taskDefinitionJsonObj", required = true) String taskDefinitionJsonObj,
@RequestParam(value = "upstreamCodes", required = false) String upstreamCodes) {
Long updatedTaskCode = taskDefinitionService.updateTaskWithUpstream(loginUser, projectCode, code,
taskDefinitionJsonObj, upstreamCodes);
return returnDataList(result);
return Result.success(updatedTaskCode);
}

/**
Expand Down Expand Up @@ -141,12 +142,12 @@
@ResponseStatus(HttpStatus.OK)
@ApiException(SWITCH_TASK_DEFINITION_VERSION_ERROR)
@OperatorLog(auditType = AuditType.TASK_SWITCH_VERSION)
public Result switchTaskDefinitionVersion(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code,
@PathVariable(value = "version") int version) {
Map<String, Object> result = taskDefinitionService.switchVersion(loginUser, projectCode, code, version);
return returnDataList(result);
public Result<Void> switchTaskDefinitionVersion(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,

Check failure

Code scanning / CodeQL

HTTP request type unprotected from CSRF High

Potential CSRF vulnerability due to using an HTTP request type which is not default-protected from CSRF for an apparent
state-changing action
.
Potential CSRF vulnerability due to using an HTTP request type which is not default-protected from CSRF for an apparent
state-changing action
.
Potential CSRF vulnerability due to using an HTTP request type which is not default-protected from CSRF for an apparent
state-changing action
.
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code,
@PathVariable(value = "version") int version) {
taskDefinitionService.switchVersion(loginUser, projectCode, code, version);
return Result.success();
}

/**
Expand All @@ -167,13 +168,12 @@
@ResponseStatus(HttpStatus.OK)
@ApiException(DELETE_TASK_DEFINITION_VERSION_ERROR)
@OperatorLog(auditType = AuditType.TASK_DELETE_VERSION)
public Result deleteTaskDefinitionVersion(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code,
@PathVariable(value = "version") int version) {
Map<String, Object> result =
taskDefinitionService.deleteByCodeAndVersion(loginUser, projectCode, code, version);
return returnDataList(result);
public Result<Void> deleteTaskDefinitionVersion(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code,
@PathVariable(value = "version") int version) {
taskDefinitionService.deleteByCodeAndVersion(loginUser, projectCode, code, version);
return Result.success();
}

/**
Expand All @@ -191,11 +191,12 @@
@GetMapping(value = "/{code}")
@ResponseStatus(HttpStatus.OK)
@ApiException(QUERY_DETAIL_OF_TASK_DEFINITION_ERROR)
public Result queryTaskDefinitionDetail(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code) {
Map<String, Object> result = taskDefinitionService.queryTaskDefinitionDetail(loginUser, projectCode, code);
return returnDataList(result);
public Result<TaskDefinitionVO> queryTaskDefinitionDetail(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code") long code) {
TaskDefinitionVO taskDefinitionVO =
taskDefinitionService.queryTaskDefinitionDetail(loginUser, projectCode, code);
return Result.success(taskDefinitionVO);
}

/**
Expand All @@ -212,10 +213,10 @@
@GetMapping(value = "/gen-task-codes")
@ResponseStatus(HttpStatus.OK)
@ApiException(LOGIN_USER_QUERY_PROJECT_LIST_PAGING_ERROR)
public Result genTaskCodeList(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@RequestParam("genNum") Integer genNum) {
Map<String, Object> result = taskDefinitionService.genTaskCodeList(genNum);
return returnDataList(result);
public Result<List<Long>> genTaskCodeList(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'loginUser' is never used.
@RequestParam("genNum") Integer genNum) {
List<Long> taskCodes = taskDefinitionService.genTaskCodeList(genNum);
return Result.success(taskCodes);
}

/**
Expand All @@ -237,12 +238,11 @@
@ResponseStatus(HttpStatus.OK)
@ApiException(RELEASE_TASK_DEFINITION_ERROR)
@OperatorLog(auditType = AuditType.TASK_RELEASE)
public Result releaseTaskDefinition(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code", required = true) long code,
@RequestParam(value = "releaseState", required = true, defaultValue = "OFFLINE") ReleaseState releaseState) {
Map<String, Object> result =
taskDefinitionService.releaseTaskDefinition(loginUser, projectCode, code, releaseState);
return returnDataList(result);
public Result<Void> releaseTaskDefinition(@Parameter(hidden = true) @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
@Parameter(name = "projectCode", description = "PROJECT_CODE", required = true) @PathVariable long projectCode,
@PathVariable(value = "code", required = true) long code,
@RequestParam(value = "releaseState", required = true, defaultValue = "OFFLINE") ReleaseState releaseState) {
taskDefinitionService.releaseTaskDefinition(loginUser, projectCode, code, releaseState);
return Result.success();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,17 @@ public String ping() {
// TODO Should we import package in python client side? utils package can but service can not, why
// Core api
public Map<String, Object> genTaskCodeList(Integer genNum) {
return taskDefinitionService.genTaskCodeList(genNum);
Map<String, Object> result = new HashMap<>();
try {
List<Long> taskCodes = taskDefinitionService.genTaskCodeList(genNum);
result.put(Constants.STATUS, Status.SUCCESS);
result.put(Constants.MSG, Status.SUCCESS.getMsg());
result.put(Constants.DATA_LIST, taskCodes);
} catch (ServiceException e) {
result.put(Constants.STATUS, Status.DATA_IS_NOT_VALID);
result.put(Constants.MSG, e.getMessage());
}
return result;
}

public Map<String, Long> getCodeAndVersion(String projectName, String workflowDefinitionName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@
package org.apache.dolphinscheduler.api.service;

import org.apache.dolphinscheduler.api.utils.Result;
import org.apache.dolphinscheduler.api.vo.TaskDefinitionVO;
import org.apache.dolphinscheduler.common.enums.ReleaseState;
import org.apache.dolphinscheduler.dao.entity.TaskDefinition;
import org.apache.dolphinscheduler.dao.entity.User;

import java.util.Map;
import java.util.List;

public interface TaskDefinitionService {

Expand All @@ -33,11 +34,12 @@ public interface TaskDefinitionService {
* @param projectCode project code
* @param workflowDefinitionCode workflow definition code
* @param taskName task name
* @return matching task definition
*/
Map<String, Object> queryTaskDefinitionByName(User loginUser,
long projectCode,
long workflowDefinitionCode,
String taskName);
TaskDefinition queryTaskDefinitionByName(User loginUser,
long projectCode,
long workflowDefinitionCode,
String taskName);

/**
* Get resource task definition by code
Expand All @@ -57,13 +59,13 @@ TaskDefinition getTaskDefinition(User loginUser,
* @param taskCode task definition code
* @param taskDefinitionJsonObj task definition json object
* @param upstreamCodes upstream task codes, sep comma
* @return update result code
* @return updated task code
*/
Map<String, Object> updateTaskWithUpstream(User loginUser,
long projectCode,
long taskCode,
String taskDefinitionJsonObj,
String upstreamCodes);
Long updateTaskWithUpstream(User loginUser,
long projectCode,
long taskCode,
String taskDefinitionJsonObj,
String upstreamCodes);

/**
* update task definition
Expand All @@ -73,10 +75,10 @@ Map<String, Object> updateTaskWithUpstream(User loginUser,
* @param taskCode task code
* @param version the version user want to switch
*/
Map<String, Object> switchVersion(User loginUser,
long projectCode,
long taskCode,
int version);
void switchVersion(User loginUser,
long projectCode,
long taskCode,
int version);

/**
* query the pagination versions info by one certain task definition code
Expand All @@ -101,12 +103,11 @@ Result queryTaskDefinitionVersions(User loginUser,
* @param projectCode project code
* @param taskCode the task definition code
* @param version the task definition version user want to delete
* @return delete version result code
*/
Map<String, Object> deleteByCodeAndVersion(User loginUser,
long projectCode,
long taskCode,
int version);
void deleteByCodeAndVersion(User loginUser,
long projectCode,
long taskCode,
int version);

/**
* query detail of task definition by code
Expand All @@ -116,17 +117,17 @@ Map<String, Object> deleteByCodeAndVersion(User loginUser,
* @param taskCode the task definition code
* @return task definition detail
*/
Map<String, Object> queryTaskDefinitionDetail(User loginUser,
long projectCode,
long taskCode);
TaskDefinitionVO queryTaskDefinitionDetail(User loginUser,
long projectCode,
long taskCode);

/**
* gen task code list
*
* @param genNum gen num
* @return task code list
*/
Map<String, Object> genTaskCodeList(Integer genNum);
List<Long> genTaskCodeList(Integer genNum);

/**
* release task definition
Expand All @@ -135,12 +136,11 @@ Map<String, Object> queryTaskDefinitionDetail(User loginUser,
* @param projectCode project code
* @param code task definition code
* @param releaseState releaseState
* @return update result code
*/
Map<String, Object> releaseTaskDefinition(User loginUser,
long projectCode,
long code,
ReleaseState releaseState);
void releaseTaskDefinition(User loginUser,
long projectCode,
long code,
ReleaseState releaseState);

void deleteTaskByWorkflowDefinitionCode(long workflowDefinitionCode, int workflowDefinitionVersion);
}
Loading
Loading