diff --git a/Dockerfile b/Dockerfile index 29e0f611..51f7ea29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ WORKDIR /app # cache dependencies COPY build.gradle.kts settings.gradle.kts gradle.properties gradle gradlew gradlew.bat buildSrc /app/ COPY client/package.json client/build.gradle.kts /app/client/ -RUN ./gradlew shadowJar --paralell --no-daemon --continue || true +RUN ./gradlew shadowJar --parallel --no-daemon --continue || true COPY . /app RUN [ "./gradlew", "shadowJar", "--parallel", "--no-daemon" ] @@ -12,5 +12,8 @@ FROM ubuntu:latest RUN apt-get -y update RUN apt-get -y install git RUN apt-get -y install openjdk-17-jdk +RUN apt-get -y install netcat-openbsd COPY --from=build /app/build/libs/*.jar app.jar +COPY wait-for-it.sh /wait-for-it.sh +RUN chmod +x /wait-for-it.sh CMD [ "java", "-jar", "/app.jar" ] diff --git a/build.gradle.kts b/build.gradle.kts index 88b4e8ee..bba11a71 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,6 @@ application { repositories { mavenCentral() - jcenter() } dependencies { @@ -29,15 +28,20 @@ dependencies { // Ktor implementation("io.ktor:ktor-server-core:${Versions.ktor}") + implementation("io.ktor:ktor-server-auto-head-response:${Versions.ktor}") + implementation("io.ktor:ktor-server-call-logging:${Versions.ktor}") + implementation("io.ktor:ktor-server-content-negotiation:${Versions.ktor}") + implementation("io.ktor:ktor-server-status-pages:${Versions.ktor}") implementation("io.ktor:ktor-server-netty:${Versions.ktor}") implementation("io.ktor:ktor-server-host-common:${Versions.ktor}") - implementation("io.ktor:ktor-locations:${Versions.ktor}") + implementation("io.ktor:ktor-server-locations:${Versions.ktor}") implementation("io.ktor:ktor-client-apache:${Versions.ktor}") - implementation("io.ktor:ktor-auth:${Versions.ktor}") - implementation("io.ktor:ktor-jackson:${Versions.ktor}") + implementation("io.ktor:ktor-server-auth:${Versions.ktor}") + implementation("io.ktor:ktor-server-content-negotiation:${Versions.ktor}") + implementation("io.ktor:ktor-serialization-jackson:${Versions.ktor}") // DI - implementation("org.koin:koin-ktor:${Versions.koin}") + implementation("io.insert-koin:koin-ktor:${Versions.koin}") // DB implementation("org.jetbrains.exposed:exposed-core:${Versions.exposed}") diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index bd70ad1a..d995f4cb 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,23 +1,23 @@ object Versions { // plugin - const val kotlin = "1.4.30" + const val kotlin = "1.9.23" const val ktlint = "10.0.0" const val shadow = "6.1.0" // dependency const val serialization = "1.0.1" const val cli = "0.3.2" - const val ktor = "1.5.1" - const val koin = "2.2.1" - const val exposed = "0.28.1" - const val hikaricp = "3.4.5" + const val ktor = "2.3.11" + const val koin = "3.5.6" + const val exposed = "0.46.0" + const val hikaricp = "6.3.2" const val flyway = "7.7.0" const val postgresql = "42.2.18" const val h2 = "1.4.200" - const val logback = "1.2.3" + const val logback = "1.4.14" const val janino = "3.1.3" const val jdt = "3.24.0" - const val refminer = "2.0.3" + const val refminer = "2.4.0" const val github = "1.122" const val jackson = "2.12.1" const val junit = "5.7.1" diff --git a/docker-compose.yml b/docker-compose.yml index 5e047903..377bbb6b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: "3" services: app: build: ./ @@ -14,6 +13,7 @@ services: DATABASE_URL: postgres://rhuser:rhpass@db:5432/refactorhub depends_on: - db + entrypoint: ["/wait-for-it.sh", "db:5432", "--", "java", "-jar", "/app.jar"] db: image: postgres:12 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2a563242..068cdb2d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/Application.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/Application.kt index 7af6be55..d469b11c 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/Application.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/Application.kt @@ -1,22 +1,20 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure import com.fasterxml.jackson.databind.SerializationFeature -import io.ktor.application.Application -import io.ktor.application.install -import io.ktor.auth.Authentication -import io.ktor.features.AutoHeadResponse -import io.ktor.features.CallLogging -import io.ktor.features.ContentNegotiation -import io.ktor.features.StatusPages -import io.ktor.jackson.jackson -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Locations -import io.ktor.routing.routing +import io.ktor.server.application.Application +import io.ktor.server.application.install +import io.ktor.server.auth.Authentication +import io.ktor.server.plugins.autohead.AutoHeadResponse +import io.ktor.server.plugins.callloging.CallLogging +import io.ktor.server.plugins.contentnegotiation.ContentNegotiation +import io.ktor.server.plugins.statuspages.StatusPages +import io.ktor.serialization.jackson.jackson +import io.ktor.server.locations.Locations +import io.ktor.server.routing.routing import io.ktor.server.netty.EngineMain -import io.ktor.sessions.SessionStorageMemory -import io.ktor.sessions.Sessions -import io.ktor.sessions.cookie -import io.ktor.util.KtorExperimentalAPI +import io.ktor.server.sessions.SessionStorageMemory +import io.ktor.server.sessions.Sessions +import io.ktor.server.sessions.cookie import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.Session import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.github import jp.ac.titech.cs.se.refactorhub.app.infrastructure.database.connectDB @@ -24,14 +22,10 @@ import jp.ac.titech.cs.se.refactorhub.app.infrastructure.feature.SinglePageAppli import jp.ac.titech.cs.se.refactorhub.app.infrastructure.feature.setExceptions import jp.ac.titech.cs.se.refactorhub.app.infrastructure.module.KoinModule import jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.root -import org.koin.core.component.KoinApiExtension -import org.koin.ktor.ext.Koin +import org.koin.ktor.plugin.Koin fun main(args: Array) = EngineMain.main(args) -@KoinApiExtension -@KtorExperimentalAPI -@KtorExperimentalLocationsAPI fun Application.module() { install(AutoHeadResponse) install(CallLogging) diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/auth/GitHub.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/auth/GitHub.kt index a436a7ab..1006c269 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/auth/GitHub.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/auth/GitHub.kt @@ -1,42 +1,36 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth -import io.ktor.application.ApplicationCall -import io.ktor.application.call -import io.ktor.auth.Authentication -import io.ktor.auth.OAuthAccessTokenResponse -import io.ktor.auth.OAuthServerSettings -import io.ktor.auth.authenticate -import io.ktor.auth.authentication -import io.ktor.auth.oauth +import io.ktor.server.application.ApplicationCall +import io.ktor.server.application.call +import io.ktor.server.auth.AuthenticationConfig +import io.ktor.server.auth.OAuthAccessTokenResponse +import io.ktor.server.auth.OAuthServerSettings +import io.ktor.server.auth.authenticate +import io.ktor.server.auth.authentication +import io.ktor.server.auth.oauth import io.ktor.client.HttpClient import io.ktor.client.engine.apache.Apache -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Location -import io.ktor.locations.location -import io.ktor.locations.locations -import io.ktor.request.host -import io.ktor.request.port -import io.ktor.response.respondRedirect -import io.ktor.response.respondText -import io.ktor.routing.Route -import io.ktor.sessions.sessions -import io.ktor.sessions.set -import io.ktor.util.KtorExperimentalAPI +import io.ktor.server.locations.Location +import io.ktor.server.locations.location +import io.ktor.server.locations.locations +import io.ktor.server.request.host +import io.ktor.server.request.port +import io.ktor.server.response.respondRedirect +import io.ktor.server.response.respondText +import io.ktor.server.routing.Route +import io.ktor.server.sessions.sessions +import io.ktor.server.sessions.set import jp.ac.titech.cs.se.refactorhub.app.model.User import jp.ac.titech.cs.se.refactorhub.app.usecase.service.UserService import org.kohsuke.github.GitHub -import org.koin.core.component.KoinApiExtension import org.koin.java.KoinJavaComponent.inject private const val GITHUB = "github" -@KtorExperimentalLocationsAPI @Location("/login") private class Login -@KtorExperimentalAPI -@KtorExperimentalLocationsAPI -fun Authentication.Configuration.github() { +fun AuthenticationConfig.github() { oauth(GITHUB) { client = HttpClient(Apache) providerLookup = { @@ -54,7 +48,6 @@ fun Authentication.Configuration.github() { } } -@KtorExperimentalLocationsAPI private fun ApplicationCall.redirectUrl(t: T): String { val host = request.host() val path = application.locations.href(t) @@ -64,8 +57,6 @@ private fun ApplicationCall.redirectUrl(t: T): String { } } -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.login() { authenticate(GITHUB) { location { @@ -89,9 +80,8 @@ fun Route.login() { } } -@KoinApiExtension private fun getMe(accessToken: String): User { - val userService by inject(UserService::class.java) + val userService:UserService by inject(UserService::class.java) val me = GitHub.connectUsingOAuth(accessToken).myself return userService.createIfNotExist(me.id.toInt(), me.login) } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/Database.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/Database.kt index 7fd47638..1053caa6 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/Database.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/Database.kt @@ -2,14 +2,12 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.database import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource -import io.ktor.application.Application -import io.ktor.util.KtorExperimentalAPI +import io.ktor.server.application.Application import jp.ac.titech.cs.se.refactorhub.app.infrastructure.database.migration.initializeDatabase import org.flywaydb.core.Flyway import org.jetbrains.exposed.sql.Database import java.net.URI -@KtorExperimentalAPI fun Application.connectDB() { val uri = URI(environment.config.property("ktor.database.url").getString()) val (username, password) = uri.userInfo.split(":") diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Actions.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Actions.kt index 82584334..452aec55 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Actions.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Actions.kt @@ -43,11 +43,11 @@ class ActionDao(id: EntityID) : LongEntity(id), ModelConverter { } private fun stringify(data: JsonNode): String { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parse(src: String): JsonNode { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/ChangeTypes.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/ChangeTypes.kt index 73cf39e4..e10b3087 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/ChangeTypes.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/ChangeTypes.kt @@ -44,19 +44,19 @@ class ChangeTypeDao(id: EntityID) : StringEntity(id), ModelConverter): String { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseParameterMap(src: String): Map { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } private fun stringifyTags(data: List): String { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseTags(src: String): List { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Changes.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Changes.kt index e9040324..166f1972 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Changes.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Changes.kt @@ -38,11 +38,11 @@ class ChangeDao(id: EntityID) : UUIDEntity(id), ModelConverter { } private fun stringifyParameterData(data: Change.ParameterData): String { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseParameterData(src: String): Change.ParameterData { - val mapper by inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Commits.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Commits.kt index 06f3cb60..eca4f862 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Commits.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Commits.kt @@ -10,7 +10,7 @@ import org.jetbrains.exposed.dao.UUIDEntity import org.jetbrains.exposed.dao.UUIDEntityClass import org.jetbrains.exposed.dao.id.EntityID import org.jetbrains.exposed.dao.id.UUIDTable -import org.koin.java.KoinJavaComponent +import org.koin.java.KoinJavaComponent.inject import java.util.UUID object Commits : UUIDTable("commits") { @@ -91,19 +91,19 @@ class CommitOverviewDao(id: EntityID) : UUIDEntity(id), ModelConverter): String { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseFileList(src: String): List { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } private fun stringifyFileMappings(data: List): String { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseFileMappings(src: String): List { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Shanpshots.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Shanpshots.kt index 34476338..ba5d0b02 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Shanpshots.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/database/dao/Shanpshots.kt @@ -10,7 +10,7 @@ import org.jetbrains.exposed.dao.UUIDEntity import org.jetbrains.exposed.dao.UUIDEntityClass import org.jetbrains.exposed.dao.id.EntityID import org.jetbrains.exposed.dao.id.UUIDTable -import org.koin.java.KoinJavaComponent +import org.koin.java.KoinJavaComponent.inject import java.util.UUID object Snapshots : UUIDTable("snapshots") { @@ -42,19 +42,19 @@ class SnapshotDao(id: EntityID) : UUIDEntity(id), ModelConverter } private fun stringifyFileList(data: List): String { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseFileList(src: String): List { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } private fun stringifyFileMappings(data: List): String { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.writeValueAsString(data) } private fun parseFileMappings(src: String): List { - val mapper by KoinJavaComponent.inject(ObjectMapper::class.java) + val mapper: ObjectMapper by inject(ObjectMapper::class.java) return mapper.readValue(src) } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/SinglePageApplication.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/SinglePageApplication.kt index ac2a933f..e6b66a44 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/SinglePageApplication.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/SinglePageApplication.kt @@ -1,29 +1,29 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.feature -import io.ktor.application.Application -import io.ktor.application.ApplicationCallPipeline -import io.ktor.application.ApplicationFeature -import io.ktor.application.call +import io.ktor.server.application.Application +import io.ktor.server.application.ApplicationCallPipeline +import io.ktor.server.application.BaseApplicationPlugin +import io.ktor.server.application.call import io.ktor.http.ContentType import io.ktor.http.HttpStatusCode -import io.ktor.http.content.HttpStatusCodeContent -import io.ktor.http.content.JarFileContent -import io.ktor.http.content.defaultResource -import io.ktor.http.content.resolveResource -import io.ktor.http.content.resources -import io.ktor.http.content.static -import io.ktor.request.acceptItems -import io.ktor.request.uri -import io.ktor.response.ApplicationSendPipeline -import io.ktor.response.respond -import io.ktor.routing.routing +import io.ktor.server.http.content.HttpStatusCodeContent +import io.ktor.server.http.content.JarFileContent +import io.ktor.server.http.content.defaultResource +import io.ktor.server.http.content.resolveResource +import io.ktor.server.http.content.resources +import io.ktor.server.http.content.static +import io.ktor.server.request.acceptItems +import io.ktor.server.request.uri +import io.ktor.server.response.ApplicationSendPipeline +import io.ktor.server.response.respond +import io.ktor.server.routing.routing import io.ktor.util.AttributeKey import java.io.FileNotFoundException import java.nio.file.Paths class SinglePageApplication(private val configuration: Configuration) { - companion object Feature : ApplicationFeature { + companion object Feature : BaseApplicationPlugin { override val key = AttributeKey("SinglePageApplication") diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/StatusPages.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/StatusPages.kt index cc0b1696..f660c1aa 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/StatusPages.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/feature/StatusPages.kt @@ -1,29 +1,28 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.feature -import io.ktor.application.call -import io.ktor.features.StatusPages +import io.ktor.server.plugins.statuspages.StatusPagesConfig import io.ktor.http.HttpStatusCode -import io.ktor.response.respond +import io.ktor.server.response.respond import jp.ac.titech.cs.se.refactorhub.app.exception.* data class ErrorResponse( val message: String? ) -fun StatusPages.Configuration.setExceptions() { - exception { - call.respond(HttpStatusCode.BadRequest, ErrorResponse(it.message)) +fun StatusPagesConfig.setExceptions() { + exception { call, cause -> + call.respond(HttpStatusCode.BadRequest, ErrorResponse(cause.message)) } - exception { - call.respond(HttpStatusCode.Unauthorized, ErrorResponse(it.message)) + exception { call, cause -> + call.respond(HttpStatusCode.Unauthorized, ErrorResponse(cause.message)) } - exception { - call.respond(HttpStatusCode.Forbidden, ErrorResponse(it.message)) + exception { call, cause -> + call.respond(HttpStatusCode.Forbidden, ErrorResponse(cause.message)) } - exception { - call.respond(HttpStatusCode.NotFound, ErrorResponse(it.message)) + exception { call, cause -> + call.respond(HttpStatusCode.NotFound, ErrorResponse(cause.message)) } - exception { - call.respond(HttpStatusCode.Conflict, ErrorResponse(it.message)) + exception { call, cause -> + call.respond(HttpStatusCode.Conflict, ErrorResponse(cause.message)) } } diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/module/KoinModule.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/module/KoinModule.kt index 49b72462..3aae7fef 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/module/KoinModule.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/module/KoinModule.kt @@ -1,16 +1,12 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.module import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import io.ktor.locations.KtorExperimentalLocationsAPI import jp.ac.titech.cs.se.refactorhub.app.infrastructure.database.repository.* import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.* import jp.ac.titech.cs.se.refactorhub.app.interfaces.repository.* import jp.ac.titech.cs.se.refactorhub.app.usecase.service.* -import org.koin.core.component.KoinApiExtension import org.koin.dsl.module -@KoinApiExtension -@KtorExperimentalLocationsAPI object KoinModule { val modules by lazy { listOf( diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/Routing.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/Routing.kt index f671e509..e283cdaf 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/Routing.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/Routing.kt @@ -1,14 +1,10 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.routing.Routing -import io.ktor.routing.route +import io.ktor.server.routing.Routing +import io.ktor.server.routing.route import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.login import jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api.* -import org.koin.core.component.KoinApiExtension -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Routing.root() { login() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Actions.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Actions.kt index 93e1c2a4..311f029b 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Actions.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Actions.kt @@ -1,25 +1,22 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api import com.fasterxml.jackson.databind.JsonNode -import io.ktor.application.call -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Location -import io.ktor.locations.post -import io.ktor.request.receive -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.route -import io.ktor.sessions.get -import io.ktor.sessions.sessions +import io.ktor.server.application.call +import io.ktor.server.locations.Location +import io.ktor.server.locations.post +import io.ktor.server.request.receive +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.route +import io.ktor.server.sessions.get +import io.ktor.server.sessions.sessions import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.Session import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.toUUID import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.ActionController import jp.ac.titech.cs.se.refactorhub.core.model.ActionName import jp.ac.titech.cs.se.refactorhub.core.model.ActionType -import org.koin.core.component.KoinApiExtension import org.koin.ktor.ext.inject -@KtorExperimentalLocationsAPI @Location("") class PostAction data class PostActionBody( @@ -28,8 +25,6 @@ data class PostActionBody( val data: JsonNode ) -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.actions() { route("/actions") { val actionController: ActionController by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Annotations.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Annotations.kt index debaab8c..c25064c2 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Annotations.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Annotations.kt @@ -3,14 +3,14 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.node.ArrayNode import com.fasterxml.jackson.databind.node.ObjectNode -import io.ktor.application.call -import io.ktor.locations.* -import io.ktor.request.* -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.route -import io.ktor.sessions.get -import io.ktor.sessions.sessions +import io.ktor.server.application.call +import io.ktor.server.locations.* +import io.ktor.server.request.* +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.route +import io.ktor.server.sessions.get +import io.ktor.server.sessions.sessions import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.Session import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.toUUID import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.ActionController @@ -21,84 +21,66 @@ import jp.ac.titech.cs.se.refactorhub.core.model.ActionName import jp.ac.titech.cs.se.refactorhub.core.model.ActionType import jp.ac.titech.cs.se.refactorhub.core.model.DiffCategory import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElement -import org.koin.core.component.KoinApiExtension import org.koin.ktor.ext.inject -@KtorExperimentalLocationsAPI @Location("/{annotationId}") class GetAnnotation(val annotationId: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}") class PublishAnnotation(val annotationId: String) data class PublishAnnotationBody(val isDraft: Boolean) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/data") class GetAnnotationData(val annotationId: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots") class AppendTemporarySnapshot(val annotationId: String) data class AppendTemporarySnapshotBody(val changeId: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots") class ModifyTemporarySnapshot(val annotationId: String) data class ModifyTemporarySnapshotBody(val filePath: String, val fileContent: String, val isRemoved: Boolean) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots") class SettleTemporarySnapshot(val annotationId: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes") class AppendChange(val annotationId: String, val snapshotId: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}") class UpdateChange(val annotationId: String, val snapshotId: String, val changeId: String) data class UpdateChangeBody(val description: String, val typeName: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}") class RemoveChange(val annotationId: String, val snapshotId: String, val changeId: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}/{diffCategory}") class PutNewParameter(val annotationId: String, val snapshotId: String, val changeId: String, val diffCategory: DiffCategory) data class PutNewParameterBody(val parameterName: String, val elementType: String, val multiple: Boolean) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}/{diffCategory}/{parameterName}") class AppendParameterElement(val annotationId: String, val snapshotId: String, val changeId: String, val diffCategory: DiffCategory, val parameterName: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}/{diffCategory}/{parameterName}") class RemoveParameter(val annotationId: String, val snapshotId: String, val changeId: String, val diffCategory: DiffCategory, val parameterName: String) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}/{diffCategory}/{parameterName}") class VerifyParameter(val annotationId: String, val snapshotId: String, val changeId: String, val diffCategory: DiffCategory, val parameterName: String) data class VerifyParameterBody(val isVerified: Boolean) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}/{diffCategory}/{parameterName}/{elementIndex}") class UpdateParameterValue(val annotationId: String, val snapshotId: String, val changeId: String, val diffCategory: DiffCategory, val parameterName: String, val elementIndex: Int) data class UpdateParameterValueBody(val element: CodeElement) -@KtorExperimentalLocationsAPI @Location("/{annotationId}/snapshots/{snapshotId}/changes/{changeId}/{diffCategory}/{parameterName}/{elementIndex}") class ClearParameterValue(val annotationId: String, val snapshotId: String, val changeId: String, val diffCategory: DiffCategory, val parameterName: String, val elementIndex: Int) -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.annotations() { route("/annotations") { val annotationController: AnnotationController by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/ChangeTypes.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/ChangeTypes.kt index b2495bbe..0ad668a8 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/ChangeTypes.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/ChangeTypes.kt @@ -1,28 +1,24 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api -import io.ktor.application.call -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Location -import io.ktor.locations.get -import io.ktor.locations.post -import io.ktor.request.receive -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.route -import io.ktor.sessions.get -import io.ktor.sessions.sessions +import io.ktor.server.application.call +import io.ktor.server.locations.Location +import io.ktor.server.locations.get +import io.ktor.server.locations.post +import io.ktor.server.request.receive +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.route +import io.ktor.server.sessions.get +import io.ktor.server.sessions.sessions import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.Session import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.toUUID import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.ChangeTypeController import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElementMetadata -import org.koin.core.component.KoinApiExtension import org.koin.ktor.ext.inject -@KtorExperimentalLocationsAPI @Location("") class GetChangeTypes -@KtorExperimentalLocationsAPI @Location("") class CreateChangeType data class CreateChangeTypeBody( @@ -33,8 +29,6 @@ data class CreateChangeTypeBody( val referenceUrl: String = "" ) -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.changeTypes() { route("/change_types") { val changeTypeController: ChangeTypeController by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/CodeElementTypes.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/CodeElementTypes.kt index 48d75a4a..1a12b2ff 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/CodeElementTypes.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/CodeElementTypes.kt @@ -1,22 +1,17 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api -import io.ktor.application.call -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Location -import io.ktor.locations.get -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.route +import io.ktor.server.application.call +import io.ktor.server.locations.Location +import io.ktor.server.locations.get +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.route import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.CodeElementController -import org.koin.core.component.KoinApiExtension import org.koin.ktor.ext.inject -@KtorExperimentalLocationsAPI @Location("") class GetCodeElementTypes -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.codeElementTypes() { route("/code_element_types") { val codeElementController: CodeElementController by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Experiments.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Experiments.kt index 78d014d6..4c27ada8 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Experiments.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Experiments.kt @@ -1,27 +1,23 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api -import io.ktor.application.call -import io.ktor.locations.KtorExperimentalLocationsAPI -import io.ktor.locations.Location -import io.ktor.locations.get -import io.ktor.locations.post -import io.ktor.request.receive -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.route -import io.ktor.sessions.get -import io.ktor.sessions.sessions +import io.ktor.server.application.call +import io.ktor.server.locations.Location +import io.ktor.server.locations.get +import io.ktor.server.locations.post +import io.ktor.server.request.receive +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.route +import io.ktor.server.sessions.get +import io.ktor.server.sessions.sessions import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.Session import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.toUUID import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.ExperimentController -import org.koin.core.component.KoinApiExtension import org.koin.ktor.ext.inject -@KtorExperimentalLocationsAPI @Location("") class GetExperiments -@KtorExperimentalLocationsAPI @Location("") class CreateExperiment data class Commit( @@ -35,20 +31,15 @@ data class CreateExperimentBody( val commits: List ) -@KtorExperimentalLocationsAPI @Location("/{experimentId}") data class GetExperiment(val experimentId: String) -@KtorExperimentalLocationsAPI @Location("/{experimentId}/commits/{commitId}") data class StartAnnotation(val experimentId: String, val commitId: String) -@KtorExperimentalLocationsAPI @Location("/{experimentId}/result") data class GetExperimentResult(val experimentId: String) -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.experiments() { route("/experiments") { val experimentController: ExperimentController by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Users.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Users.kt index b3d26e15..88f1bc22 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Users.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/infrastructure/router/api/Users.kt @@ -1,28 +1,23 @@ package jp.ac.titech.cs.se.refactorhub.app.infrastructure.router.api -import io.ktor.application.call -import io.ktor.locations.* -import io.ktor.response.respond -import io.ktor.routing.Route -import io.ktor.routing.route -import io.ktor.sessions.get -import io.ktor.sessions.sessions +import io.ktor.server.application.call +import io.ktor.server.locations.* +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.route +import io.ktor.server.sessions.get +import io.ktor.server.sessions.sessions import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.Session import jp.ac.titech.cs.se.refactorhub.app.infrastructure.auth.toUUID import jp.ac.titech.cs.se.refactorhub.app.interfaces.controller.UserController -import org.koin.core.component.KoinApiExtension import org.koin.ktor.ext.inject -@KtorExperimentalLocationsAPI @Location("/me") class GetMe -@KtorExperimentalLocationsAPI @Location("/{userId}/annotations") data class GetUserAnnotationIds(val userId: String) -@KoinApiExtension -@KtorExperimentalLocationsAPI fun Route.users() { route("/users") { val userController: UserController by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ActionController.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ActionController.kt index 0142aff3..e84722f6 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ActionController.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ActionController.kt @@ -4,12 +4,10 @@ import com.fasterxml.jackson.databind.JsonNode import jp.ac.titech.cs.se.refactorhub.app.usecase.service.ActionService import jp.ac.titech.cs.se.refactorhub.core.model.ActionName import jp.ac.titech.cs.se.refactorhub.core.model.ActionType -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class ActionController : KoinComponent { private val actionService: ActionService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/AnnotationController.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/AnnotationController.kt index cff10aef..9167c8b4 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/AnnotationController.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/AnnotationController.kt @@ -9,12 +9,10 @@ import jp.ac.titech.cs.se.refactorhub.app.usecase.service.ChangeService import jp.ac.titech.cs.se.refactorhub.app.usecase.service.SnapshotService import jp.ac.titech.cs.se.refactorhub.core.model.DiffCategory import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElement -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class AnnotationController : KoinComponent { private val annotationService: AnnotationService by inject() private val snapshotService: SnapshotService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ChangeTypeController.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ChangeTypeController.kt index 68c63ac9..dc6d9c76 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ChangeTypeController.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ChangeTypeController.kt @@ -3,12 +3,10 @@ package jp.ac.titech.cs.se.refactorhub.app.interfaces.controller import jp.ac.titech.cs.se.refactorhub.app.model.ChangeType import jp.ac.titech.cs.se.refactorhub.app.usecase.service.ChangeTypeService import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElementMetadata -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.* -@KoinApiExtension class ChangeTypeController : KoinComponent { private val changeTypeService: ChangeTypeService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/CodeElementController.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/CodeElementController.kt index e214dbbd..c966836c 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/CodeElementController.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/CodeElementController.kt @@ -1,11 +1,9 @@ package jp.ac.titech.cs.se.refactorhub.app.interfaces.controller import jp.ac.titech.cs.se.refactorhub.app.usecase.service.CodeElementService -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject -@KoinApiExtension class CodeElementController : KoinComponent { private val codeElementService: CodeElementService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ExperimentController.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ExperimentController.kt index 05ae93be..b60af961 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ExperimentController.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/ExperimentController.kt @@ -5,12 +5,10 @@ import jp.ac.titech.cs.se.refactorhub.app.model.Experiment import jp.ac.titech.cs.se.refactorhub.app.usecase.service.AnnotationService import jp.ac.titech.cs.se.refactorhub.app.usecase.service.ExperimentService import jp.ac.titech.cs.se.refactorhub.core.model.Commit -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class ExperimentController : KoinComponent { private val experimentService: ExperimentService by inject() private val annotationService: AnnotationService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/UserController.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/UserController.kt index 1638057d..3a21b7ef 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/UserController.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/interfaces/controller/UserController.kt @@ -3,12 +3,10 @@ package jp.ac.titech.cs.se.refactorhub.app.interfaces.controller import jp.ac.titech.cs.se.refactorhub.app.model.User import jp.ac.titech.cs.se.refactorhub.app.model.AnnotationOverview import jp.ac.titech.cs.se.refactorhub.app.usecase.service.UserService -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.* -@KoinApiExtension class UserController : KoinComponent { private val userService: UserService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ActionService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ActionService.kt index 87fe1d3d..ad03af62 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ActionService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ActionService.kt @@ -6,13 +6,11 @@ import jp.ac.titech.cs.se.refactorhub.app.interfaces.repository.ActionRepository import jp.ac.titech.cs.se.refactorhub.app.model.Action import jp.ac.titech.cs.se.refactorhub.core.model.ActionName import jp.ac.titech.cs.se.refactorhub.core.model.ActionType -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.time.LocalDateTime import java.util.UUID -@KoinApiExtension class ActionService : KoinComponent { private val actionRepository: ActionRepository by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/AnnotationService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/AnnotationService.kt index de6d74e3..105fd877 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/AnnotationService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/AnnotationService.kt @@ -20,12 +20,10 @@ import jp.ac.titech.cs.se.refactorhub.core.model.annotator.FileMapping import jp.ac.titech.cs.se.refactorhub.core.model.annotator.FileMappingStatus import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElement import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElementHolder -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class AnnotationService : KoinComponent { private val userService: UserService by inject() private val experimentService: ExperimentService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeService.kt index 65d151f8..c052d4c5 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeService.kt @@ -9,14 +9,12 @@ import jp.ac.titech.cs.se.refactorhub.core.model.DiffCategory import jp.ac.titech.cs.se.refactorhub.core.model.annotator.FileMapping import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElement import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElementHolder -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID private const val DEFAULT_CHANGE_TYPE = "Non-Refactoring" -@KoinApiExtension class ChangeService : KoinComponent { private val annotationService: AnnotationService by inject() private val snapshotService: SnapshotService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeTypeService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeTypeService.kt index 8cb30799..873aae29 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeTypeService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ChangeTypeService.kt @@ -6,12 +6,10 @@ import jp.ac.titech.cs.se.refactorhub.app.exception.UnauthorizedException import jp.ac.titech.cs.se.refactorhub.app.interfaces.repository.ChangeTypeRepository import jp.ac.titech.cs.se.refactorhub.app.model.ChangeType import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElementMetadata -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class ChangeTypeService : KoinComponent { private val changeTypeRepository: ChangeTypeRepository by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CodeElementService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CodeElementService.kt index f14bde6a..4ebd202f 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CodeElementService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CodeElementService.kt @@ -1,10 +1,8 @@ package jp.ac.titech.cs.se.refactorhub.app.usecase.service import jp.ac.titech.cs.se.refactorhub.core.model.element.CodeElementType -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent -@KoinApiExtension class CodeElementService : KoinComponent { fun getTypes(): List { diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CommitService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CommitService.kt index e3bd2138..0862e08d 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CommitService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/CommitService.kt @@ -9,14 +9,12 @@ import jp.ac.titech.cs.se.refactorhub.core.annotator.getFile import jp.ac.titech.cs.se.refactorhub.core.annotator.mapFiles import jp.ac.titech.cs.se.refactorhub.core.model.annotator.FileMappingStatus import org.kohsuke.github.GitHub -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.time.LocalDateTime import java.time.ZoneId import java.util.UUID -@KoinApiExtension class CommitService : KoinComponent { private val commitRepository: CommitRepository by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ExperimentService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ExperimentService.kt index 6c42c618..14f16880 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ExperimentService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/ExperimentService.kt @@ -4,12 +4,10 @@ import jp.ac.titech.cs.se.refactorhub.app.exception.NotFoundException import jp.ac.titech.cs.se.refactorhub.app.interfaces.repository.ExperimentRepository import jp.ac.titech.cs.se.refactorhub.app.model.Experiment import jp.ac.titech.cs.se.refactorhub.core.model.Commit -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class ExperimentService : KoinComponent { private val commitService: CommitService by inject() private val userService: UserService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/SnapshotService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/SnapshotService.kt index 8263a61f..2df98d37 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/SnapshotService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/SnapshotService.kt @@ -6,12 +6,10 @@ import jp.ac.titech.cs.se.refactorhub.app.model.Snapshot import jp.ac.titech.cs.se.refactorhub.core.model.DiffCategory import jp.ac.titech.cs.se.refactorhub.core.model.annotator.File import jp.ac.titech.cs.se.refactorhub.core.model.annotator.FileMapping -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class SnapshotService : KoinComponent { private val commitService: CommitService by inject() private val changeService: ChangeService by inject() diff --git a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/UserService.kt b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/UserService.kt index 40cb1af6..106656c1 100644 --- a/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/UserService.kt +++ b/src/main/kotlin/jp/ac/titech/cs/se/refactorhub/app/usecase/service/UserService.kt @@ -5,12 +5,10 @@ import jp.ac.titech.cs.se.refactorhub.app.exception.UnauthorizedException import jp.ac.titech.cs.se.refactorhub.app.interfaces.repository.UserRepository import jp.ac.titech.cs.se.refactorhub.app.model.AnnotationOverview import jp.ac.titech.cs.se.refactorhub.app.model.User -import org.koin.core.component.KoinApiExtension import org.koin.core.component.KoinComponent import org.koin.core.component.inject import java.util.UUID -@KoinApiExtension class UserService : KoinComponent { private val userRepository: UserRepository by inject() private val annotationService: AnnotationService by inject() diff --git a/src/main/resources/data/experiment-1.ndjson b/src/main/resources/data/experiment-1.ndjson index 337845d1..c96f013e 100644 --- a/src/main/resources/data/experiment-1.ndjson +++ b/src/main/resources/data/experiment-1.ndjson @@ -4,7 +4,6 @@ {"sha":"e19c6874431dc2c3046436c2ac249a0ab2ef3457","owner":"brettwooldridge","repository":"HikariCP"} {"sha":"6abc40ed4850d74ee6c155f5a28f8b34881a0284","owner":"BuildCraft","repository":"BuildCraft"} {"sha":"c76e6e1f27a6697b3b88ad4ed710441b801afb3b","owner":"rackerlabs","repository":"blueflood"} -{"sha":"a896b8bf8f7067e41291eb7771deed76b3621fa0","owner":"VoltDB","repository":"voltdb"} {"sha":"bec15926deb49d2b3f7b979d4cfc819947a434ec","owner":"languagetool-org","repository":"languagetool"} {"sha":"71820e573134be3fad3935035249cd77c4412f4e","owner":"SlimeKnights","repository":"TinkersConstruct"} {"sha":"dd4bc630c3de70204081ab196945d6b55ab03beb","owner":"spring-projects","repository":"spring-framework"} @@ -13,4 +12,3 @@ {"sha":"40e41d11d7847d660bba6691859b0506514bd0ac","owner":"bennidi","repository":"mbassador"} {"sha":"36d1b0717bc5836bba39985caadc2df5f2533ac4","owner":"spring-projects","repository":"spring-data-jpa"} {"sha":"a70ca1d9ad2ea07b19c5e1f9540c809d7a12d3fb","owner":"Activiti","repository":"Activiti"} -{"sha":"cfc54e8afa7ee7d5376525a84559e90b21487ccf","owner":"VoltDB","repository":"voltdb"} diff --git a/wait-for-it.sh b/wait-for-it.sh new file mode 100755 index 00000000..25d053a8 --- /dev/null +++ b/wait-for-it.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# wait-for-it.sh: Wait until a host and port are available +# (Official: https://github.com/vishnubob/wait-for-it) + +set -e + +HOST=$(echo $1 | cut -d: -f1) +PORT=$(echo $1 | cut -d: -f2) +shift + +while ! nc -z $HOST $PORT; do + echo "Waiting for $HOST:$PORT..." + sleep 1 +done + +exec "$@" +