From fd73d94d70136e8bfcbc9623027a62ebeec1c06e Mon Sep 17 00:00:00 2001 From: Savosin Denis Date: Tue, 3 Jun 2025 11:20:27 +0700 Subject: [PATCH] move schema validation to separate package --- .../validation/exceptions/SchemaNotFoundException.kt | 3 --- edge-contracts/build.gradle.kts | 4 ++++ .../demo/edgecontracts}/validation/SchemaValidator.kt | 6 +++--- .../demo/edgecontracts}/validation/SchemaValidatorImp.kt | 6 +++--- .../validation}/config/SchemaValidationConfig.kt | 7 +++---- .../validation/config}/ValidationProperties.kt | 2 +- .../validation/exceptions/ElementNotValidException.kt | 2 +- .../validation/exceptions/SchemaNotFoundException.kt | 3 +++ .../main/resources/json-schemas/kafka/product/sync.json | 0 .../edgecontracts}/validation/SchemaValidatorImpTest.kt | 7 ++++--- 10 files changed, 22 insertions(+), 18 deletions(-) delete mode 100644 core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/SchemaNotFoundException.kt create mode 100644 edge-contracts/build.gradle.kts rename {core/src/main/kotlin/com/github/dannecron/demo/core/services => edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts}/validation/SchemaValidator.kt (59%) rename {core/src/main/kotlin/com/github/dannecron/demo/core/services => edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts}/validation/SchemaValidatorImp.kt (83%) rename {core/src/main/kotlin/com/github/dannecron/demo/core => edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation}/config/SchemaValidationConfig.kt (69%) rename {core/src/main/kotlin/com/github/dannecron/demo/core/config/properties => edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config}/ValidationProperties.kt (73%) rename {core/src/main/kotlin/com/github/dannecron/demo/core/services => edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts}/validation/exceptions/ElementNotValidException.kt (72%) create mode 100644 edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/SchemaNotFoundException.kt rename {core => edge-contracts}/src/main/resources/json-schemas/kafka/product/sync.json (100%) rename {core/src/test/kotlin/com/github/dannecron/demo/core/services => edge-contracts/src/test/kotlin/com/github/dannecron/demo/edgecontracts}/validation/SchemaValidatorImpTest.kt (93%) diff --git a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/SchemaNotFoundException.kt b/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/SchemaNotFoundException.kt deleted file mode 100644 index cc90b83..0000000 --- a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/SchemaNotFoundException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.github.dannecron.demo.core.services.validation.exceptions - -class SchemaNotFoundException: RuntimeException() diff --git a/edge-contracts/build.gradle.kts b/edge-contracts/build.gradle.kts new file mode 100644 index 0000000..dcc289a --- /dev/null +++ b/edge-contracts/build.gradle.kts @@ -0,0 +1,4 @@ +dependencies { + implementation(rootProject.libs.spring.cloud.stream) + implementation(rootProject.libs.json.schema.validator) +} diff --git a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidator.kt b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidator.kt similarity index 59% rename from core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidator.kt rename to edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidator.kt index 2444ee3..0649ff7 100644 --- a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidator.kt +++ b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidator.kt @@ -1,7 +1,7 @@ -package com.github.dannecron.demo.core.services.validation +package com.github.dannecron.demo.edgecontracts.validation -import com.github.dannecron.demo.core.services.validation.exceptions.ElementNotValidException -import com.github.dannecron.demo.core.services.validation.exceptions.SchemaNotFoundException +import com.github.dannecron.demo.edgecontracts.validation.exceptions.ElementNotValidException +import com.github.dannecron.demo.edgecontracts.validation.exceptions.SchemaNotFoundException import kotlinx.serialization.json.JsonElement interface SchemaValidator { diff --git a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidatorImp.kt b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidatorImp.kt similarity index 83% rename from core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidatorImp.kt rename to edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidatorImp.kt index 05aaba9..4fef26e 100644 --- a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidatorImp.kt +++ b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidatorImp.kt @@ -1,7 +1,7 @@ -package com.github.dannecron.demo.core.services.validation +package com.github.dannecron.demo.edgecontracts.validation -import com.github.dannecron.demo.core.services.validation.exceptions.ElementNotValidException -import com.github.dannecron.demo.core.services.validation.exceptions.SchemaNotFoundException +import com.github.dannecron.demo.edgecontracts.validation.exceptions.ElementNotValidException +import com.github.dannecron.demo.edgecontracts.validation.exceptions.SchemaNotFoundException import io.github.optimumcode.json.schema.JsonSchema import io.github.optimumcode.json.schema.ValidationError import kotlinx.serialization.json.JsonElement diff --git a/core/src/main/kotlin/com/github/dannecron/demo/core/config/SchemaValidationConfig.kt b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config/SchemaValidationConfig.kt similarity index 69% rename from core/src/main/kotlin/com/github/dannecron/demo/core/config/SchemaValidationConfig.kt rename to edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config/SchemaValidationConfig.kt index d6f0304..035b341 100644 --- a/core/src/main/kotlin/com/github/dannecron/demo/core/config/SchemaValidationConfig.kt +++ b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config/SchemaValidationConfig.kt @@ -1,8 +1,7 @@ -package com.github.dannecron.demo.core.config +package com.github.dannecron.demo.edgecontracts.validation.config -import com.github.dannecron.demo.core.config.properties.ValidationProperties -import com.github.dannecron.demo.core.services.validation.SchemaValidator -import com.github.dannecron.demo.core.services.validation.SchemaValidatorImp +import com.github.dannecron.demo.edgecontracts.validation.SchemaValidator +import com.github.dannecron.demo.edgecontracts.validation.SchemaValidatorImp import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.util.ResourceUtils diff --git a/core/src/main/kotlin/com/github/dannecron/demo/core/config/properties/ValidationProperties.kt b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config/ValidationProperties.kt similarity index 73% rename from core/src/main/kotlin/com/github/dannecron/demo/core/config/properties/ValidationProperties.kt rename to edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config/ValidationProperties.kt index f51b506..e76efd7 100644 --- a/core/src/main/kotlin/com/github/dannecron/demo/core/config/properties/ValidationProperties.kt +++ b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/config/ValidationProperties.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.core.config.properties +package com.github.dannecron.demo.edgecontracts.validation.config import org.springframework.boot.context.properties.ConfigurationProperties diff --git a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/ElementNotValidException.kt b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/ElementNotValidException.kt similarity index 72% rename from core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/ElementNotValidException.kt rename to edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/ElementNotValidException.kt index 7ac9e18..3b40402 100644 --- a/core/src/main/kotlin/com/github/dannecron/demo/core/services/validation/exceptions/ElementNotValidException.kt +++ b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/ElementNotValidException.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.core.services.validation.exceptions +package com.github.dannecron.demo.edgecontracts.validation.exceptions import io.github.optimumcode.json.schema.ValidationError diff --git a/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/SchemaNotFoundException.kt b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/SchemaNotFoundException.kt new file mode 100644 index 0000000..148b117 --- /dev/null +++ b/edge-contracts/src/main/kotlin/com/github/dannecron/demo/edgecontracts/validation/exceptions/SchemaNotFoundException.kt @@ -0,0 +1,3 @@ +package com.github.dannecron.demo.edgecontracts.validation.exceptions + +class SchemaNotFoundException: RuntimeException() diff --git a/core/src/main/resources/json-schemas/kafka/product/sync.json b/edge-contracts/src/main/resources/json-schemas/kafka/product/sync.json similarity index 100% rename from core/src/main/resources/json-schemas/kafka/product/sync.json rename to edge-contracts/src/main/resources/json-schemas/kafka/product/sync.json diff --git a/core/src/test/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidatorImpTest.kt b/edge-contracts/src/test/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidatorImpTest.kt similarity index 93% rename from core/src/test/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidatorImpTest.kt rename to edge-contracts/src/test/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidatorImpTest.kt index 3b4f7d2..b932417 100644 --- a/core/src/test/kotlin/com/github/dannecron/demo/core/services/validation/SchemaValidatorImpTest.kt +++ b/edge-contracts/src/test/kotlin/com/github/dannecron/demo/edgecontracts/validation/SchemaValidatorImpTest.kt @@ -1,7 +1,7 @@ -package com.github.dannecron.demo.core.services.validation +package com.github.dannecron.demo.edgecontracts.validation -import com.github.dannecron.demo.core.services.validation.exceptions.ElementNotValidException -import com.github.dannecron.demo.core.services.validation.exceptions.SchemaNotFoundException +import com.github.dannecron.demo.edgecontracts.validation.exceptions.ElementNotValidException +import com.github.dannecron.demo.edgecontracts.validation.exceptions.SchemaNotFoundException import kotlinx.serialization.json.Json import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments @@ -91,6 +91,7 @@ class SchemaValidatorImpTest { ) } + @Suppress("SameParameterValue") private fun getJsonSchema(resourcePath: String) = javaClass.classLoader .getResourceAsStream(resourcePath)!! .readAllBytes()