From 68712340381be3394dbbb73b8e835a3b2991ffeb Mon Sep 17 00:00:00 2001 From: Cosmin Stroe Date: Tue, 15 Jun 2021 07:49:17 -0500 Subject: [PATCH] Update build with newer dependencies --- build.gradle.kts | 12 +++++++ subprojects/dto/dto.gradle.kts | 6 ++-- .../dto/internal/OffsetDateTimeSerializer.kt | 6 ++-- .../lib/dto/internal/UUIDSerializer.kt | 6 ++-- subprojects/event/event.gradle.kts | 2 +- .../lib/event/serde/EventDeserializer.kt | 2 +- .../eventserde-json.gradle.kts | 2 +- .../lib/eventserde/json/JsonEventSerde.kt | 4 +-- .../eventsink-kafka.gradle.kts | 2 +- .../eventsink-logger.gradle.kts | 2 +- subprojects/history/history.gradle.kts | 2 +- .../integrationTest.gradle.kts | 4 +-- .../checklister/config/SwaggerConfig.kt | 36 ------------------- .../checklister/controller/EventController.kt | 10 +++--- .../checklister/controller/IndexController.kt | 4 +-- .../checklister/controller/ItemController.kt | 20 +++++------ .../checklister/controller/ListController.kt | 14 ++++---- .../cosmin/checklister/entity/ItemEntity.kt | 8 ++--- .../cosmin/checklister/service/ItemService.kt | 2 +- .../cosmin/checklister/service/ListService.kt | 2 +- subprojects/web/web.gradle.kts | 31 ++++++++-------- 21 files changed, 80 insertions(+), 97 deletions(-) delete mode 100644 subprojects/web/src/main/kotlin/cloud/cosmin/checklister/config/SwaggerConfig.kt diff --git a/build.gradle.kts b/build.gradle.kts index 5cdea5e..2f593ea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1 +1,13 @@ group = "cloud.cosmin.checklister" + +plugins { + kotlin("jvm") version "1.5.10" apply false + // Annotation Processing with Kotlin: https://kotlinlang.org/docs/reference/kapt.html + kotlin("kapt") version "1.5.10" apply false + // https://kotlinlang.org/docs/reference/compiler-plugins.html#spring-support + id("org.jetbrains.kotlin.plugin.spring") version "1.5.10" apply false + // https://kotlinlang.org/docs/reference/compiler-plugins.html#jpa-support + id("org.jetbrains.kotlin.plugin.jpa") version "1.5.10" apply false + // Kotlin Serialization: https://github.com/Kotlin/kotlinx.serialization + kotlin("plugin.serialization") version "1.5.10" apply false +} \ No newline at end of file diff --git a/subprojects/dto/dto.gradle.kts b/subprojects/dto/dto.gradle.kts index 9986d90..1df14af 100644 --- a/subprojects/dto/dto.gradle.kts +++ b/subprojects/dto/dto.gradle.kts @@ -1,8 +1,8 @@ plugins { `java-library` - kotlin("jvm") version "1.3.72" + kotlin("jvm") // Kotlin Serialization: https://github.com/Kotlin/kotlinx.serialization - kotlin("plugin.serialization") version "1.3.72" + kotlin("plugin.serialization") // https://github.com/kotest/kotest-gradle-plugin id("io.kotlintest") version "1.1.1" } @@ -20,7 +20,7 @@ dependencies { implementation(kotlin("stdlib-jdk8")) // Kotlin Serialization: https://github.com/Kotlin/kotlinx.serialization - implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1") // KoTest: https://github.com/kotest/kotest testImplementation("io.kotest:kotest-runner-junit5-jvm:4.1.1") diff --git a/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/OffsetDateTimeSerializer.kt b/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/OffsetDateTimeSerializer.kt index fb253e9..4e285fb 100644 --- a/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/OffsetDateTimeSerializer.kt +++ b/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/OffsetDateTimeSerializer.kt @@ -1,15 +1,17 @@ package cloud.cosmin.checklister.lib.dto.internal -import kotlinx.serialization.Decoder -import kotlinx.serialization.Encoder +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializer +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder import java.time.OffsetDateTime import java.time.format.DateTimeFormatter /** * A kotlinx.serialization serializer for java.time.OffsetDateTime. */ +@ExperimentalSerializationApi @Serializer(forClass = OffsetDateTime::class) object OffsetDateTimeSerializer: KSerializer { private val formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME diff --git a/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/UUIDSerializer.kt b/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/UUIDSerializer.kt index 3beff06..d6b1e5c 100644 --- a/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/UUIDSerializer.kt +++ b/subprojects/dto/src/main/kotlin/cloud/cosmin/checklister/lib/dto/internal/UUIDSerializer.kt @@ -1,14 +1,16 @@ package cloud.cosmin.checklister.lib.dto.internal -import kotlinx.serialization.Decoder -import kotlinx.serialization.Encoder +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializer +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder import java.util.* /** * A kotlinx.serialization serializer for java.util.UUID. */ +@ExperimentalSerializationApi @Serializer(forClass = UUID::class) object UUIDSerializer: KSerializer { override fun serialize(encoder: Encoder, value: UUID) { diff --git a/subprojects/event/event.gradle.kts b/subprojects/event/event.gradle.kts index c174706..3ddb589 100644 --- a/subprojects/event/event.gradle.kts +++ b/subprojects/event/event.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - kotlin("jvm") version "1.3.72" + kotlin("jvm") } repositories { diff --git a/subprojects/event/src/main/kotlin/cloud/cosmin/checklister/lib/event/serde/EventDeserializer.kt b/subprojects/event/src/main/kotlin/cloud/cosmin/checklister/lib/event/serde/EventDeserializer.kt index 55baf01..57f7f1b 100644 --- a/subprojects/event/src/main/kotlin/cloud/cosmin/checklister/lib/event/serde/EventDeserializer.kt +++ b/subprojects/event/src/main/kotlin/cloud/cosmin/checklister/lib/event/serde/EventDeserializer.kt @@ -3,5 +3,5 @@ package cloud.cosmin.checklister.lib.event.serde import cloud.cosmin.checklister.lib.event.Event interface EventDeserializer { - fun deserialize(byteArray: ByteArray, cls: Class): T + fun deserialize(byteArray: ByteArray, cls: Class): Event } \ No newline at end of file diff --git a/subprojects/eventserde-json/eventserde-json.gradle.kts b/subprojects/eventserde-json/eventserde-json.gradle.kts index 11d5f47..148a98b 100644 --- a/subprojects/eventserde-json/eventserde-json.gradle.kts +++ b/subprojects/eventserde-json/eventserde-json.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - kotlin("jvm") version "1.3.72" + kotlin("jvm") } repositories { diff --git a/subprojects/eventserde-json/src/main/kotlin/cloud/cosmin/checklister/lib/eventserde/json/JsonEventSerde.kt b/subprojects/eventserde-json/src/main/kotlin/cloud/cosmin/checklister/lib/eventserde/json/JsonEventSerde.kt index 9acdf0f..e13dea4 100644 --- a/subprojects/eventserde-json/src/main/kotlin/cloud/cosmin/checklister/lib/eventserde/json/JsonEventSerde.kt +++ b/subprojects/eventserde-json/src/main/kotlin/cloud/cosmin/checklister/lib/eventserde/json/JsonEventSerde.kt @@ -11,10 +11,10 @@ class JsonEventSerde : EventSerializer, EventDeserializer { } override fun serialize(event: Event): ByteArray { - return mapper.writeValueAsBytes(event)!! + return mapper.writeValueAsBytes(event) } - override fun deserialize(byteArray: ByteArray, cls: Class): T { + override fun deserialize(byteArray: ByteArray, cls: Class): Event { return mapper.readValue(byteArray, cls) } } \ No newline at end of file diff --git a/subprojects/eventsink-kafka/eventsink-kafka.gradle.kts b/subprojects/eventsink-kafka/eventsink-kafka.gradle.kts index 7b124d7..16ad021 100644 --- a/subprojects/eventsink-kafka/eventsink-kafka.gradle.kts +++ b/subprojects/eventsink-kafka/eventsink-kafka.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - kotlin("jvm") version "1.3.72" + kotlin("jvm") } repositories { diff --git a/subprojects/eventsink-logger/eventsink-logger.gradle.kts b/subprojects/eventsink-logger/eventsink-logger.gradle.kts index 75818a9..e4fc2c0 100644 --- a/subprojects/eventsink-logger/eventsink-logger.gradle.kts +++ b/subprojects/eventsink-logger/eventsink-logger.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - kotlin("jvm") version "1.3.72" + kotlin("jvm") } repositories { diff --git a/subprojects/history/history.gradle.kts b/subprojects/history/history.gradle.kts index 49b615f..fa9f716 100644 --- a/subprojects/history/history.gradle.kts +++ b/subprojects/history/history.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("java") id("org.springframework.boot") version "2.1.3.RELEASE" - kotlin("jvm") version "1.3.72" + kotlin("jvm") } repositories { diff --git a/subprojects/integrationTest/integrationTest.gradle.kts b/subprojects/integrationTest/integrationTest.gradle.kts index 8a0917b..99862ae 100644 --- a/subprojects/integrationTest/integrationTest.gradle.kts +++ b/subprojects/integrationTest/integrationTest.gradle.kts @@ -1,8 +1,8 @@ plugins { `java-library` - kotlin("jvm") version "1.3.72" + kotlin("jvm") // https://github.com/avast/gradle-docker-compose-plugin - id("com.avast.gradle.docker-compose") version "0.9.2" + id("com.avast.gradle.docker-compose") version "0.14.3" // https://github.com/kotest/kotest-gradle-plugin id("io.kotlintest") version "1.1.1" } diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/config/SwaggerConfig.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/config/SwaggerConfig.kt deleted file mode 100644 index a9dfe1f..0000000 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/config/SwaggerConfig.kt +++ /dev/null @@ -1,36 +0,0 @@ -package cloud.cosmin.checklister.config - -import cloud.cosmin.checklister.service.BuildConfigService -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import springfox.documentation.builders.ApiInfoBuilder -import springfox.documentation.builders.RequestHandlerSelectors.basePackage -import springfox.documentation.service.ApiInfo -import springfox.documentation.service.Contact -import springfox.documentation.spi.DocumentationType -import springfox.documentation.spring.web.plugins.Docket -import springfox.documentation.swagger2.annotations.EnableSwagger2 - -@Configuration -@EnableSwagger2 -class SwaggerConfig { - @Bean - fun checklisterApi(buildConfigService: BuildConfigService): Docket { - return Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo(buildConfigService)) - .select() - .apis(basePackage("cloud.cosmin.checklister.rest")) - .build() - } - - private fun apiInfo(buildConfigService: BuildConfigService): ApiInfo { - return ApiInfoBuilder() - .title("Checklister") - .description("A RESTful API for lists.") - .contact(Contact("GitHub", "https://github.com/cosmincloud/checklister", null)) - .version(buildConfigService.getVersion()) - .license("Apache License Version 2.0") - .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0") - .build() - } -} \ No newline at end of file diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/EventController.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/EventController.kt index fdab1b5..e5d6e56 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/EventController.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/EventController.kt @@ -2,8 +2,8 @@ package cloud.cosmin.checklister.controller import cloud.cosmin.checklister.lib.dto.EventDto import cloud.cosmin.checklister.service.event.EventService -import io.swagger.annotations.Api -import io.swagger.annotations.ApiOperation +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.tags.Tag import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable @@ -15,18 +15,18 @@ import org.springframework.web.bind.annotation.PathVariable import java.util.UUID @Controller -@Api(description = "Operations on events that were emitted from this service", tags = arrayOf("event")) +@Tag(name = "event", description = "Operations on events that were emitted from this service") class EventController @Autowired constructor(private val eventService: EventService) { @GetMapping("/api/v1/event") - @ApiOperation("List events") + @Operation(summary = "List events") fun getEvents(pageable: Pageable): ResponseEntity> { val page = eventService.findAll(pageable) return ResponseEntity.ok(page) } @DeleteMapping("/api/v1/event/{id}") - @ApiOperation("Delete an event") + @Operation(summary = "Delete an event") fun deleteEvent(@PathVariable id: UUID): ResponseEntity { return ResponseEntity.of(eventService.delete(id)) } diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/IndexController.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/IndexController.kt index e241159..3b47942 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/IndexController.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/IndexController.kt @@ -1,11 +1,11 @@ package cloud.cosmin.checklister.controller +import io.swagger.v3.oas.annotations.Hidden import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.RequestMapping -import springfox.documentation.annotations.ApiIgnore @Controller -@ApiIgnore +@Hidden class IndexController { @RequestMapping(path = arrayOf("/")) fun index(): String { diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ItemController.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ItemController.kt index 65cdd49..a2c6509 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ItemController.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ItemController.kt @@ -4,8 +4,8 @@ import cloud.cosmin.checklister.lib.dto.ItemGetDto import cloud.cosmin.checklister.lib.dto.ItemPostDto import cloud.cosmin.checklister.lib.event.model.RankOperation import cloud.cosmin.checklister.service.ItemService -import io.swagger.annotations.Api -import io.swagger.annotations.ApiOperation +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.tags.Tag import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity import org.springframework.stereotype.Controller @@ -14,19 +14,19 @@ import java.net.URI import java.util.* @Controller -@Api(description = "Operations on list items", tags = arrayOf("item")) +@Tag(name = "item", description = "Operations on list items") class ItemController @Autowired constructor(private val itemService: ItemService) { @GetMapping("/api/v1/item/{itemId}") - @ApiOperation("Retrieve an item") + @Operation(summary = "Retrieve an item") fun getListItem(@PathVariable itemId: UUID): ResponseEntity { return ResponseEntity.of(itemService.findById(itemId)) } @PostMapping("/api/v1/item") - @ApiOperation("Create an item") + @Operation(summary = "Create an item") fun createItem(@RequestBody dto: ItemPostDto): ResponseEntity { val createdItem = itemService.create(dto) return ResponseEntity @@ -36,32 +36,32 @@ constructor(private val itemService: ItemService) { @PutMapping("/api/v1/item/{itemId}") - @ApiOperation("Update an item") + @Operation(summary = "Update an item") fun updateItem(@PathVariable itemId: UUID, @RequestBody dto: ItemPostDto): ResponseEntity { return ResponseEntity.ok(itemService.update(itemId, dto)) } @PostMapping("/api/v1/item/{itemId}/rank/up") - @ApiOperation("Move the item one rank up in its list") + @Operation(summary = "Move the item one rank up in its list") fun rankUp(@PathVariable itemId: UUID): ResponseEntity { return ResponseEntity.ok(itemService.rank(itemId, RankOperation.UP)) } @PostMapping("/api/v1/item/{itemId}/rank/down") - @ApiOperation("Move the item one rank down in its list") + @Operation(summary = "Move the item one rank down in its list") fun rankDown(@PathVariable itemId: UUID): ResponseEntity { return ResponseEntity.ok(itemService.rank(itemId, RankOperation.DOWN)) } @PostMapping("/api/v1/item/{itemId}/rank/top") - @ApiOperation("Move the item to the top of its list") + @Operation(summary = "Move the item to the top of its list") fun rankTop(@PathVariable itemId: UUID): ResponseEntity { return ResponseEntity.ok(itemService.rank(itemId, RankOperation.TOP)) } @PostMapping("/api/v1/item/{itemId}/rank/bottom") - @ApiOperation("Move the item to the bottom of its list") + @Operation(summary = "Move the item to the bottom of its list") fun rankBottom(@PathVariable itemId: UUID): ResponseEntity { return ResponseEntity.ok(itemService.rank(itemId, RankOperation.BOTTOM)) } diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ListController.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ListController.kt index 2c1e5d2..d2f732c 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ListController.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/controller/ListController.kt @@ -4,8 +4,8 @@ import cloud.cosmin.checklister.lib.dto.ListGetDto import cloud.cosmin.checklister.lib.dto.ListPostDto import cloud.cosmin.checklister.lib.dto.ListWithItemsDto import cloud.cosmin.checklister.service.ListService -import io.swagger.annotations.Api -import io.swagger.annotations.ApiOperation +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.tags.Tag import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* @@ -13,19 +13,19 @@ import java.net.URI import java.util.* @RestController -@Api(description = "Operations on lists", tags = arrayOf("list")) +@Tag(name = "list", description = "Operations on lists") class ListController @Autowired constructor( private val listService: ListService ) { @GetMapping("/api/v1/list") - @ApiOperation("Retrieve all lists") + @Operation(summary = "Retrieve all lists") fun allLists(): ResponseEntity> { return ResponseEntity.ok(listService.findAll()) } @PostMapping(value = arrayOf("/api/v1/list"), consumes = arrayOf("application/json")) - @ApiOperation("Create a new list") + @Operation(summary = "Create a new list") fun createList(@RequestBody listDto: ListPostDto): ResponseEntity { val dto = listService.create(listDto) return ResponseEntity @@ -34,7 +34,7 @@ constructor( } @GetMapping("/api/v1/list/{listId}") - @ApiOperation("Retrieve a single list") + @Operation(summary = "Retrieve a single list") fun getList(@PathVariable listId: UUID): ResponseEntity { return ResponseEntity.of(listService.findById(listId)) } @@ -46,7 +46,7 @@ constructor( } @GetMapping("/api/v1/list/{listId}/item") - @ApiOperation("Retrieve all items in a list") + @Operation(summary = "Retrieve all items in a list") fun getListWithItems(@PathVariable listId: UUID): ResponseEntity { return ResponseEntity.of(listService.findByIdWithItems(listId)) } diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/entity/ItemEntity.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/entity/ItemEntity.kt index 41ffbc1..a079139 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/entity/ItemEntity.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/entity/ItemEntity.kt @@ -40,10 +40,10 @@ class ItemEntity { @Column(name = "last_modified", nullable = false) var lastModified: OffsetDateTime? = null - override fun equals(o: Any?): Boolean { - if (this === o) return true - if (o == null || javaClass != o.javaClass) return false - val that = o as ItemEntity? + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || javaClass != other.javaClass) return false + val that = other as ItemEntity? return rank == that!!.rank && id == that.id && content == that.content && diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ItemService.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ItemService.kt index 02f9001..78fd8f6 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ItemService.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ItemService.kt @@ -39,7 +39,7 @@ class ItemService(val listRepo: ListRepository, val newItem = ItemEntity() newItem.content = createdDto.content newItem.contentType = createdDto.contentType - newItem.rank = (list.items!!.size + 1) * 2 + newItem.rank = (list.items.size + 1) * 2 newItem.list = list newItem.createdAt = OffsetDateTime.now() newItem.lastModified = OffsetDateTime.now() diff --git a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ListService.kt b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ListService.kt index c2db6a6..bbffcbc 100644 --- a/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ListService.kt +++ b/subprojects/web/src/main/kotlin/cloud/cosmin/checklister/service/ListService.kt @@ -101,6 +101,6 @@ class ListService @Autowired constructor( val otherList = otherListMaybe.get() itemRepo.moveItems(otherList.id!!, existingList.id!!) - return Either.right(existingList.id!!) + return Either.Right(existingList.id!!) } } \ No newline at end of file diff --git a/subprojects/web/web.gradle.kts b/subprojects/web/web.gradle.kts index dc6cef6..76e050c 100644 --- a/subprojects/web/web.gradle.kts +++ b/subprojects/web/web.gradle.kts @@ -5,24 +5,24 @@ import java.net.URI plugins { id("java") id("org.springframework.boot") version "2.1.3.RELEASE" - kotlin("jvm") version "1.3.72" + kotlin("jvm") // Annotation Processing with Kotlin: https://kotlinlang.org/docs/reference/kapt.html - kotlin("kapt") version "1.3.72" + kotlin("kapt") // https://kotlinlang.org/docs/reference/compiler-plugins.html#spring-support - id("org.jetbrains.kotlin.plugin.spring") version "1.3.72" + id("org.jetbrains.kotlin.plugin.spring") // https://kotlinlang.org/docs/reference/compiler-plugins.html#jpa-support - id("org.jetbrains.kotlin.plugin.jpa") version "1.3.72" + id("org.jetbrains.kotlin.plugin.jpa") // https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin - id("io.swagger.core.v3.swagger-gradle-plugin") version "2.0.6" + //id("io.swagger.core.v3.swagger-gradle-plugin") version "2.1.9" } repositories { mavenCentral() jcenter() - maven { - url = URI.create("https://dl.bintray.com/arrow-kt/arrow-kt/") - } +// maven { +// url = URI.create("https://dl.bintray.com/arrow-kt/arrow-kt/") +// } } val compileKotlin: KotlinCompile by tasks @@ -37,9 +37,13 @@ compileTestKotlin.kotlinOptions { jvmTarget = "1.8" } +kapt { + useBuildCache = false +} + // unchanging name for boot JAR (referenced in Dockerfile) val bootJar: BootJar by tasks -bootJar.archiveName = "app.jar" +bootJar.archiveFileName.set("app.jar") sourceSets { create("integrationTest") { @@ -141,7 +145,7 @@ tasks { } } -val arrow_version: String = "0.10.4" +val arrow_version: String = "0.13.2" dependencies { // Kotlin @@ -153,9 +157,8 @@ dependencies { // web implementation("org.springframework.boot:spring-boot-starter-web") - // Swagger - implementation("io.springfox:springfox-swagger2:2.9.2") - implementation("io.springfox:springfox-swagger-ui:2.9.2") + // OpenAPI: https://springdoc.org + implementation("org.springdoc:springdoc-openapi-ui:1.5.9") // database implementation("org.springframework.boot:spring-boot-starter-data-jpa") @@ -183,7 +186,7 @@ dependencies { // Arrow Kt implementation("io.arrow-kt:arrow-core:$arrow_version") - implementation("io.arrow-kt:arrow-syntax:$arrow_version") + //implementation("io.arrow-kt:arrow-syntax:$arrow_version") kapt("io.arrow-kt:arrow-meta:$arrow_version") // dev tools