From 1cb3c3586e92bb48cc630264a571d43888943a0f Mon Sep 17 00:00:00 2001 From: dermakov Date: Tue, 29 Jun 2021 11:44:00 +0300 Subject: [PATCH] Readable error "scalar not configured" --- README.md | 11 +---------- build.gradle.kts | 3 +-- .../ermadmi78/kobby/generator/kotlin/layout.kt | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 05d323df..c4bd45a3 100644 --- a/README.md +++ b/README.md @@ -57,20 +57,11 @@ kobby { kotlin { scalars = mapOf( "Date" to typeOf("java.time", "LocalDate"), + "JSON" to typeMap.parameterize(typeString, typeAny.nullable()) ) } } -val kotlinJvmVersion: String by project -tasks { - withType { - kotlinOptions { - jvmTarget = kotlinJvmVersion - freeCompilerArgs = listOf("-Xjsr305=strict") - } - } -} - val jacksonVersion: String by project dependencies { compileOnly("com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion") diff --git a/build.gradle.kts b/build.gradle.kts index 76ac59cb..a84bfe48 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,5 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.time.Duration import java.time.Instant @@ -46,7 +45,7 @@ subprojects { println("${currentProject.group}:${currentProject.name}") tasks { - withType { + compileKotlin { kotlinOptions { jvmTarget = kotlinJvmVersion freeCompilerArgs = listOf("-Xjsr305=strict") diff --git a/kobby-generator-kotlin/src/main/kotlin/io/github/ermadmi78/kobby/generator/kotlin/layout.kt b/kobby-generator-kotlin/src/main/kotlin/io/github/ermadmi78/kobby/generator/kotlin/layout.kt index 097def88..7e25ea08 100644 --- a/kobby-generator-kotlin/src/main/kotlin/io/github/ermadmi78/kobby/generator/kotlin/layout.kt +++ b/kobby-generator-kotlin/src/main/kotlin/io/github/ermadmi78/kobby/generator/kotlin/layout.kt @@ -30,6 +30,18 @@ data class KotlinLayout( val adapter: KotlinAdapterLayout, val resolver: KotlinResolverLayout ) { + private fun getScalarType(name: String): KotlinType { + val result = scalars[name] + if (result == null) { + val message = "Kotlin data type for scalar '$name' not found. " + + "Please, configure it by means of 'kobby' extension. https://github.com/ermadmi78/kobby" + System.err.println(message) + throw IllegalStateException(message) + } + + return result + } + // ***************************************************************************************************************** // DTO // ***************************************************************************************************************** @@ -38,7 +50,7 @@ data class KotlinLayout( get() = when (this) { is KobbyListType -> LIST.parameterizedBy(nested.dtoType) is KobbyNodeType -> when (node.kind) { - SCALAR -> scalars[node.name]!!.typeName + SCALAR -> getScalarType(node.name).typeName else -> node.dtoClass } }.let { if (nullable) it.nullable() else it } @@ -185,7 +197,7 @@ data class KotlinLayout( private fun KobbyType.toEntityType(makeNullable: Boolean): TypeName = when (this) { is KobbyListType -> LIST.parameterizedBy(nested.toEntityType(false)) is KobbyNodeType -> when (node.kind) { - SCALAR -> scalars[node.name]!!.typeName + SCALAR -> getScalarType(node.name).typeName ENUM, INPUT -> node.dtoClass else -> node.entityClass }