From 837901cde701f7e3c42362173cb48c34d3da000a Mon Sep 17 00:00:00 2001 From: Jan-Niclas Struewer <j.n.struewer@gmail.com> Date: Fri, 28 Apr 2023 16:45:15 +0200 Subject: [PATCH] added test endpoint. added external process task --- .../dataprovider/WebSecurityConfiguration.kt | 1 + .../dataprovider/gitlab/GitlabController.kt | 11 ++++++- .../taskManager/tasks/ProcessTask.kt | 31 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/ProcessTask.kt diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/WebSecurityConfiguration.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/WebSecurityConfiguration.kt index 921cb19f..be7ce0ef 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/WebSecurityConfiguration.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/WebSecurityConfiguration.kt @@ -18,6 +18,7 @@ class SecurityConfiguration { authorizeExchange { authorize("/gitlab/repoChanged", permitAll) authorize("/gitlab/repoChangedPath", permitAll) + authorize("/gitlab/test", permitAll) } csrf { disable() diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/GitlabController.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/GitlabController.kt index 324a4dfd..e9429a96 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/GitlabController.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/GitlabController.kt @@ -1,6 +1,10 @@ package de.fraunhofer.iem.dataprovider.gitlab import de.fraunhofer.iem.dataprovider.logger.getLogger +import de.fraunhofer.iem.dataprovider.taskManager.TaskManager +import de.fraunhofer.iem.dataprovider.taskManager.tasks.ProcessTask +import de.fraunhofer.iem.dataprovider.taskManager.tasks.TaskType +import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping @@ -14,7 +18,7 @@ data class RepositoryChangedDto(val repoId: Long, val platform: Platform) data class RepositoryChangedPathDto(val path: String, val platform: Platform) @RestController @RequestMapping("/gitlab") -class GitlabController(private val gitlabService: GitlabService) { +class GitlabController(private val gitlabService: GitlabService, private val taskManager: TaskManager) { private val logger = getLogger(javaClass) @@ -44,4 +48,9 @@ class GitlabController(private val gitlabService: GitlabService) { } } } + + @GetMapping("/test") + suspend fun test() { + taskManager.addTask(ProcessTask(TaskType.REPO_CHANGED)) + } } \ No newline at end of file diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/ProcessTask.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/ProcessTask.kt new file mode 100644 index 00000000..220f319c --- /dev/null +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/taskManager/tasks/ProcessTask.kt @@ -0,0 +1,31 @@ +package de.fraunhofer.iem.dataprovider.taskManager.tasks + +sealed class ProcessTask(protected open vararg val flags: String): Task() { + + protected abstract val execPath: String + + override suspend fun execute() { + + val p = ProcessBuilder(execPath, *flags) + .start() + + p.onExit().thenApply { p1 -> + handleProcessReturn(p1) + } + + } + + abstract fun handleProcessReturn(p: Process) +} + +class JavaTask( + override val type: TaskType, + override val execPath: String, + override vararg val flags: String, + val addTask: (task: Task) -> Unit +): ProcessTask() { + + override fun handleProcessReturn(p: Process) { + addTask(DoneTask("Done with external process. Exit value ${p.exitValue()}")) + } +} \ No newline at end of file -- GitLab