diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ff667d..59496f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## (Upcoming) + +**Kotlin 1.9.23** + +- Updated the language level to 1.9.23 +- Minor source changes to satisfy _ktlint_ +- Minor changes due to new language level and library versions + +**Version Catalogs** +- Adopted _version catalog_ dependency management. + ## Version 5.0.0 (6 March, 2022) A new stable release for your favourite Retrofit call adapter. v5 is a culmination of a lot of community contributions and an overhaul of the internals of the library. diff --git a/build.gradle.kts b/build.gradle.kts index c606dd0..5485f42 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,9 @@ import org.jlleitschuh.gradle.ktlint.KtlintExtension plugins { - kotlin("jvm") version "1.6.0" - id("org.jetbrains.dokka") version "1.6.0" - id("org.jlleitschuh.gradle.ktlint") version "10.2.0" + alias(libs.plugins.kotlinJvm) + alias(libs.plugins.dokka) + alias(libs.plugins.ktlint) `maven-publish` } @@ -25,7 +25,7 @@ val test by tasks.getting(Test::class) { } configure { - version.set("0.43.0") + version.set("0.47.1") ignoreFailures.set(false) disabledRules.set(setOf("no-wildcard-imports")) } @@ -43,22 +43,18 @@ publishing { } dependencies { - val coroutinesVersion = "1.5.2" - val retrofitVersion = "2.9.0" - val okHttpVersion = "4.9.3" - val kotestVersion = "5.0.1" - api("org.jetbrains.kotlin:kotlin-stdlib-jdk8") - api("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion") - api("com.squareup.retrofit2:retrofit:$retrofitVersion") - api("com.squareup.okhttp3:okhttp:$okHttpVersion") + api(libs.coroutines) + api(libs.retrofit) + api(libs.okhttp) + api(libs.okio) - testImplementation("com.squareup.okhttp3:mockwebserver:$okHttpVersion") - testImplementation("com.google.guava:guava:31.0.1-jre") - testImplementation("io.kotest:kotest-runner-junit5:$kotestVersion") - testImplementation("io.kotest:kotest-assertions-core:$kotestVersion") - testImplementation("com.squareup.moshi:moshi-kotlin:1.12.0") - testImplementation("com.squareup.retrofit2:converter-moshi:$retrofitVersion") + testImplementation(libs.okhttp.mock.webserver) + testImplementation(libs.guava) + testImplementation(libs.kotest.runner) + testImplementation(libs.kotest.assertion) + testImplementation(libs.moshi) + testImplementation(libs.retrofit.converter.moshi) } tasks.dokkaGfm.configure { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..19b669e --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,38 @@ +[versions] +coroutines = "1.5.2" +dokka = "1.9.20" +guava = "33.0.0-jre" +jupiter = "5.6.0" +kotest = "5.8.1" +kotlin = "1.9.23" +ktlint = "12.1.0" +moshi = "1.12.0" +okhttp = "4.12.0" +okio = "3.9.0" +retrofit = "2.9.0" +serialization = "1.6.3" +serialization-converter = "1.0.0" + + +[libraries] +coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } +guava = { module = "com.google.guava:guava", version.ref = "guava" } +jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "jupiter" } +jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "jupiter" } +kotest-assertion = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" } +kotest-runner = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" } +moshi = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +okhttp-mock-webserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" } +okio = { module = "com.squareup.okio:okio", version.ref = "okio" } +retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } +retrofit-converter-moshi = { module = "com.squareup.retrofit2:converter-moshi", version.ref = "retrofit" } +serialization-converter = { module = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter", version.ref = "serialization-converter" } +serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } + + +[plugins] +kotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } +ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } +serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e6e589..d0d403e 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-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/sample/build.gradle.kts b/sample/build.gradle.kts index 15be78e..c4b8a29 100644 --- a/sample/build.gradle.kts +++ b/sample/build.gradle.kts @@ -1,8 +1,8 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") - kotlin("plugin.serialization") version "1.5.31" + alias(libs.plugins.kotlinJvm) + alias(libs.plugins.serialization) } group = "com.haroldadmin" @@ -20,11 +20,11 @@ tasks.withType { dependencies { implementation(project(":")) - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.1") - implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0") + implementation(libs.serialization.json) + implementation(libs.serialization.converter) - testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") + testImplementation(libs.jupiter.api) + testRuntimeOnly(libs.jupiter.engine) } tasks.getByName("test") { diff --git a/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/App.kt b/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/App.kt index a4f84d0..f0bfc75 100644 --- a/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/App.kt +++ b/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/App.kt @@ -12,8 +12,8 @@ import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import retrofit2.Retrofit -val url = "https://jsonplaceholder.typicode.com" -val contentType = "application/json".toMediaType() +private const val url = "https://jsonplaceholder.typicode.com" +private val contentType = "application/json".toMediaType() val loggingInterceptor = { chain: Interceptor.Chain -> val method = chain.request().method @@ -24,7 +24,6 @@ val loggingInterceptor = { chain: Interceptor.Chain -> val okHttp = OkHttpClient.Builder().addInterceptor(loggingInterceptor).build() -@OptIn(ExperimentalSerializationApi::class) val retrofit: Retrofit = Retrofit.Builder() .baseUrl(url) .addCallAdapterFactory(NetworkResponseAdapterFactory()) diff --git a/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/Post.kt b/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/Post.kt index fcdf749..00487fd 100644 --- a/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/Post.kt +++ b/sample/src/main/kotlin/com/haroldadmin/cnradapter/sample/Post.kt @@ -1,6 +1,5 @@ package com.haroldadmin.cnradapter.sample -import com.haroldadmin.cnradapter.CompletableResponse import com.haroldadmin.cnradapter.NetworkResponse import kotlinx.serialization.Serializable import retrofit2.http.Body diff --git a/settings.gradle.kts b/settings.gradle.kts index caca479..ceab5b8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,12 +1,3 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/5.4.1/userguide/multi_project_builds.html - */ - rootProject.name = "coroutines-network-response-adapter" pluginManagement { @@ -14,4 +5,12 @@ pluginManagement { gradlePluginPortal() } } + +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + } +} + include("sample") diff --git a/src/main/kotlin/com/haroldadmin/cnradapter/DeferredNetworkResponseAdapter.kt b/src/main/kotlin/com/haroldadmin/cnradapter/DeferredNetworkResponseAdapter.kt index 7169f27..41795f5 100644 --- a/src/main/kotlin/com/haroldadmin/cnradapter/DeferredNetworkResponseAdapter.kt +++ b/src/main/kotlin/com/haroldadmin/cnradapter/DeferredNetworkResponseAdapter.kt @@ -18,7 +18,7 @@ import java.lang.reflect.Type */ internal class DeferredNetworkResponseAdapter( private val successType: Type, - private val errorConverter: Converter, + private val errorConverter: Converter ) : CallAdapter>> { override fun responseType(): Type { return successType diff --git a/src/main/kotlin/com/haroldadmin/cnradapter/NetworkResponse.kt b/src/main/kotlin/com/haroldadmin/cnradapter/NetworkResponse.kt index f58ea71..aa5824b 100644 --- a/src/main/kotlin/com/haroldadmin/cnradapter/NetworkResponse.kt +++ b/src/main/kotlin/com/haroldadmin/cnradapter/NetworkResponse.kt @@ -83,7 +83,7 @@ public sealed interface NetworkResponse { */ public data class ServerError( public override val body: E?, - public val response: Response<*>?, + public val response: Response<*>? ) : Error { /** * The status code returned by the server. @@ -109,7 +109,7 @@ public sealed interface NetworkResponse { * The result of a network connectivity error */ public data class NetworkError( - public override val error: IOException, + public override val error: IOException ) : Error { /** diff --git a/src/main/kotlin/com/haroldadmin/cnradapter/ResponseParser.kt b/src/main/kotlin/com/haroldadmin/cnradapter/ResponseParser.kt index fbc834a..db59923 100644 --- a/src/main/kotlin/com/haroldadmin/cnradapter/ResponseParser.kt +++ b/src/main/kotlin/com/haroldadmin/cnradapter/ResponseParser.kt @@ -85,7 +85,7 @@ private fun parseSuccessfulResponse(response: Response, successType: T */ internal fun Throwable.asNetworkResponse( successType: Type, - errorConverter: Converter, + errorConverter: Converter ): NetworkResponse { return when (this) { is IOException -> NetworkResponse.NetworkError(this)