Skip to content

Commit d67a084

Browse files
committed
Split number property into longOrNull and doubleOrNull
1 parent 2f973dd commit d67a084

File tree

12 files changed

+30
-9
lines changed

12 files changed

+30
-9
lines changed

json-schema-validator/api/json-schema-validator.api

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,8 @@ public abstract interface class io/github/optimumcode/json/schema/model/ObjectEl
380380

381381
public abstract interface class io/github/optimumcode/json/schema/model/PrimitiveElement : io/github/optimumcode/json/schema/model/AbstractElement {
382382
public abstract fun getContent ()Ljava/lang/String;
383-
public abstract fun getNumber ()Ljava/lang/Number;
383+
public abstract fun getDoubleOrNull ()Ljava/lang/Double;
384+
public abstract fun getLongOrNull ()Ljava/lang/Long;
384385
public abstract fun isBoolean ()Z
385386
public abstract fun isNull ()Z
386387
public abstract fun isNumber ()Z

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/Draft4MaximumAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.internal.JsonSchemaAssertion
55
import io.github.optimumcode.json.schema.internal.LoadingContext
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
77
import io.github.optimumcode.json.schema.internal.factories.number.util.compareTo
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
910
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonObject

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/Draft4MinimumAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.internal.JsonSchemaAssertion
55
import io.github.optimumcode.json.schema.internal.LoadingContext
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
77
import io.github.optimumcode.json.schema.internal.factories.number.util.compareTo
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
910
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonObject

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/ExclusiveMaximumAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.internal.LoadingContext
55
import io.github.optimumcode.json.schema.internal.factories.AbstractAssertionFactory
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
77
import io.github.optimumcode.json.schema.internal.factories.number.util.compareTo
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
910
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonPrimitive

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/ExclusiveMinimumAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.internal.LoadingContext
55
import io.github.optimumcode.json.schema.internal.factories.AbstractAssertionFactory
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
77
import io.github.optimumcode.json.schema.internal.factories.number.util.compareTo
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
910
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonPrimitive

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/MaximumAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.internal.LoadingContext
55
import io.github.optimumcode.json.schema.internal.factories.AbstractAssertionFactory
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
77
import io.github.optimumcode.json.schema.internal.factories.number.util.compareTo
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
910
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonPrimitive

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/MinimumAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.internal.LoadingContext
55
import io.github.optimumcode.json.schema.internal.factories.AbstractAssertionFactory
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
77
import io.github.optimumcode.json.schema.internal.factories.number.util.compareTo
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
910
import kotlinx.serialization.json.JsonElement
1011
import kotlinx.serialization.json.JsonPrimitive

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/MultipleOfAssertionFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import io.github.optimumcode.json.schema.internal.JsonSchemaAssertion
44
import io.github.optimumcode.json.schema.internal.LoadingContext
55
import io.github.optimumcode.json.schema.internal.factories.AbstractAssertionFactory
66
import io.github.optimumcode.json.schema.internal.factories.number.util.NumberComparisonAssertion
7+
import io.github.optimumcode.json.schema.internal.util.number
78
import io.github.optimumcode.json.schema.internal.wrapper.JsonPrimitiveWrapper
89
import kotlinx.serialization.json.JsonElement
910
import kotlinx.serialization.json.JsonPrimitive

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/factories/number/util/NumberUtil.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.optimumcode.json.schema.OutputCollector
55
import io.github.optimumcode.json.schema.ValidationError
66
import io.github.optimumcode.json.schema.internal.AssertionContext
77
import io.github.optimumcode.json.schema.internal.JsonSchemaAssertion
8+
import io.github.optimumcode.json.schema.internal.util.number
89
import io.github.optimumcode.json.schema.model.AbstractElement
910
import io.github.optimumcode.json.schema.model.PrimitiveElement
1011

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/util/NumberParts.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ private const val E_SMALL_CHAR: Char = 'e'
2121
private const val E_BIG_CHAR: Char = 'E'
2222
private const val TEN: Double = 10.0
2323

24+
internal val PrimitiveElement.number: Number?
25+
get() = longOrNull ?: doubleOrNull
26+
2427
/**
2528
* This function should be used only if you are certain that the [element] is a number
2629
*/

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/internal/wrapper/JsonWrappers.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ internal value class JsonPrimitiveWrapper(
6868
get() = primitive is JsonNull
6969
override val isString: Boolean
7070
get() = primitive.isString
71-
override val number: Number?
72-
get() = primitive.run { longOrNull ?: doubleOrNull }
71+
override val longOrNull: Long?
72+
get() = primitive.longOrNull
73+
override val doubleOrNull: Double?
74+
get() = primitive.doubleOrNull
7375
override val isBoolean: Boolean
7476
get() = primitive.run { !isString && booleanOrNull != null }
7577
override val isNumber: Boolean
@@ -100,8 +102,10 @@ internal value class StringWrapper(
100102
get() = false
101103
override val isString: Boolean
102104
get() = true
103-
override val number: Number?
104-
get() = value.toLongOrNull() ?: value.toDoubleOrNull()
105+
override val longOrNull: Long?
106+
get() = value.toLongOrNull()
107+
override val doubleOrNull: Double?
108+
get() = value.toDoubleOrNull()
105109
override val isBoolean: Boolean
106110
get() = false
107111
override val isNumber: Boolean

json-schema-validator/src/commonMain/kotlin/io/github/optimumcode/json/schema/model/Model.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,16 @@ public interface PrimitiveElement : AbstractElement {
4343
public val isNumber: Boolean
4444

4545
/**
46-
* Tries to parse the element as a [Number].
47-
* Must return either [Long] or [Double].
48-
* If the element cannot be interpreted as a number, returns `null`.
46+
* Tries to represent the element as a [Long].
47+
* If the element cannot be interpreted as a [Long], returns `null`.
4948
*/
50-
public val number: Number?
49+
public val longOrNull: Long?
50+
51+
/**
52+
* Tries to represent the element as a [Double].
53+
* If the element cannot be interpreted as a [Double], returns `null`.
54+
*/
55+
public val doubleOrNull: Double?
5156

5257
/**
5358
* Returns the content of the element as plain string

0 commit comments

Comments
 (0)