Skip to content

Commit dbf7eb9

Browse files
committed
fix(modelql): ClassCastException caused by wrong order in ZipStep
1 parent 68ee86a commit dbf7eb9

File tree

1 file changed

+0
-21
lines changed
  • modelql-core/src/commonMain/kotlin/org/modelix/modelql/core

1 file changed

+0
-21
lines changed

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

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,10 @@ package org.modelix.modelql.core
1616
import com.badoo.reaktive.observable.Observable
1717
import com.badoo.reaktive.observable.asObservable
1818
import com.badoo.reaktive.observable.flatMap
19-
import com.badoo.reaktive.observable.flatMapSingle
2019
import com.badoo.reaktive.observable.map
2120
import com.badoo.reaktive.observable.toList
2221
import com.badoo.reaktive.observable.zip
2322
import com.badoo.reaktive.single.asObservable
24-
import com.badoo.reaktive.single.flatMapObservable
2523
import com.badoo.reaktive.single.map
2624
import kotlinx.serialization.ExperimentalSerializationApi
2725
import kotlinx.serialization.KSerializer
@@ -36,7 +34,6 @@ import kotlinx.serialization.encoding.Encoder
3634
import kotlinx.serialization.encoding.decodeStructure
3735
import kotlinx.serialization.encoding.encodeCollection
3836
import org.modelix.streams.assertNotEmpty
39-
import org.modelix.streams.exactlyOne
4037

4138
open class ZipStep<CommonIn, Out : ZipNOutputC<CommonIn>>() : ProducingStep<Out>(), IConsumingStep<CommonIn>, IMonoStep<Out>, IFluxStep<Out> {
4239
private val producers = ArrayList<IProducingStep<CommonIn>>()
@@ -103,24 +100,6 @@ open class ZipStep<CommonIn, Out : ZipNOutputC<CommonIn>>() : ProducingStep<Out>
103100
}
104101
}
105102

106-
// optimization if all inputs are mono steps
107-
if (producers.all { it.isSingle() }) {
108-
return inputFlows.asObservable().flatMapSingle { it.exactlyOne() }.toList().map { ZipStepOutput<Out, CommonIn>(it) }.asObservable()
109-
}
110-
111-
// optimization for a pair of flux and mono inputs
112-
if (producers.size == 2) {
113-
if (producers[0].isSingle()) {
114-
return inputFlows[0].exactlyOne().flatMapObservable { value0 ->
115-
inputFlows[1].map { value1 -> ZipStepOutput(listOf(value0, value1)) }
116-
}
117-
} else if (producers[1].isSingle()) {
118-
return inputFlows[1].exactlyOne().flatMapObservable { value1 ->
119-
inputFlows[0].map { value0 -> ZipStepOutput(listOf(value0, value1)) }
120-
}
121-
}
122-
}
123-
124103
return inputFlows.zipRepeating().map { ZipStepOutput<Out, CommonIn>(it) }
125104
}
126105
}

0 commit comments

Comments
 (0)