diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/WebSecurityConfiguration.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/WebSecurityConfiguration.kt index 921cb19f73fc2d0689888c2d40808b872d5e9522..be7ce0eff68f66866331701611fe3728c39a5396 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 324a4dfda081c3495399573683073290463356ae..e9429a96070b26ff26d55d12422bb8786408dfa8 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 0000000000000000000000000000000000000000..220f319c3377d9c9906292e0293212c59addf637 --- /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