Skip to content

Commit 7e47f57

Browse files
authored
Merge pull request #256 from modelix/MODELIX-552b
MODELIX-552 (2) ClassCastException executing query
2 parents 675cf40 + a7c4712 commit 7e47f57

File tree

65 files changed

+238
-247
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+238
-247
lines changed

modelql-client/src/commonMain/kotlin/org/modelix/modelql/client/ModelQLClient.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.modelix.model.api.INodeReference
2626
import org.modelix.model.area.IArea
2727
import org.modelix.modelql.core.IMonoStep
2828
import org.modelix.modelql.core.IUnboundQuery
29+
import org.modelix.modelql.core.SerializationContext
2930
import org.modelix.modelql.core.UnboundQuery
3031
import org.modelix.modelql.core.VersionAndData
3132
import org.modelix.modelql.core.castToInstance
@@ -61,7 +62,7 @@ class ModelQLClient(val url: String, val client: HttpClient, includedSerializers
6162
return ModelQLArea(this).runWithAdditionalScope {
6263
VersionAndData.deserialize(
6364
serializedJson,
64-
query.getAggregationOutputSerializer(json.serializersModule),
65+
query.getAggregationOutputSerializer(SerializationContext(json.serializersModule)),
6566
json,
6667
).data.value
6768
}

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/AndOperatorStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ package org.modelix.modelql.core
1616
import kotlinx.serialization.KSerializer
1717
import kotlinx.serialization.SerialName
1818
import kotlinx.serialization.Serializable
19-
import kotlinx.serialization.modules.SerializersModule
2019
import kotlinx.serialization.serializer
2120

2221
class AndOperatorStep() : SimpleMonoTransformingStep<IZipOutput<Boolean>, Boolean>() {
@@ -35,8 +34,8 @@ class AndOperatorStep() : SimpleMonoTransformingStep<IZipOutput<Boolean>, Boolea
3534
}
3635
}
3736

38-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<Boolean>> {
39-
return serializersModule.serializer<Boolean>().stepOutputSerializer(this)
37+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<Boolean>> {
38+
return serializationContext.serializer<Boolean>().stepOutputSerializer(this)
4039
}
4140

4241
override fun toString(): String {

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/CollectionSizeStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ package org.modelix.modelql.core
1616
import kotlinx.serialization.KSerializer
1717
import kotlinx.serialization.SerialName
1818
import kotlinx.serialization.Serializable
19-
import kotlinx.serialization.modules.SerializersModule
2019
import kotlinx.serialization.serializer
2120

2221
class CollectionSizeStep : SimpleMonoTransformingStep<Collection<*>, Int>() {
23-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<Int>> {
24-
return serializersModule.serializer<Int>().stepOutputSerializer(this)
22+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<Int>> {
23+
return serializationContext.serializer<Int>().stepOutputSerializer(this)
2524
}
2625

2726
override fun transform(evaluationContext: QueryEvaluationContext, input: Collection<*>): Int {

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/CollectorStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ import kotlinx.serialization.Serializable
2020
import kotlinx.serialization.descriptors.SerialDescriptor
2121
import kotlinx.serialization.encoding.Decoder
2222
import kotlinx.serialization.encoding.Encoder
23-
import kotlinx.serialization.modules.SerializersModule
2423

2524
abstract class CollectorStep<E, CollectionT>() : AggregationStep<E, CollectionT>() {
26-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<CollectionT>> {
27-
val element = getProducers().first().getOutputSerializer(serializersModule)
25+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<CollectionT>> {
26+
val element = getProducers().first().getOutputSerializer(serializationContext)
2827
return getOutputSerializer(element.upcast())
2928
}
3029

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/ConstantSourceStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import kotlinx.serialization.encoding.Decoder
2727
import kotlinx.serialization.encoding.Encoder
2828
import kotlinx.serialization.encoding.decodeStructure
2929
import kotlinx.serialization.encoding.encodeStructure
30-
import kotlinx.serialization.modules.SerializersModule
3130
import kotlinx.serialization.serializer
3231
import kotlin.jvm.JvmName
3332
import kotlin.reflect.KType
@@ -68,8 +67,8 @@ open class ConstantSourceStep<E>(val element: E, val type: KType) : ProducingSte
6867
return """Mono($element)"""
6968
}
7069

71-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<E>> {
72-
return (serializersModule.serializer(type) as KSerializer<E>).stepOutputSerializer(this)
70+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<E>> {
71+
return (serializationContext.serializer(type) as KSerializer<E>).stepOutputSerializer(this)
7372
}
7473

7574
override fun createDescriptor(context: QueryGraphDescriptorBuilder): StepDescriptor = Descriptor(element, type.toString())

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/CountingStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.count
1717
import kotlinx.serialization.KSerializer
1818
import kotlinx.serialization.SerialName
1919
import kotlinx.serialization.Serializable
20-
import kotlinx.serialization.modules.SerializersModule
2120
import kotlinx.serialization.serializer
2221

2322
class CountingStep() : AggregationStep<Any?, Int>() {
@@ -35,8 +34,8 @@ class CountingStep() : AggregationStep<Any?, Int>() {
3534
}
3635
}
3736

38-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<Int>> {
39-
return serializersModule.serializer<Int>().stepOutputSerializer(this)
37+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<Int>> {
38+
return serializationContext.serializer<Int>().stepOutputSerializer(this)
4039
}
4140

4241
override fun toString(): String {

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/EmptyStringIfNullStep.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,17 @@ import kotlinx.coroutines.flow.map
1717
import kotlinx.serialization.KSerializer
1818
import kotlinx.serialization.SerialName
1919
import kotlinx.serialization.Serializable
20-
import kotlinx.serialization.modules.SerializersModule
2120
import kotlinx.serialization.serializer
2221

2322
class EmptyStringIfNullStep : MonoTransformingStep<String?, String>() {
2423

25-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<String>> {
26-
val inputSerializer: KSerializer<IStepOutput<String?>> = getProducer().getOutputSerializer(serializersModule).upcast()
24+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<String>> {
25+
val inputSerializer: KSerializer<IStepOutput<String?>> = getProducer().getOutputSerializer(serializationContext).upcast()
2726
return MultiplexedOutputSerializer<String>(
2827
this,
2928
listOf<KSerializer<IStepOutput<String>>>(
3029
inputSerializer as KSerializer<IStepOutput<String>>,
31-
serializersModule.serializer<String>().stepOutputSerializer(this).upcast(),
30+
serializationContext.serializer<String>().stepOutputSerializer(this).upcast(),
3231
),
3332
)
3433
}

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/EqualsOperatorStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ package org.modelix.modelql.core
1616
import kotlinx.serialization.KSerializer
1717
import kotlinx.serialization.SerialName
1818
import kotlinx.serialization.Serializable
19-
import kotlinx.serialization.modules.SerializersModule
2019
import kotlinx.serialization.serializer
2120

2221
class EqualsOperatorStep<E>() : TransformingStepWithParameter<E, E, E, Boolean>() {
@@ -25,8 +24,8 @@ class EqualsOperatorStep<E>() : TransformingStepWithParameter<E, E, E, Boolean>(
2524
return (input.value == parameter?.value).asStepOutput(this)
2625
}
2726

28-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<Boolean>> {
29-
return serializersModule.serializer<Boolean>().stepOutputSerializer(this)
27+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<Boolean>> {
28+
return serializationContext.serializer<Boolean>().stepOutputSerializer(this)
3029
}
3130

3231
override fun toString(): String {

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/FilteringStep.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,9 @@ import kotlinx.coroutines.flow.filter
1717
import kotlinx.serialization.KSerializer
1818
import kotlinx.serialization.SerialName
1919
import kotlinx.serialization.Serializable
20-
import kotlinx.serialization.modules.SerializersModule
2120

2221
class FilteringStep<E>(val condition: MonoUnboundQuery<E, Boolean?>) : TransformingStep<E, E>(), IMonoStep<E>, IFluxStep<E> {
2322

24-
init {
25-
condition.inputStep.indirectConsumer = this
26-
}
27-
2823
override fun canBeEmpty(): Boolean = true
2924

3025
override fun canBeMultiple(): Boolean = getProducer().canBeMultiple()
@@ -43,8 +38,8 @@ class FilteringStep<E>(val condition: MonoUnboundQuery<E, Boolean?>) : Transform
4338
// return input.filter { condition.evaluate(it.value).presentAndEqual(true) }
4439
}
4540

46-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<E>> {
47-
return getProducer().getOutputSerializer(serializersModule)
41+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<E>> {
42+
return getProducer().getOutputSerializer(serializationContext)
4843
}
4944

5045
override fun toString(): String {

modelql-core/src/commonMain/kotlin/org/modelix/modelql/core/FirstElementStep.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.take
1717
import kotlinx.serialization.KSerializer
1818
import kotlinx.serialization.SerialName
1919
import kotlinx.serialization.Serializable
20-
import kotlinx.serialization.modules.SerializersModule
2120

2221
class FirstElementStep<E>() : MonoTransformingStep<E, E>() {
2322
override fun canBeMultiple(): Boolean = false
@@ -32,8 +31,8 @@ class FirstElementStep<E>() : MonoTransformingStep<E, E>() {
3231
return getProducer().toString() + ".first()"
3332
}
3433

35-
override fun getOutputSerializer(serializersModule: SerializersModule): KSerializer<out IStepOutput<E>> {
36-
return getProducer().getOutputSerializer(serializersModule)
34+
override fun getOutputSerializer(serializationContext: SerializationContext): KSerializer<out IStepOutput<E>> {
35+
return getProducer().getOutputSerializer(serializationContext)
3736
}
3837

3938
override fun createDescriptor(context: QueryGraphDescriptorBuilder) = FirstElementDescriptor()

0 commit comments

Comments
 (0)