diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt index 09da2fba1e540c94f8b0a6a999483e2479727379..6037e03ecd593c393111b6e979d4a8a64b62b301 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt @@ -171,12 +171,16 @@ class RepositoryController( false } + val toolRun = toolRunService.getToolRunForRepository( + projectId = id, + includeFindings = isProjectMember + ) ?: throw ResponseStatusException( + HttpStatus.NOT_FOUND, "tool run not found" + ) + return ToolRunResponseDto( isProjectMember = isProjectMember, - toolRun = toolRunService.getToolRunForRepository( - projectId = id, - includeFindings = isProjectMember - ).await() + toolRun = toolRun ) } diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt index e5e39e18be146c2679348abd06e61d6f51637873..55e5ea3bd6edcc2bbfcdbd5351b40b766c66569b 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt @@ -88,11 +88,13 @@ class RepositoryService( } @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) - fun getToolRunByProjectId(projectId: Long): ToolRunDto { - val toolEntity = toolRunRepository.findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId) - return ToolRunDto.getDtoFromEntity( - toolEntity - ) + fun getToolRunByProjectId(projectId: Long): ToolRunDto? { + toolRunRepository.findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId)?.let { toolRunEntity -> + return ToolRunDto.getDtoFromEntity( + toolRunEntity + ) + } + return null } @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt index 14237190470a9ef0798ad56aaf2cccd3e58e8e41..0f22222660729dc8885fbc72401b2f50f17b7eb3 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt @@ -8,5 +8,5 @@ import java.util.* @Transactional(propagation = Propagation.MANDATORY) interface ToolRunRepository : JpaRepository<ToolRunEntity, UUID> { - fun findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId: Long): ToolRunEntity + fun findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId: Long): ToolRunEntity? } diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt index aa8dfc745a308c07f5d981467f0a05e6bcdb7ea5..62ac29ce8933cbd9362d4245e3271e32ed589744 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt @@ -5,7 +5,6 @@ import de.fraunhofer.iem.dataprovider.logger.getLogger import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService import de.fraunhofer.iem.dataprovider.tool.enumeration.ToolType import de.fraunhofer.iem.dataprovider.toolRun.dto.ToolRunDto -import de.fraunhofer.iem.dataprovider.toolRun.repository.ToolRunRepository import de.fraunhofer.iem.dataprovider.tools.gitlab.service.RepositoryDetailsService import de.fraunhofer.iem.dataprovider.tools.occmd.service.OccmdService import de.fraunhofer.iem.dataprovider.tools.ort.service.OrtService @@ -19,7 +18,6 @@ class ToolRunService( private val kpiService: KPIService, private val ortService: OrtService, private val occmdService: OccmdService, - private val toolRunRepository: ToolRunRepository, private val repositoryService: RepositoryService ) { @@ -122,15 +120,17 @@ class ToolRunService( suspend fun getToolRunForRepository( projectId: Long, includeFindings: Boolean = false - ): Deferred<ToolRunDto> = defaultScope.async { + ): ToolRunDto? { - val toolRun = repositoryService.getToolRunByProjectId(projectId = projectId) + val toolRun = withContext(Dispatchers.IO) { + repositoryService.getToolRunByProjectId(projectId = projectId) + } val apiJobs: MutableList<Job> = mutableListOf() if (includeFindings) { - toolRun.tools.forEach { tool -> + toolRun?.tools?.forEach { tool -> when (tool.toolType) { ToolType.ORT -> { apiJobs.add( @@ -157,7 +157,7 @@ class ToolRunService( } } - return@async toolRun + return toolRun }