Skip to content

Commit 9426c46

Browse files
author
Oleg
committed
Add binary compatibiilty checker. Correct and dump current API
1 parent 11008c0 commit 9426c46

File tree

6 files changed

+85
-3
lines changed

6 files changed

+85
-3
lines changed

api/json-schema-validator.api

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
public abstract class smirnov/oleg/json/pointer/JsonPointer {
2+
public static final field Companion Lsmirnov/oleg/json/pointer/JsonPointer$Companion;
3+
public static final field ROOT Lsmirnov/oleg/json/pointer/JsonPointer;
4+
public synthetic fun <init> (Ljava/lang/String;ILsmirnov/oleg/json/pointer/JsonPointer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
5+
public synthetic fun <init> (Ljava/lang/String;ILsmirnov/oleg/json/pointer/JsonPointer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
6+
public static final fun compile (Ljava/lang/String;)Lsmirnov/oleg/json/pointer/JsonPointer;
7+
public fun equals (Ljava/lang/Object;)Z
8+
public fun hashCode ()I
9+
public fun toString ()Ljava/lang/String;
10+
}
11+
12+
public final class smirnov/oleg/json/pointer/JsonPointer$Companion {
13+
public final fun compile (Ljava/lang/String;)Lsmirnov/oleg/json/pointer/JsonPointer;
14+
}
15+
16+
public final class smirnov/oleg/json/pointer/JsonPointerExtensions {
17+
public static final fun at (Lkotlinx/serialization/json/JsonElement;Lsmirnov/oleg/json/pointer/JsonPointer;)Lkotlinx/serialization/json/JsonElement;
18+
public static final fun div (Lsmirnov/oleg/json/pointer/JsonPointer;Ljava/lang/String;)Lsmirnov/oleg/json/pointer/JsonPointer;
19+
public static final fun get (Lsmirnov/oleg/json/pointer/JsonPointer;I)Lsmirnov/oleg/json/pointer/JsonPointer;
20+
public static final fun plus (Lsmirnov/oleg/json/pointer/JsonPointer;Lsmirnov/oleg/json/pointer/JsonPointer;)Lsmirnov/oleg/json/pointer/JsonPointer;
21+
public static final fun relative (Lsmirnov/oleg/json/pointer/JsonPointer;Lsmirnov/oleg/json/pointer/JsonPointer;)Lsmirnov/oleg/json/pointer/JsonPointer;
22+
}
23+
24+
public final class smirnov/oleg/json/pointer/JsonPointerKt {
25+
public static final fun JsonPointer (Ljava/lang/String;)Lsmirnov/oleg/json/pointer/JsonPointer;
26+
}
27+
28+
public abstract interface class smirnov/oleg/json/schema/ErrorCollector {
29+
public static final field Companion Lsmirnov/oleg/json/schema/ErrorCollector$Companion;
30+
public static final field EMPTY Lsmirnov/oleg/json/schema/ErrorCollector;
31+
public abstract fun onError (Lsmirnov/oleg/json/schema/ValidationError;)V
32+
}
33+
34+
public final class smirnov/oleg/json/schema/ErrorCollector$Companion {
35+
}
36+
37+
public final class smirnov/oleg/json/schema/JsonSchema {
38+
public static final field Companion Lsmirnov/oleg/json/schema/JsonSchema$Companion;
39+
public static final fun fromDescription (Ljava/lang/String;)Lsmirnov/oleg/json/schema/JsonSchema;
40+
public final fun validate (Lkotlinx/serialization/json/JsonElement;Lsmirnov/oleg/json/schema/ErrorCollector;)Z
41+
}
42+
43+
public final class smirnov/oleg/json/schema/JsonSchema$Companion {
44+
public final fun fromDescription (Ljava/lang/String;)Lsmirnov/oleg/json/schema/JsonSchema;
45+
}
46+
47+
public final class smirnov/oleg/json/schema/ValidationError {
48+
public fun <init> (Lsmirnov/oleg/json/pointer/JsonPointer;Lsmirnov/oleg/json/pointer/JsonPointer;Ljava/lang/String;Ljava/util/Map;Lsmirnov/oleg/json/pointer/JsonPointer;)V
49+
public synthetic fun <init> (Lsmirnov/oleg/json/pointer/JsonPointer;Lsmirnov/oleg/json/pointer/JsonPointer;Ljava/lang/String;Ljava/util/Map;Lsmirnov/oleg/json/pointer/JsonPointer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
50+
public final fun component1 ()Lsmirnov/oleg/json/pointer/JsonPointer;
51+
public final fun component2 ()Lsmirnov/oleg/json/pointer/JsonPointer;
52+
public final fun component3 ()Ljava/lang/String;
53+
public final fun component4 ()Ljava/util/Map;
54+
public final fun component5 ()Lsmirnov/oleg/json/pointer/JsonPointer;
55+
public final fun copy (Lsmirnov/oleg/json/pointer/JsonPointer;Lsmirnov/oleg/json/pointer/JsonPointer;Ljava/lang/String;Ljava/util/Map;Lsmirnov/oleg/json/pointer/JsonPointer;)Lsmirnov/oleg/json/schema/ValidationError;
56+
public static synthetic fun copy$default (Lsmirnov/oleg/json/schema/ValidationError;Lsmirnov/oleg/json/pointer/JsonPointer;Lsmirnov/oleg/json/pointer/JsonPointer;Ljava/lang/String;Ljava/util/Map;Lsmirnov/oleg/json/pointer/JsonPointer;ILjava/lang/Object;)Lsmirnov/oleg/json/schema/ValidationError;
57+
public fun equals (Ljava/lang/Object;)Z
58+
public final fun getAbsoluteLocation ()Lsmirnov/oleg/json/pointer/JsonPointer;
59+
public final fun getDetails ()Ljava/util/Map;
60+
public final fun getMessage ()Ljava/lang/String;
61+
public final fun getObjectPath ()Lsmirnov/oleg/json/pointer/JsonPointer;
62+
public final fun getSchemaPath ()Lsmirnov/oleg/json/pointer/JsonPointer;
63+
public fun hashCode ()I
64+
public fun toString ()Ljava/lang/String;
65+
}
66+
67+
public final class smirnov/oleg/json/schema/internal/KeyWords : java/lang/Enum {
68+
public static final field ANCHOR Lsmirnov/oleg/json/schema/internal/KeyWords;
69+
public static final field DEFINITIONS Lsmirnov/oleg/json/schema/internal/KeyWords;
70+
public static final field ID Lsmirnov/oleg/json/schema/internal/KeyWords;
71+
public static final field REF Lsmirnov/oleg/json/schema/internal/KeyWords;
72+
public static fun valueOf (Ljava/lang/String;)Lsmirnov/oleg/json/schema/internal/KeyWords;
73+
public static fun values ()[Lsmirnov/oleg/json/schema/internal/KeyWords;
74+
}
75+

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.kover)
99
alias(libs.plugins.detekt)
1010
alias(libs.plugins.ktlint)
11+
alias(libs.plugins.kotlin.binaryCompatibility)
1112
}
1213

1314
repositories {

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ kotest-multiplatform = { id = "io.kotest.multiplatform", version.ref = "kotest"
1111
kover = { id = "org.jetbrains.kotlinx.kover", version = "0.7.1" }
1212
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
1313
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version = "11.5.0" }
14+
kotlin-binaryCompatibility = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.13.2" }
1415

1516
[libraries]
1617
kotlin-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version = "1.5.1" }

src/commonMain/kotlin/smirnov/oleg/json/pointer/JsonPointer.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package smirnov.oleg.json.pointer
22

3+
import kotlin.jvm.JvmField
34
import kotlin.jvm.JvmStatic
45

56
fun JsonPointer(path: String): JsonPointer = JsonPointer.compile(path)
@@ -35,8 +36,10 @@ sealed class JsonPointer(
3536
}
3637

3738
companion object {
38-
const val SEPARATOR: Char = '/'
39-
const val QUOTATION: Char = '~'
39+
internal const val SEPARATOR: Char = '/'
40+
internal const val QUOTATION: Char = '~'
41+
42+
@JvmField
4043
val ROOT: JsonPointer = EmptyPointer
4144

4245
private const val DEFAULT_BUFFER_CAPACITY = 32

src/commonMain/kotlin/smirnov/oleg/json/pointer/extenstions.kt renamed to src/commonMain/kotlin/smirnov/oleg/json/pointer/extensions.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
@file:Suppress("ktlint:standard:filename")
2+
@file:JvmName("JsonPointerExtensions")
23

34
package smirnov.oleg.json.pointer
45

56
import kotlinx.serialization.json.JsonArray
67
import kotlinx.serialization.json.JsonElement
78
import kotlinx.serialization.json.JsonObject
89
import kotlinx.serialization.json.JsonPrimitive
10+
import kotlin.jvm.JvmName
911

1012
operator fun JsonPointer.get(index: Int): JsonPointer = JsonPointer(
1113
buildString {

src/commonMain/kotlin/smirnov/oleg/json/schema/internal/SchemaLoader.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private const val REF_PROPERTY: String = "\$ref"
7474

7575
internal const val ROOT_REFERENCE = '#'
7676

77-
class SchemaLoader {
77+
internal class SchemaLoader {
7878
fun load(schemaDefinition: JsonElement): JsonSchema {
7979
val baseId = extractBaseID(schemaDefinition)
8080
val context = defaultLoadingContext(baseId)

0 commit comments

Comments
 (0)